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=-8.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,MIME_BASE64_TEXT,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D7C7CC43603 for ; Thu, 19 Dec 2019 05:50:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1BF8221582 for ; Thu, 19 Dec 2019 05:50:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="Temy8nCk" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726594AbfLSFuf (ORCPT ); Thu, 19 Dec 2019 00:50:35 -0500 Received: from mailgw02.mediatek.com ([210.61.82.184]:3217 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725844AbfLSFuf (ORCPT ); Thu, 19 Dec 2019 00:50:35 -0500 X-UUID: d6c35dd9fbaf471ebab11bccd5bfc75f-20191219 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Reply-To:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=aCBCzJMIGfUhwvmqVIO0GzToUy41h6GzD99oY13AZFg=; b=Temy8nCkUX40DubDN3VDaP1fLkfVIE5ldiygPIFf+nyst9YsiJNQdU9bEBK0yhIq8tlYMFwsM9xCLbqh9S2u5sh4AeL2vfh3fnh3alp+bUjwBe1W079R9ptrdPKapgn96EWjZVv8GaaQ+e5Qpnnt7c1wQEzbTXp23Y2glJDY8kE=; X-UUID: d6c35dd9fbaf471ebab11bccd5bfc75f-20191219 Received: from mtkcas09.mediatek.inc [(172.21.101.178)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1472255165; Thu, 19 Dec 2019 13:50:02 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs01n1.mediatek.inc (172.21.101.68) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 19 Dec 2019 13:49:39 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Thu, 19 Dec 2019 13:50:03 +0800 From: Jungo Lin To: , , , , CC: , , , , , , , , , , , , , , , , , , Subject: [v6, 0/5] media: media: platform: mtk-isp: Add Mediatek ISP Pass 1 driver Date: Thu, 19 Dec 2019 13:49:25 +0800 Message-ID: <20191219054930.29513-1-jungo.lin@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: References: Reply-To: Jungo Lin MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org SGVsbG8sDQoNClRoaXMgcGF0Y2ggc2VyaWVzIGFkZGluZyB0aGUgZHJpdmVyIGZvciBQYXNzIDEg KFAxKSB1bml0IGluDQpNZWRpYXRlaydzIGNhbWVyYSBJU1Agc3lzdGVtIG9uIG10ODE4MyBTb0Ms IHdoaWNoIHdpbGwgYmUgdXNlZCBpbg0KY2FtZXJhIGZlYXR1cmVzIG9mIENyT1MuDQoNClBhc3Mg MSB1bml0IHByb2Nlc3NlcyBpbWFnZSBzaWduYWwgZnJvbSBzZW5zb3IgZGV2aWNlcyBhbmQgYWNj ZXB0cyB0aGUNCnR1bmluZyBwYXJhbWV0ZXJzIHRvIGFkanVzdCB0aGUgaW1hZ2UgcXVhbGl0eS4g SXQgcGVyZm9ybXMgb3B0aWNhbA0KYmxhY2sgY29ycmVjdGlvbiwgZGVmZWN0IHBpeGVsIGNvcnJl Y3Rpb24sIFcvSVIgaW1iYWxhbmNlIGNvcnJlY3Rpb24NCmFuZCBsZW5zIHNoYWRpbmcgY29ycmVj dGlvbiBmb3IgUkFXIHByb2Nlc3NpbmcuDQoNClRoZSBkcml2ZXIgaXMgaW1wbGVtZW50ZWQgd2l0 aCBWNEwyIGFuZCBtZWRpYSBjb250cm9sbGVyIGZyYW1ld29yayBzbw0Kd2UgaGF2ZSB0aGUgZm9s bG93aW5nIGVudGl0aWVzIHRvIGRlc2NyaWJlIHRoZSBJU1AgcGFzcyAxIHBhdGguDQoNCihUaGUg Y3VycmVudCBtZXRhZGF0YSBpbnRlcmZhY2UgdXNlZCBpbiBtZXRhIGlucHV0IGFuZCBwYXJ0aWFs IG1ldGENCm5vZGVzIGlzIG9ubHkgYSB0ZW1wb3Jhcnkgc29sdXRpb24gdG8ga2ljayBvZmYgdGhl IGRyaXZlciBkZXZlbG9wbWVudA0KYW5kIGlzIG5vdCByZWFkeSB0byBiZSByZXZpZXdlZCB5ZXQu KQ0KDQoxLiBtZXRhIGlucHV0IChvdXRwdXQgdmlkZW8gZGV2aWNlKTogY29ubmVjdCB0byBJU1Ag UDEgc3ViIGRldmljZS4NCkl0IGFjY2VwdHMgdGhlIHR1bmluZyBidWZmZXIgZnJvbSB1c2VyLg0K DQoyLiBJU1AgUDEgKHN1YiBkZXZpY2UpOiBjb25uZWN0IHRvIHBhcnRpYWwgbWV0YSAwLzEvMi8z LA0KbWFpbiBzdHJlYW0gYW5kIHBhY2tlZCBvdXQgdmlkZW8gZGV2aWNlcy4gV2hlbiBwcm9jZXNz aW5nIGFuIGltYWdlLA0KUGFzcyAxIGhhcmR3YXJlIHN1cHBvcnRzIG11bHRpcGxlIG91dHB1dCBp bWFnZXMgd2l0aCBkaWZmZXJlbnQgc2l6ZXMNCmFuZCBmb3JtYXRzIHNvIGl0IG5lZWRzIHR3byBj YXB0dXJlIHZpZGVvIGRldmljZXMgKCJtYWluIHN0cmVhbSIgYW5kDQoicGFja2VkIG91dCIpIHRv IHJldHVybiB0aGUgaW1hZ2UgZGF0YSB0byB0aGUgdXNlci4NCg0KMy4gbWFpbiBzdHJlYW0gKGNh cHR1cmUgdmlkZW8gZGV2aWNlKTogcmV0dXJuIHRoZSBwcm9jZXNzZWQgaW1hZ2UgZGF0YQ0Kd2hp Y2ggaXMgdXNlZCBpbiBjYXB0dXJlIHNjZW5hcmlvLg0KDQo0LiBwYWNrZWQgb3V0IChjYXB0dXJl IHZpZGVvIGRldmljZSk6IHJldHVybiB0aGUgcHJvY2Vzc2VkIGltYWdlIGRhdGENCndoaWNoIGlz IHVzZWQgaW4gcHJldmlldyBzY2VuYXJpby4NCg0KNS4gcGFydGlhbCBtZXRhIDAgKGNhcHR1cmUg dmlkZW8gZGV2aWNlKTogcmV0dXJuIHRoZSBBRS9BV0Igc3RhdGlzdGljcy4NCg0KNi4gcGFydGlh bCBtZXRhIDEgKGNhcHR1cmUgdmlkZW8gZGV2aWNlKTogcmV0dXJuIHRoZSBBRiBzdGF0aXN0aWNz Lg0KDQo3LiBwYXJ0aWFsIG1ldGEgMiAoY2FwdHVyZSB2aWRlbyBkZXZpY2UpOiByZXR1cm4gdGhl IGxvY2FsIGNvbnRyYXN0DQogICBlbmhhbmNlZCBzdGF0aXN0aWNzLg0KDQo4LiBwYXJ0aWFsIG1l dGEgMyAoY2FwdHVyZSB2aWRlbyBkZXZpY2UpOiByZXR1cm4gdGhlIGxvY2FsIG1vdGlvbg0KICAg dmVjdG9yIHN0YXRpc3RpY3MuDQoNClRoZSBvdmVyYWxsIHBhdGNoZXMgb2YgdGhlIHNlcmllcyBp czoNCg0KKiBQYXRjaCAxICYgMiBhcmUgZHQtYmluZGluZ3MgJiBkdHMgaW5mb3JtYXRpb24gcmVs YXRlZCB0byBJU1AgUDEgZHJpdmVyLg0KKiBQYXRjaCAzIGFkZHMgbmV3IHRpbWVzdGFtcCB0eXBl IGZvciBDYW1lcmEgQVIgKEF1Z21lbnRlZCBSZWFsaXR5KSBhcHBsaWNhdGlvbg0KKiBQYXRjaCA0 IGV4dGVuZHMgdGhlIG9yaWdpbmFsIFY0TDIgaW1hZ2UgJiBtZXRhIGZvcm1hdHMgZm9yIElTUCBQ MSBkcml2ZXIuDQoqIFBhdGNoIDUgaXMgdGhlIGhlYXJ0IG9mIElTUCBQMSBkcml2ZXIuIEl0IGhh bmRsZXMgdGhlIElTUCAgSFcgY29uZmlndXJhdGlvbi4NCiAgTW9yZW92ZXIsIGltcGxlbWVudCBz dGFuZGFyZCBWNEwyIHZpZGVvIGRyaXZlciB0aGF0IHV0aWxpemVzDQogIFY0TDIgYW5kIG1lZGlh IGZyYW1ld29yayBBUElzLiBDb21tdW5pY2F0ZSB3aXRoIGNvLXByb2Nlc3MgdmlhIFNDUA0KICBj b21tdW5pY2F0aW9uIHRvIGNvbXBvc2UgSVNQIHJlZ2lzdGVycyBpbiB0aGUgZmlybXdhcmUuDQoN CkhlcmUgaXMgSVNQIFAxIG1lZGlhIHRvcG9sb2d5Og0KSXQgaXMgaW5jbHVkZWQgdGhlIG1haW4v c3ViIHNlbnNvciwgc2VuLWluZiBzdWItZGV2aWNlcyBhbmQgbGVuIGRldmljZQ0Kd2hpY2ggYXJl IGltcGxlbWVudGVkIGluIGJlbG93IHBhdGNoWzFdWzJdWzNdWzRdOg0KDQpGb3IgTWVkaWF0ZWsg SVNQIFAxIGRyaXZlciwgaXQgYWxzbyBkZXBlbmRzIG9uIE1UODE4MyBTQ1BbNV0gJiBJT01NVVs2 XQ0KcGF0Y2ggc2V0cy4NCg0KL3Vzci9iaW4vbWVkaWEtY3RsIC1wIC1kIC9kZXYvbWVkaWEyDQoN Ck1lZGlhIGNvbnRyb2xsZXIgQVBJIHZlcnNpb24gNC4xOS44OQ0KDQpNZWRpYSBkZXZpY2UgaW5m b3JtYXRpb24NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZHJpdmVyICAgICAgICAgIG10ay1j YW0tcDENCm1vZGVsICAgICAgICAgICBtdGstY2FtLXAxDQpzZXJpYWwgICAgICAgICAgDQpidXMg aW5mbyAgICAgICAgcGxhdGZvcm06MWEwMDAwMDAuY2FtaXNwDQpodyByZXZpc2lvbiAgICAgMHgw DQpkcml2ZXIgdmVyc2lvbiAgNC4xOS44OQ0KDQpEZXZpY2UgdG9wb2xvZ3kNCi0gZW50aXR5IDE6 IG10ay1jYW0tcDEgKDEyIHBhZHMsIDggbGlua3MpDQogICAgICAgICAgICB0eXBlIFY0TDIgc3Vi ZGV2IHN1YnR5cGUgVW5rbm93biBmbGFncyAwDQogICAgICAgICAgICBkZXZpY2Ugbm9kZSBuYW1l IC9kZXYvdjRsLXN1YmRldjANCglwYWQwOiBTaW5rDQoJCTwtICJtdGstY2FtLXAxIG1ldGEgaW5w dXQiOjAgW10NCglwYWQxOiBTb3VyY2UNCgkJLT4gIm10ay1jYW0tcDEgbWFpbiBzdHJlYW0iOjAg W0VOQUJMRUQsSU1NVVRBQkxFXQ0KCXBhZDI6IFNvdXJjZQ0KCQktPiAibXRrLWNhbS1wMSBwYWNr ZWQgb3V0IjowIFtdDQoJcGFkMzogU291cmNlDQoJCS0+ICJtdGstY2FtLXAxIHBhcnRpYWwgbWV0 YSAwIjowIFtdDQoJcGFkNDogU291cmNlDQoJCS0+ICJtdGstY2FtLXAxIHBhcnRpYWwgbWV0YSAx IjowIFtdDQoJcGFkNTogU291cmNlDQoJCS0+ICJtdGstY2FtLXAxIHBhcnRpYWwgbWV0YSAyIjow IFtdDQoJcGFkNjogU291cmNlDQoJCS0+ICJtdGstY2FtLXAxIHBhcnRpYWwgbWV0YSAzIjowIFtd DQoJcGFkNzogU291cmNlDQoJcGFkODogU291cmNlDQoJcGFkOTogU291cmNlDQoJcGFkMTA6IFNv dXJjZQ0KCXBhZDExOiBTaW5rDQoJCTwtICIxYTA0MDAwMC5zZW5pbmYiOjQgW0VOQUJMRUQsSU1N VVRBQkxFXQ0KDQotIGVudGl0eSAxNDogbXRrLWNhbS1wMSBtZXRhIGlucHV0ICgxIHBhZCwgMSBs aW5rKQ0KICAgICAgICAgICAgIHR5cGUgTm9kZSBzdWJ0eXBlIFY0TCBmbGFncyAwDQogICAgICAg ICAgICAgZGV2aWNlIG5vZGUgbmFtZSAvZGV2L3ZpZGVvMg0KCXBhZDA6IFNvdXJjZQ0KCQktPiAi bXRrLWNhbS1wMSI6MCBbXQ0KDQotIGVudGl0eSAyMDogbXRrLWNhbS1wMSBtYWluIHN0cmVhbSAo MSBwYWQsIDEgbGluaykNCiAgICAgICAgICAgICB0eXBlIE5vZGUgc3VidHlwZSBWNEwgZmxhZ3Mg MA0KICAgICAgICAgICAgIGRldmljZSBub2RlIG5hbWUgL2Rldi92aWRlbzMNCglwYWQwOiBTaW5r DQoJCTwtICJtdGstY2FtLXAxIjoxIFtFTkFCTEVELElNTVVUQUJMRV0NCg0KLSBlbnRpdHkgMjY6 IG10ay1jYW0tcDEgcGFja2VkIG91dCAoMSBwYWQsIDEgbGluaykNCiAgICAgICAgICAgICB0eXBl IE5vZGUgc3VidHlwZSBWNEwgZmxhZ3MgMA0KICAgICAgICAgICAgIGRldmljZSBub2RlIG5hbWUg L2Rldi92aWRlbzQNCglwYWQwOiBTaW5rDQoJCTwtICJtdGstY2FtLXAxIjoyIFtdDQoNCi0gZW50 aXR5IDMyOiBtdGstY2FtLXAxIHBhcnRpYWwgbWV0YSAwICgxIHBhZCwgMSBsaW5rKQ0KICAgICAg ICAgICAgIHR5cGUgTm9kZSBzdWJ0eXBlIFY0TCBmbGFncyAwDQogICAgICAgICAgICAgZGV2aWNl IG5vZGUgbmFtZSAvZGV2L3ZpZGVvNQ0KCXBhZDA6IFNpbmsNCgkJPC0gIm10ay1jYW0tcDEiOjMg W10NCg0KLSBlbnRpdHkgMzg6IG10ay1jYW0tcDEgcGFydGlhbCBtZXRhIDEgKDEgcGFkLCAxIGxp bmspDQogICAgICAgICAgICAgdHlwZSBOb2RlIHN1YnR5cGUgVjRMIGZsYWdzIDANCiAgICAgICAg ICAgICBkZXZpY2Ugbm9kZSBuYW1lIC9kZXYvdmlkZW82DQoJcGFkMDogU2luaw0KCQk8LSAibXRr LWNhbS1wMSI6NCBbXQ0KDQotIGVudGl0eSA0NDogbXRrLWNhbS1wMSBwYXJ0aWFsIG1ldGEgMiAo MSBwYWQsIDEgbGluaykNCiAgICAgICAgICAgICB0eXBlIE5vZGUgc3VidHlwZSBWNEwgZmxhZ3Mg MA0KICAgICAgICAgICAgIGRldmljZSBub2RlIG5hbWUgL2Rldi92aWRlbzcNCglwYWQwOiBTaW5r DQoJCTwtICJtdGstY2FtLXAxIjo1IFtdDQoNCi0gZW50aXR5IDUwOiBtdGstY2FtLXAxIHBhcnRp YWwgbWV0YSAzICgxIHBhZCwgMSBsaW5rKQ0KICAgICAgICAgICAgIHR5cGUgTm9kZSBzdWJ0eXBl IFY0TCBmbGFncyAwDQogICAgICAgICAgICAgZGV2aWNlIG5vZGUgbmFtZSAvZGV2L3ZpZGVvOA0K CXBhZDA6IFNpbmsNCgkJPC0gIm10ay1jYW0tcDEiOjYgW10NCg0KLSBlbnRpdHkgNTY6IDFhMDQw MDAwLnNlbmluZiAoMTIgcGFkcywgMyBsaW5rcykNCiAgICAgICAgICAgICB0eXBlIFY0TDIgc3Vi ZGV2IHN1YnR5cGUgVW5rbm93biBmbGFncyAwDQogICAgICAgICAgICAgZGV2aWNlIG5vZGUgbmFt ZSAvZGV2L3Y0bC1zdWJkZXYxDQoJcGFkMDogU2luaw0KCQlbZm10OlNHUkJHMTBfMVgxMC8zMjY0 eDI0NDggZmllbGQ6bm9uZSBjb2xvcnNwYWNlOnNyZ2JdDQoJCTwtICJvdjg4NTYgMi0wMDEwIjow IFtFTkFCTEVEXQ0KCXBhZDE6IFNpbmsNCgkJW2ZtdDpTUkdHQjEwXzFYMTAvMTYwMHgxMjAwIGZp ZWxkOm5vbmUgY29sb3JzcGFjZTpzcmdiXQ0KCQk8LSAib3YwMmExMCA0LTAwM2QiOjAgW10NCglw YWQyOiBTaW5rDQoJCVtmbXQ6U0JHR1IxMF8xWDEwLzE2MDB4MTIwMCBmaWVsZDpub25lIGNvbG9y c3BhY2U6c3JnYl0NCglwYWQzOiBTaW5rDQoJCVtmbXQ6U0JHR1IxMF8xWDEwLzE2MDB4MTIwMCBm aWVsZDpub25lIGNvbG9yc3BhY2U6c3JnYl0NCglwYWQ0OiBTb3VyY2UNCgkJW2ZtdDpTQkdHUjEw XzFYMTAvMTYwMHgxMjAwIGZpZWxkOm5vbmUgY29sb3JzcGFjZTpzcmdiXQ0KCQktPiAibXRrLWNh bS1wMSI6MTEgW0VOQUJMRUQsSU1NVVRBQkxFXQ0KCXBhZDU6IFNvdXJjZQ0KCQlbZm10OlNCR0dS MTBfMVgxMC8xNjAweDEyMDAgZmllbGQ6bm9uZSBjb2xvcnNwYWNlOnNyZ2JdDQoJcGFkNjogU291 cmNlDQoJCVtmbXQ6U0JHR1IxMF8xWDEwLzE2MDB4MTIwMCBmaWVsZDpub25lIGNvbG9yc3BhY2U6 c3JnYl0NCglwYWQ3OiBTb3VyY2UNCgkJW2ZtdDpTQkdHUjEwXzFYMTAvMTYwMHgxMjAwIGZpZWxk Om5vbmUgY29sb3JzcGFjZTpzcmdiXQ0KCXBhZDg6IFNvdXJjZQ0KCQlbZm10OlNCR0dSMTBfMVgx MC8xNjAweDEyMDAgZmllbGQ6bm9uZSBjb2xvcnNwYWNlOnNyZ2JdDQoJcGFkOTogU291cmNlDQoJ CVtmbXQ6U0JHR1IxMF8xWDEwLzE2MDB4MTIwMCBmaWVsZDpub25lIGNvbG9yc3BhY2U6c3JnYl0N CglwYWQxMDogU291cmNlDQoJCVtmbXQ6U0JHR1IxMF8xWDEwLzE2MDB4MTIwMCBmaWVsZDpub25l IGNvbG9yc3BhY2U6c3JnYl0NCglwYWQxMTogU291cmNlDQoJCVtmbXQ6U0JHR1IxMF8xWDEwLzE2 MDB4MTIwMCBmaWVsZDpub25lIGNvbG9yc3BhY2U6c3JnYl0NCg0KLSBlbnRpdHkgNjk6IG92ODg1 NiAyLTAwMTAgKDEgcGFkLCAxIGxpbmspDQogICAgICAgICAgICAgdHlwZSBWNEwyIHN1YmRldiBz dWJ0eXBlIFNlbnNvciBmbGFncyAwDQogICAgICAgICAgICAgZGV2aWNlIG5vZGUgbmFtZSAvZGV2 L3Y0bC1zdWJkZXYyDQoJcGFkMDogU291cmNlDQoJCVtmbXQ6U0JHR1IxMF8xWDEwLzMyNjR4MjQ0 OCBmaWVsZDpub25lIGNvbG9yc3BhY2U6dW5rbm93biB5Y2Jjcjo3MDldDQoJCS0+ICIxYTA0MDAw MC5zZW5pbmYiOjAgW0VOQUJMRURdDQoNCi0gZW50aXR5IDczOiBkdzk3NjggMi0wMDBjICgwIHBh ZCwgMCBsaW5rKQ0KICAgICAgICAgICAgIHR5cGUgVjRMMiBzdWJkZXYgc3VidHlwZSBMZW5zIGZs YWdzIDANCiAgICAgICAgICAgICBkZXZpY2Ugbm9kZSBuYW1lIC9kZXYvdjRsLXN1YmRldjMNCg0K LSBlbnRpdHkgNzQ6IG92MDJhMTAgNC0wMDNkICgxIHBhZCwgMSBsaW5rKQ0KICAgICAgICAgICAg IHR5cGUgVjRMMiBzdWJkZXYgc3VidHlwZSBTZW5zb3IgZmxhZ3MgMA0KICAgICAgICAgICAgIGRl dmljZSBub2RlIG5hbWUgL2Rldi92NGwtc3ViZGV2NA0KCXBhZDA6IFNvdXJjZQ0KCQlbZm10OlNS R0dCMTBfMVgxMC8xNjAweDEyMDAgZmllbGQ6bm9uZV0NCgkJLT4gIjFhMDQwMDAwLnNlbmluZiI6 MSBbXQ0KDQo9PT09PT09PT09PQ0KPSBoaXN0b3J5ID0NCj09PT09PT09PT09DQoNCnZlcnNpb24g NjoNCiAtIEFkZCBwb3J0IG5vZGUgZGVzY3JpcHRpb24gaW4gdGhlIGR0LWJpbmRpbmcgZG9jdW1l bnQgYW5kIGRldmljZSB0cmVlDQogICBieSBUb21hc3ogRmlnYS4NCiAtIFJlbW92ZSBSR0IgZm9y bWF0IGRlZmluaXRpb25zIGluIHBpeGZtdC1yZ2IucnN0IGZvciBrZXJuZWwgdjUuNS1yYzENCiAg IHZlcnNpb24uDQogLSBSZXZpc2UgaGVscCBkZXNjcmlwdGlvbiBmb3IgVklERU9fTUVESUFURUtf SVNQX1BBU1MxLg0KIC0gQXBwbHkgU0NQIHYyMSBjaGFuZ2UgaW4gUDEgZHJpdmVyIGJ5IFBpLUhz dW4gU2hpaC4NCiAtIENvcnJlY3QgYXV0byBzdXNwZW5kIHRpbWVyIHZhbHVlIGZvciBzdXNwZW5k L3Jlc3VtZSBpc3N1ZS4NCiAtIEluY3JlYXNlIElQSSBndWFyZCB0aW1lciB0byAxIHNlY29uZCB0 byBhdm9pZCBmYWxzZSBhbGFybSBjb21tYW5kDQogICB0aW1lb3V0IGV2ZW50Lg0KIC0gRml4IEtF IGR1ZSB0byBubyBzZW4taW5mIHN1Yi1kZXZpY2UuDQoNClRvZG86DQogLSB2YjJfb3BzJ3MgYnVm X3JlcXVlc3RfY29tcGxldGUgY2FsbGJhY2sgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24uDQogLSBB ZGQgcnN0IGRvY3VtZW50cyBmb3IgTWVkaWF0ZWsgbWV0YSBmb3JtYXRzLg0KIC0gTmV3IG1ldGEg YnVmZmVyIHN0cnVjdHVyZSBkZXNpZ24gJiByZS1mYWN0b3JpbmcuDQoNCnZlcnNpb24gNToNCiAt IEZpeGVkIFJvYidzIGNvbW1lbnQgb24gZHQtYmluZGluZyBmb3JtYXQNCiAtIEZpeCBUb21hc3on cyBjb21tZW50IGluIG10a19pc3BfcG1fc3VzcGVuZCBmdW5jdGlvbg0KIC0gU3VwcG9ydCBWNEwy X0JVRl9GTEFHX1RJTUVTVEFNUF9CT09UVElNRSB0aW1lc3RhbXAgZmxhZw0KICAgYW5kIG5ldyB0 aW1lc3RhbXAgdHlwZSBpbiBkcml2ZXINCiAtIEZpeCBidWZmZXIgZW4tcXVldWUgdGltaW5nIGlz c3VlIGluIHY0DQogLSBSZW1vdmUgZGVmYXVsdCBsaW5rX25vdGlmeSBjYWxsYmFjayBmdW5jdGlv biBpbiBtdGtfY2FtX21lZGlhX29wcw0KDQpUb2RvOg0KIC0gdmIyX29wcydzIGJ1Zl9yZXF1ZXN0 X2NvbXBsZXRlIGNhbGxiYWNrIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uDQogLSBBZGQgcnN0IGRv Y3VtZW50cyBmb3IgTWVkaWF0ZWsgbWV0YSBmb3JtYXRzDQogLSBOZXcgbWV0YSBidWZmZXIgc3Ry dWN0dXJlIGRlc2lnbiAmIHJlLWZhY3RvcmluZw0KIC0gQWxpZ24gYW5kIHBhY2sgSVBJIGNvbW1h bmQgc3RydWN0dXJlcyBmb3IgRUMgUk9NIHNpemUgc2hyaW5rDQoNCnZlcnNpb24gNDoNCiAtIEZp eCBUb21hc3oncyBjb21tZW50cyB3aGljaCBhcmUgYWRkcmVzc2VkIGluIE1USyBJU1AgUDEgZHJp dmVyIHYzDQogICBwYXRjaFs0XQ0KIC0gRml4IHNvbWUgVG9tYXN6IGNvbW1lbnRzIHdoaWNoIGFy ZSBhZGRyZXNzZWQgaW4gRElQJ3MgdjIgcGF0Y2hbNV0NCiAtIEV4dGVuZCBNZWRpYXRlayBwcm9w cmlldGFyeSBpbWFnZSBmb3JtYXRzIHRvIHN1cHBvcnQgYmF5ZXIgb3JkZXINCiAtIFN1cHBvcnQg VjRMMl9CVUZfRkxBR19UU1RBTVBfU1JDX1NPRSBmb3IgY2FwdHVyZSBkZXZpY2VzDQoNClRvZG86 DQogLSB2YjJfb3BzJ3MgYnVmX3JlcXVlc3RfY29tcGxldGUgY2FsbGJhY2sgZnVuY3Rpb24gaW1w bGVtZW50YXRpb24NCiAtIEFkZCByc3QgZG9jdW1lbnRzIGZvciBNZWRpYXRlayBtZXRhIGZvcm1h dHMNCiAtIE5ldyBtZXRhIGJ1ZmZlciBzdHJ1Y3R1cmUgZGVzaWduICYgcmUtZmFjdG9yaW5nDQog LSBTdXBwb3J0IFY0TDJfQlVGX0ZMQUdfVElNRVNUQU1QX0JPT1RUSU1FIHRpbWVzdGFtcCBmbGFn DQogLSBBbGlnbiBhbmQgcGFjayBJUEkgY29tbWFuZCBzdHJ1Y3R1cmVzIGZvciBFQyBST00gc2l6 ZSBzaHJpbmsNCg0KdmVyc2lvbiAzOg0KIC0gUmVtb3ZlIElTUCBQYXNzIDEgcmVzZXJ2ZWQgbWVt b3J5IGRldmljZSBub2RlIGFuZCBjaGFuZ2UgdG8gdXNlIFNDUCdzDQogICByZXNlcnZlZCBtZW1v cnkgcmVnaW9uLiAoUm9iIEhlcnJpbmcpDQogLSBGaXggY29tbWVudHMgb2YgSVNQIFBhc3MgMSBk ZXZpY2Ugbm9kZSAmIGR0LWJpbmRpbmdzIGRvY3VtZW50IChSb2IgSGVycmluZykNCiAtIFJldmlz ZSBJU1AgUGFzczEgS2NvbmZpZw0KIC0gQWRkIHJzdCBkb2N1bWVudHMgZm9yIE1lZGlhdGVrIGlt YWdlIGZvcm1hdHMgKEhhbnMgVmVya3VpbCkNCiAtIEZpeCBrZXJuZWwgd2FybmluZyBtZXNzYWdl cyB3aGVuIHJ1bm5pbmcgdjRsMl9jb21wbGlhbmNlIHRlc3QNCiAtIE1vdmUgQUZPIGJ1ZmZlciBl bnF1ZXVlICYgZGUtcXVldWUgZnJvbSByZXF1ZXN0IEFQSSB0byBub24tcmVxdWVzdA0KIC0gbXRr X2NhbS1jdHJsLmgvbXRrX2NhbS1jdHJsLmMNCiAgIFJldmlzZSBNZWRpYXRlayBJU1AgUGFzczEg c3BlY2lmaWMgVjRMMiBjb250cm9sIG5hbWluZyAmIGZpbGUgbGljZW5jZQ0KICAgZGVjbGFyYXRp b24gKEhhbnMgVmVya3VpbCkNCiAgIFNwbGl0IEdFVF9CSU5fSU5GTyBjb250cm9sIGludG8gdHdv IGNvbnRyb2xzIHRvIGdldCB3aWR0aCAmIGhlaWdodA0KICAgaW4tZGVwZW5kZW50bHkgKEhhbnMg VmVya3VpbCkNCiAtIG10a19jYW0tdjRsMi11dGlsLmgvbXRrX2NhbS12NGwyLXV0aWwuYw0KICAg TWVyZ2luZyBtdGtfY2FtLWRldi5jIGFuZCBtdGtfY2FtLXY0bDItdXRpbC5jLiAoRHJldyBEYXZl bnBvcnQpDQogICBSZW1vdmUgdGhlIHBpeF9tb2RlIGFyZ3VtZW50IGluIHJlbGF0ZWQgZnVuY3Rp b25zIGFuZCB1bnJlYWNoYWJsZSBjb2RlLiAoRHJldyBEYXZlbnBvcnQpDQogICBGaXggRHJldydz IGNvbW1lbnRzIHdoaWNoIGFyZSBhZGRyZXNzZWQgaW4gdjIgcGF0Y2gNCiAgIEZpeCBzb21lIFRv bWFzeiBjb21tZW50cyB3aGljaCBhcmUgYWRkcmVzc2VkIGluIERJUCdzIHYxIHBhdGNoWzNdDQog LSBtdGtfY2FtLXJlZ3MuaCAvIG10a19jYW0uaCAvIG10a19jYW0uYw0KICAgRml4IERyZXcncyBj b21tZW50cyB3aGljaCBhcmUgYWRkcmVzc2VkIGluIHYyIHBhdGNoDQogICBGaXggc29tZSBUb21h c3ogY29tbWVudHMgd2hpY2ggYXJlIGFkZHJlc3NlZCBpbiBESVAncyB2MSBwYXRjaFszXQ0KICAg UmVmYWN0b3JpbmcgbXRrX2lzcF9jb25maWcgJiBtdGtfaXNwX3JlcV9lbnF1ZXVlIGZ1bmN0aW9u cw0KIC0gbXRrX2NhbS1zY3AuaCAvIG10a19jYW0tc2NwLmMNCiAgIE1vdmUgZnVuY3Rpb24gZGVj bGFyYXRpb25zIGZyb20gbXRrX2NhbS5oIHRvIG10a19jYW0tc2NwLmggKERyZXcgRGF2ZW5wb3J0 KQ0KICAgRml4IHNvbWUgVG9tYXN6IGNvbW1lbnRzIHdoaWNoIGFyZSBhZGRyZXNzZWQgaW4gRElQ J3MgdjEgcGF0Y2hbM10NCiAgIEZpeCBJU1AgZGUtaW5pdGlhbGl6ZSB0aW1pbmcgS0UgaXNzdWUN CiAtIG10a19jYW0tc21lbS5oIC8gbXRrX2NhbS1zbWVtLWRldi5jDQogICBHZXQgdGhlIHJlc2Vy dmVkIHNoYXJlZCBtZW1vcnkgdmlhIFNDUCBkcml2ZXIgKFRvbWFzeiBGaWdhKQ0KDQpUb2RvOg0K IC0gQWRkIHJzdCBkb2N1bWVudHMgZm9yIE1lZGlhdGVrIG1ldGEgZm9ybWF0cw0KIC0gTmV3IG1l dGEgYnVmZmVyIHN0cnVjdHVyZSBkZXNpZ24gJiByZS1mYWN0b3JpbmcNCg0KdmVyc2lvbiAyOg0K IC0gQWRkIDNBIGVuaGFuY2VtZW50IGZlYXR1cmUgd2hpY2ggaW5jbHVkZXM6DQogICBTZXBhcmF0 ZXMgM0EgcGlwZWxpbmUgb3V0IG9mIGZyYW1lIGJhc2lzIHRvIGltcHJvdmUNCiAgIEFFL0FXQiAo ZXhwb3N1cmUgYW5kIHdoaXRlIGJhbGFuY2UpIHBlcmZvcm1hbmNlLg0KICAgQWRkIDIgU0NQIHN1 Yi1jb21tYW5kcyBmb3IgM0EgbWV0YSBidWZmZXJzLg0KIC0gQWRkIG5ldyBjaGlsZCBkZXZpY2Ug dG8gbWFuYWdlIFAxIHNoYXJlZCBtZW1vcnkgYmV0d2VlbiBQMSBIVyB1bml0DQogICBhbmQgY28t cHJvY2Vzc29yLg0KIC0gUmVtb3ZlIG1lZGlhdGVrLGNhbV9zbWVtLnR4dCAmIGNhbV9zbWVtIGR0 cyBub2RlIGluIG10ODE4My5kdHNpLg0KIC0gUmV2aXNlZCBkb2N1bWVudCB3b3JkaW5nIGZvciBk dC1iaW5kaW5ncyBkb2N1bWVudHMgJiBkdHMgaW5mb3JtYXRpb24uDQogLSBSZW1vdmUgbXRrX2Nh bS1jdHguaCAmIG10a19jYW0tZGV2LWN0eC1jb3JlLmMgYW5kIG1vdmUgdGhlc2UNCiAgIHNvdXJj ZSBjb2RlcyB0byBtdGtfY2FtLWRldi5oICYgbXRrX2NhbS1kZXYuYy4NCiAtIG10a19jYW0tZGV2 LmggLyBtdGtfY2FtLWRldi5jDQogICBSZXZpc2VkIG10a19jYW1fdmlkZW9fZGV2aWNlICYgbXRr X2NhbV9kZXYgdG8gcmVtb3ZlIHVudXNlZCBzdHJ1Y3R1cmUgZmllbGRzDQogICBvciBhZGQgY29t bWVudHMuDQogICBSZXZpc2VkIGJ1ZmZlciBzaXplIGZvciBMTVZPICYgTENTTy4NCiAgIEZpeCBw aXhlbCBmb3JtYXQgdXRpbGl0eSBmdW5jdGlvbi4NCiAgIEFkZCB2YjJfZG1hX2NvbnRpZ19zZXRf bWF4X3NlZ19zaXplIHRvIGNvbmZpZ3VyZSBETUEgbWF4IHNlZ21lbnQgc2l6ZS4NCiAtIG10a19j YW0tdjRsMi11dGlsLmMNCiAgIFJlZmFjdG9yaW5nIFY0TDIgYXN5bmMgbWVjaGFuaXNtIHdpdGgg c2VuaW5mIGRyaXZlciBvbmx5DQogICBSZWZhY3RvcmluZyBDSU8gKENvbm5lY3Rpb24gSU8pIGlt cGxlbWVudGF0aW9uIHdpdGggYWN0aXZlIHNlbnNvcg0KICAgUmV2aXNlZCBzdHJlYW0gb24gZnVu Y3Rpb24gZm9yIDNBIGVuaGFuY2VtZW50IGZlYXR1cmUNCiAgIEFkZCBuZXcgVjRMMiBlbi1xdWV1 ZS9kZS1xdWV1ZSB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgM0EgZW5oYW5jZW1lbnQgZmVhdHVyZQ0K IC0gbXRrX2NhbS1yZWdzLmggLyBtdGtfY2FtLmggLyBtdGtfY2FtLmMNCiAgIEFkZCBtZXRhIGJ1 ZmZlciBpbmRleCByZWdpc3RlciBkZWZpbml0aW9ucw0KICAgQWRkIG1ldGEgRE1BIGNvbmZpZ3Vy YXRpb24gZnVuY3Rpb24uDQogICBTZXBhcmF0ZSB3aXRoIGZyYW1lLWJhc2UgYW5kIG5vbi1mcmFt ZS1iYXNlIGVuLXF1ZXVlL2RlLXF1ZXVlIGZ1bmN0aW9ucw0KICAgQWRkIGlzcF9zZXR1cF9zY3Bf cnByb2MgZnVuY3Rpb24gdG8gZ2V0IFJQQyBoYW5kbGUNCiAgIEFkZCBtdGtfY2FtX3Jlc2VydmVk X21lbW9yeV9pbml0IGZvciBzaGFyZWQgbWVtb3J5IG1hbmFnZW1lbnQNCiAtIG10a19jYW0tc2Nw LmggLyBtdGtfY2FtLXNjcC5jDQogICBBZGQgbmV3IG1ldGEgc3RyaWN0dXJlcyBmb3IgM0EgZW5o YW5jZW1lbnQgZmVhdHVyZQ0KICAgQWRkIG5ldyBJUEkgY29tbWFuZCB1dGlsaXR5IGZ1bmN0aW9u IGZvciAzQSBlbmhhbmNlbWVudCBmZWF0dXJlDQogICBFbmhhbmNlIGlzcF9jb21wb3Nlcl9kbWFf c2dfaW5pdCBmdW5jdGlvbiBmbG93DQogICBTaG9ydGVuIG92ZXJhbGwgSVBJIGNvbW1hbmQgc3Ry dWN0dXJlIHNpemUNCiAgIFJlbW92ZSBzY3Bfc3RhdGUgc3RhdGUgY2hlY2tpbmcNCiAgIEltcHJv dmUgY29kZSByZWFkYWJpbGl0eQ0KIC0gbXRrX2NhbS1zbWVtLmggLyBtdGtfY2FtLXNtZW0tZGV2 LmMNCiAgIEFkZCBtdGtfY2FtX2FsbG9jX3NtZW1fZGV2IHRvIGFsbG9jYXRlIG9uZSBuZXcgY2hp bGQgZGV2aWNlIG9mIElTUCBkcml2ZXIuDQogICBIYW5kbGluZyBQMSBkcml2ZXIgJ3MgcmVzZXJ2 ZWQgbWVtb3J5ICYgYWxsb2NhdGUgRE1BIGJ1ZmZlcnMgYmFzZWQgb24gdGhpcw0KICAgbWVtb3J5 IHJlZ2lvbi4NCg0KVE9ET3M6DQogLSAzQSBlbmhhbmNlbWVudCBmZWF0dXJlIGJ1ZyBmaXhpbmcN Cg0KdmVyc2lvbiAxOg0KIC0gUmV2aXNlZCBkcml2ZXIgc291cmNlcyBiYXNlZCBvbiBUb21hc3on cyBjb21tZW50cyBpbmNsdWRpbmcNCiAgIHBhcnQxLzIvMy80IGluIFJGQyBWMCBwYXRjaC4NCiAt IFJlbW92ZSBETUEgY2FjaGUgbWVjaGFuaXNtLg0KICAgU3VwcG9ydCB0d28gbmV3IHZpZGVvIGRl dmljZXMgKExDU08vTE1WTykgZm9yIGFkdmFuY2UgY2FtZXJhDQogICBmZWF0dXJlcy4NCiAtIEZp eGVkIHY0bDItY29tcGxpYW5jZSB0ZXN0IGZhaWx1cmUgaXRlbXMuDQogLSBBZGQgcHJpdmF0ZSBj b250cm9scyBmb3IgTWVkaWF0ZWsgY2FtZXJhIG1pZGRsZS13YXJlLg0KIC0gUmVwbGFjZSBWUFUg ZHJpdmVyJ3MgQVBJcyB3aXRoIG5ldyBTQ1AgZHJpdmVyIGludGVyZmFjZSBmb3INCiAgIGNvLXBy b2Nlc3NvciBjb21tdW5pY2F0aW9uLg0KIC0gUmVmYWN0b3JpbmcgbXRrX2NhbV9zY3AuYyB0byB1 c2UgcmluZy1idWZmZXJzIG1lY2hhbmlzbSBmb3IgSVBJDQogICBjb21tYW5kcyBSWCBoYW5kbGlu Zy4NCiAtIEZpeCBpbnRlcm5hbCBidWdzLg0KDQpUT0RPczoNCiAtIFJlbW92ZSBtdGtfY2FtX3Nt ZW1fZHJ2LmMgJiBtdGtfY2FtX3NtZW0uaCBhbmQgaW1wbGVtZW50IERNQSBwb29sDQogICBmb3Ig c2hhcmVkIG1lbW9yeSBtYW5hZ2VtZW50Lg0KIC0gUmV2aXNlZCBmaWxlIG5hbWVzLg0KIC0gU3Vw cG9ydCBub24gZnJhbWUtc3luYyBBRk8vQUFPIERNQSBidWZmZXJzDQoNCnZlcnNpb24gMDoNCi0g SW5pdGlhbCBzdWJtaXNzaW9uDQoNCj09PT09PT09PT09PT09PT09PQ0KIERlcGVuZGVudCBwYXRj aCBzZXQNCj09PT09PT09PT09PT09PT09PQ0KDQpDYW1lcmEgSVNQIFAxIGRyaXZlciBkZXBlbmRz IG9uIHNlbmluZiBkcml2ZXIsIFNDUCBkcml2ZXIuDQpUaGUgcGF0Y2hlcyBhcmUgbGlzdGVkIGFz IGZvbGxvd2luZzoNCg0KWzFdLiBtZWRpYTogc3VwcG9ydCBNZWRpYXRlayBzZW5zb3IgaW50ZXJm YWNlIGRyaXZlcg0KaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9jb3Zlci8xMTE0NTg0NS8N Cg0KWzJdLiBtZWRpYTogb3Y4ODU2OiBBZGQgWUFNTCBiaW5kaW5nIGFuZCBzZW5zb3IgbW9kZSBz dXBwb3J0DQpodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL2NvdmVyLzExMjIwNzg1Lw0KDQpb M10uIG1lZGlhOiBpMmM6IEFkZCBzdXBwb3J0IGZvciBPVjAyQTEwIHNlbnNvcg0KaHR0cHM6Ly9w YXRjaHdvcmsua2VybmVsLm9yZy9jb3Zlci8xMTI4NDc3OS8NCg0KWzRdLiBtZWRpYTogaTJjOiBh ZGQgc3VwcG9ydCBmb3IgRFc5NzY4IFZDTSBkcml2ZXINCmh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5l bC5vcmcvY292ZXIvMTExMzIyOTkvDQoNCls1XS4gQWRkIHN1cHBvcnQgZm9yIG10ODE4MyBTQ1AN Cmh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvY292ZXIvMTEyMzkwNjUvDQoNCls2XS4gTVQ4 MTgzIElPTU1VIFNVUFBPUlQNCmh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvY292ZXIvMTEx MTI3NjUvDQoNCj09PT09PT09PT09PT09PT09PQ0KIENvbXBsaWFuY2UgdGVzdA0KPT09PT09PT09 PT09PT09PT09DQoNClRoZSB2NGwyLWNvbXBsaWFuY2UgaXMgYnVpbHQgd2l0aCB0aGUgYmVsb3cg bGFzdGVzdCBwYXRjaC4NCmh0dHBzOi8vZ2l0LmxpbnV4dHYub3JnL3Y0bC11dGlscy5naXQvY29t bWl0Lz9pZD1lOWE3NTkzZWM2YWU5ODcwNGVjYjM1ZWE2NDk0OGQzNGMyM2E1MTU4DQoNCk5vdGUg MS4NClRoaXMgdGVzdGluZyBkZXBlbmRzIG9uIHRoZSBhYm92ZSBzZW5pbmYsIHNlbnNvcnMgYW5k IGxlbiBwYXRjaGVzWzFdWzJdWzNdWzRdLg0KDQpOb3RlIDIuDQpGb3IgZmFpbGVkIHRlc3QgY3Nh ZXMgaW4gdmlkZW8yfjgsIGl0IGlzIGNhdXNlZCBieSBuZXcgVjRMMiB0aW1lc3RhbXANCmNhbGxl ZCBWNEwyX0JVRl9GTEFHX1RJTUVTVEFNUF9CT09USU1FLg0KDQpOb3RlIDMuDQpUaGUgY3VycmVu dCBzb21lIGZhaWx1cmUgaXRlbXMgYXJlIHJlbGF0ZWQgdG8gTWVkaWF0ZWsgc2Vuc29ycy9sZW4g ZHJpdmVyIFsyXVszXVszXQ0KDQovdXNyL2Jpbi92NGwyLWNvbXBsaWFuY2UgLW0gL2Rldi9tZWRp YTINCg0KdjRsMi1jb21wbGlhbmNlIFNIQTogbm90IGF2YWlsYWJsZSwgMzIgYml0cw0KDQpDb21w bGlhbmNlIHRlc3QgZm9yIG10ay1jYW0tcDEgZGV2aWNlIC9kZXYvbWVkaWExOg0KDQpNZWRpYSBE cml2ZXIgSW5mbzoNCglEcml2ZXIgbmFtZSAgICAgIDogbXRrLWNhbS1wMQ0KCU1vZGVsICAgICAg ICAgICAgOiBtdGstY2FtLXAxDQoJU2VyaWFsICAgICAgICAgICA6DQoJQnVzIGluZm8gICAgICAg ICA6IHBsYXRmb3JtOjFhMDAwMDAwLmNhbWlzcA0KCU1lZGlhIHZlcnNpb24gICAgOiA0LjE5LjY3 DQoJSGFyZHdhcmUgcmV2aXNpb246IDB4MDAwMDAwMDAgKDApDQoJRHJpdmVyIHZlcnNpb24gICA6 IDQuMTkuNjcNCg0KUmVxdWlyZWQgaW9jdGxzOg0KCXRlc3QgTUVESUFfSU9DX0RFVklDRV9JTkZP OiBPSw0KDQpBbGxvdyBmb3IgbXVsdGlwbGUgb3BlbnM6DQoJdGVzdCBzZWNvbmQgL2Rldi9tZWRp YTEgb3BlbjogT0sNCgl0ZXN0IE1FRElBX0lPQ19ERVZJQ0VfSU5GTzogT0sNCgl0ZXN0IGZvciB1 bmxpbWl0ZWQgb3BlbnM6IE9LDQoNCk1lZGlhIENvbnRyb2xsZXIgaW9jdGxzOg0KCXRlc3QgTUVE SUFfSU9DX0dfVE9QT0xPR1k6IE9LDQoJRW50aXRpZXM6IDExIEludGVyZmFjZXM6IDExIFBhZHM6 IDMzIExpbmtzOiAyMQ0KCXRlc3QgTUVESUFfSU9DX0VOVU1fRU5USVRJRVMvTElOS1M6IE9LDQoJ dGVzdCBNRURJQV9JT0NfU0VUVVBfTElOSzogT0sNCg0KVG90YWwgZm9yIG10ay1jYW0tcDEgZGV2 aWNlIC9kZXYvbWVkaWExOiA3LCBTdWNjZWVkZWQ6IDcsIEZhaWxlZDogMCwgV2FybmluZ3M6IDAN Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpDb21wbGlhbmNlIHRlc3QgZm9yIG10ay1jYW0tcDEg ZGV2aWNlIC9kZXYvdmlkZW8yNToNCg0KRHJpdmVyIEluZm86DQoJRHJpdmVyIG5hbWUgICAgICA6 IG10ay1jYW0tcDENCglDYXJkIHR5cGUgICAgICAgIDogbXRrLWNhbS1wMQ0KCUJ1cyBpbmZvICAg ICAgICAgOiBwbGF0Zm9ybToxYTAwMDAwMC5jYW1pc3ANCglEcml2ZXIgdmVyc2lvbiAgIDogNC4x OS42Nw0KCUNhcGFiaWxpdGllcyAgICAgOiAweDhjMjAwMDAwDQoJCVN0cmVhbWluZw0KCQlFeHRl bmRlZCBQaXggRm9ybWF0DQoJCURldmljZSBDYXBhYmlsaXRpZXMNCglEZXZpY2UgQ2FwcyAgICAg IDogMHgwYzIwMDAwMA0KCQlTdHJlYW1pbmcNCgkJRXh0ZW5kZWQgUGl4IEZvcm1hdA0KTWVkaWEg RHJpdmVyIEluZm86DQoJRHJpdmVyIG5hbWUgICAgICA6IG10ay1jYW0tcDENCglNb2RlbCAgICAg ICAgICAgIDogbXRrLWNhbS1wMQ0KCVNlcmlhbCAgICAgICAgICAgOiANCglCdXMgaW5mbyAgICAg ICAgIDogcGxhdGZvcm06MWEwMDAwMDAuY2FtaXNwDQoJTWVkaWEgdmVyc2lvbiAgICA6IDQuMTku NjcNCglIYXJkd2FyZSByZXZpc2lvbjogMHgwMDAwMDAwMCAoMCkNCglEcml2ZXIgdmVyc2lvbiAg IDogNC4xOS42Nw0KSW50ZXJmYWNlIEluZm86DQoJSUQgICAgICAgICAgICAgICA6IDB4MDMwMDAw MTANCglUeXBlICAgICAgICAgICAgIDogVjRMIFZpZGVvDQpFbnRpdHkgSW5mbzoNCglJRCAgICAg ICAgICAgICAgIDogMHgwMDAwMDAwZSAoMTQpDQoJTmFtZSAgICAgICAgICAgICA6IG10ay1jYW0t cDEgbWV0YSBpbnB1dA0KCUZ1bmN0aW9uICAgICAgICAgOiBWNEwyIEkvTw0KCVBhZCAweDAxMDAw MDBmICAgOiAwOiBTb3VyY2UNCgkgIExpbmsgMHgwMjAwMDAxMjogdG8gcmVtb3RlIHBhZCAweDEw MDAwMDIgb2YgZW50aXR5ICdtdGstY2FtLXAxJzogRGF0YQ0KDQpSZXF1aXJlZCBpb2N0bHM6DQoJ dGVzdCBNQyBpbmZvcm1hdGlvbiAoc2VlICdNZWRpYSBEcml2ZXIgSW5mbycgYWJvdmUpOiBPSw0K CXRlc3QgVklESU9DX1FVRVJZQ0FQOiBPSw0KDQpBbGxvdyBmb3IgbXVsdGlwbGUgb3BlbnM6DQoJ dGVzdCBzZWNvbmQgL2Rldi92aWRlbzI1IG9wZW46IE9LDQoJdGVzdCBWSURJT0NfUVVFUllDQVA6 IE9LDQoJdGVzdCBWSURJT0NfRy9TX1BSSU9SSVRZOiBPSw0KCXRlc3QgZm9yIHVubGltaXRlZCBv cGVuczogT0sNCg0KRGVidWcgaW9jdGxzOg0KCXRlc3QgVklESU9DX0RCR19HL1NfUkVHSVNURVI6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0xPR19TVEFUVVM6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KDQpJbnB1dCBpb2N0bHM6DQoJdGVzdCBWSURJT0NfRy9TX1RVTkVSL0VOVU1fRlJF UV9CQU5EUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5DWTog T0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfU19IV19GUkVRX1NFRUs6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0VOVU1BVURJTzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJ dGVzdCBWSURJT0NfRy9TL0VOVU1JTlBVVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJ T0NfRy9TX0FVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkNCglJbnB1dHM6IDAgQXVkaW8gSW5wdXRz OiAwIFR1bmVyczogMA0KDQpPdXRwdXQgaW9jdGxzOg0KCXRlc3QgVklESU9DX0cvU19NT0RVTEFU T1I6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvU19GUkVRVUVOQ1k6IE9LIChO b3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0VOVU1BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVk KQ0KCXRlc3QgVklESU9DX0cvUy9FTlVNT1VUUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0 IFZJRElPQ19HL1NfQVVET1VUOiBPSyAoTm90IFN1cHBvcnRlZCkNCglPdXRwdXRzOiAwIEF1ZGlv IE91dHB1dHM6IDAgTW9kdWxhdG9yczogMA0KDQpJbnB1dC9PdXRwdXQgY29uZmlndXJhdGlvbiBp b2N0bHM6DQoJdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfU1REOiBPSyAoTm90IFN1cHBvcnRl ZCkNCgl0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9EVl9USU1JTkdTOiBPSyAoTm90IFN1cHBv cnRlZCkNCgl0ZXN0IFZJRElPQ19EVl9USU1JTkdTX0NBUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJ dGVzdCBWSURJT0NfRy9TX0VESUQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpDb250cm9sIGlvY3Rs czoNCgl0ZXN0IFZJRElPQ19RVUVSWV9FWFRfQ1RSTC9RVUVSWU1FTlU6IE9LIChOb3QgU3VwcG9y dGVkKQ0KCXRlc3QgVklESU9DX1FVRVJZQ1RSTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBW SURJT0NfRy9TX0NUUkw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvUy9UUllf RVhUX0NUUkxTOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ18oVU4pU1VCU0NSSUJF X0VWRU5UL0RRRVZFTlQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvU19KUEVH Q09NUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJU3RhbmRhcmQgQ29udHJvbHM6IDAgUHJpdmF0ZSBD b250cm9sczogMA0KDQpGb3JtYXQgaW9jdGxzOg0KCXRlc3QgVklESU9DX0VOVU1fRk1UL0ZSQU1F U0laRVMvRlJBTUVJTlRFUlZBTFM6IE9LDQoJdGVzdCBWSURJT0NfRy9TX1BBUk06IE9LIChOb3Qg U3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0dfRkJVRjogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVz dCBWSURJT0NfR19GTVQ6IE9LDQoJdGVzdCBWSURJT0NfVFJZX0ZNVDogT0sNCgl0ZXN0IFZJRElP Q19TX0ZNVDogT0sNCgl0ZXN0IFZJRElPQ19HX1NMSUNFRF9WQklfQ0FQOiBPSyAoTm90IFN1cHBv cnRlZCkNCgl0ZXN0IENyb3BwaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IENvbXBvc2l2 NGwyLWNvbXBsaWFuY2UgU0hBOiBub3QgYXZhaWxhYmxlLCAzMiBiaXRzDQoNCkNvbXBsaWFuY2Ug dGVzdCBmb3IgbXRrLWNhbS1wMSBkZXZpY2UgL2Rldi9tZWRpYTI6DQoNCk1lZGlhIERyaXZlciBJ bmZvOg0KCURyaXZlciBuYW1lICAgICAgOiBtdGstY2FtLXAxDQoJTW9kZWwgICAgICAgICAgICA6 IG10ay1jYW0tcDENCglTZXJpYWwgICAgICAgICAgIDogDQoJQnVzIGluZm8gICAgICAgICA6IHBs YXRmb3JtOjFhMDAwMDAwLmNhbWlzcA0KCU1lZGlhIHZlcnNpb24gICAgOiA0LjE5Ljg5DQoJSGFy ZHdhcmUgcmV2aXNpb246IDB4MDAwMDAwMDAgKDApDQoJRHJpdmVyIHZlcnNpb24gICA6IDQuMTku ODkNCg0KUmVxdWlyZWQgaW9jdGxzOg0KCXRlc3QgTUVESUFfSU9DX0RFVklDRV9JTkZPOiBPSw0K DQpBbGxvdyBmb3IgbXVsdGlwbGUgb3BlbnM6DQoJdGVzdCBzZWNvbmQgL2Rldi9tZWRpYTIgb3Bl bjogT0sNCgl0ZXN0IE1FRElBX0lPQ19ERVZJQ0VfSU5GTzogT0sNCgl0ZXN0IGZvciB1bmxpbWl0 ZWQgb3BlbnM6IE9LDQoNCk1lZGlhIENvbnRyb2xsZXIgaW9jdGxzOg0KCXRlc3QgTUVESUFfSU9D X0dfVE9QT0xPR1k6IE9LDQoJRW50aXRpZXM6IDEyIEludGVyZmFjZXM6IDEyIFBhZHM6IDMzIExp bmtzOiAyMg0KCXRlc3QgTUVESUFfSU9DX0VOVU1fRU5USVRJRVMvTElOS1M6IE9LDQoJdGVzdCBN RURJQV9JT0NfU0VUVVBfTElOSzogT0sNCg0KVG90YWwgZm9yIG10ay1jYW0tcDEgZGV2aWNlIC9k ZXYvbWVkaWEyOiA3LCBTdWNjZWVkZWQ6IDcsIEZhaWxlZDogMCwgV2FybmluZ3M6IDANCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQpDb21wbGlhbmNlIHRlc3QgZm9yIG10ay1jYW0tcDEgZGV2aWNl IC9kZXYvdmlkZW8yOg0KDQpEcml2ZXIgSW5mbzoNCglEcml2ZXIgbmFtZSAgICAgIDogbXRrLWNh bS1wMQ0KCUNhcmQgdHlwZSAgICAgICAgOiBtdGstY2FtLXAxDQoJQnVzIGluZm8gICAgICAgICA6 IHBsYXRmb3JtOjFhMDAwMDAwLmNhbWlzcA0KCURyaXZlciB2ZXJzaW9uICAgOiA0LjE5Ljg5DQoJ Q2FwYWJpbGl0aWVzICAgICA6IDB4OGMyMDAwMDANCgkJTWV0YWRhdGEgT3V0cHV0DQoJCVN0cmVh bWluZw0KCQlFeHRlbmRlZCBQaXggRm9ybWF0DQoJCURldmljZSBDYXBhYmlsaXRpZXMNCglEZXZp Y2UgQ2FwcyAgICAgIDogMHgwYzIwMDAwMA0KCQlNZXRhZGF0YSBPdXRwdXQNCgkJU3RyZWFtaW5n DQoJCUV4dGVuZGVkIFBpeCBGb3JtYXQNCk1lZGlhIERyaXZlciBJbmZvOg0KCURyaXZlciBuYW1l ICAgICAgOiBtdGstY2FtLXAxDQoJTW9kZWwgICAgICAgICAgICA6IG10ay1jYW0tcDENCglTZXJp YWwgICAgICAgICAgIDogDQoJQnVzIGluZm8gICAgICAgICA6IHBsYXRmb3JtOjFhMDAwMDAwLmNh bWlzcA0KCU1lZGlhIHZlcnNpb24gICAgOiA0LjE5Ljg5DQoJSGFyZHdhcmUgcmV2aXNpb246IDB4 MDAwMDAwMDAgKDApDQoJRHJpdmVyIHZlcnNpb24gICA6IDQuMTkuODkNCkludGVyZmFjZSBJbmZv Og0KCUlEICAgICAgICAgICAgICAgOiAweDAzMDAwMDEwDQoJVHlwZSAgICAgICAgICAgICA6IFY0 TCBWaWRlbw0KRW50aXR5IEluZm86DQoJSUQgICAgICAgICAgICAgICA6IDB4MDAwMDAwMGUgKDE0 KQ0KCU5hbWUgICAgICAgICAgICAgOiBtdGstY2FtLXAxIG1ldGEgaW5wdXQNCglGdW5jdGlvbiAg ICAgICAgIDogVjRMMiBJL08NCglQYWQgMHgwMTAwMDAwZiAgIDogMDogU291cmNlDQoJICBMaW5r IDB4MDIwMDAwMTI6IHRvIHJlbW90ZSBwYWQgMHgxMDAwMDAyIG9mIGVudGl0eSAnbXRrLWNhbS1w MSc6IERhdGENCg0KUmVxdWlyZWQgaW9jdGxzOg0KCXRlc3QgTUMgaW5mb3JtYXRpb24gKHNlZSAn TWVkaWEgRHJpdmVyIEluZm8nIGFib3ZlKTogT0sNCgl0ZXN0IFZJRElPQ19RVUVSWUNBUDogT0sN Cg0KQWxsb3cgZm9yIG11bHRpcGxlIG9wZW5zOg0KCXRlc3Qgc2Vjb25kIC9kZXYvdmlkZW8yIG9w ZW46IE9LDQoJdGVzdCBWSURJT0NfUVVFUllDQVA6IE9LDQoJdGVzdCBWSURJT0NfRy9TX1BSSU9S SVRZOiBPSw0KCXRlc3QgZm9yIHVubGltaXRlZCBvcGVuczogT0sNCg0KRGVidWcgaW9jdGxzOg0K CXRlc3QgVklESU9DX0RCR19HL1NfUkVHSVNURVI6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3Qg VklESU9DX0xPR19TVEFUVVM6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpJbnB1dCBpb2N0bHM6DQoJ dGVzdCBWSURJT0NfRy9TX1RVTkVSL0VOVU1fRlJFUV9CQU5EUzogT0sgKE5vdCBTdXBwb3J0ZWQp DQoJdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5DWTogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBW SURJT0NfU19IV19GUkVRX1NFRUs6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0VO VU1BVURJTzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TL0VOVU1JTlBVVDog T0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX0FVRElPOiBPSyAoTm90IFN1cHBv cnRlZCkNCglJbnB1dHM6IDAgQXVkaW8gSW5wdXRzOiAwIFR1bmVyczogMA0KDQpPdXRwdXQgaW9j dGxzOg0KCXRlc3QgVklESU9DX0cvU19NT0RVTEFUT1I6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRl c3QgVklESU9DX0cvU19GUkVRVUVOQ1k6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9D X0VOVU1BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvUy9FTlVNT1VU UFVUOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HL1NfQVVET1VUOiBPSyAoTm90 IFN1cHBvcnRlZCkNCglPdXRwdXRzOiAwIEF1ZGlvIE91dHB1dHM6IDAgTW9kdWxhdG9yczogMA0K DQpJbnB1dC9PdXRwdXQgY29uZmlndXJhdGlvbiBpb2N0bHM6DQoJdGVzdCBWSURJT0NfRU5VTS9H L1MvUVVFUllfU1REOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19FTlVNL0cvUy9R VUVSWV9EVl9USU1JTkdTOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19EVl9USU1J TkdTX0NBUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX0VESUQ6IE9LIChO b3QgU3VwcG9ydGVkKQ0KDQpDb250cm9sIGlvY3RsczoNCgl0ZXN0IFZJRElPQ19RVUVSWV9FWFRf Q1RSTC9RVUVSWU1FTlU6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1FVRVJZQ1RS TDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX0NUUkw6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvUy9UUllfRVhUX0NUUkxTOiBPSyAoTm90IFN1cHBvcnRl ZCkNCgl0ZXN0IFZJRElPQ18oVU4pU1VCU0NSSUJFX0VWRU5UL0RRRVZFTlQ6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvU19KUEVHQ09NUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJ U3RhbmRhcmQgQ29udHJvbHM6IDAgUHJpdmF0ZSBDb250cm9sczogMA0KDQpGb3JtYXQgaW9jdGxz Og0KCXRlc3QgVklESU9DX0VOVU1fRk1UL0ZSQU1FU0laRVMvRlJBTUVJTlRFUlZBTFM6IE9LDQoJ dGVzdCBWSURJT0NfRy9TX1BBUk06IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0df RkJVRjogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfR19GTVQ6IE9LDQoJdGVzdCBW SURJT0NfVFJZX0ZNVDogT0sNCgl0ZXN0IFZJRElPQ19TX0ZNVDogT0sNCgl0ZXN0IFZJRElPQ19H X1NMSUNFRF9WQklfQ0FQOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IENyb3BwaW5nOiBPSyAo Tm90IFN1cHBvcnRlZCkNCgl0ZXN0IENvbXBvc2luZzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVz dCBTY2FsaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCg0KQ29kZWMgaW9jdGxzOg0KCXRlc3QgVklE SU9DXyhUUllfKUVOQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19H X0VOQ19JTkRFWDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfKFRSWV8pREVDT0RF Ul9DTUQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpCdWZmZXIgaW9jdGxzOg0KCQlmYWlsOiB2NGwy LXRlc3QtYnVmZmVycy5jcHAoMzcwKTogdGltZXN0YW1wICE9IFY0TDJfQlVGX0ZMQUdfVElNRVNU QU1QX01PTk9UT05JQyAmJiB0aW1lc3RhbXAgIT0gVjRMMl9CVUZfRkxBR19USU1FU1RBTVBfQ09Q WQ0KCQlmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoNDg2KTogYnVmLmNoZWNrKFVucXVldWVk LCBpKQ0KCQlmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoNjE1KTogdGVzdFF1ZXJ5QnVmKG5v ZGUsIGksIHEuZ19idWZmZXJzKCkpDQoJdGVzdCBWSURJT0NfUkVRQlVGUy9DUkVBVEVfQlVGUy9R VUVSWUJVRjogRkFJTA0KCQlmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoNzQ3KTogVklESU9D X0VYUEJVRiBpcyBzdXBwb3J0ZWQsIGJ1dCB0aGUgVjRMMl9NRU1PUllfTU1BUCBzdXBwb3J0IGlz IG1pc3Npbmcgb3IgbWFsZnVuY3Rpb25pbmcuDQoJCWZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNw cCg3NDgpOiBWSURJT0NfRVhQQlVGIGlzIHN1cHBvcnRlZCwgYnV0IHRoZSBWNEwyX01FTU9SWV9N TUFQIHN1cHBvcnQgaXMgbWlzc2luZywgcHJvYmFibHkgZHVlIHRvIGVhcmxpZXIgZmFpbGluZyBm b3JtYXQgdGVzdHMuDQoJdGVzdCBWSURJT0NfRVhQQlVGOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0 ZXN0IFJlcXVlc3RzOiBPSw0KDQpUb3RhbCBmb3IgbXRrLWNhbS1wMSBkZXZpY2UgL2Rldi92aWRl bzI6IDQ1LCBTdWNjZWVkZWQ6IDQ0LCBGYWlsZWQ6IDEsIFdhcm5pbmdzOiAwDQotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KQ29tcGxpYW5jZSB0ZXN0IGZvciBtdGstY2FtLXAxIGRldmljZSAvZGV2 L3ZpZGVvMzoNCg0KRHJpdmVyIEluZm86DQoJRHJpdmVyIG5hbWUgICAgICA6IG10ay1jYW0tcDEN CglDYXJkIHR5cGUgICAgICAgIDogbXRrLWNhbS1wMQ0KCUJ1cyBpbmZvICAgICAgICAgOiBwbGF0 Zm9ybToxYTAwMDAwMC5jYW1pc3ANCglEcml2ZXIgdmVyc2lvbiAgIDogNC4xOS44OQ0KCUNhcGFi aWxpdGllcyAgICAgOiAweDg0MjAxMDAwDQoJCVZpZGVvIENhcHR1cmUgTXVsdGlwbGFuYXINCgkJ U3RyZWFtaW5nDQoJCUV4dGVuZGVkIFBpeCBGb3JtYXQNCgkJRGV2aWNlIENhcGFiaWxpdGllcw0K CURldmljZSBDYXBzICAgICAgOiAweDA0MjAxMDAwDQoJCVZpZGVvIENhcHR1cmUgTXVsdGlwbGFu YXINCgkJU3RyZWFtaW5nDQoJCUV4dGVuZGVkIFBpeCBGb3JtYXQNCk1lZGlhIERyaXZlciBJbmZv Og0KCURyaXZlciBuYW1lICAgICAgOiBtdGstY2FtLXAxDQoJTW9kZWwgICAgICAgICAgICA6IG10 ay1jYW0tcDENCglTZXJpYWwgICAgICAgICAgIDogDQoJQnVzIGluZm8gICAgICAgICA6IHBsYXRm b3JtOjFhMDAwMDAwLmNhbWlzcA0KCU1lZGlhIHZlcnNpb24gICAgOiA0LjE5Ljg5DQoJSGFyZHdh cmUgcmV2aXNpb246IDB4MDAwMDAwMDAgKDApDQoJRHJpdmVyIHZlcnNpb24gICA6IDQuMTkuODkN CkludGVyZmFjZSBJbmZvOg0KCUlEICAgICAgICAgICAgICAgOiAweDAzMDAwMDE2DQoJVHlwZSAg ICAgICAgICAgICA6IFY0TCBWaWRlbw0KRW50aXR5IEluZm86DQoJSUQgICAgICAgICAgICAgICA6 IDB4MDAwMDAwMTQgKDIwKQ0KCU5hbWUgICAgICAgICAgICAgOiBtdGstY2FtLXAxIG1haW4gc3Ry ZWFtDQoJRnVuY3Rpb24gICAgICAgICA6IFY0TDIgSS9PDQoJUGFkIDB4MDEwMDAwMTUgICA6IDA6 IFNpbmsNCgkgIExpbmsgMHgwMjAwMDAxODogZnJvbSByZW1vdGUgcGFkIDB4MTAwMDAwMyBvZiBl bnRpdHkgJ210ay1jYW0tcDEnOiBEYXRhLCBFbmFibGVkLCBJbW11dGFibGUNCg0KUmVxdWlyZWQg aW9jdGxzOg0KCXRlc3QgTUMgaW5mb3JtYXRpb24gKHNlZSAnTWVkaWEgRHJpdmVyIEluZm8nIGFi b3ZlKTogT0sNCgl0ZXN0IFZJRElPQ19RVUVSWUNBUDogT0sNCg0KQWxsb3cgZm9yIG11bHRpcGxl IG9wZW5zOg0KCXRlc3Qgc2Vjb25kIC9kZXYvdmlkZW8zIG9wZW46IE9LDQoJdGVzdCBWSURJT0Nf UVVFUllDQVA6IE9LDQoJdGVzdCBWSURJT0NfRy9TX1BSSU9SSVRZOiBPSw0KCXRlc3QgZm9yIHVu bGltaXRlZCBvcGVuczogT0sNCg0KRGVidWcgaW9jdGxzOg0KCXRlc3QgVklESU9DX0RCR19HL1Nf UkVHSVNURVI6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0xPR19TVEFUVVM6IE9L IChOb3QgU3VwcG9ydGVkKQ0KDQpJbnB1dCBpb2N0bHM6DQoJdGVzdCBWSURJT0NfRy9TX1RVTkVS L0VOVU1fRlJFUV9CQU5EUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX0ZS RVFVRU5DWTogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfU19IV19GUkVRX1NFRUs6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0VOVU1BVURJTzogT0sgKE5vdCBTdXBw b3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TL0VOVU1JTlBVVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJ dGVzdCBWSURJT0NfRy9TX0FVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkNCglJbnB1dHM6IDAgQXVk aW8gSW5wdXRzOiAwIFR1bmVyczogMA0KDQpPdXRwdXQgaW9jdGxzOg0KCXRlc3QgVklESU9DX0cv U19NT0RVTEFUT1I6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvU19GUkVRVUVO Q1k6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0VOVU1BVURPVVQ6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvUy9FTlVNT1VUUFVUOiBPSyAoTm90IFN1cHBvcnRl ZCkNCgl0ZXN0IFZJRElPQ19HL1NfQVVET1VUOiBPSyAoTm90IFN1cHBvcnRlZCkNCglPdXRwdXRz OiAwIEF1ZGlvIE91dHB1dHM6IDAgTW9kdWxhdG9yczogMA0KDQpJbnB1dC9PdXRwdXQgY29uZmln dXJhdGlvbiBpb2N0bHM6DQoJdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfU1REOiBPSyAoTm90 IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9EVl9USU1JTkdTOiBPSyAo Tm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19EVl9USU1JTkdTX0NBUDogT0sgKE5vdCBTdXBw b3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX0VESUQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpDb250 cm9sIGlvY3RsczoNCgl0ZXN0IFZJRElPQ19RVUVSWV9FWFRfQ1RSTC9RVUVSWU1FTlU6IE9LIChO b3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1FVRVJZQ1RSTDogT0sgKE5vdCBTdXBwb3J0ZWQp DQoJdGVzdCBWSURJT0NfRy9TX0NUUkw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9D X0cvUy9UUllfRVhUX0NUUkxTOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ18oVU4p U1VCU0NSSUJFX0VWRU5UL0RRRVZFTlQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9D X0cvU19KUEVHQ09NUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJU3RhbmRhcmQgQ29udHJvbHM6IDAg UHJpdmF0ZSBDb250cm9sczogMA0KDQpGb3JtYXQgaW9jdGxzOg0KCXRlc3QgVklESU9DX0VOVU1f Rk1UL0ZSQU1FU0laRVMvRlJBTUVJTlRFUlZBTFM6IE9LDQoJdGVzdCBWSURJT0NfRy9TX1BBUk06 IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0dfRkJVRjogT0sgKE5vdCBTdXBwb3J0 ZWQpDQoJdGVzdCBWSURJT0NfR19GTVQ6IE9LDQoJdGVzdCBWSURJT0NfVFJZX0ZNVDogT0sNCgl0 ZXN0IFZJRElPQ19TX0ZNVDogT0sNCgl0ZXN0IFZJRElPQ19HX1NMSUNFRF9WQklfQ0FQOiBPSyAo Tm90IFN1cHBvcnRlZCkNCgl0ZXN0IENyb3BwaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0 IENvbXBvc2luZzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBTY2FsaW5nOiBPSw0KDQpDb2Rl YyBpb2N0bHM6DQoJdGVzdCBWSURJT0NfKFRSWV8pRU5DT0RFUl9DTUQ6IE9LIChOb3QgU3VwcG9y dGVkKQ0KCXRlc3QgVklESU9DX0dfRU5DX0lOREVYOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0 IFZJRElPQ18oVFJZXylERUNPREVSX0NNRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNCkJ1ZmZlciBp b2N0bHM6DQoJCWZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCgzNzApOiB0aW1lc3RhbXAgIT0g VjRMMl9CVUZfRkxBR19USU1FU1RBTVBfTU9OT1RPTklDICYmIHRpbWVzdGFtcCAhPSBWNEwyX0JV Rl9GTEFHX1RJTUVTVEFNUF9DT1BZDQoJCWZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCg0ODYp OiBidWYuY2hlY2soVW5xdWV1ZWQsIGkpDQoJCWZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCg2 MTUpOiB0ZXN0UXVlcnlCdWYobm9kZSwgaSwgcS5nX2J1ZmZlcnMoKSkNCgl0ZXN0IFZJRElPQ19S RVFCVUZTL0NSRUFURV9CVUZTL1FVRVJZQlVGOiBGQUlMDQoJCWZhaWw6IHY0bDItdGVzdC1idWZm ZXJzLmNwcCg3NDcpOiBWSURJT0NfRVhQQlVGIGlzIHN1cHBvcnRlZCwgYnV0IHRoZSBWNEwyX01F TU9SWV9NTUFQIHN1cHBvcnQgaXMgbWlzc2luZyBvciBtYWxmdW5jdGlvbmluZy4NCgkJZmFpbDog djRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDc0OCk6IFZJRElPQ19FWFBCVUYgaXMgc3VwcG9ydGVkLCBi dXQgdGhlIFY0TDJfTUVNT1JZX01NQVAgc3VwcG9ydCBpcyBtaXNzaW5nLCBwcm9iYWJseSBkdWUg dG8gZWFybGllciBmYWlsaW5nIGZvcm1hdCB0ZXN0cy4NCgl0ZXN0IFZJRElPQ19FWFBCVUY6IE9L IChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgUmVxdWVzdHM6IE9LDQoNClRvdGFsIGZvciBtdGstY2Ft LXAxIGRldmljZSAvZGV2L3ZpZGVvMzogNDUsIFN1Y2NlZWRlZDogNDQsIEZhaWxlZDogMSwgV2Fy bmluZ3M6IDANCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpDb21wbGlhbmNlIHRlc3QgZm9yIG10 ay1jYW0tcDEgZGV2aWNlIC9kZXYvdmlkZW80Og0KDQpEcml2ZXIgSW5mbzoNCglEcml2ZXIgbmFt ZSAgICAgIDogbXRrLWNhbS1wMQ0KCUNhcmQgdHlwZSAgICAgICAgOiBtdGstY2FtLXAxDQoJQnVz IGluZm8gICAgICAgICA6IHBsYXRmb3JtOjFhMDAwMDAwLmNhbWlzcA0KCURyaXZlciB2ZXJzaW9u ICAgOiA0LjE5Ljg5DQoJQ2FwYWJpbGl0aWVzICAgICA6IDB4ODQyMDEwMDANCgkJVmlkZW8gQ2Fw dHVyZSBNdWx0aXBsYW5hcg0KCQlTdHJlYW1pbmcNCgkJRXh0ZW5kZWQgUGl4IEZvcm1hdA0KCQlE ZXZpY2UgQ2FwYWJpbGl0aWVzDQoJRGV2aWNlIENhcHMgICAgICA6IDB4MDQyMDEwMDANCgkJVmlk ZW8gQ2FwdHVyZSBNdWx0aXBsYW5hcg0KCQlTdHJlYW1pbmcNCgkJRXh0ZW5kZWQgUGl4IEZvcm1h dA0KTWVkaWEgRHJpdmVyIEluZm86DQoJRHJpdmVyIG5hbWUgICAgICA6IG10ay1jYW0tcDENCglN b2RlbCAgICAgICAgICAgIDogbXRrLWNhbS1wMQ0KCVNlcmlhbCAgICAgICAgICAgOiANCglCdXMg aW5mbyAgICAgICAgIDogcGxhdGZvcm06MWEwMDAwMDAuY2FtaXNwDQoJTWVkaWEgdmVyc2lvbiAg ICA6IDQuMTkuODkNCglIYXJkd2FyZSByZXZpc2lvbjogMHgwMDAwMDAwMCAoMCkNCglEcml2ZXIg dmVyc2lvbiAgIDogNC4xOS44OQ0KSW50ZXJmYWNlIEluZm86DQoJSUQgICAgICAgICAgICAgICA6 IDB4MDMwMDAwMWMNCglUeXBlICAgICAgICAgICAgIDogVjRMIFZpZGVvDQpFbnRpdHkgSW5mbzoN CglJRCAgICAgICAgICAgICAgIDogMHgwMDAwMDAxYSAoMjYpDQoJTmFtZSAgICAgICAgICAgICA6 IG10ay1jYW0tcDEgcGFja2VkIG91dA0KCUZ1bmN0aW9uICAgICAgICAgOiBWNEwyIEkvTw0KCVBh ZCAweDAxMDAwMDFiICAgOiAwOiBTaW5rDQoJICBMaW5rIDB4MDIwMDAwMWU6IGZyb20gcmVtb3Rl IHBhZCAweDEwMDAwMDQgb2YgZW50aXR5ICdtdGstY2FtLXAxJzogRGF0YQ0KDQpSZXF1aXJlZCBp b2N0bHM6DQoJdGVzdCBNQyBpbmZvcm1hdGlvbiAoc2VlICdNZWRpYSBEcml2ZXIgSW5mbycgYWJv dmUpOiBPSw0KCXRlc3QgVklESU9DX1FVRVJZQ0FQOiBPSw0KDQpBbGxvdyBmb3IgbXVsdGlwbGUg b3BlbnM6DQoJdGVzdCBzZWNvbmQgL2Rldi92aWRlbzQgb3BlbjogT0sNCgl0ZXN0IFZJRElPQ19R VUVSWUNBUDogT0sNCgl0ZXN0IFZJRElPQ19HL1NfUFJJT1JJVFk6IE9LDQoJdGVzdCBmb3IgdW5s aW1pdGVkIG9wZW5zOiBPSw0KDQpEZWJ1ZyBpb2N0bHM6DQoJdGVzdCBWSURJT0NfREJHX0cvU19S RUdJU1RFUjogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfTE9HX1NUQVRVUzogT0sg KE5vdCBTdXBwb3J0ZWQpDQoNCklucHV0IGlvY3RsczoNCgl0ZXN0IFZJRElPQ19HL1NfVFVORVIv RU5VTV9GUkVRX0JBTkRTOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HL1NfRlJF UVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19TX0hXX0ZSRVFfU0VFSzog T0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRU5VTUFVRElPOiBPSyAoTm90IFN1cHBv cnRlZCkNCgl0ZXN0IFZJRElPQ19HL1MvRU5VTUlOUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0 ZXN0IFZJRElPQ19HL1NfQVVESU86IE9LIChOb3QgU3VwcG9ydGVkKQ0KCUlucHV0czogMCBBdWRp byBJbnB1dHM6IDAgVHVuZXJzOiAwDQoNCk91dHB1dCBpb2N0bHM6DQoJdGVzdCBWSURJT0NfRy9T X01PRFVMQVRPUjogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5D WTogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRU5VTUFVRE9VVDogT0sgKE5vdCBT dXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TL0VOVU1PVVRQVVQ6IE9LIChOb3QgU3VwcG9ydGVk KQ0KCXRlc3QgVklESU9DX0cvU19BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCU91dHB1dHM6 IDAgQXVkaW8gT3V0cHV0czogMCBNb2R1bGF0b3JzOiAwDQoNCklucHV0L091dHB1dCBjb25maWd1 cmF0aW9uIGlvY3RsczoNCgl0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9TVEQ6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0VOVU0vRy9TL1FVRVJZX0RWX1RJTUlOR1M6IE9LIChO b3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0RWX1RJTUlOR1NfQ0FQOiBPSyAoTm90IFN1cHBv cnRlZCkNCgl0ZXN0IFZJRElPQ19HL1NfRURJRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNCkNvbnRy b2wgaW9jdGxzOg0KCXRlc3QgVklESU9DX1FVRVJZX0VYVF9DVFJML1FVRVJZTUVOVTogT0sgKE5v dCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfUVVFUllDVFJMOiBPSyAoTm90IFN1cHBvcnRlZCkN Cgl0ZXN0IFZJRElPQ19HL1NfQ1RSTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0Nf Ry9TL1RSWV9FWFRfQ1RSTFM6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DXyhVTilT VUJTQ1JJQkVfRVZFTlQvRFFFVkVOVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0Nf Ry9TX0pQRUdDT01QOiBPSyAoTm90IFN1cHBvcnRlZCkNCglTdGFuZGFyZCBDb250cm9sczogMCBQ cml2YXRlIENvbnRyb2xzOiAwDQoNCkZvcm1hdCBpb2N0bHM6DQoJdGVzdCBWSURJT0NfRU5VTV9G TVQvRlJBTUVTSVpFUy9GUkFNRUlOVEVSVkFMUzogT0sNCgl0ZXN0IFZJRElPQ19HL1NfUEFSTTog T0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfR19GQlVGOiBPSyAoTm90IFN1cHBvcnRl ZCkNCgl0ZXN0IFZJRElPQ19HX0ZNVDogT0sNCgl0ZXN0IFZJRElPQ19UUllfRk1UOiBPSw0KCXRl c3QgVklESU9DX1NfRk1UOiBPSw0KCXRlc3QgVklESU9DX0dfU0xJQ0VEX1ZCSV9DQVA6IE9LIChO b3QgU3VwcG9ydGVkKQ0KCXRlc3QgQ3JvcHBpbmc6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3Qg Q29tcG9zaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFNjYWxpbmc6IE9LDQoNCkNvZGVj IGlvY3RsczoNCgl0ZXN0IFZJRElPQ18oVFJZXylFTkNPREVSX0NNRDogT0sgKE5vdCBTdXBwb3J0 ZWQpDQoJdGVzdCBWSURJT0NfR19FTkNfSU5ERVg6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3Qg VklESU9DXyhUUllfKURFQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkNCg0KQnVmZmVyIGlv Y3RsczoNCgkJZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDM3MCk6IHRpbWVzdGFtcCAhPSBW NEwyX0JVRl9GTEFHX1RJTUVTVEFNUF9NT05PVE9OSUMgJiYgdGltZXN0YW1wICE9IFY0TDJfQlVG X0ZMQUdfVElNRVNUQU1QX0NPUFkNCgkJZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDQ4Nik6 IGJ1Zi5jaGVjayhVbnF1ZXVlZCwgaSkNCgkJZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDYx NSk6IHRlc3RRdWVyeUJ1Zihub2RlLCBpLCBxLmdfYnVmZmVycygpKQ0KCXRlc3QgVklESU9DX1JF UUJVRlMvQ1JFQVRFX0JVRlMvUVVFUllCVUY6IEZBSUwNCgkJZmFpbDogdjRsMi10ZXN0LWJ1ZmZl cnMuY3BwKDc0Nyk6IFZJRElPQ19FWFBCVUYgaXMgc3VwcG9ydGVkLCBidXQgdGhlIFY0TDJfTUVN T1JZX01NQVAgc3VwcG9ydCBpcyBtaXNzaW5nIG9yIG1hbGZ1bmN0aW9uaW5nLg0KCQlmYWlsOiB2 NGwyLXRlc3QtYnVmZmVycy5jcHAoNzQ4KTogVklESU9DX0VYUEJVRiBpcyBzdXBwb3J0ZWQsIGJ1 dCB0aGUgVjRMMl9NRU1PUllfTU1BUCBzdXBwb3J0IGlzIG1pc3NpbmcsIHByb2JhYmx5IGR1ZSB0 byBlYXJsaWVyIGZhaWxpbmcgZm9ybWF0IHRlc3RzLg0KCXRlc3QgVklESU9DX0VYUEJVRjogT0sg KE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBSZXF1ZXN0czogT0sNCg0KVG90YWwgZm9yIG10ay1jYW0t cDEgZGV2aWNlIC9kZXYvdmlkZW80OiA0NSwgU3VjY2VlZGVkOiA0NCwgRmFpbGVkOiAxLCBXYXJu aW5nczogMA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkNvbXBsaWFuY2UgdGVzdCBmb3IgbXRr LWNhbS1wMSBkZXZpY2UgL2Rldi92aWRlbzU6DQoNCkRyaXZlciBJbmZvOg0KCURyaXZlciBuYW1l ICAgICAgOiBtdGstY2FtLXAxDQoJQ2FyZCB0eXBlICAgICAgICA6IG10ay1jYW0tcDENCglCdXMg aW5mbyAgICAgICAgIDogcGxhdGZvcm06MWEwMDAwMDAuY2FtaXNwDQoJRHJpdmVyIHZlcnNpb24g ICA6IDQuMTkuODkNCglDYXBhYmlsaXRpZXMgICAgIDogMHg4NGEwMDAwMA0KCQlNZXRhZGF0YSBD YXB0dXJlDQoJCVN0cmVhbWluZw0KCQlFeHRlbmRlZCBQaXggRm9ybWF0DQoJCURldmljZSBDYXBh YmlsaXRpZXMNCglEZXZpY2UgQ2FwcyAgICAgIDogMHgwNGEwMDAwMA0KCQlNZXRhZGF0YSBDYXB0 dXJlDQoJCVN0cmVhbWluZw0KCQlFeHRlbmRlZCBQaXggRm9ybWF0DQpNZWRpYSBEcml2ZXIgSW5m bzoNCglEcml2ZXIgbmFtZSAgICAgIDogbXRrLWNhbS1wMQ0KCU1vZGVsICAgICAgICAgICAgOiBt dGstY2FtLXAxDQoJU2VyaWFsICAgICAgICAgICA6IA0KCUJ1cyBpbmZvICAgICAgICAgOiBwbGF0 Zm9ybToxYTAwMDAwMC5jYW1pc3ANCglNZWRpYSB2ZXJzaW9uICAgIDogNC4xOS44OQ0KCUhhcmR3 YXJlIHJldmlzaW9uOiAweDAwMDAwMDAwICgwKQ0KCURyaXZlciB2ZXJzaW9uICAgOiA0LjE5Ljg5 DQpJbnRlcmZhY2UgSW5mbzoNCglJRCAgICAgICAgICAgICAgIDogMHgwMzAwMDAyMg0KCVR5cGUg ICAgICAgICAgICAgOiBWNEwgVmlkZW8NCkVudGl0eSBJbmZvOg0KCUlEICAgICAgICAgICAgICAg OiAweDAwMDAwMDIwICgzMikNCglOYW1lICAgICAgICAgICAgIDogbXRrLWNhbS1wMSBwYXJ0aWFs IG1ldGEgMA0KCUZ1bmN0aW9uICAgICAgICAgOiBWNEwyIEkvTw0KCVBhZCAweDAxMDAwMDIxICAg OiAwOiBTaW5rDQoJICBMaW5rIDB4MDIwMDAwMjQ6IGZyb20gcmVtb3RlIHBhZCAweDEwMDAwMDUg b2YgZW50aXR5ICdtdGstY2FtLXAxJzogRGF0YQ0KDQpSZXF1aXJlZCBpb2N0bHM6DQoJdGVzdCBN QyBpbmZvcm1hdGlvbiAoc2VlICdNZWRpYSBEcml2ZXIgSW5mbycgYWJvdmUpOiBPSw0KCXRlc3Qg VklESU9DX1FVRVJZQ0FQOiBPSw0KDQpBbGxvdyBmb3IgbXVsdGlwbGUgb3BlbnM6DQoJdGVzdCBz ZWNvbmQgL2Rldi92aWRlbzUgb3BlbjogT0sNCgl0ZXN0IFZJRElPQ19RVUVSWUNBUDogT0sNCgl0 ZXN0IFZJRElPQ19HL1NfUFJJT1JJVFk6IE9LDQoJdGVzdCBmb3IgdW5saW1pdGVkIG9wZW5zOiBP Sw0KDQpEZWJ1ZyBpb2N0bHM6DQoJdGVzdCBWSURJT0NfREJHX0cvU19SRUdJU1RFUjogT0sgKE5v dCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfTE9HX1NUQVRVUzogT0sgKE5vdCBTdXBwb3J0ZWQp DQoNCklucHV0IGlvY3RsczoNCgl0ZXN0IFZJRElPQ19HL1NfVFVORVIvRU5VTV9GUkVRX0JBTkRT OiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAoTm90 IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19TX0hXX0ZSRVFfU0VFSzogT0sgKE5vdCBTdXBwb3J0 ZWQpDQoJdGVzdCBWSURJT0NfRU5VTUFVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJ RElPQ19HL1MvRU5VTUlOUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HL1Nf QVVESU86IE9LIChOb3QgU3VwcG9ydGVkKQ0KCUlucHV0czogMCBBdWRpbyBJbnB1dHM6IDAgVHVu ZXJzOiAwDQoNCk91dHB1dCBpb2N0bHM6DQoJdGVzdCBWSURJT0NfRy9TX01PRFVMQVRPUjogT0sg KE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5DWTogT0sgKE5vdCBTdXBw b3J0ZWQpDQoJdGVzdCBWSURJT0NfRU5VTUFVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVz dCBWSURJT0NfRy9TL0VOVU1PVVRQVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9D X0cvU19BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCU91dHB1dHM6IDAgQXVkaW8gT3V0cHV0 czogMCBNb2R1bGF0b3JzOiAwDQoNCklucHV0L091dHB1dCBjb25maWd1cmF0aW9uIGlvY3RsczoN Cgl0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9TVEQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRl c3QgVklESU9DX0VOVU0vRy9TL1FVRVJZX0RWX1RJTUlOR1M6IE9LIChOb3QgU3VwcG9ydGVkKQ0K CXRlc3QgVklESU9DX0RWX1RJTUlOR1NfQ0FQOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJ RElPQ19HL1NfRURJRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNCkNvbnRyb2wgaW9jdGxzOg0KCXRl c3QgVklESU9DX1FVRVJZX0VYVF9DVFJML1FVRVJZTUVOVTogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJ dGVzdCBWSURJT0NfUVVFUllDVFJMOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19H L1NfQ1RSTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TL1RSWV9FWFRfQ1RS TFM6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DXyhVTilTVUJTQ1JJQkVfRVZFTlQv RFFFVkVOVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX0pQRUdDT01QOiBP SyAoTm90IFN1cHBvcnRlZCkNCglTdGFuZGFyZCBDb250cm9sczogMCBQcml2YXRlIENvbnRyb2xz OiAwDQoNCkZvcm1hdCBpb2N0bHM6DQoJdGVzdCBWSURJT0NfRU5VTV9GTVQvRlJBTUVTSVpFUy9G UkFNRUlOVEVSVkFMUzogT0sNCgl0ZXN0IFZJRElPQ19HL1NfUEFSTTogT0sgKE5vdCBTdXBwb3J0 ZWQpDQoJdGVzdCBWSURJT0NfR19GQlVGOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElP Q19HX0ZNVDogT0sNCgl0ZXN0IFZJRElPQ19UUllfRk1UOiBPSw0KCXRlc3QgVklESU9DX1NfRk1U OiBPSw0KCXRlc3QgVklESU9DX0dfU0xJQ0VEX1ZCSV9DQVA6IE9LIChOb3QgU3VwcG9ydGVkKQ0K CXRlc3QgQ3JvcHBpbmc6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgQ29tcG9zaW5nOiBPSyAo Tm90IFN1cHBvcnRlZCkNCgl0ZXN0IFNjYWxpbmc6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpDb2Rl YyBpb2N0bHM6DQoJdGVzdCBWSURJT0NfKFRSWV8pRU5DT0RFUl9DTUQ6IE9LIChOb3QgU3VwcG9y dGVkKQ0KCXRlc3QgVklESU9DX0dfRU5DX0lOREVYOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0 IFZJRElPQ18oVFJZXylERUNPREVSX0NNRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNCkJ1ZmZlciBp b2N0bHM6DQoJCWZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCgzNzApOiB0aW1lc3RhbXAgIT0g VjRMMl9CVUZfRkxBR19USU1FU1RBTVBfTU9OT1RPTklDICYmIHRpbWVzdGFtcCAhPSBWNEwyX0JV Rl9GTEFHX1RJTUVTVEFNUF9DT1BZDQoJCWZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCg0ODYp OiBidWYuY2hlY2soVW5xdWV1ZWQsIGkpDQoJCWZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCg2 MTUpOiB0ZXN0UXVlcnlCdWYobm9kZSwgaSwgcS5nX2J1ZmZlcnMoKSkNCgl0ZXN0IFZJRElPQ19S RVFCVUZTL0NSRUFURV9CVUZTL1FVRVJZQlVGOiBGQUlMDQoJCWZhaWw6IHY0bDItdGVzdC1idWZm ZXJzLmNwcCg3NDcpOiBWSURJT0NfRVhQQlVGIGlzIHN1cHBvcnRlZCwgYnV0IHRoZSBWNEwyX01F TU9SWV9NTUFQIHN1cHBvcnQgaXMgbWlzc2luZyBvciBtYWxmdW5jdGlvbmluZy4NCgkJZmFpbDog djRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDc0OCk6IFZJRElPQ19FWFBCVUYgaXMgc3VwcG9ydGVkLCBi dXQgdGhlIFY0TDJfTUVNT1JZX01NQVAgc3VwcG9ydCBpcyBtaXNzaW5nLCBwcm9iYWJseSBkdWUg dG8gZWFybGllciBmYWlsaW5nIGZvcm1hdCB0ZXN0cy4NCgl0ZXN0IFZJRElPQ19FWFBCVUY6IE9L IChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgUmVxdWVzdHM6IE9LDQoNClRvdGFsIGZvciBtdGstY2Ft LXAxIGRldmljZSAvZGV2L3ZpZGVvNTogNDUsIFN1Y2NlZWRlZDogNDQsIEZhaWxlZDogMSwgV2Fy bmluZ3M6IDANCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpDb21wbGlhbmNlIHRlc3QgZm9yIG10 ay1jYW0tcDEgZGV2aWNlIC9kZXYvdmlkZW82Og0KDQpEcml2ZXIgSW5mbzoNCglEcml2ZXIgbmFt ZSAgICAgIDogbXRrLWNhbS1wMQ0KCUNhcmQgdHlwZSAgICAgICAgOiBtdGstY2FtLXAxDQoJQnVz IGluZm8gICAgICAgICA6IHBsYXRmb3JtOjFhMDAwMDAwLmNhbWlzcA0KCURyaXZlciB2ZXJzaW9u ICAgOiA0LjE5Ljg5DQoJQ2FwYWJpbGl0aWVzICAgICA6IDB4ODRhMDAwMDANCgkJTWV0YWRhdGEg Q2FwdHVyZQ0KCQlTdHJlYW1pbmcNCgkJRXh0ZW5kZWQgUGl4IEZvcm1hdA0KCQlEZXZpY2UgQ2Fw YWJpbGl0aWVzDQoJRGV2aWNlIENhcHMgICAgICA6IDB4MDRhMDAwMDANCgkJTWV0YWRhdGEgQ2Fw dHVyZQ0KCQlTdHJlYW1pbmcNCgkJRXh0ZW5kZWQgUGl4IEZvcm1hdA0KTWVkaWEgRHJpdmVyIElu Zm86DQoJRHJpdmVyIG5hbWUgICAgICA6IG10ay1jYW0tcDENCglNb2RlbCAgICAgICAgICAgIDog bXRrLWNhbS1wMQ0KCVNlcmlhbCAgICAgICAgICAgOiANCglCdXMgaW5mbyAgICAgICAgIDogcGxh dGZvcm06MWEwMDAwMDAuY2FtaXNwDQoJTWVkaWEgdmVyc2lvbiAgICA6IDQuMTkuODkNCglIYXJk d2FyZSByZXZpc2lvbjogMHgwMDAwMDAwMCAoMCkNCglEcml2ZXIgdmVyc2lvbiAgIDogNC4xOS44 OQ0KSW50ZXJmYWNlIEluZm86DQoJSUQgICAgICAgICAgICAgICA6IDB4MDMwMDAwMjgNCglUeXBl ICAgICAgICAgICAgIDogVjRMIFZpZGVvDQpFbnRpdHkgSW5mbzoNCglJRCAgICAgICAgICAgICAg IDogMHgwMDAwMDAyNiAoMzgpDQoJTmFtZSAgICAgICAgICAgICA6IG10ay1jYW0tcDEgcGFydGlh bCBtZXRhIDENCglGdW5jdGlvbiAgICAgICAgIDogVjRMMiBJL08NCglQYWQgMHgwMTAwMDAyNyAg IDogMDogU2luaw0KCSAgTGluayAweDAyMDAwMDJhOiBmcm9tIHJlbW90ZSBwYWQgMHgxMDAwMDA2 IG9mIGVudGl0eSAnbXRrLWNhbS1wMSc6IERhdGENCg0KUmVxdWlyZWQgaW9jdGxzOg0KCXRlc3Qg TUMgaW5mb3JtYXRpb24gKHNlZSAnTWVkaWEgRHJpdmVyIEluZm8nIGFib3ZlKTogT0sNCgl0ZXN0 IFZJRElPQ19RVUVSWUNBUDogT0sNCg0KQWxsb3cgZm9yIG11bHRpcGxlIG9wZW5zOg0KCXRlc3Qg c2Vjb25kIC9kZXYvdmlkZW82IG9wZW46IE9LDQoJdGVzdCBWSURJT0NfUVVFUllDQVA6IE9LDQoJ dGVzdCBWSURJT0NfRy9TX1BSSU9SSVRZOiBPSw0KCXRlc3QgZm9yIHVubGltaXRlZCBvcGVuczog T0sNCg0KRGVidWcgaW9jdGxzOg0KCXRlc3QgVklESU9DX0RCR19HL1NfUkVHSVNURVI6IE9LIChO b3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0xPR19TVEFUVVM6IE9LIChOb3QgU3VwcG9ydGVk KQ0KDQpJbnB1dCBpb2N0bHM6DQoJdGVzdCBWSURJT0NfRy9TX1RVTkVSL0VOVU1fRlJFUV9CQU5E UzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5DWTogT0sgKE5v dCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfU19IV19GUkVRX1NFRUs6IE9LIChOb3QgU3VwcG9y dGVkKQ0KCXRlc3QgVklESU9DX0VOVU1BVURJTzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBW SURJT0NfRy9TL0VOVU1JTlBVVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9T X0FVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkNCglJbnB1dHM6IDAgQXVkaW8gSW5wdXRzOiAwIFR1 bmVyczogMA0KDQpPdXRwdXQgaW9jdGxzOg0KCXRlc3QgVklESU9DX0cvU19NT0RVTEFUT1I6IE9L IChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvU19GUkVRVUVOQ1k6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KCXRlc3QgVklESU9DX0VOVU1BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRl c3QgVklESU9DX0cvUy9FTlVNT1VUUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElP Q19HL1NfQVVET1VUOiBPSyAoTm90IFN1cHBvcnRlZCkNCglPdXRwdXRzOiAwIEF1ZGlvIE91dHB1 dHM6IDAgTW9kdWxhdG9yczogMA0KDQpJbnB1dC9PdXRwdXQgY29uZmlndXJhdGlvbiBpb2N0bHM6 DQoJdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfU1REOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0 ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9EVl9USU1JTkdTOiBPSyAoTm90IFN1cHBvcnRlZCkN Cgl0ZXN0IFZJRElPQ19EVl9USU1JTkdTX0NBUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBW SURJT0NfRy9TX0VESUQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpDb250cm9sIGlvY3RsczoNCgl0 ZXN0IFZJRElPQ19RVUVSWV9FWFRfQ1RSTC9RVUVSWU1FTlU6IE9LIChOb3QgU3VwcG9ydGVkKQ0K CXRlc3QgVklESU9DX1FVRVJZQ1RSTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0Nf Ry9TX0NUUkw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvUy9UUllfRVhUX0NU UkxTOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ18oVU4pU1VCU0NSSUJFX0VWRU5U L0RRRVZFTlQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvU19KUEVHQ09NUDog T0sgKE5vdCBTdXBwb3J0ZWQpDQoJU3RhbmRhcmQgQ29udHJvbHM6IDAgUHJpdmF0ZSBDb250cm9s czogMA0KDQpGb3JtYXQgaW9jdGxzOg0KCXRlc3QgVklESU9DX0VOVU1fRk1UL0ZSQU1FU0laRVMv RlJBTUVJTlRFUlZBTFM6IE9LDQoJdGVzdCBWSURJT0NfRy9TX1BBUk06IE9LIChOb3QgU3VwcG9y dGVkKQ0KCXRlc3QgVklESU9DX0dfRkJVRjogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJ T0NfR19GTVQ6IE9LDQoJdGVzdCBWSURJT0NfVFJZX0ZNVDogT0sNCgl0ZXN0IFZJRElPQ19TX0ZN VDogT0sNCgl0ZXN0IFZJRElPQ19HX1NMSUNFRF9WQklfQ0FQOiBPSyAoTm90IFN1cHBvcnRlZCkN Cgl0ZXN0IENyb3BwaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IENvbXBvc2luZzogT0sg KE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBTY2FsaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCg0KQ29k ZWMgaW9jdGxzOg0KCXRlc3QgVklESU9DXyhUUllfKUVOQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBv cnRlZCkNCgl0ZXN0IFZJRElPQ19HX0VOQ19JTkRFWDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVz dCBWSURJT0NfKFRSWV8pREVDT0RFUl9DTUQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpCdWZmZXIg aW9jdGxzOg0KCQlmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoMzcwKTogdGltZXN0YW1wICE9 IFY0TDJfQlVGX0ZMQUdfVElNRVNUQU1QX01PTk9UT05JQyAmJiB0aW1lc3RhbXAgIT0gVjRMMl9C VUZfRkxBR19USU1FU1RBTVBfQ09QWQ0KCQlmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoNDg2 KTogYnVmLmNoZWNrKFVucXVldWVkLCBpKQ0KCQlmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAo NjE1KTogdGVzdFF1ZXJ5QnVmKG5vZGUsIGksIHEuZ19idWZmZXJzKCkpDQoJdGVzdCBWSURJT0Nf UkVRQlVGUy9DUkVBVEVfQlVGUy9RVUVSWUJVRjogRkFJTA0KCQlmYWlsOiB2NGwyLXRlc3QtYnVm ZmVycy5jcHAoNzQ3KTogVklESU9DX0VYUEJVRiBpcyBzdXBwb3J0ZWQsIGJ1dCB0aGUgVjRMMl9N RU1PUllfTU1BUCBzdXBwb3J0IGlzIG1pc3Npbmcgb3IgbWFsZnVuY3Rpb25pbmcuDQoJCWZhaWw6 IHY0bDItdGVzdC1idWZmZXJzLmNwcCg3NDgpOiBWSURJT0NfRVhQQlVGIGlzIHN1cHBvcnRlZCwg YnV0IHRoZSBWNEwyX01FTU9SWV9NTUFQIHN1cHBvcnQgaXMgbWlzc2luZywgcHJvYmFibHkgZHVl IHRvIGVhcmxpZXIgZmFpbGluZyBmb3JtYXQgdGVzdHMuDQoJdGVzdCBWSURJT0NfRVhQQlVGOiBP SyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFJlcXVlc3RzOiBPSw0KDQpUb3RhbCBmb3IgbXRrLWNh bS1wMSBkZXZpY2UgL2Rldi92aWRlbzY6IDQ1LCBTdWNjZWVkZWQ6IDQ0LCBGYWlsZWQ6IDEsIFdh cm5pbmdzOiAwDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQ29tcGxpYW5jZSB0ZXN0IGZvciBt dGstY2FtLXAxIGRldmljZSAvZGV2L3ZpZGVvNzoNCg0KRHJpdmVyIEluZm86DQoJRHJpdmVyIG5h bWUgICAgICA6IG10ay1jYW0tcDENCglDYXJkIHR5cGUgICAgICAgIDogbXRrLWNhbS1wMQ0KCUJ1 cyBpbmZvICAgICAgICAgOiBwbGF0Zm9ybToxYTAwMDAwMC5jYW1pc3ANCglEcml2ZXIgdmVyc2lv biAgIDogNC4xOS44OQ0KCUNhcGFiaWxpdGllcyAgICAgOiAweDg0YTAwMDAwDQoJCU1ldGFkYXRh IENhcHR1cmUNCgkJU3RyZWFtaW5nDQoJCUV4dGVuZGVkIFBpeCBGb3JtYXQNCgkJRGV2aWNlIENh cGFiaWxpdGllcw0KCURldmljZSBDYXBzICAgICAgOiAweDA0YTAwMDAwDQoJCU1ldGFkYXRhIENh cHR1cmUNCgkJU3RyZWFtaW5nDQoJCUV4dGVuZGVkIFBpeCBGb3JtYXQNCk1lZGlhIERyaXZlciBJ bmZvOg0KCURyaXZlciBuYW1lICAgICAgOiBtdGstY2FtLXAxDQoJTW9kZWwgICAgICAgICAgICA6 IG10ay1jYW0tcDENCglTZXJpYWwgICAgICAgICAgIDogDQoJQnVzIGluZm8gICAgICAgICA6IHBs YXRmb3JtOjFhMDAwMDAwLmNhbWlzcA0KCU1lZGlhIHZlcnNpb24gICAgOiA0LjE5Ljg5DQoJSGFy ZHdhcmUgcmV2aXNpb246IDB4MDAwMDAwMDAgKDApDQoJRHJpdmVyIHZlcnNpb24gICA6IDQuMTku ODkNCkludGVyZmFjZSBJbmZvOg0KCUlEICAgICAgICAgICAgICAgOiAweDAzMDAwMDJlDQoJVHlw ZSAgICAgICAgICAgICA6IFY0TCBWaWRlbw0KRW50aXR5IEluZm86DQoJSUQgICAgICAgICAgICAg ICA6IDB4MDAwMDAwMmMgKDQ0KQ0KCU5hbWUgICAgICAgICAgICAgOiBtdGstY2FtLXAxIHBhcnRp YWwgbWV0YSAyDQoJRnVuY3Rpb24gICAgICAgICA6IFY0TDIgSS9PDQoJUGFkIDB4MDEwMDAwMmQg ICA6IDA6IFNpbmsNCgkgIExpbmsgMHgwMjAwMDAzMDogZnJvbSByZW1vdGUgcGFkIDB4MTAwMDAw NyBvZiBlbnRpdHkgJ210ay1jYW0tcDEnOiBEYXRhDQoNClJlcXVpcmVkIGlvY3RsczoNCgl0ZXN0 IE1DIGluZm9ybWF0aW9uIChzZWUgJ01lZGlhIERyaXZlciBJbmZvJyBhYm92ZSk6IE9LDQoJdGVz dCBWSURJT0NfUVVFUllDQVA6IE9LDQoNCkFsbG93IGZvciBtdWx0aXBsZSBvcGVuczoNCgl0ZXN0 IHNlY29uZCAvZGV2L3ZpZGVvNyBvcGVuOiBPSw0KCXRlc3QgVklESU9DX1FVRVJZQ0FQOiBPSw0K CXRlc3QgVklESU9DX0cvU19QUklPUklUWTogT0sNCgl0ZXN0IGZvciB1bmxpbWl0ZWQgb3BlbnM6 IE9LDQoNCkRlYnVnIGlvY3RsczoNCgl0ZXN0IFZJRElPQ19EQkdfRy9TX1JFR0lTVEVSOiBPSyAo Tm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19MT0dfU1RBVFVTOiBPSyAoTm90IFN1cHBvcnRl ZCkNCg0KSW5wdXQgaW9jdGxzOg0KCXRlc3QgVklESU9DX0cvU19UVU5FUi9FTlVNX0ZSRVFfQkFO RFM6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvU19GUkVRVUVOQ1k6IE9LIChO b3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1NfSFdfRlJFUV9TRUVLOiBPSyAoTm90IFN1cHBv cnRlZCkNCgl0ZXN0IFZJRElPQ19FTlVNQVVESU86IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3Qg VklESU9DX0cvUy9FTlVNSU5QVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cv U19BVURJTzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJSW5wdXRzOiAwIEF1ZGlvIElucHV0czogMCBU dW5lcnM6IDANCg0KT3V0cHV0IGlvY3RsczoNCgl0ZXN0IFZJRElPQ19HL1NfTU9EVUxBVE9SOiBP SyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1 cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19FTlVNQVVET1VUOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0 ZXN0IFZJRElPQ19HL1MvRU5VTU9VVFBVVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJ T0NfRy9TX0FVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJT3V0cHV0czogMCBBdWRpbyBPdXRw dXRzOiAwIE1vZHVsYXRvcnM6IDANCg0KSW5wdXQvT3V0cHV0IGNvbmZpZ3VyYXRpb24gaW9jdGxz Og0KCXRlc3QgVklESU9DX0VOVU0vRy9TL1FVRVJZX1NURDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJ dGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfRFZfVElNSU5HUzogT0sgKE5vdCBTdXBwb3J0ZWQp DQoJdGVzdCBWSURJT0NfRFZfVElNSU5HU19DQVA6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3Qg VklESU9DX0cvU19FRElEOiBPSyAoTm90IFN1cHBvcnRlZCkNCg0KQ29udHJvbCBpb2N0bHM6DQoJ dGVzdCBWSURJT0NfUVVFUllfRVhUX0NUUkwvUVVFUllNRU5VOiBPSyAoTm90IFN1cHBvcnRlZCkN Cgl0ZXN0IFZJRElPQ19RVUVSWUNUUkw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9D X0cvU19DVFJMOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HL1MvVFJZX0VYVF9D VFJMUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfKFVOKVNVQlNDUklCRV9FVkVO VC9EUUVWRU5UOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HL1NfSlBFR0NPTVA6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KCVN0YW5kYXJkIENvbnRyb2xzOiAwIFByaXZhdGUgQ29udHJv bHM6IDANCg0KRm9ybWF0IGlvY3RsczoNCgl0ZXN0IFZJRElPQ19FTlVNX0ZNVC9GUkFNRVNJWkVT L0ZSQU1FSU5URVJWQUxTOiBPSw0KCXRlc3QgVklESU9DX0cvU19QQVJNOiBPSyAoTm90IFN1cHBv cnRlZCkNCgl0ZXN0IFZJRElPQ19HX0ZCVUY6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklE SU9DX0dfRk1UOiBPSw0KCXRlc3QgVklESU9DX1RSWV9GTVQ6IE9LDQoJdGVzdCBWSURJT0NfU19G TVQ6IE9LDQoJdGVzdCBWSURJT0NfR19TTElDRURfVkJJX0NBUDogT0sgKE5vdCBTdXBwb3J0ZWQp DQoJdGVzdCBDcm9wcGluZzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBDb21wb3Npbmc6IE9L IChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgU2NhbGluZzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNCkNv ZGVjIGlvY3RsczoNCgl0ZXN0IFZJRElPQ18oVFJZXylFTkNPREVSX0NNRDogT0sgKE5vdCBTdXBw b3J0ZWQpDQoJdGVzdCBWSURJT0NfR19FTkNfSU5ERVg6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRl c3QgVklESU9DXyhUUllfKURFQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkNCg0KQnVmZmVy IGlvY3RsczoNCgkJZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDM3MCk6IHRpbWVzdGFtcCAh PSBWNEwyX0JVRl9GTEFHX1RJTUVTVEFNUF9NT05PVE9OSUMgJiYgdGltZXN0YW1wICE9IFY0TDJf QlVGX0ZMQUdfVElNRVNUQU1QX0NPUFkNCgkJZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDQ4 Nik6IGJ1Zi5jaGVjayhVbnF1ZXVlZCwgaSkNCgkJZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3Bw KDYxNSk6IHRlc3RRdWVyeUJ1Zihub2RlLCBpLCBxLmdfYnVmZmVycygpKQ0KCXRlc3QgVklESU9D X1JFUUJVRlMvQ1JFQVRFX0JVRlMvUVVFUllCVUY6IEZBSUwNCgkJZmFpbDogdjRsMi10ZXN0LWJ1 ZmZlcnMuY3BwKDc0Nyk6IFZJRElPQ19FWFBCVUYgaXMgc3VwcG9ydGVkLCBidXQgdGhlIFY0TDJf TUVNT1JZX01NQVAgc3VwcG9ydCBpcyBtaXNzaW5nIG9yIG1hbGZ1bmN0aW9uaW5nLg0KCQlmYWls OiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoNzQ4KTogVklESU9DX0VYUEJVRiBpcyBzdXBwb3J0ZWQs IGJ1dCB0aGUgVjRMMl9NRU1PUllfTU1BUCBzdXBwb3J0IGlzIG1pc3NpbmcsIHByb2JhYmx5IGR1 ZSB0byBlYXJsaWVyIGZhaWxpbmcgZm9ybWF0IHRlc3RzLg0KCXRlc3QgVklESU9DX0VYUEJVRjog T0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBSZXF1ZXN0czogT0sNCg0KVG90YWwgZm9yIG10ay1j YW0tcDEgZGV2aWNlIC9kZXYvdmlkZW83OiA0NSwgU3VjY2VlZGVkOiA0NCwgRmFpbGVkOiAxLCBX YXJuaW5nczogMA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkNvbXBsaWFuY2UgdGVzdCBmb3Ig bXRrLWNhbS1wMSBkZXZpY2UgL2Rldi92aWRlbzg6DQoNCkRyaXZlciBJbmZvOg0KCURyaXZlciBu YW1lICAgICAgOiBtdGstY2FtLXAxDQoJQ2FyZCB0eXBlICAgICAgICA6IG10ay1jYW0tcDENCglC dXMgaW5mbyAgICAgICAgIDogcGxhdGZvcm06MWEwMDAwMDAuY2FtaXNwDQoJRHJpdmVyIHZlcnNp b24gICA6IDQuMTkuODkNCglDYXBhYmlsaXRpZXMgICAgIDogMHg4NGEwMDAwMA0KCQlNZXRhZGF0 YSBDYXB0dXJlDQoJCVN0cmVhbWluZw0KCQlFeHRlbmRlZCBQaXggRm9ybWF0DQoJCURldmljZSBD YXBhYmlsaXRpZXMNCglEZXZpY2UgQ2FwcyAgICAgIDogMHgwNGEwMDAwMA0KCQlNZXRhZGF0YSBD YXB0dXJlDQoJCVN0cmVhbWluZw0KCQlFeHRlbmRlZCBQaXggRm9ybWF0DQpNZWRpYSBEcml2ZXIg SW5mbzoNCglEcml2ZXIgbmFtZSAgICAgIDogbXRrLWNhbS1wMQ0KCU1vZGVsICAgICAgICAgICAg OiBtdGstY2FtLXAxDQoJU2VyaWFsICAgICAgICAgICA6IA0KCUJ1cyBpbmZvICAgICAgICAgOiBw bGF0Zm9ybToxYTAwMDAwMC5jYW1pc3ANCglNZWRpYSB2ZXJzaW9uICAgIDogNC4xOS44OQ0KCUhh cmR3YXJlIHJldmlzaW9uOiAweDAwMDAwMDAwICgwKQ0KCURyaXZlciB2ZXJzaW9uICAgOiA0LjE5 Ljg5DQpJbnRlcmZhY2UgSW5mbzoNCglJRCAgICAgICAgICAgICAgIDogMHgwMzAwMDAzNA0KCVR5 cGUgICAgICAgICAgICAgOiBWNEwgVmlkZW8NCkVudGl0eSBJbmZvOg0KCUlEICAgICAgICAgICAg ICAgOiAweDAwMDAwMDMyICg1MCkNCglOYW1lICAgICAgICAgICAgIDogbXRrLWNhbS1wMSBwYXJ0 aWFsIG1ldGEgMw0KCUZ1bmN0aW9uICAgICAgICAgOiBWNEwyIEkvTw0KCVBhZCAweDAxMDAwMDMz ICAgOiAwOiBTaW5rDQoJICBMaW5rIDB4MDIwMDAwMzY6IGZyb20gcmVtb3RlIHBhZCAweDEwMDAw MDggb2YgZW50aXR5ICdtdGstY2FtLXAxJzogRGF0YQ0KDQpSZXF1aXJlZCBpb2N0bHM6DQoJdGVz dCBNQyBpbmZvcm1hdGlvbiAoc2VlICdNZWRpYSBEcml2ZXIgSW5mbycgYWJvdmUpOiBPSw0KCXRl c3QgVklESU9DX1FVRVJZQ0FQOiBPSw0KDQpBbGxvdyBmb3IgbXVsdGlwbGUgb3BlbnM6DQoJdGVz dCBzZWNvbmQgL2Rldi92aWRlbzggb3BlbjogT0sNCgl0ZXN0IFZJRElPQ19RVUVSWUNBUDogT0sN Cgl0ZXN0IFZJRElPQ19HL1NfUFJJT1JJVFk6IE9LDQoJdGVzdCBmb3IgdW5saW1pdGVkIG9wZW5z OiBPSw0KDQpEZWJ1ZyBpb2N0bHM6DQoJdGVzdCBWSURJT0NfREJHX0cvU19SRUdJU1RFUjogT0sg KE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfTE9HX1NUQVRVUzogT0sgKE5vdCBTdXBwb3J0 ZWQpDQoNCklucHV0IGlvY3RsczoNCgl0ZXN0IFZJRElPQ19HL1NfVFVORVIvRU5VTV9GUkVRX0JB TkRTOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAo Tm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19TX0hXX0ZSRVFfU0VFSzogT0sgKE5vdCBTdXBw b3J0ZWQpDQoJdGVzdCBWSURJT0NfRU5VTUFVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0 IFZJRElPQ19HL1MvRU5VTUlOUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19H L1NfQVVESU86IE9LIChOb3QgU3VwcG9ydGVkKQ0KCUlucHV0czogMCBBdWRpbyBJbnB1dHM6IDAg VHVuZXJzOiAwDQoNCk91dHB1dCBpb2N0bHM6DQoJdGVzdCBWSURJT0NfRy9TX01PRFVMQVRPUjog T0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5DWTogT0sgKE5vdCBT dXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRU5VTUFVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJ dGVzdCBWSURJT0NfRy9TL0VOVU1PVVRQVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklE SU9DX0cvU19BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCU91dHB1dHM6IDAgQXVkaW8gT3V0 cHV0czogMCBNb2R1bGF0b3JzOiAwDQoNCklucHV0L091dHB1dCBjb25maWd1cmF0aW9uIGlvY3Rs czoNCgl0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9TVEQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0K CXRlc3QgVklESU9DX0VOVU0vRy9TL1FVRVJZX0RWX1RJTUlOR1M6IE9LIChOb3QgU3VwcG9ydGVk KQ0KCXRlc3QgVklESU9DX0RWX1RJTUlOR1NfQ0FQOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0 IFZJRElPQ19HL1NfRURJRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNCkNvbnRyb2wgaW9jdGxzOg0K CXRlc3QgVklESU9DX1FVRVJZX0VYVF9DVFJML1FVRVJZTUVOVTogT0sgKE5vdCBTdXBwb3J0ZWQp DQoJdGVzdCBWSURJT0NfUVVFUllDVFJMOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElP Q19HL1NfQ1RSTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TL1RSWV9FWFRf Q1RSTFM6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DXyhVTilTVUJTQ1JJQkVfRVZF TlQvRFFFVkVOVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX0pQRUdDT01Q OiBPSyAoTm90IFN1cHBvcnRlZCkNCglTdGFuZGFyZCBDb250cm9sczogMCBQcml2YXRlIENvbnRy b2xzOiAwDQoNCkZvcm1hdCBpb2N0bHM6DQoJdGVzdCBWSURJT0NfRU5VTV9GTVQvRlJBTUVTSVpF Uy9GUkFNRUlOVEVSVkFMUzogT0sNCgl0ZXN0IFZJRElPQ19HL1NfUEFSTTogT0sgKE5vdCBTdXBw b3J0ZWQpDQoJdGVzdCBWSURJT0NfR19GQlVGOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJ RElPQ19HX0ZNVDogT0sNCgl0ZXN0IFZJRElPQ19UUllfRk1UOiBPSw0KCXRlc3QgVklESU9DX1Nf Rk1UOiBPSw0KCXRlc3QgVklESU9DX0dfU0xJQ0VEX1ZCSV9DQVA6IE9LIChOb3QgU3VwcG9ydGVk KQ0KCXRlc3QgQ3JvcHBpbmc6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgQ29tcG9zaW5nOiBP SyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFNjYWxpbmc6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpD b2RlYyBpb2N0bHM6DQoJdGVzdCBWSURJT0NfKFRSWV8pRU5DT0RFUl9DTUQ6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KCXRlc3QgVklESU9DX0dfRU5DX0lOREVYOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0 ZXN0IFZJRElPQ18oVFJZXylERUNPREVSX0NNRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNCkJ1ZmZl ciBpb2N0bHM6DQoJCWZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCgzNzApOiB0aW1lc3RhbXAg IT0gVjRMMl9CVUZfRkxBR19USU1FU1RBTVBfTU9OT1RPTklDICYmIHRpbWVzdGFtcCAhPSBWNEwy X0JVRl9GTEFHX1RJTUVTVEFNUF9DT1BZDQoJCWZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCg0 ODYpOiBidWYuY2hlY2soVW5xdWV1ZWQsIGkpDQoJCWZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNw cCg2MTUpOiB0ZXN0UXVlcnlCdWYobm9kZSwgaSwgcS5nX2J1ZmZlcnMoKSkNCgl0ZXN0IFZJRElP Q19SRVFCVUZTL0NSRUFURV9CVUZTL1FVRVJZQlVGOiBGQUlMDQoJCWZhaWw6IHY0bDItdGVzdC1i dWZmZXJzLmNwcCg3NDcpOiBWSURJT0NfRVhQQlVGIGlzIHN1cHBvcnRlZCwgYnV0IHRoZSBWNEwy X01FTU9SWV9NTUFQIHN1cHBvcnQgaXMgbWlzc2luZyBvciBtYWxmdW5jdGlvbmluZy4NCgkJZmFp bDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDc0OCk6IFZJRElPQ19FWFBCVUYgaXMgc3VwcG9ydGVk LCBidXQgdGhlIFY0TDJfTUVNT1JZX01NQVAgc3VwcG9ydCBpcyBtaXNzaW5nLCBwcm9iYWJseSBk dWUgdG8gZWFybGllciBmYWlsaW5nIGZvcm1hdCB0ZXN0cy4NCgl0ZXN0IFZJRElPQ19FWFBCVUY6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgUmVxdWVzdHM6IE9LDQoNClRvdGFsIGZvciBtdGst Y2FtLXAxIGRldmljZSAvZGV2L3ZpZGVvODogNDUsIFN1Y2NlZWRlZDogNDQsIEZhaWxlZDogMSwg V2FybmluZ3M6IDANCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpDb21wbGlhbmNlIHRlc3QgZm9y IG10ay1jYW0tcDEgZGV2aWNlIC9kZXYvdjRsLXN1YmRldjA6DQoNCk1lZGlhIERyaXZlciBJbmZv Og0KCURyaXZlciBuYW1lICAgICAgOiBtdGstY2FtLXAxDQoJTW9kZWwgICAgICAgICAgICA6IG10 ay1jYW0tcDENCglTZXJpYWwgICAgICAgICAgIDogDQoJQnVzIGluZm8gICAgICAgICA6IHBsYXRm b3JtOjFhMDAwMDAwLmNhbWlzcA0KCU1lZGlhIHZlcnNpb24gICAgOiA0LjE5Ljg5DQoJSGFyZHdh cmUgcmV2aXNpb246IDB4MDAwMDAwMDAgKDApDQoJRHJpdmVyIHZlcnNpb24gICA6IDQuMTkuODkN CkludGVyZmFjZSBJbmZvOg0KCUlEICAgICAgICAgICAgICAgOiAweDAzMDAwMDUwDQoJVHlwZSAg ICAgICAgICAgICA6IFY0TCBTdWItRGV2aWNlDQpFbnRpdHkgSW5mbzoNCglJRCAgICAgICAgICAg ICAgIDogMHgwMDAwMDAwMSAoMSkNCglOYW1lICAgICAgICAgICAgIDogbXRrLWNhbS1wMQ0KCUZ1 bmN0aW9uICAgICAgICAgOiBWaWRlbyBQaXhlbCBGb3JtYXR0ZXINCglQYWQgMHgwMTAwMDAwMiAg IDogMDogU2luaw0KCSAgTGluayAweDAyMDAwMDEyOiBmcm9tIHJlbW90ZSBwYWQgMHgxMDAwMDBm IG9mIGVudGl0eSAnbXRrLWNhbS1wMSBtZXRhIGlucHV0JzogRGF0YQ0KCVBhZCAweDAxMDAwMDAz ICAgOiAxOiBTb3VyY2UNCgkgIExpbmsgMHgwMjAwMDAxODogdG8gcmVtb3RlIHBhZCAweDEwMDAw MTUgb2YgZW50aXR5ICdtdGstY2FtLXAxIG1haW4gc3RyZWFtJzogRGF0YSwgRW5hYmxlZCwgSW1t dXRhYmxlDQoJUGFkIDB4MDEwMDAwMDQgICA6IDI6IFNvdXJjZQ0KCSAgTGluayAweDAyMDAwMDFl OiB0byByZW1vdGUgcGFkIDB4MTAwMDAxYiBvZiBlbnRpdHkgJ210ay1jYW0tcDEgcGFja2VkIG91 dCc6IERhdGENCglQYWQgMHgwMTAwMDAwNSAgIDogMzogU291cmNlDQoJICBMaW5rIDB4MDIwMDAw MjQ6IHRvIHJlbW90ZSBwYWQgMHgxMDAwMDIxIG9mIGVudGl0eSAnbXRrLWNhbS1wMSBwYXJ0aWFs IG1ldGEgMCc6IERhdGENCglQYWQgMHgwMTAwMDAwNiAgIDogNDogU291cmNlDQoJICBMaW5rIDB4 MDIwMDAwMmE6IHRvIHJlbW90ZSBwYWQgMHgxMDAwMDI3IG9mIGVudGl0eSAnbXRrLWNhbS1wMSBw YXJ0aWFsIG1ldGEgMSc6IERhdGENCglQYWQgMHgwMTAwMDAwNyAgIDogNTogU291cmNlDQoJICBM aW5rIDB4MDIwMDAwMzA6IHRvIHJlbW90ZSBwYWQgMHgxMDAwMDJkIG9mIGVudGl0eSAnbXRrLWNh bS1wMSBwYXJ0aWFsIG1ldGEgMic6IERhdGENCglQYWQgMHgwMTAwMDAwOCAgIDogNjogU291cmNl DQoJICBMaW5rIDB4MDIwMDAwMzY6IHRvIHJlbW90ZSBwYWQgMHgxMDAwMDMzIG9mIGVudGl0eSAn bXRrLWNhbS1wMSBwYXJ0aWFsIG1ldGEgMyc6IERhdGENCglQYWQgMHgwMTAwMDAwOSAgIDogNzog U291cmNlDQoJUGFkIDB4MDEwMDAwMGEgICA6IDg6IFNvdXJjZQ0KCVBhZCAweDAxMDAwMDBiICAg OiA5OiBTb3VyY2UNCglQYWQgMHgwMTAwMDAwYyAgIDogMTA6IFNvdXJjZQ0KCVBhZCAweDAxMDAw MDBkICAgOiAxMTogU2luaw0KCSAgTGluayAweDAyMDAwMDRlOiBmcm9tIHJlbW90ZSBwYWQgMHgx MDAwMDNkIG9mIGVudGl0eSAnMWEwNDAwMDAuc2VuaW5mJzogRGF0YSwgRW5hYmxlZCwgSW1tdXRh YmxlDQoNClJlcXVpcmVkIGlvY3RsczoNCgl0ZXN0IE1DIGluZm9ybWF0aW9uIChzZWUgJ01lZGlh IERyaXZlciBJbmZvJyBhYm92ZSk6IE9LDQoNCkFsbG93IGZvciBtdWx0aXBsZSBvcGVuczoNCgl0 ZXN0IHNlY29uZCAvZGV2L3Y0bC1zdWJkZXYwIG9wZW46IE9LDQoJdGVzdCBmb3IgdW5saW1pdGVk IG9wZW5zOiBPSw0KDQpEZWJ1ZyBpb2N0bHM6DQoJdGVzdCBWSURJT0NfTE9HX1NUQVRVUzogT0sg KE5vdCBTdXBwb3J0ZWQpDQoNCklucHV0IGlvY3RsczoNCgl0ZXN0IFZJRElPQ19HL1NfVFVORVIv RU5VTV9GUkVRX0JBTkRTOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HL1NfRlJF UVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19TX0hXX0ZSRVFfU0VFSzog T0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRU5VTUFVRElPOiBPSyAoTm90IFN1cHBv cnRlZCkNCgl0ZXN0IFZJRElPQ19HL1MvRU5VTUlOUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0 ZXN0IFZJRElPQ19HL1NfQVVESU86IE9LIChOb3QgU3VwcG9ydGVkKQ0KCUlucHV0czogMCBBdWRp byBJbnB1dHM6IDAgVHVuZXJzOiAwDQoNCk91dHB1dCBpb2N0bHM6DQoJdGVzdCBWSURJT0NfRy9T X01PRFVMQVRPUjogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5D WTogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRU5VTUFVRE9VVDogT0sgKE5vdCBT dXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TL0VOVU1PVVRQVVQ6IE9LIChOb3QgU3VwcG9ydGVk KQ0KCXRlc3QgVklESU9DX0cvU19BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCU91dHB1dHM6 IDAgQXVkaW8gT3V0cHV0czogMCBNb2R1bGF0b3JzOiAwDQoNCklucHV0L091dHB1dCBjb25maWd1 cmF0aW9uIGlvY3RsczoNCgl0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9TVEQ6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0VOVU0vRy9TL1FVRVJZX0RWX1RJTUlOR1M6IE9LIChO b3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0RWX1RJTUlOR1NfQ0FQOiBPSyAoTm90IFN1cHBv cnRlZCkNCgl0ZXN0IFZJRElPQ19HL1NfRURJRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNClN1Yi1E ZXZpY2UgaW9jdGxzIChTaW5rIFBhZCAwKToNCgl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0VOVU1f TUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0K CXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVz dCBUcnkgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVk KQ0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9G UkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBBY3RpdmUgVklESU9DX1NV QkRFVl9HL1NfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VC REVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0Nf U1VCREVWX0cvU19GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNClN1Yi1EZXZp Y2UgaW9jdGxzIChTb3VyY2UgUGFkIDEpOg0KCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRU5VTV9N QlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJ dGVzdCBUcnkgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0 IFRyeSBWSURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQp DQoJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZS QU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VC REVWX0cvU19GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJE RVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19T VUJERVZfRy9TX0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCg0KU3ViLURldmlj ZSBpb2N0bHMgKFNvdXJjZSBQYWQgMik6DQoJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9FTlVNX01C VVNfQ09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0 ZXN0IFRyeSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3Qg VHJ5IFZJRElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkN Cgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJB TUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJE RVZfRy9TX0ZNVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRF Vl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1NV QkRFVl9HL1NfRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpTdWItRGV2aWNl IGlvY3RscyAoU291cmNlIFBhZCAzKToNCgl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0VOVU1fTUJV U19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRl c3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBU cnkgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0K CXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFN RV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRF Vl9HL1NfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVW X0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfU1VC REVWX0cvU19GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNClN1Yi1EZXZpY2Ug aW9jdGxzIChTb3VyY2UgUGFkIDQpOg0KCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRU5VTV9NQlVT X0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVz dCBUcnkgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFRy eSBWSURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJ dGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZSQU1F X0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVW X0cvU19GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZf Ry9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19TVUJE RVZfRy9TX0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCg0KU3ViLURldmljZSBp b2N0bHMgKFNvdXJjZSBQYWQgNSk6DQoJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9FTlVNX01CVVNf Q09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0 IFRyeSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVHJ5 IFZJRElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0 ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVf SU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZf Ry9TX0ZNVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9H L1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1NVQkRF Vl9HL1NfRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpTdWItRGV2aWNlIGlv Y3RscyAoU291cmNlIFBhZCA2KToNCgl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19D T0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3Qg VHJ5IFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBUcnkg VklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRl c3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9J TlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9H L1NfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cv U19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfU1VCREVW X0cvU19GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNClN1Yi1EZXZpY2UgaW9j dGxzIChTb3VyY2UgUGFkIDcpOg0KCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NP REUvRlJBTUVfU0laRS9GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBU cnkgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFRyeSBW SURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVz dCBBY3RpdmUgVklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lO VEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cv U19GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9T X1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19TVUJERVZf Ry9TX0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCg0KU3ViLURldmljZSBpb2N0 bHMgKFNvdXJjZSBQYWQgOCk6DQoJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09E RS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFRy eSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVHJ5IFZJ RElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0 IEFjdGl2ZSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5U RVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9T X0ZNVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1Nf U0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1NVQkRFVl9H L1NfRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpTdWItRGV2aWNlIGlvY3Rs cyAoU291cmNlIFBhZCA5KToNCgl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RF L0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVHJ5 IFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBUcnkgVklE SU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3Qg QWN0aXZlIFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRF UlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1Nf Rk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19T RUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfU1VCREVWX0cv U19GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNClN1Yi1EZXZpY2UgaW9jdGxz IChTb3VyY2UgUGFkIDEwKToNCgl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RF L0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVHJ5 IFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBUcnkgVklE SU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3Qg QWN0aXZlIFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRF UlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1Nf Rk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19T RUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfU1VCREVWX0cv U19GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNClN1Yi1EZXZpY2UgaW9jdGxz IChTaW5rIFBhZCAxMSk6DQoJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09ERS9G UkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFRyeSBW SURJT0NfU1VCREVWX0cvU19GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVHJ5IFZJRElP Q19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IEFj dGl2ZSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJW QUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9TX0ZN VDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1NfU0VM RUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1NVQkRFVl9HL1Nf RlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpDb250cm9sIGlvY3RsczoNCgl0 ZXN0IFZJRElPQ19RVUVSWV9FWFRfQ1RSTC9RVUVSWU1FTlU6IE9LIChOb3QgU3VwcG9ydGVkKQ0K CXRlc3QgVklESU9DX1FVRVJZQ1RSTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0Nf Ry9TX0NUUkw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvUy9UUllfRVhUX0NU UkxTOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ18oVU4pU1VCU0NSSUJFX0VWRU5U L0RRRVZFTlQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvU19KUEVHQ09NUDog T0sgKE5vdCBTdXBwb3J0ZWQpDQoJU3RhbmRhcmQgQ29udHJvbHM6IDAgUHJpdmF0ZSBDb250cm9s czogMA0KDQpGb3JtYXQgaW9jdGxzOg0KCXRlc3QgVklESU9DX0VOVU1fRk1UL0ZSQU1FU0laRVMv RlJBTUVJTlRFUlZBTFM6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvU19QQVJN OiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HX0ZCVUY6IE9LIChOb3QgU3VwcG9y dGVkKQ0KCXRlc3QgVklESU9DX0dfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElP Q19UUllfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19TX0ZNVDogT0sgKE5v dCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfR19TTElDRURfVkJJX0NBUDogT0sgKE5vdCBTdXBw b3J0ZWQpDQoJdGVzdCBDcm9wcGluZzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBDb21wb3Np bmc6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgU2NhbGluZzogT0sgKE5vdCBTdXBwb3J0ZWQp DQoNCkNvZGVjIGlvY3RsczoNCgl0ZXN0IFZJRElPQ18oVFJZXylFTkNPREVSX0NNRDogT0sgKE5v dCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfR19FTkNfSU5ERVg6IE9LIChOb3QgU3VwcG9ydGVk KQ0KCXRlc3QgVklESU9DXyhUUllfKURFQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkNCg0K QnVmZmVyIGlvY3RsczoNCgl0ZXN0IFZJRElPQ19SRVFCVUZTL0NSRUFURV9CVUZTL1FVRVJZQlVG OiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19FWFBCVUY6IE9LIChOb3QgU3VwcG9y dGVkKQ0KCXRlc3QgUmVxdWVzdHM6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpUb3RhbCBmb3IgbXRr LWNhbS1wMSBkZXZpY2UgL2Rldi92NGwtc3ViZGV2MDogMTI1LCBTdWNjZWVkZWQ6IDEyNSwgRmFp bGVkOiAwLCBXYXJuaW5nczogMA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkNvbXBsaWFuY2Ug dGVzdCBmb3IgbXRrLWNhbS1wMSBkZXZpY2UgL2Rldi92NGwtc3ViZGV2MToNCg0KTWVkaWEgRHJp dmVyIEluZm86DQoJRHJpdmVyIG5hbWUgICAgICA6IG10ay1jYW0tcDENCglNb2RlbCAgICAgICAg ICAgIDogbXRrLWNhbS1wMQ0KCVNlcmlhbCAgICAgICAgICAgOiANCglCdXMgaW5mbyAgICAgICAg IDogcGxhdGZvcm06MWEwMDAwMDAuY2FtaXNwDQoJTWVkaWEgdmVyc2lvbiAgICA6IDQuMTkuODkN CglIYXJkd2FyZSByZXZpc2lvbjogMHgwMDAwMDAwMCAoMCkNCglEcml2ZXIgdmVyc2lvbiAgIDog NC4xOS44OQ0KSW50ZXJmYWNlIEluZm86DQoJSUQgICAgICAgICAgICAgICA6IDB4MDMwMDAwNTIN CglUeXBlICAgICAgICAgICAgIDogVjRMIFN1Yi1EZXZpY2UNCkVudGl0eSBJbmZvOg0KCUlEICAg ICAgICAgICAgICAgOiAweDAwMDAwMDM4ICg1NikNCglOYW1lICAgICAgICAgICAgIDogMWEwNDAw MDAuc2VuaW5mDQoJRnVuY3Rpb24gICAgICAgICA6IFZpZGVvIEludGVyZmFjZSBCcmlkZ2UNCglQ YWQgMHgwMTAwMDAzOSAgIDogMDogU2luaw0KCSAgTGluayAweDAyMDAwMDQ3OiBmcm9tIHJlbW90 ZSBwYWQgMHgxMDAwMDQ2IG9mIGVudGl0eSAnb3Y4ODU2IDItMDAxMCc6IERhdGEsIEVuYWJsZWQN CglQYWQgMHgwMTAwMDAzYSAgIDogMTogU2luaw0KCSAgTGluayAweDAyMDAwMDRjOiBmcm9tIHJl bW90ZSBwYWQgMHgxMDAwMDRiIG9mIGVudGl0eSAnb3YwMmExMCA0LTAwM2QnOiBEYXRhDQoJUGFk IDB4MDEwMDAwM2IgICA6IDI6IFNpbmsNCglQYWQgMHgwMTAwMDAzYyAgIDogMzogU2luaw0KCVBh ZCAweDAxMDAwMDNkICAgOiA0OiBTb3VyY2UNCgkgIExpbmsgMHgwMjAwMDA0ZTogdG8gcmVtb3Rl IHBhZCAweDEwMDAwMGQgb2YgZW50aXR5ICdtdGstY2FtLXAxJzogRGF0YSwgRW5hYmxlZCwgSW1t dXRhYmxlDQoJUGFkIDB4MDEwMDAwM2UgICA6IDU6IFNvdXJjZQ0KCVBhZCAweDAxMDAwMDNmICAg OiA2OiBTb3VyY2UNCglQYWQgMHgwMTAwMDA0MCAgIDogNzogU291cmNlDQoJUGFkIDB4MDEwMDAw NDEgICA6IDg6IFNvdXJjZQ0KCVBhZCAweDAxMDAwMDQyICAgOiA5OiBTb3VyY2UNCglQYWQgMHgw MTAwMDA0MyAgIDogMTA6IFNvdXJjZQ0KCVBhZCAweDAxMDAwMDQ0ICAgOiAxMTogU291cmNlDQoN ClJlcXVpcmVkIGlvY3RsczoNCgl0ZXN0IE1DIGluZm9ybWF0aW9uIChzZWUgJ01lZGlhIERyaXZl ciBJbmZvJyBhYm92ZSk6IE9LDQoNCkFsbG93IGZvciBtdWx0aXBsZSBvcGVuczoNCgl0ZXN0IHNl Y29uZCAvZGV2L3Y0bC1zdWJkZXYxIG9wZW46IE9LDQoJdGVzdCBmb3IgdW5saW1pdGVkIG9wZW5z OiBPSw0KDQpEZWJ1ZyBpb2N0bHM6DQoJdGVzdCBWSURJT0NfTE9HX1NUQVRVUzogT0sgKE5vdCBT dXBwb3J0ZWQpDQoNCklucHV0IGlvY3RsczoNCgl0ZXN0IFZJRElPQ19HL1NfVFVORVIvRU5VTV9G UkVRX0JBTkRTOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZ OiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19TX0hXX0ZSRVFfU0VFSzogT0sgKE5v dCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRU5VTUFVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkN Cgl0ZXN0IFZJRElPQ19HL1MvRU5VTUlOUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJ RElPQ19HL1NfQVVESU86IE9LIChOb3QgU3VwcG9ydGVkKQ0KCUlucHV0czogMCBBdWRpbyBJbnB1 dHM6IDAgVHVuZXJzOiAwDQoNCk91dHB1dCBpb2N0bHM6DQoJdGVzdCBWSURJT0NfRy9TX01PRFVM QVRPUjogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5DWTogT0sg KE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRU5VTUFVRE9VVDogT0sgKE5vdCBTdXBwb3J0 ZWQpDQoJdGVzdCBWSURJT0NfRy9TL0VOVU1PVVRQVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRl c3QgVklESU9DX0cvU19BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCU91dHB1dHM6IDAgQXVk aW8gT3V0cHV0czogMCBNb2R1bGF0b3JzOiAwDQoNCklucHV0L091dHB1dCBjb25maWd1cmF0aW9u IGlvY3RsczoNCgl0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9TVEQ6IE9LIChOb3QgU3VwcG9y dGVkKQ0KCXRlc3QgVklESU9DX0VOVU0vRy9TL1FVRVJZX0RWX1RJTUlOR1M6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KCXRlc3QgVklESU9DX0RWX1RJTUlOR1NfQ0FQOiBPSyAoTm90IFN1cHBvcnRlZCkN Cgl0ZXN0IFZJRElPQ19HL1NfRURJRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNClN1Yi1EZXZpY2Ug aW9jdGxzIChTaW5rIFBhZCAwKToNCgl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19D T0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LDQoJdGVzdCBUcnkgVklESU9DX1NVQkRF Vl9HL1NfRk1UOiBPSw0KCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9Q OiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0VOVU1fTUJV U19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LDQoJdGVzdCBBY3RpdmUgVklESU9D X1NVQkRFVl9HL1NfRk1UOiBPSw0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9TX1NFTEVD VElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19TVUJERVZfRy9TX0ZS QU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCg0KU3ViLURldmljZSBpb2N0bHMgKFNp bmsgUGFkIDEpOg0KCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVf U0laRS9GUkFNRV9JTlRFUlZBTDogT0sNCgl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0cvU19GTVQ6 IE9LDQoJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJB TUVfU0laRS9GUkFNRV9JTlRFUlZBTDogT0sNCgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cv U19GTVQ6IE9LDQoJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1NVQkRFVl9HL1NfRlJBTUVfSU5URVJW QUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpTdWItRGV2aWNlIGlvY3RscyAoU2luayBQYWQgMik6 DQoJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZSQU1F X0lOVEVSVkFMOiBPSw0KCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sNCgl0ZXN0 IFRyeSBWSURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQp DQoJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZS QU1FX0lOVEVSVkFMOiBPSw0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sN Cgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBT dXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfU1VCREVWX0cvU19GUkFNRV9JTlRFUlZBTDogT0sgKE5v dCBTdXBwb3J0ZWQpDQoNClN1Yi1EZXZpY2UgaW9jdGxzIChTaW5rIFBhZCAzKToNCgl0ZXN0IFRy eSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6 IE9LDQoJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSw0KCXRlc3QgVHJ5IFZJRElP Q19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IEFj dGl2ZSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJW QUw6IE9LDQoJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSw0KCXRlc3QgQWN0 aXZlIFZJRElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkN Cgl0ZXN0IFZJRElPQ19TVUJERVZfRy9TX0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRl ZCkNCg0KU3ViLURldmljZSBpb2N0bHMgKFNvdXJjZSBQYWQgNCk6DQoJdGVzdCBUcnkgVklESU9D X1NVQkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSw0KCXRl c3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sNCgl0ZXN0IFRyeSBWSURJT0NfU1VCREVW X0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBBY3RpdmUgVklE SU9DX1NVQkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSw0K CXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sNCgl0ZXN0IEFjdGl2ZSBWSURJ T0NfU1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBW SURJT0NfU1VCREVWX0cvU19GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNClN1 Yi1EZXZpY2UgaW9jdGxzIChTb3VyY2UgUGFkIDUpOg0KCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZf RU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRFUlZBTDogT0sNCgl0ZXN0IFRyeSBW SURJT0NfU1VCREVWX0cvU19GTVQ6IE9LDQoJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9HL1NfU0VM RUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJE RVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRFUlZBTDogT0sNCgl0ZXN0IEFj dGl2ZSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9LDQoJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRF Vl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1NV QkRFVl9HL1NfRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpTdWItRGV2aWNl IGlvY3RscyAoU291cmNlIFBhZCA2KToNCgl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0VOVU1fTUJV U19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LDQoJdGVzdCBUcnkgVklESU9DX1NV QkRFVl9HL1NfRk1UOiBPSw0KCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9D Uk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0VOVU1f TUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LDQoJdGVzdCBBY3RpdmUgVklE SU9DX1NVQkRFVl9HL1NfRk1UOiBPSw0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9TX1NF TEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19TVUJERVZfRy9T X0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCg0KU3ViLURldmljZSBpb2N0bHMg KFNvdXJjZSBQYWQgNyk6DQoJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09ERS9G UkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSw0KCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9T X0ZNVDogT0sNCgl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sg KE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09E RS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSw0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJE RVZfRy9TX0ZNVDogT0sNCgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04v Q1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfU1VCREVWX0cvU19GUkFNRV9J TlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNClN1Yi1EZXZpY2UgaW9jdGxzIChTb3VyY2Ug UGFkIDgpOg0KCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0la RS9GUkFNRV9JTlRFUlZBTDogT0sNCgl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9L DQoJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVf U0laRS9GUkFNRV9JTlRFUlZBTDogT0sNCgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19G TVQ6IE9LDQoJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9L IChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1NVQkRFVl9HL1NfRlJBTUVfSU5URVJWQUw6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpTdWItRGV2aWNlIGlvY3RscyAoU291cmNlIFBhZCA5KToN Cgl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVf SU5URVJWQUw6IE9LDQoJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSw0KCXRlc3Qg VHJ5IFZJRElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkN Cgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJB TUVfSU5URVJWQUw6IE9LDQoJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSw0K CXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1 cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19TVUJERVZfRy9TX0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90 IFN1cHBvcnRlZCkNCg0KU3ViLURldmljZSBpb2N0bHMgKFNvdXJjZSBQYWQgMTApOg0KCXRlc3Qg VHJ5IFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRFUlZB TDogT0sNCgl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9LDQoJdGVzdCBUcnkgVklE SU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3Qg QWN0aXZlIFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRF UlZBTDogT0sNCgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9LDQoJdGVzdCBB Y3RpdmUgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVk KQ0KCXRlc3QgVklESU9DX1NVQkRFVl9HL1NfRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9y dGVkKQ0KDQpTdWItRGV2aWNlIGlvY3RscyAoU291cmNlIFBhZCAxMSk6DQoJdGVzdCBUcnkgVklE SU9DX1NVQkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSw0K CXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sNCgl0ZXN0IFRyeSBWSURJT0NfU1VC REVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBBY3RpdmUg VklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBP Sw0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sNCgl0ZXN0IEFjdGl2ZSBW SURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVz dCBWSURJT0NfU1VCREVWX0cvU19GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoN CkNvbnRyb2wgaW9jdGxzOg0KCXRlc3QgVklESU9DX1FVRVJZX0VYVF9DVFJML1FVRVJZTUVOVTog T0sNCgl0ZXN0IFZJRElPQ19RVUVSWUNUUkw6IE9LDQoJdGVzdCBWSURJT0NfRy9TX0NUUkw6IE9L DQoJdGVzdCBWSURJT0NfRy9TL1RSWV9FWFRfQ1RSTFM6IE9LDQoJdGVzdCBWSURJT0NfKFVOKVNV QlNDUklCRV9FVkVOVC9EUUVWRU5UOiBPSw0KCXRlc3QgVklESU9DX0cvU19KUEVHQ09NUDogT0sg KE5vdCBTdXBwb3J0ZWQpDQoJU3RhbmRhcmQgQ29udHJvbHM6IDIgUHJpdmF0ZSBDb250cm9sczog MA0KDQpGb3JtYXQgaW9jdGxzOg0KCXRlc3QgVklESU9DX0VOVU1fRk1UL0ZSQU1FU0laRVMvRlJB TUVJTlRFUlZBTFM6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvU19QQVJNOiBP SyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HX0ZCVUY6IE9LIChOb3QgU3VwcG9ydGVk KQ0KCXRlc3QgVklESU9DX0dfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19U UllfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19TX0ZNVDogT0sgKE5vdCBT dXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfR19TTElDRURfVkJJX0NBUDogT0sgKE5vdCBTdXBwb3J0 ZWQpDQoJdGVzdCBDcm9wcGluZzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBDb21wb3Npbmc6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgU2NhbGluZzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoN CkNvZGVjIGlvY3RsczoNCgl0ZXN0IFZJRElPQ18oVFJZXylFTkNPREVSX0NNRDogT0sgKE5vdCBT dXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfR19FTkNfSU5ERVg6IE9LIChOb3QgU3VwcG9ydGVkKQ0K CXRlc3QgVklESU9DXyhUUllfKURFQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkNCg0KQnVm ZmVyIGlvY3RsczoNCgl0ZXN0IFZJRElPQ19SRVFCVUZTL0NSRUFURV9CVUZTL1FVRVJZQlVGOiBP SyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19FWFBCVUY6IE9LIChOb3QgU3VwcG9ydGVk KQ0KCXRlc3QgUmVxdWVzdHM6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpUb3RhbCBmb3IgbXRrLWNh bS1wMSBkZXZpY2UgL2Rldi92NGwtc3ViZGV2MTogMTI1LCBTdWNjZWVkZWQ6IDEyNSwgRmFpbGVk OiAwLCBXYXJuaW5nczogMA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkNvbXBsaWFuY2UgdGVz dCBmb3IgbXRrLWNhbS1wMSBkZXZpY2UgL2Rldi92NGwtc3ViZGV2MjoNCg0KTWVkaWEgRHJpdmVy IEluZm86DQoJRHJpdmVyIG5hbWUgICAgICA6IG10ay1jYW0tcDENCglNb2RlbCAgICAgICAgICAg IDogbXRrLWNhbS1wMQ0KCVNlcmlhbCAgICAgICAgICAgOiANCglCdXMgaW5mbyAgICAgICAgIDog cGxhdGZvcm06MWEwMDAwMDAuY2FtaXNwDQoJTWVkaWEgdmVyc2lvbiAgICA6IDQuMTkuODkNCglI YXJkd2FyZSByZXZpc2lvbjogMHgwMDAwMDAwMCAoMCkNCglEcml2ZXIgdmVyc2lvbiAgIDogNC4x OS44OQ0KSW50ZXJmYWNlIEluZm86DQoJSUQgICAgICAgICAgICAgICA6IDB4MDMwMDAwNTQNCglU eXBlICAgICAgICAgICAgIDogVjRMIFN1Yi1EZXZpY2UNCkVudGl0eSBJbmZvOg0KCUlEICAgICAg ICAgICAgICAgOiAweDAwMDAwMDQ1ICg2OSkNCglOYW1lICAgICAgICAgICAgIDogb3Y4ODU2IDIt MDAxMA0KCUZ1bmN0aW9uICAgICAgICAgOiBDYW1lcmEgU2Vuc29yDQoJUGFkIDB4MDEwMDAwNDYg ICA6IDA6IFNvdXJjZQ0KCSAgTGluayAweDAyMDAwMDQ3OiB0byByZW1vdGUgcGFkIDB4MTAwMDAz OSBvZiBlbnRpdHkgJzFhMDQwMDAwLnNlbmluZic6IERhdGEsIEVuYWJsZWQNCg0KUmVxdWlyZWQg aW9jdGxzOg0KCXRlc3QgTUMgaW5mb3JtYXRpb24gKHNlZSAnTWVkaWEgRHJpdmVyIEluZm8nIGFi b3ZlKTogT0sNCg0KQWxsb3cgZm9yIG11bHRpcGxlIG9wZW5zOg0KCXRlc3Qgc2Vjb25kIC9kZXYv djRsLXN1YmRldjIgb3BlbjogT0sNCgl0ZXN0IGZvciB1bmxpbWl0ZWQgb3BlbnM6IE9LDQoNCkRl YnVnIGlvY3RsczoNCgl0ZXN0IFZJRElPQ19MT0dfU1RBVFVTOiBPSyAoTm90IFN1cHBvcnRlZCkN Cg0KSW5wdXQgaW9jdGxzOg0KCXRlc3QgVklESU9DX0cvU19UVU5FUi9FTlVNX0ZSRVFfQkFORFM6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvU19GUkVRVUVOQ1k6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1NfSFdfRlJFUV9TRUVLOiBPSyAoTm90IFN1cHBvcnRl ZCkNCgl0ZXN0IFZJRElPQ19FTlVNQVVESU86IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklE SU9DX0cvUy9FTlVNSU5QVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvU19B VURJTzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJSW5wdXRzOiAwIEF1ZGlvIElucHV0czogMCBUdW5l cnM6IDANCg0KT3V0cHV0IGlvY3RsczoNCgl0ZXN0IFZJRElPQ19HL1NfTU9EVUxBVE9SOiBPSyAo Tm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1cHBv cnRlZCkNCgl0ZXN0IFZJRElPQ19FTlVNQVVET1VUOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0 IFZJRElPQ19HL1MvRU5VTU9VVFBVVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0Nf Ry9TX0FVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJT3V0cHV0czogMCBBdWRpbyBPdXRwdXRz OiAwIE1vZHVsYXRvcnM6IDANCg0KSW5wdXQvT3V0cHV0IGNvbmZpZ3VyYXRpb24gaW9jdGxzOg0K CXRlc3QgVklESU9DX0VOVU0vRy9TL1FVRVJZX1NURDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVz dCBWSURJT0NfRU5VTS9HL1MvUVVFUllfRFZfVElNSU5HUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJ dGVzdCBWSURJT0NfRFZfVElNSU5HU19DQVA6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklE SU9DX0cvU19FRElEOiBPSyAoTm90IFN1cHBvcnRlZCkNCg0KU3ViLURldmljZSBpb2N0bHMgKFNv dXJjZSBQYWQgMCk6DQoJCWZhaWw6IHY0bDItdGVzdC1zdWJkZXZzLmNwcCgxNDcpOiBkb2lvY3Rs KG5vZGUsIFZJRElPQ19TVUJERVZfRU5VTV9GUkFNRV9TSVpFLCAmZnNlKQ0KCQlmYWlsOiB2NGwy LXRlc3Qtc3ViZGV2cy5jcHAoMjQ4KTogcmV0ICYmIHJldCAhPSBFTk9UVFkNCgl0ZXN0IFRyeSBW SURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IEZB SUwNCgkJZmFpbDogdjRsMi10ZXN0LXN1YmRldnMuY3BwKDMxMyk6IGZtdC5jb2RlID09IDAgfHwg Zm10LmNvZGUgPT0gfjBVDQoJCWZhaWw6IHY0bDItdGVzdC1zdWJkZXZzLmNwcCgzNTYpOiBjaGVj a01CdXNGcmFtZUZtdChub2RlLCBmbXQuZm9ybWF0KQ0KCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZf Ry9TX0ZNVDogRkFJTA0KCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9Q OiBPSyAoTm90IFN1cHBvcnRlZCkNCgkJZmFpbDogdjRsMi10ZXN0LXN1YmRldnMuY3BwKDE0Nyk6 IGRvaW9jdGwobm9kZSwgVklESU9DX1NVQkRFVl9FTlVNX0ZSQU1FX1NJWkUsICZmc2UpDQoJCWZh aWw6IHY0bDItdGVzdC1zdWJkZXZzLmNwcCgyNDgpOiByZXQgJiYgcmV0ICE9IEVOT1RUWQ0KCXRl c3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9J TlRFUlZBTDogRkFJTA0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sNCgl0 ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBw b3J0ZWQpDQoJdGVzdCBWSURJT0NfU1VCREVWX0cvU19GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBT dXBwb3J0ZWQpDQoNCkNvbnRyb2wgaW9jdGxzOg0KCXRlc3QgVklESU9DX1FVRVJZX0VYVF9DVFJM L1FVRVJZTUVOVTogT0sNCgl0ZXN0IFZJRElPQ19RVUVSWUNUUkw6IE9LDQoJdGVzdCBWSURJT0Nf Ry9TX0NUUkw6IE9LDQoJdGVzdCBWSURJT0NfRy9TL1RSWV9FWFRfQ1RSTFM6IE9LDQoJCWZhaWw6 IHY0bDItdGVzdC1jb250cm9scy5jcHAoODMwKTogc3Vic2NyaWJlIGV2ZW50IGZvciBjb250cm9s ICdVc2VyIENvbnRyb2xzJyBmYWlsZWQNCgl0ZXN0IFZJRElPQ18oVU4pU1VCU0NSSUJFX0VWRU5U L0RRRVZFTlQ6IEZBSUwNCgl0ZXN0IFZJRElPQ19HL1NfSlBFR0NPTVA6IE9LIChOb3QgU3VwcG9y dGVkKQ0KCVN0YW5kYXJkIENvbnRyb2xzOiAxMSBQcml2YXRlIENvbnRyb2xzOiAwDQoNCkZvcm1h dCBpb2N0bHM6DQoJdGVzdCBWSURJT0NfRU5VTV9GTVQvRlJBTUVTSVpFUy9GUkFNRUlOVEVSVkFM UzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX1BBUk06IE9LIChOb3QgU3Vw cG9ydGVkKQ0KCXRlc3QgVklESU9DX0dfRkJVRjogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBW SURJT0NfR19GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1RSWV9GTVQ6IE9L IChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1NfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkN Cgl0ZXN0IFZJRElPQ19HX1NMSUNFRF9WQklfQ0FQOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0 IENyb3BwaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IENvbXBvc2luZzogT0sgKE5vdCBT dXBwb3J0ZWQpDQoJdGVzdCBTY2FsaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCg0KQ29kZWMgaW9j dGxzOg0KCXRlc3QgVklESU9DXyhUUllfKUVOQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkN Cgl0ZXN0IFZJRElPQ19HX0VOQ19JTkRFWDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJ T0NfKFRSWV8pREVDT0RFUl9DTUQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpCdWZmZXIgaW9jdGxz Og0KCXRlc3QgVklESU9DX1JFUUJVRlMvQ1JFQVRFX0JVRlMvUVVFUllCVUY6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KCXRlc3QgVklESU9DX0VYUEJVRjogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBS ZXF1ZXN0czogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNClRvdGFsIGZvciBtdGstY2FtLXAxIGRldmlj ZSAvZGV2L3Y0bC1zdWJkZXYyOiA0OCwgU3VjY2VlZGVkOiA0NCwgRmFpbGVkOiA0LCBXYXJuaW5n czogMA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkNvbXBsaWFuY2UgdGVzdCBmb3IgbXRrLWNh bS1wMSBkZXZpY2UgL2Rldi92NGwtc3ViZGV2MzoNCg0KTWVkaWEgRHJpdmVyIEluZm86DQoJRHJp dmVyIG5hbWUgICAgICA6IG10ay1jYW0tcDENCglNb2RlbCAgICAgICAgICAgIDogbXRrLWNhbS1w MQ0KCVNlcmlhbCAgICAgICAgICAgOiANCglCdXMgaW5mbyAgICAgICAgIDogcGxhdGZvcm06MWEw MDAwMDAuY2FtaXNwDQoJTWVkaWEgdmVyc2lvbiAgICA6IDQuMTkuODkNCglIYXJkd2FyZSByZXZp c2lvbjogMHgwMDAwMDAwMCAoMCkNCglEcml2ZXIgdmVyc2lvbiAgIDogNC4xOS44OQ0KSW50ZXJm YWNlIEluZm86DQoJSUQgICAgICAgICAgICAgICA6IDB4MDMwMDAwNTYNCglUeXBlICAgICAgICAg ICAgIDogVjRMIFN1Yi1EZXZpY2UNCkVudGl0eSBJbmZvOg0KCUlEICAgICAgICAgICAgICAgOiAw eDAwMDAwMDQ5ICg3MykNCglOYW1lICAgICAgICAgICAgIDogZHc5NzY4IDItMDAwYw0KCUZ1bmN0 aW9uICAgICAgICAgOiBMZW5zIENvbnRyb2xsZXINCg0KUmVxdWlyZWQgaW9jdGxzOg0KCXRlc3Qg TUMgaW5mb3JtYXRpb24gKHNlZSAnTWVkaWEgRHJpdmVyIEluZm8nIGFib3ZlKTogT0sNCg0KQWxs b3cgZm9yIG11bHRpcGxlIG9wZW5zOg0KCXRlc3Qgc2Vjb25kIC9kZXYvdjRsLXN1YmRldjMgb3Bl bjogT0sNCgl0ZXN0IGZvciB1bmxpbWl0ZWQgb3BlbnM6IE9LDQoNCkRlYnVnIGlvY3RsczoNCgl0 ZXN0IFZJRElPQ19MT0dfU1RBVFVTOiBPSyAoTm90IFN1cHBvcnRlZCkNCg0KSW5wdXQgaW9jdGxz Og0KCXRlc3QgVklESU9DX0cvU19UVU5FUi9FTlVNX0ZSRVFfQkFORFM6IE9LIChOb3QgU3VwcG9y dGVkKQ0KCXRlc3QgVklESU9DX0cvU19GUkVRVUVOQ1k6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRl c3QgVklESU9DX1NfSFdfRlJFUV9TRUVLOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElP Q19FTlVNQVVESU86IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvUy9FTlVNSU5Q VVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvU19BVURJTzogT0sgKE5vdCBT dXBwb3J0ZWQpDQoJSW5wdXRzOiAwIEF1ZGlvIElucHV0czogMCBUdW5lcnM6IDANCg0KT3V0cHV0 IGlvY3RsczoNCgl0ZXN0IFZJRElPQ19HL1NfTU9EVUxBVE9SOiBPSyAoTm90IFN1cHBvcnRlZCkN Cgl0ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJ RElPQ19FTlVNQVVET1VUOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HL1MvRU5V TU9VVFBVVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX0FVRE9VVDogT0sg KE5vdCBTdXBwb3J0ZWQpDQoJT3V0cHV0czogMCBBdWRpbyBPdXRwdXRzOiAwIE1vZHVsYXRvcnM6 IDANCg0KSW5wdXQvT3V0cHV0IGNvbmZpZ3VyYXRpb24gaW9jdGxzOg0KCXRlc3QgVklESU9DX0VO VU0vRy9TL1FVRVJZX1NURDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRU5VTS9H L1MvUVVFUllfRFZfVElNSU5HUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRFZf VElNSU5HU19DQVA6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvU19FRElEOiBP SyAoTm90IFN1cHBvcnRlZCkNCg0KQ29udHJvbCBpb2N0bHM6DQoJdGVzdCBWSURJT0NfUVVFUllf RVhUX0NUUkwvUVVFUllNRU5VOiBPSw0KCXRlc3QgVklESU9DX1FVRVJZQ1RSTDogT0sNCgl0ZXN0 IFZJRElPQ19HL1NfQ1RSTDogT0sNCgl0ZXN0IFZJRElPQ19HL1MvVFJZX0VYVF9DVFJMUzogT0sN CgkJZmFpbDogdjRsMi10ZXN0LWNvbnRyb2xzLmNwcCg4MzApOiBzdWJzY3JpYmUgZXZlbnQgZm9y IGNvbnRyb2wgJ0NhbWVyYSBDb250cm9scycgZmFpbGVkDQoJdGVzdCBWSURJT0NfKFVOKVNVQlND UklCRV9FVkVOVC9EUUVWRU5UOiBGQUlMDQoJdGVzdCBWSURJT0NfRy9TX0pQRUdDT01QOiBPSyAo Tm90IFN1cHBvcnRlZCkNCglTdGFuZGFyZCBDb250cm9sczogMiBQcml2YXRlIENvbnRyb2xzOiAw DQoNCkZvcm1hdCBpb2N0bHM6DQoJdGVzdCBWSURJT0NfRU5VTV9GTVQvRlJBTUVTSVpFUy9GUkFN RUlOVEVSVkFMUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX1BBUk06IE9L IChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0dfRkJVRjogT0sgKE5vdCBTdXBwb3J0ZWQp DQoJdGVzdCBWSURJT0NfR19GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1RS WV9GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1NfRk1UOiBPSyAoTm90IFN1 cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HX1NMSUNFRF9WQklfQ0FQOiBPSyAoTm90IFN1cHBvcnRl ZCkNCgl0ZXN0IENyb3BwaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IENvbXBvc2luZzog T0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBTY2FsaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCg0K Q29kZWMgaW9jdGxzOg0KCXRlc3QgVklESU9DXyhUUllfKUVOQ09ERVJfQ01EOiBPSyAoTm90IFN1 cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HX0VOQ19JTkRFWDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJ dGVzdCBWSURJT0NfKFRSWV8pREVDT0RFUl9DTUQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpCdWZm ZXIgaW9jdGxzOg0KCXRlc3QgVklESU9DX1JFUUJVRlMvQ1JFQVRFX0JVRlMvUVVFUllCVUY6IE9L IChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0VYUEJVRjogT0sgKE5vdCBTdXBwb3J0ZWQp DQoJdGVzdCBSZXF1ZXN0czogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNClRvdGFsIGZvciBtdGstY2Ft LXAxIGRldmljZSAvZGV2L3Y0bC1zdWJkZXYzOiA0MSwgU3VjY2VlZGVkOiA0MCwgRmFpbGVkOiAx LCBXYXJuaW5nczogMA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkNvbXBsaWFuY2UgdGVzdCBm b3IgbXRrLWNhbS1wMSBkZXZpY2UgL2Rldi92NGwtc3ViZGV2NDoNCg0KTWVkaWEgRHJpdmVyIElu Zm86DQoJRHJpdmVyIG5hbWUgICAgICA6IG10ay1jYW0tcDENCglNb2RlbCAgICAgICAgICAgIDog bXRrLWNhbS1wMQ0KCVNlcmlhbCAgICAgICAgICAgOiANCglCdXMgaW5mbyAgICAgICAgIDogcGxh dGZvcm06MWEwMDAwMDAuY2FtaXNwDQoJTWVkaWEgdmVyc2lvbiAgICA6IDQuMTkuODkNCglIYXJk d2FyZSByZXZpc2lvbjogMHgwMDAwMDAwMCAoMCkNCglEcml2ZXIgdmVyc2lvbiAgIDogNC4xOS44 OQ0KSW50ZXJmYWNlIEluZm86DQoJSUQgICAgICAgICAgICAgICA6IDB4MDMwMDAwNTgNCglUeXBl ICAgICAgICAgICAgIDogVjRMIFN1Yi1EZXZpY2UNCkVudGl0eSBJbmZvOg0KCUlEICAgICAgICAg ICAgICAgOiAweDAwMDAwMDRhICg3NCkNCglOYW1lICAgICAgICAgICAgIDogb3YwMmExMCA0LTAw M2QNCglGdW5jdGlvbiAgICAgICAgIDogQ2FtZXJhIFNlbnNvcg0KCVBhZCAweDAxMDAwMDRiICAg OiAwOiBTb3VyY2UNCgkgIExpbmsgMHgwMjAwMDA0YzogdG8gcmVtb3RlIHBhZCAweDEwMDAwM2Eg b2YgZW50aXR5ICcxYTA0MDAwMC5zZW5pbmYnOiBEYXRhDQoNClJlcXVpcmVkIGlvY3RsczoNCgl0 ZXN0IE1DIGluZm9ybWF0aW9uIChzZWUgJ01lZGlhIERyaXZlciBJbmZvJyBhYm92ZSk6IE9LDQoN CkFsbG93IGZvciBtdWx0aXBsZSBvcGVuczoNCgl0ZXN0IHNlY29uZCAvZGV2L3Y0bC1zdWJkZXY0 IG9wZW46IE9LDQoJdGVzdCBmb3IgdW5saW1pdGVkIG9wZW5zOiBPSw0KDQpEZWJ1ZyBpb2N0bHM6 DQoJdGVzdCBWSURJT0NfTE9HX1NUQVRVUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNCklucHV0IGlv Y3RsczoNCgl0ZXN0IFZJRElPQ19HL1NfVFVORVIvRU5VTV9GUkVRX0JBTkRTOiBPSyAoTm90IFN1 cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkN Cgl0ZXN0IFZJRElPQ19TX0hXX0ZSRVFfU0VFSzogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBW SURJT0NfRU5VTUFVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HL1MvRU5V TUlOUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HL1NfQVVESU86IE9LIChO b3QgU3VwcG9ydGVkKQ0KCUlucHV0czogMCBBdWRpbyBJbnB1dHM6IDAgVHVuZXJzOiAwDQoNCk91 dHB1dCBpb2N0bHM6DQoJdGVzdCBWSURJT0NfRy9TX01PRFVMQVRPUjogT0sgKE5vdCBTdXBwb3J0 ZWQpDQoJdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5DWTogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVz dCBWSURJT0NfRU5VTUFVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9T L0VOVU1PVVRQVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0cvU19BVURPVVQ6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KCU91dHB1dHM6IDAgQXVkaW8gT3V0cHV0czogMCBNb2R1bGF0 b3JzOiAwDQoNCklucHV0L091dHB1dCBjb25maWd1cmF0aW9uIGlvY3RsczoNCgl0ZXN0IFZJRElP Q19FTlVNL0cvUy9RVUVSWV9TVEQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX0VO VU0vRy9TL1FVRVJZX0RWX1RJTUlOR1M6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9D X0RWX1RJTUlOR1NfQ0FQOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IFZJRElPQ19HL1NfRURJ RDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNClN1Yi1EZXZpY2UgaW9jdGxzIChTb3VyY2UgUGFkIDAp Og0KCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFN RV9JTlRFUlZBTDogT0sNCgl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9LDQoJdGVz dCBUcnkgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVk KQ0KCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9G UkFNRV9JTlRFUlZBTDogT0sNCgl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9L DQoJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1NVQkRFVl9HL1NfRlJBTUVfSU5URVJWQUw6IE9LIChO b3QgU3VwcG9ydGVkKQ0KDQpDb250cm9sIGlvY3RsczoNCgl0ZXN0IFZJRElPQ19RVUVSWV9FWFRf Q1RSTC9RVUVSWU1FTlU6IE9LDQoJdGVzdCBWSURJT0NfUVVFUllDVFJMOiBPSw0KCQlmYWlsOiB2 NGwyLXRlc3QtY29udHJvbHMuY3BwKDM2Mik6IHJldHVybmVkIGNvbnRyb2wgdmFsdWUgb3V0IG9m IHJhbmdlDQoJCWZhaWw6IHY0bDItdGVzdC1jb250cm9scy5jcHAoNDMxKTogaW52YWxpZCBjb250 cm9sIDAwOWUwOTAyDQoJdGVzdCBWSURJT0NfRy9TX0NUUkw6IEZBSUwNCgkJZmFpbDogdjRsMi10 ZXN0LWNvbnRyb2xzLmNwcCg1NDkpOiByZXR1cm5lZCBjb250cm9sIHZhbHVlIG91dCBvZiByYW5n ZQ0KCQlmYWlsOiB2NGwyLXRlc3QtY29udHJvbHMuY3BwKDY2NSk6IGludmFsaWQgY29udHJvbCAw MDllMDkwMg0KCXRlc3QgVklESU9DX0cvUy9UUllfRVhUX0NUUkxTOiBGQUlMDQoJCWZhaWw6IHY0 bDItdGVzdC1jb250cm9scy5jcHAoODMwKTogc3Vic2NyaWJlIGV2ZW50IGZvciBjb250cm9sICdV c2VyIENvbnRyb2xzJyBmYWlsZWQNCgl0ZXN0IFZJRElPQ18oVU4pU1VCU0NSSUJFX0VWRU5UL0RR RVZFTlQ6IEZBSUwNCgl0ZXN0IFZJRElPQ19HL1NfSlBFR0NPTVA6IE9LIChOb3QgU3VwcG9ydGVk KQ0KCVN0YW5kYXJkIENvbnRyb2xzOiAxMCBQcml2YXRlIENvbnRyb2xzOiAwDQoNCkZvcm1hdCBp b2N0bHM6DQoJdGVzdCBWSURJT0NfRU5VTV9GTVQvRlJBTUVTSVpFUy9GUkFNRUlOVEVSVkFMUzog T0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0NfRy9TX1BBUk06IE9LIChOb3QgU3VwcG9y dGVkKQ0KCXRlc3QgVklESU9DX0dfRkJVRjogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJ T0NfR19GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1RSWV9GTVQ6IE9LIChO b3QgU3VwcG9ydGVkKQ0KCXRlc3QgVklESU9DX1NfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0 ZXN0IFZJRElPQ19HX1NMSUNFRF9WQklfQ0FQOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IENy b3BwaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0ZXN0IENvbXBvc2luZzogT0sgKE5vdCBTdXBw b3J0ZWQpDQoJdGVzdCBTY2FsaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCg0KQ29kZWMgaW9jdGxz Og0KCXRlc3QgVklESU9DXyhUUllfKUVOQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkNCgl0 ZXN0IFZJRElPQ19HX0VOQ19JTkRFWDogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBWSURJT0Nf KFRSWV8pREVDT0RFUl9DTUQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KDQpCdWZmZXIgaW9jdGxzOg0K CXRlc3QgVklESU9DX1JFUUJVRlMvQ1JFQVRFX0JVRlMvUVVFUllCVUY6IE9LIChOb3QgU3VwcG9y dGVkKQ0KCXRlc3QgVklESU9DX0VYUEJVRjogT0sgKE5vdCBTdXBwb3J0ZWQpDQoJdGVzdCBSZXF1 ZXN0czogT0sgKE5vdCBTdXBwb3J0ZWQpDQoNClRvdGFsIGZvciBtdGstY2FtLXAxIGRldmljZSAv ZGV2L3Y0bC1zdWJkZXY0OiA0OCwgU3VjY2VlZGVkOiA0NSwgRmFpbGVkOiAzLCBXYXJuaW5nczog MA0KDQpHcmFuZCBUb3RhbCBmb3IgbXRrLWNhbS1wMSBkZXZpY2UgL2Rldi9tZWRpYTI6IDcwOSwg U3VjY2VlZGVkOiA2OTQsIEZhaWxlZDogMTUsIFdhcm5pbmdzOiAwDQoNCg0KSnVuZ28gTGluICg1 KToNCiAgbWVkaWE6IGR0LWJpbmRpbmdzOiBtdDgxODM6IEFkZGVkIGNhbWVyYSBJU1AgUGFzcyAx DQogIGR0czogYXJtNjQ6IG10ODE4MzogQWRkIElTUCBQYXNzIDEgbm9kZXMNCiAgbWVkaWE6IHZp ZGVvZGV2Mi5oOiBBZGQgbmV3IGJvb3R0aW1lIHRpbWVzdGFtcCB0eXBlDQogIG1lZGlhOiBwbGF0 Zm9ybTogQWRkIE1lZGlhdGVrIElTUCBQMSBpbWFnZSAmIG1ldGEgZm9ybWF0cw0KICBtZWRpYTog cGxhdGZvcm06IEFkZCBNZWRpYXRlayBJU1AgUDEgVjRMMiBkZXZpY2UgZHJpdmVyDQoNCiAuLi4v YmluZGluZ3MvbWVkaWEvbWVkaWF0ZWssY2FtaXNwLnR4dCAgICAgICAgfCAgIDgzICsNCiBEb2N1 bWVudGF0aW9uL21lZGlhL3VhcGkvdjRsL2J1ZmZlci5yc3QgICAgICAgfCAgIDExICstDQogLi4u L21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjEwLnJzdCAgIHwgICA2NSArDQogLi4u L21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjEwZi5yc3QgIHwgICA5MCArDQogLi4u L21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjEyLnJzdCAgIHwgICA2MSArDQogLi4u L21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjEyZi5yc3QgIHwgIDExMCArDQogLi4u L21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjE0LnJzdCAgIHwgICA3MyArDQogLi4u L21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjE0Zi5yc3QgIHwgIDExMCArDQogLi4u L21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjgucnN0ICAgIHwgICA1MSArDQogLi4u L21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjhmLnJzdCAgIHwgICA3OCArDQogYXJj aC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxODMuZHRzaSAgICAgIHwgICAzOCArDQogZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9LY29uZmlnICAgICAgICAgICAgICAgIHwgICAgMSArDQogZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgICAgMSArDQogZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstaXNwL0tjb25maWcgICAgICAgIHwgICAyMCArDQogLi4u L21lZGlhL3BsYXRmb3JtL210ay1pc3AvaXNwXzUwL01ha2VmaWxlICAgIHwgICAgMyArDQogLi4u L3BsYXRmb3JtL210ay1pc3AvaXNwXzUwL2NhbS9NYWtlZmlsZSAgICAgIHwgICAgNiArDQogLi4u L3BsYXRmb3JtL210ay1pc3AvaXNwXzUwL2NhbS9tdGtfY2FtLWh3LmMgIHwgIDYzNiArKysrKw0K IC4uLi9wbGF0Zm9ybS9tdGstaXNwL2lzcF81MC9jYW0vbXRrX2NhbS1ody5oICB8ICAgNjQgKw0K IC4uLi9wbGF0Zm9ybS9tdGstaXNwL2lzcF81MC9jYW0vbXRrX2NhbS1pcGkuaCB8ICAyMjIgKysN CiAuLi4vbXRrLWlzcC9pc3BfNTAvY2FtL210a19jYW0tcmVncy5oICAgICAgICAgfCAgIDk1ICsN CiAuLi4vcGxhdGZvcm0vbXRrLWlzcC9pc3BfNTAvY2FtL210a19jYW0uYyAgICAgfCAyMDg3ICsr KysrKysrKysrKysrKysrDQogLi4uL3BsYXRmb3JtL210ay1pc3AvaXNwXzUwL2NhbS9tdGtfY2Ft LmggICAgIHwgIDI0NCArKw0KIGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItaW9jdGwuYyAg ICAgICAgICB8ICAgMzcgKw0KIGluY2x1ZGUvdWFwaS9saW51eC92aWRlb2RldjIuaCAgICAgICAg ICAgICAgICB8ICAgNDEgKw0KIDI0IGZpbGVzIGNoYW5nZWQsIDQyMjYgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRy ZWUvYmluZGluZ3MvbWVkaWEvbWVkaWF0ZWssY2FtaXNwLnR4dA0KIGNyZWF0ZSBtb2RlIDEwMDY0 NCBEb2N1bWVudGF0aW9uL21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjEwLnJzdA0K IGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL21lZGlhL3VhcGkvdjRsL3BpeGZtdC1t dGlzcC1zYmdncjEwZi5yc3QNCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9tZWRp YS91YXBpL3Y0bC9waXhmbXQtbXRpc3Atc2JnZ3IxMi5yc3QNCiBjcmVhdGUgbW9kZSAxMDA2NDQg RG9jdW1lbnRhdGlvbi9tZWRpYS91YXBpL3Y0bC9waXhmbXQtbXRpc3Atc2JnZ3IxMmYucnN0DQog Y3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vbWVkaWEvdWFwaS92NGwvcGl4Zm10LW10 aXNwLXNiZ2dyMTQucnN0DQogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vbWVkaWEv dWFwaS92NGwvcGl4Zm10LW10aXNwLXNiZ2dyMTRmLnJzdA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBE b2N1bWVudGF0aW9uL21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjgucnN0DQogY3Jl YXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vbWVkaWEvdWFwaS92NGwvcGl4Zm10LW10aXNw LXNiZ2dyOGYucnN0DQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0v bXRrLWlzcC9LY29uZmlnDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZv cm0vbXRrLWlzcC9pc3BfNTAvTWFrZWZpbGUNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9tdGstaXNwL2lzcF81MC9jYW0vTWFrZWZpbGUNCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstaXNwL2lzcF81MC9jYW0vbXRrX2NhbS1o dy5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWlzcC9p c3BfNTAvY2FtL210a19jYW0taHcuaA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlh L3BsYXRmb3JtL210ay1pc3AvaXNwXzUwL2NhbS9tdGtfY2FtLWlwaS5oDQogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWlzcC9pc3BfNTAvY2FtL210a19jYW0t cmVncy5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWlz cC9pc3BfNTAvY2FtL210a19jYW0uYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlh L3BsYXRmb3JtL210ay1pc3AvaXNwXzUwL2NhbS9tdGtfY2FtLmgNCg0KLS0gDQoyLjE4LjANCg== 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=-8.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 18E2BC43603 for ; Thu, 19 Dec 2019 06:00:16 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 CC4BD2146E for ; Thu, 19 Dec 2019 06:00:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="tGAISz04"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="Temy8nCk" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CC4BD2146E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:Reply-To:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:To:From:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=s5AdIrUALMl7oFrhPNx4aosJBcIxLjxS46TeF8IJLyI=; b=tGAISz04oKvWZa 4uJ8+uAl2NgtNa94Ex7jNz71Wj2TjclDWi4XDFIm560uVmFifexVzX9Br50PqHrKHQfSqgZhV92b/ pKguMHeolA0dY9WStwkVK7ybhHfwuLq6aHUTL3QMlA5GrghS7mUPPCv9Qq9fAFLY7f3Xlxb44QTc7 JYZw3uXbi/MT14xmGzd8s3/GJrbEGOhQPaE0lFvfBmq6cAs82nxAJAHtKkFJ3dwgvgcnHIyB9ctFN p3bAI+VN+Q3rF6ySxAQyC472xpypx1cCA/ynt91JIvcMu6eYR5/kXaljQW5NQApVkVQYswZDYGgXU qgeUkmm16mOIQCizyvIQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ihor9-0002qc-61; Thu, 19 Dec 2019 06:00:15 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ihor1-0002Df-Sf; Thu, 19 Dec 2019 06:00:13 +0000 X-UUID: 45a3f13b87ce4d758e5257a9efb60870-20191218 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Reply-To:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=aCBCzJMIGfUhwvmqVIO0GzToUy41h6GzD99oY13AZFg=; b=Temy8nCkUX40DubDN3VDaP1fLkfVIE5ldiygPIFf+nyst9YsiJNQdU9bEBK0yhIq8tlYMFwsM9xCLbqh9S2u5sh4AeL2vfh3fnh3alp+bUjwBe1W079R9ptrdPKapgn96EWjZVv8GaaQ+e5Qpnnt7c1wQEzbTXp23Y2glJDY8kE=; X-UUID: 45a3f13b87ce4d758e5257a9efb60870-20191218 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 1148636819; Wed, 18 Dec 2019 22:00:04 -0800 Received: from MTKMBS01N1.mediatek.inc (172.21.101.68) by MTKMBS62DR.mediatek.inc (172.29.94.18) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Wed, 18 Dec 2019 21:50:22 -0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs01n1.mediatek.inc (172.21.101.68) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 19 Dec 2019 13:49:39 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Thu, 19 Dec 2019 13:50:03 +0800 From: Jungo Lin To: , , , , Subject: [v6, 0/5] media: media: platform: mtk-isp: Add Mediatek ISP Pass 1 driver Date: Thu, 19 Dec 2019 13:49:25 +0800 Message-ID: <20191219054930.29513-1-jungo.lin@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: References: MIME-Version: 1.0 X-MTK: N X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Jungo Lin Cc: shik@chromium.org, devicetree@vger.kernel.org, Sean.Cheng@mediatek.com, suleiman@chromium.org, Rynn.Wu@mediatek.com, srv_heupstream@mediatek.com, robh@kernel.org, ryan.yu@mediatek.com, Jerry-ch.Chen@mediatek.com, frankie.chiu@mediatek.com, jungo.lin@mediatek.com, sj.huang@mediatek.com, yuzhao@chromium.org, linux-mediatek@lists.infradead.org, zwisler@chromium.org, ddavenport@chromium.org, frederic.chen@mediatek.com, linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org Hello, This patch series adding the driver for Pass 1 (P1) unit in Mediatek's camera ISP system on mt8183 SoC, which will be used in camera features of CrOS. Pass 1 unit processes image signal from sensor devices and accepts the tuning parameters to adjust the image quality. It performs optical black correction, defect pixel correction, W/IR imbalance correction and lens shading correction for RAW processing. The driver is implemented with V4L2 and media controller framework so we have the following entities to describe the ISP pass 1 path. (The current metadata interface used in meta input and partial meta nodes is only a temporary solution to kick off the driver development and is not ready to be reviewed yet.) 1. meta input (output video device): connect to ISP P1 sub device. It accepts the tuning buffer from user. 2. ISP P1 (sub device): connect to partial meta 0/1/2/3, main stream and packed out video devices. When processing an image, Pass 1 hardware supports multiple output images with different sizes and formats so it needs two capture video devices ("main stream" and "packed out") to return the image data to the user. 3. main stream (capture video device): return the processed image data which is used in capture scenario. 4. packed out (capture video device): return the processed image data which is used in preview scenario. 5. partial meta 0 (capture video device): return the AE/AWB statistics. 6. partial meta 1 (capture video device): return the AF statistics. 7. partial meta 2 (capture video device): return the local contrast enhanced statistics. 8. partial meta 3 (capture video device): return the local motion vector statistics. The overall patches of the series is: * Patch 1 & 2 are dt-bindings & dts information related to ISP P1 driver. * Patch 3 adds new timestamp type for Camera AR (Augmented Reality) application * Patch 4 extends the original V4L2 image & meta formats for ISP P1 driver. * Patch 5 is the heart of ISP P1 driver. It handles the ISP HW configuration. Moreover, implement standard V4L2 video driver that utilizes V4L2 and media framework APIs. Communicate with co-process via SCP communication to compose ISP registers in the firmware. Here is ISP P1 media topology: It is included the main/sub sensor, sen-inf sub-devices and len device which are implemented in below patch[1][2][3][4]: For Mediatek ISP P1 driver, it also depends on MT8183 SCP[5] & IOMMU[6] patch sets. /usr/bin/media-ctl -p -d /dev/media2 Media controller API version 4.19.89 Media device information ------------------------ driver mtk-cam-p1 model mtk-cam-p1 serial bus info platform:1a000000.camisp hw revision 0x0 driver version 4.19.89 Device topology - entity 1: mtk-cam-p1 (12 pads, 8 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev0 pad0: Sink <- "mtk-cam-p1 meta input":0 [] pad1: Source -> "mtk-cam-p1 main stream":0 [ENABLED,IMMUTABLE] pad2: Source -> "mtk-cam-p1 packed out":0 [] pad3: Source -> "mtk-cam-p1 partial meta 0":0 [] pad4: Source -> "mtk-cam-p1 partial meta 1":0 [] pad5: Source -> "mtk-cam-p1 partial meta 2":0 [] pad6: Source -> "mtk-cam-p1 partial meta 3":0 [] pad7: Source pad8: Source pad9: Source pad10: Source pad11: Sink <- "1a040000.seninf":4 [ENABLED,IMMUTABLE] - entity 14: mtk-cam-p1 meta input (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video2 pad0: Source -> "mtk-cam-p1":0 [] - entity 20: mtk-cam-p1 main stream (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video3 pad0: Sink <- "mtk-cam-p1":1 [ENABLED,IMMUTABLE] - entity 26: mtk-cam-p1 packed out (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video4 pad0: Sink <- "mtk-cam-p1":2 [] - entity 32: mtk-cam-p1 partial meta 0 (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video5 pad0: Sink <- "mtk-cam-p1":3 [] - entity 38: mtk-cam-p1 partial meta 1 (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video6 pad0: Sink <- "mtk-cam-p1":4 [] - entity 44: mtk-cam-p1 partial meta 2 (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video7 pad0: Sink <- "mtk-cam-p1":5 [] - entity 50: mtk-cam-p1 partial meta 3 (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video8 pad0: Sink <- "mtk-cam-p1":6 [] - entity 56: 1a040000.seninf (12 pads, 3 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev1 pad0: Sink [fmt:SGRBG10_1X10/3264x2448 field:none colorspace:srgb] <- "ov8856 2-0010":0 [ENABLED] pad1: Sink [fmt:SRGGB10_1X10/1600x1200 field:none colorspace:srgb] <- "ov02a10 4-003d":0 [] pad2: Sink [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] pad3: Sink [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] pad4: Source [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] -> "mtk-cam-p1":11 [ENABLED,IMMUTABLE] pad5: Source [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] pad6: Source [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] pad7: Source [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] pad8: Source [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] pad9: Source [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] pad10: Source [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] pad11: Source [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] - entity 69: ov8856 2-0010 (1 pad, 1 link) type V4L2 subdev subtype Sensor flags 0 device node name /dev/v4l-subdev2 pad0: Source [fmt:SBGGR10_1X10/3264x2448 field:none colorspace:unknown ycbcr:709] -> "1a040000.seninf":0 [ENABLED] - entity 73: dw9768 2-000c (0 pad, 0 link) type V4L2 subdev subtype Lens flags 0 device node name /dev/v4l-subdev3 - entity 74: ov02a10 4-003d (1 pad, 1 link) type V4L2 subdev subtype Sensor flags 0 device node name /dev/v4l-subdev4 pad0: Source [fmt:SRGGB10_1X10/1600x1200 field:none] -> "1a040000.seninf":1 [] =========== = history = =========== version 6: - Add port node description in the dt-binding document and device tree by Tomasz Figa. - Remove RGB format definitions in pixfmt-rgb.rst for kernel v5.5-rc1 version. - Revise help description for VIDEO_MEDIATEK_ISP_PASS1. - Apply SCP v21 change in P1 driver by Pi-Hsun Shih. - Correct auto suspend timer value for suspend/resume issue. - Increase IPI guard timer to 1 second to avoid false alarm command timeout event. - Fix KE due to no sen-inf sub-device. Todo: - vb2_ops's buf_request_complete callback function implementation. - Add rst documents for Mediatek meta formats. - New meta buffer structure design & re-factoring. version 5: - Fixed Rob's comment on dt-binding format - Fix Tomasz's comment in mtk_isp_pm_suspend function - Support V4L2_BUF_FLAG_TIMESTAMP_BOOTTIME timestamp flag and new timestamp type in driver - Fix buffer en-queue timing issue in v4 - Remove default link_notify callback function in mtk_cam_media_ops Todo: - vb2_ops's buf_request_complete callback function implementation - Add rst documents for Mediatek meta formats - New meta buffer structure design & re-factoring - Align and pack IPI command structures for EC ROM size shrink version 4: - Fix Tomasz's comments which are addressed in MTK ISP P1 driver v3 patch[4] - Fix some Tomasz comments which are addressed in DIP's v2 patch[5] - Extend Mediatek proprietary image formats to support bayer order - Support V4L2_BUF_FLAG_TSTAMP_SRC_SOE for capture devices Todo: - vb2_ops's buf_request_complete callback function implementation - Add rst documents for Mediatek meta formats - New meta buffer structure design & re-factoring - Support V4L2_BUF_FLAG_TIMESTAMP_BOOTTIME timestamp flag - Align and pack IPI command structures for EC ROM size shrink version 3: - Remove ISP Pass 1 reserved memory device node and change to use SCP's reserved memory region. (Rob Herring) - Fix comments of ISP Pass 1 device node & dt-bindings document (Rob Herring) - Revise ISP Pass1 Kconfig - Add rst documents for Mediatek image formats (Hans Verkuil) - Fix kernel warning messages when running v4l2_compliance test - Move AFO buffer enqueue & de-queue from request API to non-request - mtk_cam-ctrl.h/mtk_cam-ctrl.c Revise Mediatek ISP Pass1 specific V4L2 control naming & file licence declaration (Hans Verkuil) Split GET_BIN_INFO control into two controls to get width & height in-dependently (Hans Verkuil) - mtk_cam-v4l2-util.h/mtk_cam-v4l2-util.c Merging mtk_cam-dev.c and mtk_cam-v4l2-util.c. (Drew Davenport) Remove the pix_mode argument in related functions and unreachable code. (Drew Davenport) Fix Drew's comments which are addressed in v2 patch Fix some Tomasz comments which are addressed in DIP's v1 patch[3] - mtk_cam-regs.h / mtk_cam.h / mtk_cam.c Fix Drew's comments which are addressed in v2 patch Fix some Tomasz comments which are addressed in DIP's v1 patch[3] Refactoring mtk_isp_config & mtk_isp_req_enqueue functions - mtk_cam-scp.h / mtk_cam-scp.c Move function declarations from mtk_cam.h to mtk_cam-scp.h (Drew Davenport) Fix some Tomasz comments which are addressed in DIP's v1 patch[3] Fix ISP de-initialize timing KE issue - mtk_cam-smem.h / mtk_cam-smem-dev.c Get the reserved shared memory via SCP driver (Tomasz Figa) Todo: - Add rst documents for Mediatek meta formats - New meta buffer structure design & re-factoring version 2: - Add 3A enhancement feature which includes: Separates 3A pipeline out of frame basis to improve AE/AWB (exposure and white balance) performance. Add 2 SCP sub-commands for 3A meta buffers. - Add new child device to manage P1 shared memory between P1 HW unit and co-processor. - Remove mediatek,cam_smem.txt & cam_smem dts node in mt8183.dtsi. - Revised document wording for dt-bindings documents & dts information. - Remove mtk_cam-ctx.h & mtk_cam-dev-ctx-core.c and move these source codes to mtk_cam-dev.h & mtk_cam-dev.c. - mtk_cam-dev.h / mtk_cam-dev.c Revised mtk_cam_video_device & mtk_cam_dev to remove unused structure fields or add comments. Revised buffer size for LMVO & LCSO. Fix pixel format utility function. Add vb2_dma_contig_set_max_seg_size to configure DMA max segment size. - mtk_cam-v4l2-util.c Refactoring V4L2 async mechanism with seninf driver only Refactoring CIO (Connection IO) implementation with active sensor Revised stream on function for 3A enhancement feature Add new V4L2 en-queue/de-queue utility functions for 3A enhancement feature - mtk_cam-regs.h / mtk_cam.h / mtk_cam.c Add meta buffer index register definitions Add meta DMA configuration function. Separate with frame-base and non-frame-base en-queue/de-queue functions Add isp_setup_scp_rproc function to get RPC handle Add mtk_cam_reserved_memory_init for shared memory management - mtk_cam-scp.h / mtk_cam-scp.c Add new meta strictures for 3A enhancement feature Add new IPI command utility function for 3A enhancement feature Enhance isp_composer_dma_sg_init function flow Shorten overall IPI command structure size Remove scp_state state checking Improve code readability - mtk_cam-smem.h / mtk_cam-smem-dev.c Add mtk_cam_alloc_smem_dev to allocate one new child device of ISP driver. Handling P1 driver 's reserved memory & allocate DMA buffers based on this memory region. TODOs: - 3A enhancement feature bug fixing version 1: - Revised driver sources based on Tomasz's comments including part1/2/3/4 in RFC V0 patch. - Remove DMA cache mechanism. Support two new video devices (LCSO/LMVO) for advance camera features. - Fixed v4l2-compliance test failure items. - Add private controls for Mediatek camera middle-ware. - Replace VPU driver's APIs with new SCP driver interface for co-processor communication. - Refactoring mtk_cam_scp.c to use ring-buffers mechanism for IPI commands RX handling. - Fix internal bugs. TODOs: - Remove mtk_cam_smem_drv.c & mtk_cam_smem.h and implement DMA pool for shared memory management. - Revised file names. - Support non frame-sync AFO/AAO DMA buffers version 0: - Initial submission ================== Dependent patch set ================== Camera ISP P1 driver depends on seninf driver, SCP driver. The patches are listed as following: [1]. media: support Mediatek sensor interface driver https://patchwork.kernel.org/cover/11145845/ [2]. media: ov8856: Add YAML binding and sensor mode support https://patchwork.kernel.org/cover/11220785/ [3]. media: i2c: Add support for OV02A10 sensor https://patchwork.kernel.org/cover/11284779/ [4]. media: i2c: add support for DW9768 VCM driver https://patchwork.kernel.org/cover/11132299/ [5]. Add support for mt8183 SCP https://patchwork.kernel.org/cover/11239065/ [6]. MT8183 IOMMU SUPPORT https://patchwork.kernel.org/cover/11112765/ ================== Compliance test ================== The v4l2-compliance is built with the below lastest patch. https://git.linuxtv.org/v4l-utils.git/commit/?id=e9a7593ec6ae98704ecb35ea64948d34c23a5158 Note 1. This testing depends on the above seninf, sensors and len patches[1][2][3][4]. Note 2. For failed test csaes in video2~8, it is caused by new V4L2 timestamp called V4L2_BUF_FLAG_TIMESTAMP_BOOTIME. Note 3. The current some failure items are related to Mediatek sensors/len driver [2][3][3] /usr/bin/v4l2-compliance -m /dev/media2 v4l2-compliance SHA: not available, 32 bits Compliance test for mtk-cam-p1 device /dev/media1: Media Driver Info: Driver name : mtk-cam-p1 Model : mtk-cam-p1 Serial : Bus info : platform:1a000000.camisp Media version : 4.19.67 Hardware revision: 0x00000000 (0) Driver version : 4.19.67 Required ioctls: test MEDIA_IOC_DEVICE_INFO: OK Allow for multiple opens: test second /dev/media1 open: OK test MEDIA_IOC_DEVICE_INFO: OK test for unlimited opens: OK Media Controller ioctls: test MEDIA_IOC_G_TOPOLOGY: OK Entities: 11 Interfaces: 11 Pads: 33 Links: 21 test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK test MEDIA_IOC_SETUP_LINK: OK Total for mtk-cam-p1 device /dev/media1: 7, Succeeded: 7, Failed: 0, Warnings: 0 -------------------------------------------------------------------------------- Compliance test for mtk-cam-p1 device /dev/video25: Driver Info: Driver name : mtk-cam-p1 Card type : mtk-cam-p1 Bus info : platform:1a000000.camisp Driver version : 4.19.67 Capabilities : 0x8c200000 Streaming Extended Pix Format Device Capabilities Device Caps : 0x0c200000 Streaming Extended Pix Format Media Driver Info: Driver name : mtk-cam-p1 Model : mtk-cam-p1 Serial : Bus info : platform:1a000000.camisp Media version : 4.19.67 Hardware revision: 0x00000000 (0) Driver version : 4.19.67 Interface Info: ID : 0x03000010 Type : V4L Video Entity Info: ID : 0x0000000e (14) Name : mtk-cam-p1 meta input Function : V4L2 I/O Pad 0x0100000f : 0: Source Link 0x02000012: to remote pad 0x1000002 of entity 'mtk-cam-p1': Data Required ioctls: test MC information (see 'Media Driver Info' above): OK test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second /dev/video25 open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composiv4l2-compliance SHA: not available, 32 bits Compliance test for mtk-cam-p1 device /dev/media2: Media Driver Info: Driver name : mtk-cam-p1 Model : mtk-cam-p1 Serial : Bus info : platform:1a000000.camisp Media version : 4.19.89 Hardware revision: 0x00000000 (0) Driver version : 4.19.89 Required ioctls: test MEDIA_IOC_DEVICE_INFO: OK Allow for multiple opens: test second /dev/media2 open: OK test MEDIA_IOC_DEVICE_INFO: OK test for unlimited opens: OK Media Controller ioctls: test MEDIA_IOC_G_TOPOLOGY: OK Entities: 12 Interfaces: 12 Pads: 33 Links: 22 test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK test MEDIA_IOC_SETUP_LINK: OK Total for mtk-cam-p1 device /dev/media2: 7, Succeeded: 7, Failed: 0, Warnings: 0 -------------------------------------------------------------------------------- Compliance test for mtk-cam-p1 device /dev/video2: Driver Info: Driver name : mtk-cam-p1 Card type : mtk-cam-p1 Bus info : platform:1a000000.camisp Driver version : 4.19.89 Capabilities : 0x8c200000 Metadata Output Streaming Extended Pix Format Device Capabilities Device Caps : 0x0c200000 Metadata Output Streaming Extended Pix Format Media Driver Info: Driver name : mtk-cam-p1 Model : mtk-cam-p1 Serial : Bus info : platform:1a000000.camisp Media version : 4.19.89 Hardware revision: 0x00000000 (0) Driver version : 4.19.89 Interface Info: ID : 0x03000010 Type : V4L Video Entity Info: ID : 0x0000000e (14) Name : mtk-cam-p1 meta input Function : V4L2 I/O Pad 0x0100000f : 0: Source Link 0x02000012: to remote pad 0x1000002 of entity 'mtk-cam-p1': Data Required ioctls: test MC information (see 'Media Driver Info' above): OK test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second /dev/video2 open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK (Not Supported) Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: fail: v4l2-test-buffers.cpp(370): timestamp != V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC && timestamp != V4L2_BUF_FLAG_TIMESTAMP_COPY fail: v4l2-test-buffers.cpp(486): buf.check(Unqueued, i) fail: v4l2-test-buffers.cpp(615): testQueryBuf(node, i, q.g_buffers()) test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL fail: v4l2-test-buffers.cpp(747): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing or malfunctioning. fail: v4l2-test-buffers.cpp(748): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing, probably due to earlier failing format tests. test VIDIOC_EXPBUF: OK (Not Supported) test Requests: OK Total for mtk-cam-p1 device /dev/video2: 45, Succeeded: 44, Failed: 1, Warnings: 0 -------------------------------------------------------------------------------- Compliance test for mtk-cam-p1 device /dev/video3: Driver Info: Driver name : mtk-cam-p1 Card type : mtk-cam-p1 Bus info : platform:1a000000.camisp Driver version : 4.19.89 Capabilities : 0x84201000 Video Capture Multiplanar Streaming Extended Pix Format Device Capabilities Device Caps : 0x04201000 Video Capture Multiplanar Streaming Extended Pix Format Media Driver Info: Driver name : mtk-cam-p1 Model : mtk-cam-p1 Serial : Bus info : platform:1a000000.camisp Media version : 4.19.89 Hardware revision: 0x00000000 (0) Driver version : 4.19.89 Interface Info: ID : 0x03000016 Type : V4L Video Entity Info: ID : 0x00000014 (20) Name : mtk-cam-p1 main stream Function : V4L2 I/O Pad 0x01000015 : 0: Sink Link 0x02000018: from remote pad 0x1000003 of entity 'mtk-cam-p1': Data, Enabled, Immutable Required ioctls: test MC information (see 'Media Driver Info' above): OK test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second /dev/video3 open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: fail: v4l2-test-buffers.cpp(370): timestamp != V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC && timestamp != V4L2_BUF_FLAG_TIMESTAMP_COPY fail: v4l2-test-buffers.cpp(486): buf.check(Unqueued, i) fail: v4l2-test-buffers.cpp(615): testQueryBuf(node, i, q.g_buffers()) test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL fail: v4l2-test-buffers.cpp(747): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing or malfunctioning. fail: v4l2-test-buffers.cpp(748): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing, probably due to earlier failing format tests. test VIDIOC_EXPBUF: OK (Not Supported) test Requests: OK Total for mtk-cam-p1 device /dev/video3: 45, Succeeded: 44, Failed: 1, Warnings: 0 -------------------------------------------------------------------------------- Compliance test for mtk-cam-p1 device /dev/video4: Driver Info: Driver name : mtk-cam-p1 Card type : mtk-cam-p1 Bus info : platform:1a000000.camisp Driver version : 4.19.89 Capabilities : 0x84201000 Video Capture Multiplanar Streaming Extended Pix Format Device Capabilities Device Caps : 0x04201000 Video Capture Multiplanar Streaming Extended Pix Format Media Driver Info: Driver name : mtk-cam-p1 Model : mtk-cam-p1 Serial : Bus info : platform:1a000000.camisp Media version : 4.19.89 Hardware revision: 0x00000000 (0) Driver version : 4.19.89 Interface Info: ID : 0x0300001c Type : V4L Video Entity Info: ID : 0x0000001a (26) Name : mtk-cam-p1 packed out Function : V4L2 I/O Pad 0x0100001b : 0: Sink Link 0x0200001e: from remote pad 0x1000004 of entity 'mtk-cam-p1': Data Required ioctls: test MC information (see 'Media Driver Info' above): OK test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second /dev/video4 open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: fail: v4l2-test-buffers.cpp(370): timestamp != V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC && timestamp != V4L2_BUF_FLAG_TIMESTAMP_COPY fail: v4l2-test-buffers.cpp(486): buf.check(Unqueued, i) fail: v4l2-test-buffers.cpp(615): testQueryBuf(node, i, q.g_buffers()) test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL fail: v4l2-test-buffers.cpp(747): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing or malfunctioning. fail: v4l2-test-buffers.cpp(748): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing, probably due to earlier failing format tests. test VIDIOC_EXPBUF: OK (Not Supported) test Requests: OK Total for mtk-cam-p1 device /dev/video4: 45, Succeeded: 44, Failed: 1, Warnings: 0 -------------------------------------------------------------------------------- Compliance test for mtk-cam-p1 device /dev/video5: Driver Info: Driver name : mtk-cam-p1 Card type : mtk-cam-p1 Bus info : platform:1a000000.camisp Driver version : 4.19.89 Capabilities : 0x84a00000 Metadata Capture Streaming Extended Pix Format Device Capabilities Device Caps : 0x04a00000 Metadata Capture Streaming Extended Pix Format Media Driver Info: Driver name : mtk-cam-p1 Model : mtk-cam-p1 Serial : Bus info : platform:1a000000.camisp Media version : 4.19.89 Hardware revision: 0x00000000 (0) Driver version : 4.19.89 Interface Info: ID : 0x03000022 Type : V4L Video Entity Info: ID : 0x00000020 (32) Name : mtk-cam-p1 partial meta 0 Function : V4L2 I/O Pad 0x01000021 : 0: Sink Link 0x02000024: from remote pad 0x1000005 of entity 'mtk-cam-p1': Data Required ioctls: test MC information (see 'Media Driver Info' above): OK test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second /dev/video5 open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK (Not Supported) Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: fail: v4l2-test-buffers.cpp(370): timestamp != V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC && timestamp != V4L2_BUF_FLAG_TIMESTAMP_COPY fail: v4l2-test-buffers.cpp(486): buf.check(Unqueued, i) fail: v4l2-test-buffers.cpp(615): testQueryBuf(node, i, q.g_buffers()) test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL fail: v4l2-test-buffers.cpp(747): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing or malfunctioning. fail: v4l2-test-buffers.cpp(748): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing, probably due to earlier failing format tests. test VIDIOC_EXPBUF: OK (Not Supported) test Requests: OK Total for mtk-cam-p1 device /dev/video5: 45, Succeeded: 44, Failed: 1, Warnings: 0 -------------------------------------------------------------------------------- Compliance test for mtk-cam-p1 device /dev/video6: Driver Info: Driver name : mtk-cam-p1 Card type : mtk-cam-p1 Bus info : platform:1a000000.camisp Driver version : 4.19.89 Capabilities : 0x84a00000 Metadata Capture Streaming Extended Pix Format Device Capabilities Device Caps : 0x04a00000 Metadata Capture Streaming Extended Pix Format Media Driver Info: Driver name : mtk-cam-p1 Model : mtk-cam-p1 Serial : Bus info : platform:1a000000.camisp Media version : 4.19.89 Hardware revision: 0x00000000 (0) Driver version : 4.19.89 Interface Info: ID : 0x03000028 Type : V4L Video Entity Info: ID : 0x00000026 (38) Name : mtk-cam-p1 partial meta 1 Function : V4L2 I/O Pad 0x01000027 : 0: Sink Link 0x0200002a: from remote pad 0x1000006 of entity 'mtk-cam-p1': Data Required ioctls: test MC information (see 'Media Driver Info' above): OK test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second /dev/video6 open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK (Not Supported) Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: fail: v4l2-test-buffers.cpp(370): timestamp != V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC && timestamp != V4L2_BUF_FLAG_TIMESTAMP_COPY fail: v4l2-test-buffers.cpp(486): buf.check(Unqueued, i) fail: v4l2-test-buffers.cpp(615): testQueryBuf(node, i, q.g_buffers()) test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL fail: v4l2-test-buffers.cpp(747): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing or malfunctioning. fail: v4l2-test-buffers.cpp(748): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing, probably due to earlier failing format tests. test VIDIOC_EXPBUF: OK (Not Supported) test Requests: OK Total for mtk-cam-p1 device /dev/video6: 45, Succeeded: 44, Failed: 1, Warnings: 0 -------------------------------------------------------------------------------- Compliance test for mtk-cam-p1 device /dev/video7: Driver Info: Driver name : mtk-cam-p1 Card type : mtk-cam-p1 Bus info : platform:1a000000.camisp Driver version : 4.19.89 Capabilities : 0x84a00000 Metadata Capture Streaming Extended Pix Format Device Capabilities Device Caps : 0x04a00000 Metadata Capture Streaming Extended Pix Format Media Driver Info: Driver name : mtk-cam-p1 Model : mtk-cam-p1 Serial : Bus info : platform:1a000000.camisp Media version : 4.19.89 Hardware revision: 0x00000000 (0) Driver version : 4.19.89 Interface Info: ID : 0x0300002e Type : V4L Video Entity Info: ID : 0x0000002c (44) Name : mtk-cam-p1 partial meta 2 Function : V4L2 I/O Pad 0x0100002d : 0: Sink Link 0x02000030: from remote pad 0x1000007 of entity 'mtk-cam-p1': Data Required ioctls: test MC information (see 'Media Driver Info' above): OK test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second /dev/video7 open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK (Not Supported) Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: fail: v4l2-test-buffers.cpp(370): timestamp != V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC && timestamp != V4L2_BUF_FLAG_TIMESTAMP_COPY fail: v4l2-test-buffers.cpp(486): buf.check(Unqueued, i) fail: v4l2-test-buffers.cpp(615): testQueryBuf(node, i, q.g_buffers()) test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL fail: v4l2-test-buffers.cpp(747): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing or malfunctioning. fail: v4l2-test-buffers.cpp(748): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing, probably due to earlier failing format tests. test VIDIOC_EXPBUF: OK (Not Supported) test Requests: OK Total for mtk-cam-p1 device /dev/video7: 45, Succeeded: 44, Failed: 1, Warnings: 0 -------------------------------------------------------------------------------- Compliance test for mtk-cam-p1 device /dev/video8: Driver Info: Driver name : mtk-cam-p1 Card type : mtk-cam-p1 Bus info : platform:1a000000.camisp Driver version : 4.19.89 Capabilities : 0x84a00000 Metadata Capture Streaming Extended Pix Format Device Capabilities Device Caps : 0x04a00000 Metadata Capture Streaming Extended Pix Format Media Driver Info: Driver name : mtk-cam-p1 Model : mtk-cam-p1 Serial : Bus info : platform:1a000000.camisp Media version : 4.19.89 Hardware revision: 0x00000000 (0) Driver version : 4.19.89 Interface Info: ID : 0x03000034 Type : V4L Video Entity Info: ID : 0x00000032 (50) Name : mtk-cam-p1 partial meta 3 Function : V4L2 I/O Pad 0x01000033 : 0: Sink Link 0x02000036: from remote pad 0x1000008 of entity 'mtk-cam-p1': Data Required ioctls: test MC information (see 'Media Driver Info' above): OK test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second /dev/video8 open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK (Not Supported) Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: fail: v4l2-test-buffers.cpp(370): timestamp != V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC && timestamp != V4L2_BUF_FLAG_TIMESTAMP_COPY fail: v4l2-test-buffers.cpp(486): buf.check(Unqueued, i) fail: v4l2-test-buffers.cpp(615): testQueryBuf(node, i, q.g_buffers()) test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL fail: v4l2-test-buffers.cpp(747): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing or malfunctioning. fail: v4l2-test-buffers.cpp(748): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing, probably due to earlier failing format tests. test VIDIOC_EXPBUF: OK (Not Supported) test Requests: OK Total for mtk-cam-p1 device /dev/video8: 45, Succeeded: 44, Failed: 1, Warnings: 0 -------------------------------------------------------------------------------- Compliance test for mtk-cam-p1 device /dev/v4l-subdev0: Media Driver Info: Driver name : mtk-cam-p1 Model : mtk-cam-p1 Serial : Bus info : platform:1a000000.camisp Media version : 4.19.89 Hardware revision: 0x00000000 (0) Driver version : 4.19.89 Interface Info: ID : 0x03000050 Type : V4L Sub-Device Entity Info: ID : 0x00000001 (1) Name : mtk-cam-p1 Function : Video Pixel Formatter Pad 0x01000002 : 0: Sink Link 0x02000012: from remote pad 0x100000f of entity 'mtk-cam-p1 meta input': Data Pad 0x01000003 : 1: Source Link 0x02000018: to remote pad 0x1000015 of entity 'mtk-cam-p1 main stream': Data, Enabled, Immutable Pad 0x01000004 : 2: Source Link 0x0200001e: to remote pad 0x100001b of entity 'mtk-cam-p1 packed out': Data Pad 0x01000005 : 3: Source Link 0x02000024: to remote pad 0x1000021 of entity 'mtk-cam-p1 partial meta 0': Data Pad 0x01000006 : 4: Source Link 0x0200002a: to remote pad 0x1000027 of entity 'mtk-cam-p1 partial meta 1': Data Pad 0x01000007 : 5: Source Link 0x02000030: to remote pad 0x100002d of entity 'mtk-cam-p1 partial meta 2': Data Pad 0x01000008 : 6: Source Link 0x02000036: to remote pad 0x1000033 of entity 'mtk-cam-p1 partial meta 3': Data Pad 0x01000009 : 7: Source Pad 0x0100000a : 8: Source Pad 0x0100000b : 9: Source Pad 0x0100000c : 10: Source Pad 0x0100000d : 11: Sink Link 0x0200004e: from remote pad 0x100003d of entity '1a040000.seninf': Data, Enabled, Immutable Required ioctls: test MC information (see 'Media Driver Info' above): OK Allow for multiple opens: test second /dev/v4l-subdev0 open: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Sub-Device ioctls (Sink Pad 0): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 1): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 2): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 3): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 4): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 5): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 6): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 7): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 8): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 9): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 10): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Sink Pad 11): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not Supported) test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK (Not Supported) test VIDIOC_TRY_FMT: OK (Not Supported) test VIDIOC_S_FMT: OK (Not Supported) test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK (Not Supported) Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK (Not Supported) test VIDIOC_EXPBUF: OK (Not Supported) test Requests: OK (Not Supported) Total for mtk-cam-p1 device /dev/v4l-subdev0: 125, Succeeded: 125, Failed: 0, Warnings: 0 -------------------------------------------------------------------------------- Compliance test for mtk-cam-p1 device /dev/v4l-subdev1: Media Driver Info: Driver name : mtk-cam-p1 Model : mtk-cam-p1 Serial : Bus info : platform:1a000000.camisp Media version : 4.19.89 Hardware revision: 0x00000000 (0) Driver version : 4.19.89 Interface Info: ID : 0x03000052 Type : V4L Sub-Device Entity Info: ID : 0x00000038 (56) Name : 1a040000.seninf Function : Video Interface Bridge Pad 0x01000039 : 0: Sink Link 0x02000047: from remote pad 0x1000046 of entity 'ov8856 2-0010': Data, Enabled Pad 0x0100003a : 1: Sink Link 0x0200004c: from remote pad 0x100004b of entity 'ov02a10 4-003d': Data Pad 0x0100003b : 2: Sink Pad 0x0100003c : 3: Sink Pad 0x0100003d : 4: Source Link 0x0200004e: to remote pad 0x100000d of entity 'mtk-cam-p1': Data, Enabled, Immutable Pad 0x0100003e : 5: Source Pad 0x0100003f : 6: Source Pad 0x01000040 : 7: Source Pad 0x01000041 : 8: Source Pad 0x01000042 : 9: Source Pad 0x01000043 : 10: Source Pad 0x01000044 : 11: Source Required ioctls: test MC information (see 'Media Driver Info' above): OK Allow for multiple opens: test second /dev/v4l-subdev1 open: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Sub-Device ioctls (Sink Pad 0): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Try VIDIOC_SUBDEV_G/S_FMT: OK test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Active VIDIOC_SUBDEV_G/S_FMT: OK test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Sink Pad 1): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Try VIDIOC_SUBDEV_G/S_FMT: OK test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Active VIDIOC_SUBDEV_G/S_FMT: OK test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Sink Pad 2): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Try VIDIOC_SUBDEV_G/S_FMT: OK test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Active VIDIOC_SUBDEV_G/S_FMT: OK test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Sink Pad 3): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Try VIDIOC_SUBDEV_G/S_FMT: OK test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Active VIDIOC_SUBDEV_G/S_FMT: OK test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 4): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Try VIDIOC_SUBDEV_G/S_FMT: OK test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Active VIDIOC_SUBDEV_G/S_FMT: OK test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 5): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Try VIDIOC_SUBDEV_G/S_FMT: OK test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Active VIDIOC_SUBDEV_G/S_FMT: OK test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 6): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Try VIDIOC_SUBDEV_G/S_FMT: OK test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Active VIDIOC_SUBDEV_G/S_FMT: OK test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 7): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Try VIDIOC_SUBDEV_G/S_FMT: OK test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Active VIDIOC_SUBDEV_G/S_FMT: OK test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 8): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Try VIDIOC_SUBDEV_G/S_FMT: OK test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Active VIDIOC_SUBDEV_G/S_FMT: OK test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 9): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Try VIDIOC_SUBDEV_G/S_FMT: OK test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Active VIDIOC_SUBDEV_G/S_FMT: OK test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 10): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Try VIDIOC_SUBDEV_G/S_FMT: OK test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Active VIDIOC_SUBDEV_G/S_FMT: OK test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Sub-Device ioctls (Source Pad 11): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Try VIDIOC_SUBDEV_G/S_FMT: OK test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Active VIDIOC_SUBDEV_G/S_FMT: OK test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK test VIDIOC_QUERYCTRL: OK test VIDIOC_G/S_CTRL: OK test VIDIOC_G/S/TRY_EXT_CTRLS: OK test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 2 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not Supported) test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK (Not Supported) test VIDIOC_TRY_FMT: OK (Not Supported) test VIDIOC_S_FMT: OK (Not Supported) test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK (Not Supported) Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK (Not Supported) test VIDIOC_EXPBUF: OK (Not Supported) test Requests: OK (Not Supported) Total for mtk-cam-p1 device /dev/v4l-subdev1: 125, Succeeded: 125, Failed: 0, Warnings: 0 -------------------------------------------------------------------------------- Compliance test for mtk-cam-p1 device /dev/v4l-subdev2: Media Driver Info: Driver name : mtk-cam-p1 Model : mtk-cam-p1 Serial : Bus info : platform:1a000000.camisp Media version : 4.19.89 Hardware revision: 0x00000000 (0) Driver version : 4.19.89 Interface Info: ID : 0x03000054 Type : V4L Sub-Device Entity Info: ID : 0x00000045 (69) Name : ov8856 2-0010 Function : Camera Sensor Pad 0x01000046 : 0: Source Link 0x02000047: to remote pad 0x1000039 of entity '1a040000.seninf': Data, Enabled Required ioctls: test MC information (see 'Media Driver Info' above): OK Allow for multiple opens: test second /dev/v4l-subdev2 open: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Sub-Device ioctls (Source Pad 0): fail: v4l2-test-subdevs.cpp(147): doioctl(node, VIDIOC_SUBDEV_ENUM_FRAME_SIZE, &fse) fail: v4l2-test-subdevs.cpp(248): ret && ret != ENOTTY test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: FAIL fail: v4l2-test-subdevs.cpp(313): fmt.code == 0 || fmt.code == ~0U fail: v4l2-test-subdevs.cpp(356): checkMBusFrameFmt(node, fmt.format) test Try VIDIOC_SUBDEV_G/S_FMT: FAIL test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) fail: v4l2-test-subdevs.cpp(147): doioctl(node, VIDIOC_SUBDEV_ENUM_FRAME_SIZE, &fse) fail: v4l2-test-subdevs.cpp(248): ret && ret != ENOTTY test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: FAIL test Active VIDIOC_SUBDEV_G/S_FMT: OK test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK test VIDIOC_QUERYCTRL: OK test VIDIOC_G/S_CTRL: OK test VIDIOC_G/S/TRY_EXT_CTRLS: OK fail: v4l2-test-controls.cpp(830): subscribe event for control 'User Controls' failed test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: FAIL test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 11 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not Supported) test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK (Not Supported) test VIDIOC_TRY_FMT: OK (Not Supported) test VIDIOC_S_FMT: OK (Not Supported) test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK (Not Supported) Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK (Not Supported) test VIDIOC_EXPBUF: OK (Not Supported) test Requests: OK (Not Supported) Total for mtk-cam-p1 device /dev/v4l-subdev2: 48, Succeeded: 44, Failed: 4, Warnings: 0 -------------------------------------------------------------------------------- Compliance test for mtk-cam-p1 device /dev/v4l-subdev3: Media Driver Info: Driver name : mtk-cam-p1 Model : mtk-cam-p1 Serial : Bus info : platform:1a000000.camisp Media version : 4.19.89 Hardware revision: 0x00000000 (0) Driver version : 4.19.89 Interface Info: ID : 0x03000056 Type : V4L Sub-Device Entity Info: ID : 0x00000049 (73) Name : dw9768 2-000c Function : Lens Controller Required ioctls: test MC information (see 'Media Driver Info' above): OK Allow for multiple opens: test second /dev/v4l-subdev3 open: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK test VIDIOC_QUERYCTRL: OK test VIDIOC_G/S_CTRL: OK test VIDIOC_G/S/TRY_EXT_CTRLS: OK fail: v4l2-test-controls.cpp(830): subscribe event for control 'Camera Controls' failed test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: FAIL test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 2 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not Supported) test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK (Not Supported) test VIDIOC_TRY_FMT: OK (Not Supported) test VIDIOC_S_FMT: OK (Not Supported) test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK (Not Supported) Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK (Not Supported) test VIDIOC_EXPBUF: OK (Not Supported) test Requests: OK (Not Supported) Total for mtk-cam-p1 device /dev/v4l-subdev3: 41, Succeeded: 40, Failed: 1, Warnings: 0 -------------------------------------------------------------------------------- Compliance test for mtk-cam-p1 device /dev/v4l-subdev4: Media Driver Info: Driver name : mtk-cam-p1 Model : mtk-cam-p1 Serial : Bus info : platform:1a000000.camisp Media version : 4.19.89 Hardware revision: 0x00000000 (0) Driver version : 4.19.89 Interface Info: ID : 0x03000058 Type : V4L Sub-Device Entity Info: ID : 0x0000004a (74) Name : ov02a10 4-003d Function : Camera Sensor Pad 0x0100004b : 0: Source Link 0x0200004c: to remote pad 0x100003a of entity '1a040000.seninf': Data Required ioctls: test MC information (see 'Media Driver Info' above): OK Allow for multiple opens: test second /dev/v4l-subdev4 open: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Sub-Device ioctls (Source Pad 0): test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Try VIDIOC_SUBDEV_G/S_FMT: OK test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK test Active VIDIOC_SUBDEV_G/S_FMT: OK test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK test VIDIOC_QUERYCTRL: OK fail: v4l2-test-controls.cpp(362): returned control value out of range fail: v4l2-test-controls.cpp(431): invalid control 009e0902 test VIDIOC_G/S_CTRL: FAIL fail: v4l2-test-controls.cpp(549): returned control value out of range fail: v4l2-test-controls.cpp(665): invalid control 009e0902 test VIDIOC_G/S/TRY_EXT_CTRLS: FAIL fail: v4l2-test-controls.cpp(830): subscribe event for control 'User Controls' failed test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: FAIL test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 10 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not Supported) test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK (Not Supported) test VIDIOC_TRY_FMT: OK (Not Supported) test VIDIOC_S_FMT: OK (Not Supported) test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK (Not Supported) Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK (Not Supported) test VIDIOC_EXPBUF: OK (Not Supported) test Requests: OK (Not Supported) Total for mtk-cam-p1 device /dev/v4l-subdev4: 48, Succeeded: 45, Failed: 3, Warnings: 0 Grand Total for mtk-cam-p1 device /dev/media2: 709, Succeeded: 694, Failed: 15, Warnings: 0 Jungo Lin (5): media: dt-bindings: mt8183: Added camera ISP Pass 1 dts: arm64: mt8183: Add ISP Pass 1 nodes media: videodev2.h: Add new boottime timestamp type media: platform: Add Mediatek ISP P1 image & meta formats media: platform: Add Mediatek ISP P1 V4L2 device driver .../bindings/media/mediatek,camisp.txt | 83 + Documentation/media/uapi/v4l/buffer.rst | 11 +- .../media/uapi/v4l/pixfmt-mtisp-sbggr10.rst | 65 + .../media/uapi/v4l/pixfmt-mtisp-sbggr10f.rst | 90 + .../media/uapi/v4l/pixfmt-mtisp-sbggr12.rst | 61 + .../media/uapi/v4l/pixfmt-mtisp-sbggr12f.rst | 110 + .../media/uapi/v4l/pixfmt-mtisp-sbggr14.rst | 73 + .../media/uapi/v4l/pixfmt-mtisp-sbggr14f.rst | 110 + .../media/uapi/v4l/pixfmt-mtisp-sbggr8.rst | 51 + .../media/uapi/v4l/pixfmt-mtisp-sbggr8f.rst | 78 + arch/arm64/boot/dts/mediatek/mt8183.dtsi | 38 + drivers/media/platform/Kconfig | 1 + drivers/media/platform/Makefile | 1 + drivers/media/platform/mtk-isp/Kconfig | 20 + .../media/platform/mtk-isp/isp_50/Makefile | 3 + .../platform/mtk-isp/isp_50/cam/Makefile | 6 + .../platform/mtk-isp/isp_50/cam/mtk_cam-hw.c | 636 +++++ .../platform/mtk-isp/isp_50/cam/mtk_cam-hw.h | 64 + .../platform/mtk-isp/isp_50/cam/mtk_cam-ipi.h | 222 ++ .../mtk-isp/isp_50/cam/mtk_cam-regs.h | 95 + .../platform/mtk-isp/isp_50/cam/mtk_cam.c | 2087 +++++++++++++++++ .../platform/mtk-isp/isp_50/cam/mtk_cam.h | 244 ++ drivers/media/v4l2-core/v4l2-ioctl.c | 37 + include/uapi/linux/videodev2.h | 41 + 24 files changed, 4226 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/media/mediatek,camisp.txt create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10.rst create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10f.rst create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12.rst create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12f.rst create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14.rst create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14f.rst create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8.rst create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8f.rst create mode 100644 drivers/media/platform/mtk-isp/Kconfig create mode 100644 drivers/media/platform/mtk-isp/isp_50/Makefile create mode 100644 drivers/media/platform/mtk-isp/isp_50/cam/Makefile create mode 100644 drivers/media/platform/mtk-isp/isp_50/cam/mtk_cam-hw.c create mode 100644 drivers/media/platform/mtk-isp/isp_50/cam/mtk_cam-hw.h create mode 100644 drivers/media/platform/mtk-isp/isp_50/cam/mtk_cam-ipi.h create mode 100644 drivers/media/platform/mtk-isp/isp_50/cam/mtk_cam-regs.h create mode 100644 drivers/media/platform/mtk-isp/isp_50/cam/mtk_cam.c create mode 100644 drivers/media/platform/mtk-isp/isp_50/cam/mtk_cam.h -- 2.18.0 _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek