From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (EUR05-DB8-obe.outbound.protection.outlook.com [40.107.20.71]) by mx.groups.io with SMTP id smtpd.web10.60742.1595869836955592072 for ; Mon, 27 Jul 2020 10:10:37 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=L/qDPPSH; spf=pass (domain: arm.com, ip: 40.107.20.71, mailfrom: pierre.gondois@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zzoYuqhyMTu2jpVJftIjiniGrr0TV7/22yKJ7tvIBbQ=; b=L/qDPPSHnW/MWN3OczYDyvsE7E8K4PURuYx6Gr8syNCkbvVgfNhYc2a/tTh2AUNdsONF1HvPTF/e0IQDOBfNnaul2s7okz5uQ/KJBMQ4YNuG3JXnjJnoNR7yn0DLBhpqK41mXELg83EagiGQh/clo/t6/mY4ReCz8iTa8ivAR/U= Received: from AM6P195CA0026.EURP195.PROD.OUTLOOK.COM (2603:10a6:209:81::39) by AM6PR08MB4440.eurprd08.prod.outlook.com (2603:10a6:20b:bc::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.26; Mon, 27 Jul 2020 17:10:34 +0000 Received: from AM5EUR03FT016.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:81:cafe::10) by AM6P195CA0026.outlook.office365.com (2603:10a6:209:81::39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.23 via Frontend Transport; Mon, 27 Jul 2020 17:10:34 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT016.mail.protection.outlook.com (10.152.16.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.10 via Frontend Transport; Mon, 27 Jul 2020 17:10:34 +0000 Received: ("Tessian outbound c83312565ef4:v62"); Mon, 27 Jul 2020 17:10:34 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 4a44093223750542 X-CR-MTA-TID: 64aa7808 Received: from a7bbb4cd0e56.3 by 64aa7808-outbound-1.mta.getcheckrecipient.com id F64D1843-B5EC-43D1-8AE0-D23E62BD78D5.1; Mon, 27 Jul 2020 17:10:28 +0000 Received: from EUR02-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id a7bbb4cd0e56.3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 27 Jul 2020 17:10:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Mu8X+aqukNq3ddBgWX5Y5GkrD53YYU80VByPhgeFgauesWvWxXF6lCI9dkdCSimNQ6idHMnFzYJ1FZ6BQZ26V+sxk3VG/wBW5uUwi6nT4+PxX6epxAvVLHBOl2Ciz0aZxmbuxu4hHkCnhO4CBktOf/gsBOy5bkBP8xUVvFMFtabasnn218Bvt6HvtAUuh1dSbsOjQZQlZy0OY8sR5bFL4Q9kxLdKhXB+vYBe1DCxGEAiRlr5bBTqSKr7WTVHE7d4eL3ba0otx528gYijuK/vmuPr05nTFZ34T54P51bkLsU6uYdSjIjphirqTuzkKsBRYOwbIA6TeUQrpMD1T24wig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zzoYuqhyMTu2jpVJftIjiniGrr0TV7/22yKJ7tvIBbQ=; b=CwzY9jGk/Tx2Srwh4fiOqfzCwgSOMR5b3vpwl4PaVaJbkC0sBG/vCSVznqZq4gfChFRTBNAAXRu+HtUzQhmGYe/ISMfaaLHmtkKj9EhTVdtCKV19vNd9BCZpgVVRdnvzDO+ov03XwiV15Z9y+x4vSrPOt1O0zSfHNTVh1HgOGsAm3wc+gIKIHUMH0/mJbTUWKgwax4JGoHTD9DNqHXiNmAqM1A/Uf+vvAQFV82lHRzbWNN62BNCuaHoN1psZc0prZpwcg2CUCzi+K4dSt7lXrYUmVKlO1EnwQLeJN6B4e1vG3VBjFQL3ENPbRFRtsKWSilePrQlT012KPHusZzHYnA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zzoYuqhyMTu2jpVJftIjiniGrr0TV7/22yKJ7tvIBbQ=; b=L/qDPPSHnW/MWN3OczYDyvsE7E8K4PURuYx6Gr8syNCkbvVgfNhYc2a/tTh2AUNdsONF1HvPTF/e0IQDOBfNnaul2s7okz5uQ/KJBMQ4YNuG3JXnjJnoNR7yn0DLBhpqK41mXELg83EagiGQh/clo/t6/mY4ReCz8iTa8ivAR/U= Received: from DB7PR08MB3113.eurprd08.prod.outlook.com (2603:10a6:5:20::21) by DB7PR08MB4618.eurprd08.prod.outlook.com (2603:10a6:10:78::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.24; Mon, 27 Jul 2020 17:10:26 +0000 Received: from DB7PR08MB3113.eurprd08.prod.outlook.com ([fe80::e11b:cdfd:f08f:efde]) by DB7PR08MB3113.eurprd08.prod.outlook.com ([fe80::e11b:cdfd:f08f:efde%6]) with mapi id 15.20.3216.033; Mon, 27 Jul 2020 17:10:25 +0000 From: "PierreGondois" To: "devel@edk2.groups.io" , "liming.gao@intel.com" , Leif Lindholm , Masahisa Kojima CC: Sami Mujawar , Tomas Pilar , "Feng, Bob C" , Ard Biesheuvel Subject: Re: [edk2-devel] [PATCH v5 4/5] BaseTools: Compile AML bytecode arrays into .obj file Thread-Topic: [edk2-devel] [PATCH v5 4/5] BaseTools: Compile AML bytecode arrays into .obj file Thread-Index: AQHWT7DRSvW9E3EdSUC4ooX+Tb5FuakbnJyAgAAGZoCAAC7vgA== Date: Mon, 27 Jul 2020 17:10:25 +0000 Message-ID: References: <20200701140604.5292-1-pierre.gondois@arm.com> <20200701140604.5292-5-pierre.gondois@arm.com> <20200727135825.GZ1337@vanye> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Authentication-Results-Original: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=arm.com; x-originating-ip: [217.140.99.251] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: d227b7d2-6ee0-44a3-fe9b-08d8324ff997 x-ms-traffictypediagnostic: DB7PR08MB4618:|AM6PR08MB4440: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:4125;OLM:6108; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 3lwslXVB/qP5MBu4c9lPTdEFWsLz1A4beh1FNW8hhNBfVgOktRqIHreqvzBDNMmAa7QoN149v0L8bfff/VasWU1a3SRIwOSE8/YuOXP045t3lygwPMzS7XhLmoi0OO78T1XGbMWpRpbE3oSRQ4x5X+nCGbRJIJHVgGRYXHhNZYMttEbRNhofF3lDOqlPcpCHRAS0ANyYEYtHCHAoxzMp8pfcuPgtAYD10/2w/AAu4HWr2mLCGj7WLWnB85WwOgoWkzH0D4z/BueccyTrhqG0AjpPka0t0YtOeR0HUbCvRX12THYR9jqLj5NtofkukLl1kLcav2YoaDCI7dPtVY4XZbrw/BbgfaApoUqlLVBIfcA8F6eT9ROBAaffNl/aKiXFAwpXALJTKPQ1BYdgUpNujF2X3H/DAH2uB2vKuJrtaanm1LIneSimfUHYDMRCzZc4fCkGGz/lA0P4CqYpcRtXQxWSwBnAP3u6JPu0i/78Jbk= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB7PR08MB3113.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(136003)(39860400002)(346002)(376002)(396003)(366004)(9686003)(6506007)(8936002)(53546011)(52536014)(110136005)(186003)(5660300002)(4326008)(26005)(316002)(478600001)(33656002)(54906003)(8676002)(76116006)(86362001)(66446008)(64756008)(66556008)(2906002)(66476007)(30864003)(83380400001)(7696005)(966005)(55016002)(66946007)(71200400001)(142923001)(21314003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: BSwp9RkpRNaW8BQOIdIK0pp0tSJar9KaRxGNNH91eb/+LCgaO+eYs5JA6FEVir/YlKHGPTFEjJD4aYkVNRgEvKaUoU+Ze3rcoAdBzWkvZCqy8qP57nYvRlF3MsZGW14envMxfQTWwa+s2CHgWDUEKrWfSC4+DF2WvCcfafPaPUr0J5NgmQLKF3COWrmvWUSCJhd3XNUP0U4dobd0irUpCPiw9xe8aWYaC2xqz3DTZWfGmBS40j0htkR3D5t8FIRLdqUy141TpIGFuRW/sRAEjvRSc8ftspzRLo45FVPss0xxcjkhs/qEg5BS2KqIALBC/cG07XWrqznlOeOHaTrPNcE+E/B5i96KF3IUt1oKhZJAA7q3Y+XpYuE1KWZFsE+JxVR2b8mdkNSkMs9cSpxLHv0zAcAwFFOXeS3bfL6C+nsd/Ze5WE5+8LF2OprFgjUD+ol4lSUdsF9MdadBVxACqE6E8WOMHGjDt+dR6Jm9he/wWmHX0k3315JlYeMTn1f3 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB4618 Original-Authentication-Results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=arm.com; Return-Path: Pierre.Gondois@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT016.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 87831ae2-c29a-4a10-07e8-08d8324ff490 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6lRVNEjlMpkzhP+gqIXE4iKYXFE8zO95eVs9dXpNy4XrnN6jFgKtXN6dh/jDNHnXU/erhv280MDMPGBbkEmpPt/UiaOAuN4hqLcYgOTWyCImKJQs7NTpW1P+VF3RuPeQ6t6tPwg7vgqBJTXuVLcsv/J0aEPVFSoc+Hx4FnChRib0beJ+5vSxPeefXOaSBb5UKjJIAgGgdPWudEB1F6G8ZXnx3JRjeujI3EUmSkIHkmdxFk5GJRQWJhsXcs1MERH7zlb6yrn2FkN8f3qvJmGdpm+VCJBWQ1l8/6IFOcRRoqix0A3Ne5aZA3DwMUE1UcvkHLFVgem4yeo3wVU8cX8tAnsjX1zbKeaxvnDYU/ah4PNJ33O7Iol7dlRO9nUJb2yQwu+iwVJS/dP6vMkdxSCYIyuMJ0usEbFBLI6sxXAmJBIV/re0M1Mnq3zKqVOZpu/MsOgV+3qoK34x4ahveRtiEhNvmaoT/+eK06o6AOKDEzxhEOWlvyV6qOq2uFyz3bGdMibD24nepGnFvsaKK3vaGA== X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFTY:;SFS:(4636009)(346002)(396003)(136003)(39860400002)(376002)(46966005)(966005)(26005)(70206006)(8676002)(5660300002)(9686003)(70586007)(186003)(7696005)(53546011)(52536014)(86362001)(478600001)(6506007)(55016002)(8936002)(83380400001)(47076004)(336012)(36906005)(33656002)(82740400003)(4326008)(356005)(316002)(2906002)(110136005)(81166007)(82310400002)(30864003)(54906003)(142923001)(21314003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jul 2020 17:10:34.3438 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d227b7d2-6ee0-44a3-fe9b-08d8324ff997 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT016.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4440 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGVsbG8sDQoNCkxpbWluZzoNCkkgZGlkbid0IGZpbmQgYW55dGhpbmcgcHJldmVudGluZyBmcm9t IGhhdmluZyBhIC52ZnIgYW5kIC5jIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lIGluIHRoZSBzYW1l IHNjb3BlLg0KDQpFdmVyeWJvZHk6DQpUaGUgLmMgZmlsZXMgZ2VuZXJhdGVkIChmcm9tIGVpdGhl ciAudmZyIG9yIC5hc2wpIGFyZSBnZW5lcmF0ZWQgaW4gdGhlIEJ1aWxkLy4uLi4vT1VUUFVULyBk aXJlY3RvcnksIHdpdGggdGhlaXIgb3JpZ2luYWwgc3ViZGlyZWN0b3J5IHN0cmlwcGVkLiBJbiB0 aGUgZXhhbXBsZSBiZWxvdywgdGhlIC5jLCAudmZyIGFuZCAuYXNsIGZpbGVzIGhhdmUgYmVlbiBw bGFjZWQgaW4gc3ViZGlyZWN0b3JpZXMgaW4gZWRrMi9lZGsyLXBsYXRmb3Jtcy4gVGhlIHJlY2lw ZXMgdGhhdCBoYXZlIGJlZW4gZ2VuZXJhdGVkIGFyZToNCiQoT1VUUFVUX0RJUikvRW1tYy5vYmog OiAkKE9VVFBVVF9ESVIpL0FzbERpci9FbW1jLmMgKGZyb20gRW1tYy5hc2wpDQokKE9VVFBVVF9E SVIpL0lwNENvbmZpZzIub2JqIDogJChERUJVR19ESVIpL1ZmckRpci9JcDRDb25maWcyLmMgKGZy b20gSXA0Q29uZmlnMi52ZnIpDQokKE9VVFBVVF9ESVIpL0NEaXIvRW1tYy5vYmogOiAkKFdPUktT UEFDRSkvZWRrMi1wbGF0Zm9ybXMvU2lsaWNvbi9Tb2Npb25leHQvU3luUXVhY2VyL0RyaXZlcnMv UGxhdGZvcm1EeGUvQ0Rpci9FbW1jLmMgKGZyb20gRW1tYy5jKQ0KDQpUaGUgb25seSBzdWJkaXJl Y3RvcnkgdGhhdCByZW1haW5zIGlzIHRoZSBvbmUgZnJvbSB0aGUgLmMgZmlsZXMuIEluZGVlZCwg dGhlIGJ1aWxkIHN5c3RlbSBtaWdodCBkZXRlY3RzIHN1YmRpcmVjdG9yaWVzIGZyb20gdGhlIC5p bmYgZmlsZSBsb2NhdGlvbi4gQXMgdGhlIC5jIGZpbGUgaXMgZ2VuZXJhdGVkIGluIHRoZSBPVVRQ VVQgZGlyZWN0b3J5IHdoZXJlIHRoZXJlIGlzIG5vIC5pbmYgZmlsZSwgaXQgZ2V0cyBzdHJpcHBl ZC4NClRoaXMgbWVhbnMgdGhhdCBpZiBhIHN1YmRpcmVjdG9yeSBpcyBjcmVhdGVkLCBpdCBpcyBm b3IgdGhlIC5jIGZpbGUsIGJ1dCBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCBtb2RpZnkgdGhpcy4N Cg0KQWRkaW5nIGEgcHJlL3Bvc3RmaXggdG8gdGhlIGdlbmVyYXRlZCAuYyBmaWxlbmFtZSBzZWVt cyBhIGJldHRlciBhcHByb2FjaCB0byBtZS4gSXQgd291bGQgcmVxdWlyZSBtb2RpZnlpbmcgYnVp bGRfcnVsZS50ZW1wbGF0ZSwgYW5kIGNob29zZSB3aGljaCBwcmUvcG9zdGZpeCB0byBhZGQuDQoN CkFub3RoZXIgcG9pbnQgaXMgdGhhdCB0aGUgLmMgZmlsZSBnZW5lcmF0ZWQgZnJvbSB0aGUgLmMg ZmlsZSBpcyBwbGFjZWQgaW4gdGhlICQoREVCVUdfRElSKSwgd2hlbiB0aGUgb25lIGNvbWluZyBm cm9tIHRoZSAuYXNsIGZpbGUgaXMgcGxhY2VkIGluICQoT1VUUFVUX0RJUikuIE1heWJlIGl0IHNo b3VsZCBiZSBtb2RpZmllZCB0byAkKERFQlVHX0RJUikgYXN3ZWxsLg0KDQpSZWdhcmRzLA0KUGll cnJlDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBkZXZlbEBlZGsyLmdyb3Vw cy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBMaW1pbmcgR2FvIHZpYSBn cm91cHMuaW8NClNlbnQ6IE1vbmRheSwgSnVseSAyNywgMjAyMCAzOjIxIFBNDQpUbzogTGVpZiBM aW5kaG9sbSA8bGVpZkBudXZpYWluYy5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgUGllcnJl IEdvbmRvaXMgPFBpZXJyZS5Hb25kb2lzQGFybS5jb20+OyBNYXNhaGlzYSBLb2ppbWEgPG1hc2Fo aXNhLmtvamltYUBsaW5hcm8ub3JnPg0KQ2M6IFNhbWkgTXVqYXdhciA8U2FtaS5NdWphd2FyQGFy bS5jb20+OyBUb21hcyBQaWxhciA8VG9tYXMuUGlsYXJAYXJtLmNvbT47IEZlbmcsIEJvYiBDIDxi b2IuYy5mZW5nQGludGVsLmNvbT47IEFyZCBCaWVzaGV1dmVsIDxBcmQuQmllc2hldXZlbEBhcm0u Y29tPg0KU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjUgNC81XSBCYXNlVG9vbHM6 IENvbXBpbGUgQU1MIGJ5dGVjb2RlIGFycmF5cyBpbnRvIC5vYmogZmlsZQ0KDQpMZWlmOg0KICBW RlIgZmlsZSBoYXMgdGhlIHNpbWlsYXIgY2FzZS4gVkZSIGlzIGNvbnZlcnRlZCB0byB4eHguYywg dGhlbiBjb21waWxlIGl0IHRvIG9iaiBmaWxlLg0KDQpCb2I6DQogIEhhcyBCYXNlVG9vbHMgc3Vj aCBkZXRlY3Rpb24gaWYgVkZSIGFuZCBDIHNvdXJjZSBmaWxlIGhhdmUgdGhlIHNhbWUgZmlsZSBu YW1lPw0KDQpUaGFua3MNCkxpbWluZw0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBG cm9tOiBMZWlmIExpbmRob2xtIDxsZWlmQG51dmlhaW5jLmNvbT4NCj4gU2VudDogTW9uZGF5LCBK dWx5IDI3LCAyMDIwIDk6NTggUE0NCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBwaWVycmUu Z29uZG9pc0Bhcm0uY29tOyBNYXNhaGlzYSBLb2ppbWENCj4gPG1hc2FoaXNhLmtvamltYUBsaW5h cm8ub3JnPg0KPiBDYzogc2FtaS5tdWphd2FyQGFybS5jb207IHRvbWFzLnBpbGFyQGFybS5jb207 IEZlbmcsIEJvYiBDDQo+IDxib2IuYy5mZW5nQGludGVsLmNvbT47IEdhbywgTGltaW5nIDxsaW1p bmcuZ2FvQGludGVsLmNvbT47IEFyZA0KPiBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBhcm0u Y29tPg0KPiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCB2NSA0LzVdIEJhc2VUb29s czogQ29tcGlsZSBBTUwNCj4gYnl0ZWNvZGUgYXJyYXlzIGludG8gLm9iaiBmaWxlDQo+DQo+IEhp IFBpZXJyZSwgKCtNYXNhaGlzYSkNCj4NCj4gVGhpcyBjb21taXQgKDBhNGFhMjBlOGQ0NCkgbWFk ZSBmb3IgYW4gZXhjaXRpbmcgc3RhcnQgdG8gbXkgd2Vlay4NCj4NCj4gU29jaW9uZXh0J3MgRGV2 ZWxvcGVyYm94IGZhaWxlZCB0byBidWlsZCBmb3IgbWUsIHdpdGggdGhlIHNwZWN0YWN1bGFyDQo+ IGVycm9yIG1lc3NhZ2U6DQo+DQo+IC91c3IvbGliL2djYy1jcm9zcy9hYXJjaDY0LWxpbnV4LWdu dS84Ly4uLy4uLy4uLy4uL2FhcmNoNjQtbGludXgtZ251L2Jpbi9sZDoNCj4gRFdBUkYgZXJyb3I6 IGNvdWxkIG5vdCBmaW5kIGFiYnJldiBudW1iZXIgNTkxMg0KPiAvdG1wL2NjS3Q0Z2FNLmx0cmFu czAubHRyYW5zLm86IGluIGZ1bmN0aW9uIGBSZWdpc3RlckRldmljZXMnOg0KPiA8YXJ0aWZpY2lh bD46KC50ZXh0LlJlZ2lzdGVyRGV2aWNlcysweGIwKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0bw0K PiBgUmVnaXN0ZXJFbW1jJw0KPg0KPiBHQ0M0OSAod2l0aG91dCBsdG8pIGFuZCBDTEFORzM4IHBy b2ZpbGVzIGdpdmUgbXVjaCB0aGUgc2FtZSByZXN1bHQsDQo+IHdpdGggc2xpZ2h0bHkgbGVzcyBl c290ZXJpYyBtZXNzYWdlcy4NCj4NCj4gVGhlIHJlYXNvbiBmb3IgdGhpcyB0dXJuZWQgb3V0IHRv IGJlIHRoYXQgZWRrMi1wbGF0Zm9ybXMNCj4gU2lsaWNvbi9Tb2Npb25leHQvU3luUXVhY2VyL0Ry aXZlcnMvUGxhdGZvcm1EeGUvIGhhcyBib3RoIGFuIEVtbWMuYXNsDQo+IGFuZCBhbiBFbW1jLmMg ZmlsZSwgd2hpY2ggYWZ0ZXIgdGhpcyBwYXRjaCBib3RoIGdlbmVyYXRlIGFuIEVtbWMub2JqDQo+ IGluIHRoZSBzYW1lIG91dHB1dCBkaXJlY3RvcnkuDQo+DQo+IEkgdGhpbmsgdGhlIGNvcnJlY3Qg Y291cnNlIG9mIGFjdGlvbiBpcyB0byBmaXggdGhpcyBpbiB0aGUgU3luUXVhY2VyDQo+IGRyaXZl ciwgYnV0IEkgYW0gcmVwb3J0aW5nIGl0IGhlcmUgc28gd2UgZ2V0IGl0IGxvZ2dlZCBpbiB0aGUg bGlzdA0KPiBhcmNoaXZlcy4NCj4NCj4gSXQgd291bGQgb2YgY291cnNlIGJlIGdvb2QgaWYgdGhl IGJ1aWxkIHN5c3RlbSBjb3VsZCBkZXRlY3QgYW5kIHdhcm4NCj4gb3ZlciBjYXNlcyBsaWtlIHRo aXMsIHJhdGhlciB0aGFuIHNpbGVudGx5IG92ZXJ3cml0aW5nIGV4aXN0aW5nIG9iamVjdA0KPiBm aWxlcy4NCj4NCj4gTWFzYWhpc2EgLSBzaW5jZSBBcmQgaXMgc3RpbGwgb24gaG9saWRheSwgY291 bGQgeW91IGNyZWF0ZSBhIHBhdGNoIGFuZA0KPiBzZW5kIG91dCBmb3IgbWUgdG8gcmV2aWV3PyBF aXRoZXIgb25lIG9mIHRoZSBmaWxlcyBuZWVkcyB0byBiZQ0KPiByZW5hbWVkLCBvciB3ZSBuZWVk IHRvIG1vdmUgdGhlIC5hc2wgZmlsZXMgKEVtbWMuYXNsIGFuZCBPcHRlZS5hc2wpDQo+IGludG8g YSBzdWJkaXJlY3RvcnkuDQo+DQo+IEJlc3QgUmVnYXJkcywNCj4NCj4gTGVpZg0KPg0KPiBPbiBX ZWQsIEp1bCAwMSwgMjAyMCBhdCAxNTowNjowMyArMDEwMCwgUGllcnJlR29uZG9pcyB3cm90ZToN Cj4gPiBGcm9tOiBQaWVycmUgR29uZG9pcyA8cGllcnJlLmdvbmRvaXNAYXJtLmNvbT4NCj4gPg0K PiA+IFRoZSBBbWxUb0hleCBzY3JpcHQgYW5kIFBvc2l4L1dpbmRvd3NMaWtlIHdyYXBwZXJzIGNv bnZlcnQgYW4gQU1MDQo+ID4gZmlsZSB0byBhIC5oZXggZmlsZSwgY29udGFpbmluZyBhIEMgYXJy YXkgc3RvcmluZyBBTUwgYnl0ZWNvZGUuIFRoaXMNCj4gPiAiLmhleCIgZmlsZSBjYW4gdGhlbiBi ZSBpbmNsdWRlZCBpbiBhIEMgZmlsZSwgYWxsb3dpbmcgdG8gYWNjZXNzIHRoZQ0KPiA+IEFNTCBi eXRlY29kZSBmcm9tIHRoaXMgQyBmaWxlLg0KPiA+DQo+ID4gVGhlIEVESzIgYnVpbGQgc3lzdGVt IGRvZXNuJ3QgYWxsb3cgdG8gYSBkZXBpY3QgZGVwZW5kZW5jeSBvcmRlcnMNCj4gPiBiZXR3ZWVu IGZpbGVzIG9mIGRpZmZlcmVudCBsYW5ndWFnZXMuIEZvciBpbnN0YW5jZSwgaW4gYSBtb2R1bGUN Cj4gPiBjb250YWluaW5nIGEgIi5jIiBmaWxlIGFuZCBhICIuYXNsIiwgdGhlICIuYyINCj4gPiBm aWxlIG1heSBvciBtYXkgbm90IGJlIGJ1aWx0IHByaW9yIHRvIHRoZSAiLmFzbCIgZmlsZS4NCj4g PiBUaGlzIHByZXZlbnRzIGFueSBpbmNsdXNpb24gb2YgYSBnZW5lcmF0ZWQgIi5oZXgiIGluIGEg Ii5jIiBmaWxlDQo+ID4gc2luY2UgdGhpcyBsYXRlciAiLmhleCIgZmlsZSBtYXkgb3IgbWF5IG5v dCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQuDQo+ID4NCj4gPiBUaGlzIHBhdGNoIG1vZGlmaWVzIHRo ZSBBbWxUb0Mgc2NyaXB0IHRvIGdlbmVyYXRlIGEgQyBmaWxlIGluc3RlYWQNCj4gPiBvZiBhICIu aGV4IiBmaWxlLg0KPiA+IEl0IGFsc28gYWRkcyB0aGUgZ2VuZXJhdGlvbiBvZiBhbiBpbnRlcm1l ZGlhdGUgIi5hbWxpIiBmaWxlIHdoZW4NCj4gPiBjb21waWxpbmcgYW4gQVNMIGZpbGUsIGFuZCBh ZGRzIGEgcnVsZSB0byBjb252ZXJ0IHRoaXMgIi5hbWxpIiB0byBhDQo+ID4gQyBmaWxlLg0KPiA+ DQo+ID4gVGhpcyBhbGxvd3MgdG8gZ2VuZXJhdGUgYSBDIGZpbGUgY29udGFpbmluZyB0aGUgQU1M IGJ5dGVjb2RlIGZyb20gYW4NCj4gPiBBU0wgZmlsZS4gVGhpcyBDIGZpbGUgd2lsbCB0aGVuIGJl IGhhbmRsZWQgYnkgdGhlIEVESzIgYnVpbGQgc3lzdGVtDQo+ID4gdG8gZ2VuZXJhdGUgYW4gb2Jq ZWN0IGZpbGUuDQo+ID4gVGh1cywgbm8gZmlsZSBpbmNsdXNpb24gd2lsbCBiZSByZXF1aXJlZCBh bnltb3JlLiBUaGUgQyBmaWxlDQo+ID4gcmVxdWlyaW5nIHRoZSBBTUwgYnl0ZWNvZGUgYXMgYSBD IGFycmF5LCBhbmQgdGhlIEFTTCBmaWxlLCB3aWxsIGJlDQo+ID4gY29tcGlsZWQgaW5kZXBlbmRl bnRseS4gVGhlIEMgYXJyYXkgbXVzdCBiZSBkZWZpbmVkIGFzIGFuIGV4dGVybmFsDQo+ID4gc3lt Ym9sLiBUaGUgbGlua2VyIGlzIHJlc29sdmluZyB0aGUgcmVmZXJlbmNlIHRvIHRoZSBDIGFycmF5 IHN5bWJvbC4NCj4gPg0KPiA+IFRvIHN1bW1hcml6ZSwgdGhlIGZsb3cgZ29lcyBhczoNCj4gPiAg LTEuIEFTTCBmaWxlIGlzIGNvbXBpbGVkIHRvIEFNTDsNCj4gPiAgLTIuIEFNTCBmaWxlIGlzIGNv cGllZCB0byBhICIuYW1saSIgaW50ZXJtZWRpYXRlIGZpbGU7ICAtMy4gRURLMg0KPiA+IGJ1aWxk IHN5c3RlbSBhcHBsaWVzIHRoZSBydWxlIHJlbGV2YW50IHRvICIuYW1saSINCj4gPiAgICAgIGZp bGVzLiBUaGlzIGlzLCBjYWxsaW5nIHRoZSAiQW1sVG9DIiBzY3JpcHQsIGdlbmVyYXRpbmcNCj4g PiAgICAgIGEgQyBmaWxlIGZyb20gdGhlICIuYW1saSIgZmlsZTsgIC00LiBFREsyIGJ1aWxkIHN5 c3RlbSBhcHBsaWVzDQo+ID4gdGhlIHJ1bGUgcmVsZXZhbnQgdG8gQyBmaWxlcy4NCj4gPiAgICAg IFRoaXMgaXMgY3JlYXRpbmcgYW4gb2JqZWN0IGZpbGUuDQo+ID4gIC01LiBFREsyIGJ1aWxkIHN5 c3RlbSBsaW5rcyB0aGUgb2JqZWN0IGZpbGUgY29udGFpbmluZyB0aGUNCj4gPiAgICAgIEFNTCBi eXRlY29kZSB3aXRoIHRoZSBvYmplY3QgZmlsZSByZXF1aXJpbmcgaXQuDQo+ID4NCj4gPiBTaWdu ZWQtb2ZmLWJ5OiBQaWVycmUgR29uZG9pcyA8UGllcnJlLkdvbmRvaXNAYXJtLmNvbT4NCj4gPiBT dWdnZXN0ZWQtYnk6IFRvbWFzIFBpbGFyIDxUb21hcy5QaWxhckBhcm0uY29tPg0KPiA+IC0tLQ0K PiA+DQo+ID4gVGhlIGNoYW5nZXMgY2FuIGJlIHNlZW4gYXQ6DQo+ID4gaHR0cHM6Ly9naXRodWIu Y29tL1BpZXJyZUFSTS9lZGsyL2NvbW1pdHMvODAzX0NvbXBpbGVfQU1MX2J5dGVjb2RlX2ENCj4g PiBycmF5X2ludG9fT0JKX2ZpbGVfdjUNCj4gPg0KPiA+IE5vdGVzOg0KPiA+ICAgICB2MToNCj4g PiAgICAgIC0gQWRkIGEgbmV3IHJ1bGUgdG8gdGhlIGJ1aWxkX3J1bGUudGVtcGxhdGUgZmlsZSB0 bw0KPiA+ICAgICAgICBnZW5lcmF0ZSAiLm9iaiIgZmlsZXMgZnJvbSAuYXNsIGZpbGVzLCBhbmQg bW9kaWZ5DQo+ID4gICAgICAgIHRoZSBBbWxUb0Mgc2NyaXB0IGFjY29yZGluZ2x5LiBbUGllcnJl XQ0KPiA+ICAgICB2MjoNCj4gPiAgICAgIC0gUmVzdHJpY3QgdGhlIHJ1bGUgdG8gRFhFX0RSSVZF Ui4gVGhpcyBhbGxvd3MgdG8gYnVpbGQNCj4gPiAgICAgICAgdGhlIE92bWZQa2csIHdoaWNoIHdh cyBub3QgdGhlIGNhc2UgaW4gdjEuIFtQaWVycmVdDQo+ID4gICAgIHYzOg0KPiA+ICAgICAgLSBD aGFuZ2VkICJTaWduZWQtb2ZmLWJ5IiB0byAiU3VnZ2VzdGVkLWJ5Ii4gW0JvYl0NCj4gPiAgICAg djQ6DQo+ID4gICAgIC0gTm8gbW9kaWZpY2F0aW9uLiBSZS1zZW5kaW5nIHRoZSBwYXRjaCB3aXRo IGJhc2U2NA0KPiA+ICAgICAgIGVuY29kaW5nIHRvIGNvbnNlcnZlIHRoZSByaWdodCBsaW5lIGVu ZGluZ3MuIFtCb2JdDQo+ID4gICAgIHY1Og0KPiA+ICAgICAgLSBObyBtb2RpZmljYXRpb24uIFtQ aWVycmVdDQo+ID4NCj4gPiAgQmFzZVRvb2xzL0NvbmYvYnVpbGRfcnVsZS50ZW1wbGF0ZSAgICAg ICB8IDE1ICsrKy0NCj4gPiAgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQW1sVG9DL0FtbFRvQy5w eSB8IDgyICsrKysrKysrLS0tLS0tLS0tLS0tDQo+ID4gIDIgZmlsZXMgY2hhbmdlZCwgNDcgaW5z ZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvQmFzZVRv b2xzL0NvbmYvYnVpbGRfcnVsZS50ZW1wbGF0ZQ0KPiA+IGIvQmFzZVRvb2xzL0NvbmYvYnVpbGRf cnVsZS50ZW1wbGF0ZQ0KPiA+IGluZGV4DQo+ID4gMDgyMmI2ODFmY2Q5ZjYxYzY1MDhlNmY5M2Zm YzMxZmE3MGZkNzA1OS4uYzAzNDg2OTkxNTkxNDkzNmUyOGY2NGE2YWENCj4gPiBkYmEwOGUwMTY5 ZGE0NCAxMDA3NTUNCj4gPiAtLS0gYS9CYXNlVG9vbHMvQ29uZi9idWlsZF9ydWxlLnRlbXBsYXRl DQo+ID4gKysrIGIvQmFzZVRvb2xzL0NvbmYvYnVpbGRfcnVsZS50ZW1wbGF0ZQ0KPiA+IEBAIC00 MTksNiArNDE5LDcgQEANCj4gPg0KPiA+ICAgICAgPE91dHB1dEZpbGU+DQo+ID4gICAgICAgICAg JChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmFtbA0KPiA+ICsgICAgICAgICQo T1VUUFVUX0RJUikoKykke3NfZGlyfSgrKSR7c19iYXNlfS5hbWxpDQo+ID4NCj4gPiAgICAgIDxF eHRyYURlcGVuZGVuY3k+DQo+ID4gICAgICAgICAgJChNQUtFX0ZJTEUpDQo+ID4gQEAgLTQyOCwx NCArNDI5LDI0IEBADQo+ID4gICAgICAgICAgIiQoQVNMUFApIiAkKERFUFNfRkxBR1MpICQoQVNM UFBfRkxBR1MpICQoSU5DKSAvSSR7c19wYXRofQ0KPiA+ICQoT1VUUFVUX0RJUikoKykke3NfZGly fSgrKSR7c19iYXNlfS5pID4NCj4gJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9 LmlpaQ0KPiA+ICAgICAgICAgIFRyaW0gLS1zb3VyY2UtY29kZSAtbCAtbyAkKE9VVFBVVF9ESVIp KCspJHtzX2Rpcn0oKykke3NfYmFzZX0uaWlpaSAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykk e3NfYmFzZX0uaWlpDQo+ID4gICAgICAgICAgIiQoQVNMKSIgJChBU0xfRkxBR1MpICQoQVNMX09V VEZMQUdTKSR7ZHN0fSAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uaWlpaQ0K PiA+IC0gICAgICAgIC1BbWxUb0hleCAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFz ZX0uYW1sDQo+ID4gKyAgICAgICAgJChDUCkgJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtz X2Jhc2V9LmFtbA0KPiA+ICsgJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmFt bGkNCj4gPg0KPiA+ICAgICAgPENvbW1hbmQuR0NDPg0KPiA+ICAgICAgICAgIFRyaW0gLS1hc2wt ZmlsZSAtLWFzbC1kZXBzIC1vICQoT1VUUFVUX0RJUikoKykke3NfZGlyfSgrKSR7c19iYXNlfS5p IC1pICQoSU5DX0xJU1QpICR7c3JjfQ0KPiA+ICAgICAgICAgICIkKEFTTFBQKSIgJChERVBTX0ZM QUdTKSAkKEFTTFBQX0ZMQUdTKSAkKElOQykgLUkke3NfcGF0aH0NCj4gPiAkKE9VVFBVVF9ESVIp KCspJHtzX2Rpcn0oKykke3NfYmFzZX0uaSA+DQo+ICQoT1VUUFVUX0RJUikoKykke3NfZGlyfSgr KSR7c19iYXNlfS5paWkNCj4gPiAgICAgICAgICBUcmltIC0tc291cmNlLWNvZGUgLWwgLW8gJChP VVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmlpaWkgJChPVVRQVVRfRElSKSgrKSR7 c19kaXJ9KCspJHtzX2Jhc2V9LmlpaQ0KPiA+ICAgICAgICAgICIkKEFTTCkiICQoQVNMX0ZMQUdT KSAkKEFTTF9PVVRGTEFHUykke2RzdH0gJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jh c2V9LmlpaWkNCj4gPiAtICAgICAgICAtQW1sVG9IZXggJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9 KCspJHtzX2Jhc2V9LmFtbA0KPiA+ICsgICAgICAgICQoQ1ApICQoT1VUUFVUX0RJUikoKykke3Nf ZGlyfSgrKSR7c19iYXNlfS5hbWwNCj4gPiArICQoT1VUUFVUX0RJUikoKykke3NfZGlyfSgrKSR7 c19iYXNlfS5hbWxpDQo+ID4gKw0KPiA+ICtbQWNwaS1NYWNoaW5lLUxhbmd1YWdlLUZpbGUtdG8t Qy5EWEVfRFJJVkVSXQ0KPiA+ICsgICAgPElucHV0RmlsZT4NCj4gPiArICAgICAgICA/LmFtbGkN Cj4gPiArDQo+ID4gKyAgICA8T3V0cHV0RmlsZT4NCj4gPiArICAgICAgICAke3NfcGF0aH0oKykk e3NfYmFzZX0uYw0KPiA+ICsNCj4gPiArICAgIDxDb21tYW5kPg0KPiA+ICsgICAgICAgIC1BbWxU b0MgJHtzcmN9DQo+ID4NCj4gPiAgW0MtQ29kZS1GaWxlLkFjcGlUYWJsZV0NCj4gPiAgICAgIDxJ bnB1dEZpbGU+DQo+ID4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0FtbFRv Qy9BbWxUb0MucHkNCj4gPiBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0FtbFRvQy9BbWxUb0Mu cHkNCj4gPiBpbmRleA0KPiA+IDY0M2RiMjkxMGUzN2FjZmRkODBhYzE4ZDI4OGM5MjEzMjBhNzlj ZTEuLjM0NmRlNzE1OWRlNzAyZDg2MGJiZDgwOWRkDQo+ID4gYmU4MTc1ZjE0OTNjZmIgMTAwNjQ0 DQo+ID4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQW1sVG9DL0FtbFRvQy5weQ0KPiA+ ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0FtbFRvQy9BbWxUb0MucHkNCj4gPiBAQCAt MSw5ICsxLDkgQEANCj4gPiAgIyMgQGZpbGUNCj4gPiAgIw0KPiA+IC0jIENvbnZlcnQgYW4gQU1M IGZpbGUgdG8gYSAuaGV4IGZpbGUgY29udGFpbmluZyB0aGUgQU1MIGJ5dGVjb2RlDQo+ID4gc3Rv cmVkIGluIGENCj4gPiArIyBDb252ZXJ0IGFuIEFNTCBmaWxlIHRvIGEgLmMgZmlsZSBjb250YWlu aW5nIHRoZSBBTUwgYnl0ZWNvZGUNCj4gPiArc3RvcmVkIGluIGENCj4gPiAgIyBDIGFycmF5Lg0K PiA+IC0jIEJ5IGRlZmF1bHQsICJUYWJsZXNcRHNkdC5hbWwiIHdpbGwgZ2VuZXJhdGUgIlRhYmxl c1xEc2R0LmhleCIuDQo+ID4gLSMgIlRhYmxlc1xEc2R0LmhleCIgd2lsbCBjb250YWluIGEgQyBh cnJheSBuYW1lZCAiZHNkdF9hbWxfY29kZSINCj4gPiB0aGF0IGNvbnRhaW5zDQo+ID4gKyMgQnkg ZGVmYXVsdCwgIlRhYmxlc1xEc2R0LmFtbCIgd2lsbCBnZW5lcmF0ZSAiVGFibGVzXERzZHQuYyIu DQo+ID4gKyMgIlRhYmxlc1xEc2R0LmMiIHdpbGwgY29udGFpbiBhIEMgYXJyYXkgbmFtZWQgImRz ZHRfYW1sX2NvZGUiIHRoYXQNCj4gPiArY29udGFpbnMNCj4gPiAgIyB0aGUgQU1MIGJ5dGVjb2Rl Lg0KPiA+ICAjDQo+ID4gICMgQ29weXJpZ2h0IChjKSAyMDIwLCBBUk0gTGltaXRlZC4gQWxsIHJp Z2h0cyByZXNlcnZlZC48QlI+IEBADQo+ID4gLTE3LDMxICsxNywyNiBAQCBmcm9tIENvbW1vbi5C dWlsZFRvb2xFcnJvciBpbXBvcnQgKiAgaW1wb3J0IHN5cw0KPiA+IGltcG9ydCBvcw0KPiA+DQo+ ID4gK19fZGVzY3JpcHRpb25fXyA9ICIiIg0KPiA+ICtDb252ZXJ0IGFuIEFNTCBmaWxlIHRvIGEg LmMgZmlsZSBjb250YWluaW5nIHRoZSBBTUwgYnl0ZWNvZGUgc3RvcmVkDQo+ID4gK2luIGEgQyBh cnJheS4gQnkgZGVmYXVsdCwgVGFibGVzXERzZHQuYW1sIHdpbGwgZ2VuZXJhdGUgVGFibGVzXERz ZHQuYy4NCj4gPiArVGFibGVzXERzZHQuYyB3aWxsIGNvbnRhaW4gYSBDIGFycmF5IG5hbWVkICJk c2R0X2FtbF9jb2RlIiB0aGF0DQo+ID4gK2NvbnRhaW5zIHRoZSBBTUwgYnl0ZWNvZGUuDQo+ID4g KyIiIg0KPiA+ICsNCj4gPiAgIyMgUGFyc2UgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuDQo+ ID4gICMNCj4gPiAgIyBAcmV0dmFsIEEgYXJncGFyc2UuTmFtZVNwYWNlIGluc3RhbmNlLCBjb250 YWluaW5nIHBhcnNlZCB2YWx1ZXMuDQo+ID4gICMNCj4gPiAgZGVmIFBhcnNlQXJncygpOg0KPiA+ ICAgICAgIyBJbml0aWFsaXplIHRoZSBwYXJzZXIuDQo+ID4gLSAgICBQYXJzZXIgPSBhcmdwYXJz ZS5Bcmd1bWVudFBhcnNlcigNCj4gPiAtICAgICAgZGVzY3JpcHRpb249IkNvbnZlcnQgYW4gQU1M IGZpbGUgdG8gYSAuaGV4IGZpbGUgY29udGFpbmluZyB0aGUgQU1MICIgKyBcDQo+ID4gLSAgICAg ICAgICAgICAgICAgICJieXRlY29kZSBzdG9yZWQgaW4gYSBDIGFycmF5LiBCeSBkZWZhdWx0LCAi ICsgXA0KPiA+IC0gICAgICAgICAgICAgICAgICAiXCJUYWJsZXNcXERzZHQuYW1sXCIgd2lsbCBn ZW5lcmF0ZSIgKyBcDQo+ID4gLSAgICAgICAgICAgICAgICAgICJcIlRhYmxlc1xcRHNkdC5oZXhc Ii4gXCJUYWJsZXNcXERzZHQuaGV4XCIgd2lsbCAiICsgXA0KPiA+IC0gICAgICAgICAgICAgICAg ICAiY29udGFpbiBhIEMgYXJyYXkgbmFtZWQgXCJkc2R0X2FtbF9jb2RlXCIgdGhhdCAiICsgXA0K PiA+IC0gICAgICAgICAgICAgICAgICAiY29udGFpbnMgdGhlIEFNTCBieXRlY29kZS4iDQo+ID4g LSAgICAgICkNCj4gPiArICAgIFBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2Ny aXB0aW9uPV9fZGVzY3JpcHRpb25fXykNCj4gPg0KPiA+ICAgICAgIyBEZWZpbmUgdGhlIHBvc3Np YmxlIGFyZ3VtZW50cy4NCj4gPiAtICAgIFBhcnNlci5hZGRfYXJndW1lbnQoDQo+ID4gLSAgICAg IGRlc3Q9IklucHV0RmlsZSIsDQo+ID4gLSAgICAgIGhlbHA9IlBhdGggdG8gYW4gaW5wdXQgQU1M IGZpbGUgdG8gZ2VuZXJhdGUgYSAuaGV4IGZpbGUgZnJvbS4iDQo+ID4gLSAgICAgICkNCj4gPiAt ICAgIFBhcnNlci5hZGRfYXJndW1lbnQoDQo+ID4gLSAgICAgICItbyIsICItLW91dC1kaXIiLCBk ZXN0PSJPdXREaXIiLA0KPiA+IC0gICAgICBoZWxwPSJPdXRwdXQgZGlyZWN0b3J5IHdoZXJlIHRo ZSAuaGV4IGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQuICIgKyBcDQo+ID4gLSAgICAgICAgICAgIkRl ZmF1bHQgaXMgdGhlIGlucHV0IGZpbGUncyBkaXJlY3RvcnkuIg0KPiA+IC0gICAgICApDQo+ID4g KyAgICBQYXJzZXIuYWRkX2FyZ3VtZW50KGRlc3Q9IklucHV0RmlsZSIsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gYW4gaW5wdXQgQU1MIGZpbGUgdG8gZ2VuZXJh dGUgYSAuYyBmaWxlIGZyb20uIikNCj4gPiArICAgIFBhcnNlci5hZGRfYXJndW1lbnQoIi1vIiwg Ii0tb3V0LWRpciIsIGRlc3Q9Ik91dERpciIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IGhlbHA9Ik91dHB1dCBkaXJlY3Rvcnkgd2hlcmUgdGhlIC5jIGZpbGUNCj4gPiArIHdpbGwgYmUg Z2VuZXJhdGVkLiBEZWZhdWx0IGlzIHRoZSBpbnB1dCBmaWxlJ3MgZGlyZWN0b3J5LiIpDQo+ID4N Cj4gPiAgICAgICMgUGFyc2UgdGhlIGlucHV0IGFyZ3VtZW50cy4NCj4gPiAgICAgIEFyZ3MgPSBQ YXJzZXIucGFyc2VfYXJncygpDQo+ID4gQEAgLTU1LDkgKzUwLDcgQEAgZGVmIFBhcnNlQXJncygp Og0KPiA+ICAgICAgICAgIHdpdGggb3BlbihBcmdzLklucHV0RmlsZSwgInJiIikgYXMgZkluOg0K PiA+ICAgICAgICAgICAgICBTaWduYXR1cmUgPSBzdHIoZkluLnJlYWQoNCkpDQo+ID4gICAgICAg ICAgICAgIGlmICgiRFNEVCIgbm90IGluIFNpZ25hdHVyZSkgYW5kICgiU1NEVCIgbm90IGluIFNp Z25hdHVyZSk6DQo+ID4gLSAgICAgICAgICAgICAgICBFZGtMb2dnZXIuaW5mbygiSW52YWxpZCBm aWxlIHR5cGUuICIgKyBcDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZp bGUgZG9lcyBub3QgaGF2ZSBhIHZhbGlkICIgKyBcDQo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIkRTRFQgb3IgU1NEVCBzaWduYXR1cmU6ICVzIiAlIEFyZ3MuSW5wdXRGaWxl KQ0KPiA+ICsgICAgICAgICAgICAgICAgRWRrTG9nZ2VyLmluZm8oIkludmFsaWQgZmlsZSB0eXBl LiBGaWxlIGRvZXMgbm90DQo+ID4gKyBoYXZlIGEgdmFsaWQgRFNEVCBvciBTU0RUIHNpZ25hdHVy ZToge30iLmZvcm1hdChBcmdzLklucHV0RmlsZSkpDQo+ID4gICAgICAgICAgICAgICAgICByZXR1 cm4gTm9uZQ0KPiA+DQo+ID4gICAgICAjIEdldCB0aGUgYmFzZW5hbWUgb2YgdGhlIGlucHV0IGZp bGUuDQo+ID4gQEAgLTY2LDQyICs1OSwzOSBAQCBkZWYgUGFyc2VBcmdzKCk6DQo+ID4NCj4gPiAg ICAgICMgSWYgbm8gb3V0cHV0IGRpcmVjdG9yeSBpcyBzcGVjaWZpZWQsIG91dHB1dCB0byB0aGUg aW5wdXQgZGlyZWN0b3J5Lg0KPiA+ICAgICAgaWYgbm90IEFyZ3MuT3V0RGlyOg0KPiA+IC0gICAg ICAgIEFyZ3MuT3V0cHV0RmlsZSA9IG9zLnBhdGguam9pbigNCj4gPiAtICAgICAgICAgIG9zLnBh dGguZGlybmFtZShBcmdzLklucHV0RmlsZSksDQo+ID4gLSAgICAgICAgICBCYXNlTmFtZSArICIu aGV4Ig0KPiA+IC0gICAgICAgICAgKQ0KPiA+ICsgICAgICAgIEFyZ3MuT3V0cHV0RmlsZSA9IG9z LnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoQXJncy5JbnB1dEZpbGUpLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlTmFtZSArICIuYyIpDQo+ID4gICAg ICBlbHNlOg0KPiA+ICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhBcmdzLk91dERpcik6 DQo+ID4gICAgICAgICAgICAgIG9zLm1rZGlyKEFyZ3MuT3V0RGlyKQ0KPiA+IC0gICAgICAgIEFy Z3MuT3V0cHV0RmlsZSA9IG9zLnBhdGguam9pbihBcmdzLk91dERpciwgQmFzZU5hbWUgKyAiLmhl eCIpDQo+ID4gKyAgICAgICAgQXJncy5PdXRwdXRGaWxlID0gb3MucGF0aC5qb2luKEFyZ3MuT3V0 RGlyLCBCYXNlTmFtZSArDQo+ID4gKyAiLmMiKQ0KPiA+DQo+ID4gICAgICBBcmdzLkJhc2VOYW1l ID0gQmFzZU5hbWUNCj4gPg0KPiA+ICAgICAgcmV0dXJuIEFyZ3MNCj4gPg0KPiA+IC0jIyBDb252 ZXJ0IGFuIEFNTCBmaWxlIHRvIGEgLmhleCBmaWxlIGNvbnRhaW5pbmcgdGhlIEFNTCBieXRlY29k ZQ0KPiA+IHN0b3JlZA0KPiA+ICsjIyBDb252ZXJ0IGFuIEFNTCBmaWxlIHRvIGEgLmMgZmlsZSBj b250YWluaW5nIHRoZSBBTUwgYnl0ZWNvZGUNCj4gPiArc3RvcmVkDQo+ID4gICMgIGluIGEgQyBh cnJheS4NCj4gPiAgIw0KPiA+ICAjIEBwYXJhbSAgSW5wdXRGaWxlICAgICBQYXRoIHRvIHRoZSBp bnB1dCBBTUwgZmlsZS4NCj4gPiAtIyBAcGFyYW0gIE91dHB1dEZpbGUgICAgUGF0aCB0byB0aGUg b3V0cHV0IC5oZXggZmlsZSB0byBnZW5lcmF0ZS4NCj4gPiArIyBAcGFyYW0gIE91dHB1dEZpbGUg ICAgUGF0aCB0byB0aGUgb3V0cHV0IC5jIGZpbGUgdG8gZ2VuZXJhdGUuDQo+ID4gICMgQHBhcmFt ICBCYXNlTmFtZSAgICAgIEJhc2UgbmFtZSBvZiB0aGUgaW5wdXQgZmlsZS4NCj4gPiAtIyAgICAg ICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhbHNvIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQg LmhleCBmaWxlLg0KPiA+ICsjICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIGFsc28gdGhl IG5hbWUgb2YgdGhlIGdlbmVyYXRlZCAuYyBmaWxlLg0KPiA+ICAjDQo+ID4gLWRlZiBBbWxUb0hl eChJbnB1dEZpbGUsIE91dHB1dEZpbGUsIEJhc2VOYW1lKToNCj4gPiArZGVmIEFtbFRvQyhJbnB1 dEZpbGUsIE91dHB1dEZpbGUsIEJhc2VOYW1lKToNCj4gPg0KPiA+IC0gICAgTWFjcm9OYW1lID0g Il9fe31fSEVYX18iLmZvcm1hdChCYXNlTmFtZS51cHBlcigpKQ0KPiA+ICAgICAgQXJyYXlOYW1l ID0gQmFzZU5hbWUubG93ZXIoKSArICJfYW1sX2NvZGUiDQo+ID4gKyAgICBGaWxlSGVhZGVyID1c DQo+ID4gKyIiIg0KPiA+ICsvLyBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGZyb206DQo+ ID4gKy8vICAgLVB5dGhvbiBzY3JpcHQ6IHt9DQo+ID4gKy8vICAgLUlucHV0IEFNTCBmaWxlOiB7 fQ0KPiA+ICsNCj4gPiArIiIiDQo+ID4NCj4gPiAgICAgIHdpdGggb3BlbihJbnB1dEZpbGUsICJy YiIpIGFzIGZJbiwgb3BlbihPdXRwdXRGaWxlLCAidyIpIGFzIGZPdXQ6DQo+ID4gICAgICAgICAg IyBXcml0ZSBoZWFkZXIuDQo+ID4gLSAgICAgICAgZk91dC53cml0ZSgiLy8gVGhpcyBmaWxlIGhh cyBiZWVuIGdlbmVyYXRlZCBmcm9tOlxuIiArIFwNCj4gPiAtICAgICAgICAgICAgICAgICAgICIv LyBcdFB5dGhvbiBzY3JpcHQ6ICIgKyBcDQo+ID4gLSAgICAgICAgICAgICAgICAgICBvcy5wYXRo LmFic3BhdGgoX19maWxlX18pICsgIlxuIiArIFwNCj4gPiAtICAgICAgICAgICAgICAgICAgICIv LyBcdElucHV0IEFNTCBmaWxlOiAiICsgXA0KPiA+IC0gICAgICAgICAgICAgICAgICAgb3MucGF0 aC5hYnNwYXRoKElucHV0RmlsZSkgKyAiXG5cbiIgKyBcDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAiI2lmbmRlZiB7fVxuIi5mb3JtYXQoTWFjcm9OYW1lKSArIFwNCj4gPiAtICAgICAgICAgICAg ICAgICAgICIjZGVmaW5lIHt9XG5cbiIuZm9ybWF0KE1hY3JvTmFtZSkNCj4gPiAtICAgICAgICAg ICAgICAgICAgICkNCj4gPiArICAgICAgICBmT3V0LndyaXRlKEZpbGVIZWFkZXIuZm9ybWF0KG9z LnBhdGguYWJzcGF0aChJbnB1dEZpbGUpLA0KPiA+ICsgb3MucGF0aC5hYnNwYXRoKF9fZmlsZV9f KSkpDQo+ID4NCj4gPiAgICAgICAgICAjIFdyaXRlIHRoZSBhcnJheSBhbmQgaXRzIGNvbnRlbnQu DQo+ID4gICAgICAgICAgZk91dC53cml0ZSgidW5zaWduZWQgY2hhciB7fVtdID0ge3tcbiAgIi5m b3JtYXQoQXJyYXlOYW1lKSkNCj4gPiBAQCAtMTE1LDE1ICsxMDUsMTIgQEAgZGVmIEFtbFRvSGV4 KElucHV0RmlsZSwgT3V0cHV0RmlsZSwgQmFzZU5hbWUpOg0KPiA+ICAgICAgICAgICAgICBieXRl ID0gZkluLnJlYWQoMSkNCj4gPiAgICAgICAgICBmT3V0LndyaXRlKCJcbn07XG4iKQ0KPiA+DQo+ ID4gLSAgICAgICAgIyBXcml0ZSBmb290ZXIuDQo+ID4gLSAgICAgICAgZk91dC53cml0ZSgiI2Vu ZGlmIC8vIHt9XG4iLmZvcm1hdChNYWNyb05hbWUpKQ0KPiA+IC0NCj4gPiAgIyMgTWFpbiBtZXRo b2QNCj4gPiAgIw0KPiA+ICAjIFRoaXMgbWV0aG9kOg0KPiA+ICAjICAgMS0gIEluaXRpYWxpemUg YW4gRWRrTG9nZ2VyIGluc3RhbmNlLg0KPiA+ICAjICAgMi0gIFBhcnNlcyB0aGUgaW5wdXQgYXJn dW1lbnRzLg0KPiA+IC0jICAgMy0gIENvbnZlcnRzIGFuIEFNTCBmaWxlIHRvIGEgLmhleCBmaWxl IGNvbnRhaW5pbmcgdGhlIEFNTCBieXRlY29kZSBzdG9yZWQNCj4gPiArIyAgIDMtICBDb252ZXJ0 cyBhbiBBTUwgZmlsZSB0byBhIC5jIGZpbGUgY29udGFpbmluZyB0aGUgQU1MIGJ5dGVjb2RlIHN0 b3JlZA0KPiA+ICAjICAgICAgIGluIGEgQyBhcnJheS4NCj4gPiAgIw0KPiA+ICAjIEByZXR2YWwg MCAgICAgU3VjY2Vzcy4NCj4gPiBAQCAtMTM5LDEwICsxMjYsOSBAQCBkZWYgTWFpbigpOg0KPiA+ ICAgICAgICAgIGlmIG5vdCBDb21tYW5kQXJndW1lbnRzOg0KPiA+ICAgICAgICAgICAgICByZXR1 cm4gMQ0KPiA+DQo+ID4gLSAgICAgICAgIyBDb252ZXJ0IGFuIEFNTCBmaWxlIHRvIGEgLmhleCBm aWxlIGNvbnRhaW5pbmcgdGhlIEFNTCBieXRlY29kZSBzdG9yZWQNCj4gPiArICAgICAgICAjIENv bnZlcnQgYW4gQU1MIGZpbGUgdG8gYSAuYyBmaWxlIGNvbnRhaW5pbmcgdGhlIEFNTA0KPiA+ICsg Ynl0ZWNvZGUgc3RvcmVkDQo+ID4gICAgICAgICAgIyBpbiBhIEMgYXJyYXkuDQo+ID4gLSAgICAg ICAgQW1sVG9IZXgoQ29tbWFuZEFyZ3VtZW50cy5JbnB1dEZpbGUsIENvbW1hbmRBcmd1bWVudHMu T3V0cHV0RmlsZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kQXJndW1l bnRzLkJhc2VOYW1lKQ0KPiA+ICsgICAgICAgIEFtbFRvQyhDb21tYW5kQXJndW1lbnRzLklucHV0 RmlsZSwNCj4gPiArIENvbW1hbmRBcmd1bWVudHMuT3V0cHV0RmlsZSwgQ29tbWFuZEFyZ3VtZW50 cy5CYXNlTmFtZSkNCj4gPiAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToNCj4gPiAgICAgICAg ICBwcmludChlKQ0KPiA+ICAgICAgICAgIHJldHVybiAxDQo+ID4gLS0NCj4gPiAnR3VpZChDRTE2 NTY2OS0zRUYzLTQ5M0YtQjg1RC02MTkwRUU1Qjk3NTkpJw0KPiA+DQo+ID4NCg0KDQoNCklNUE9S VEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVu dHMgYXJlIGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFy ZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGlt bWVkaWF0ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueSBvdGhlciBw ZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9y bWF0aW9uIGluIGFueSBtZWRpdW0uIFRoYW5rIHlvdS4NCg==