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=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2640BC48BDF for ; Fri, 18 Jun 2021 11:00:50 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id AAB6D61154 for ; Fri, 18 Jun 2021 11:00:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AAB6D61154 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=citrix.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from list by lists.xenproject.org with outflank-mailman.144467.265898 (Exim 4.92) (envelope-from ) id 1luCEl-0006Sy-Ue; Fri, 18 Jun 2021 11:00:35 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 144467.265898; Fri, 18 Jun 2021 11:00:35 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1luCEl-0006Sr-RT; Fri, 18 Jun 2021 11:00:35 +0000 Received: by outflank-mailman (input) for mailman id 144467; Fri, 18 Jun 2021 11:00:35 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1luCEk-0006SP-SA for xen-devel@lists.xenproject.org; Fri, 18 Jun 2021 11:00:34 +0000 Received: from esa4.hc3370-68.iphmx.com (unknown [216.71.155.144]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id eb2faaf6-c53e-49e2-a182-86e7cfce0310; Fri, 18 Jun 2021 11:00:32 +0000 (UTC) X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: eb2faaf6-c53e-49e2-a182-86e7cfce0310 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1624014031; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=ZM3v6aLaujLwLWtmW4ZLVKHylAxGLWq1ExWf7EuGumQ=; b=Dfxav1s2uW/a7yc5TuSuqhdEKCFDRmZ09n4zSnHY5yYkadZRGoXKJKcB /UkZ+gHCmHqQdU0/xGZsPu1Q1PgmQl9zPNc3WIgO5FMeBPTUkTaGi+Ykz gNTZBKb2aXr2PD6wmPzOawYrc0iv20bqRxd3/xXqQjYizLOAqjZgatRBV 0=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: XTso1w3teEkxI48ofeUXr3TsFhScy2lpaqN8dGEBBIJV7vnGUNAQpfe+80Pzz/60NhvQXth13Q Gs/gUcDSCJVWUaRhb2by8VVXyeiXdN5lEJCBC8W7DDoSMEGTOBDiIP7y4gBwE6zzQZnTfxZS3d d5kKAQjjhSpTCwz+d6o4VtLjn8QS5bdgBYKJlg8WxAqtj50N7pNBcoK4gQkclhibqLXWV9c+6s Wo9Q5Fx2Lo6M283iF2yfnLmtBZtJOvkiCFFnD9WmhHWcnME8KUMrNzfteXkT4ioLaelbTv3pjR K8M= X-SBRS: 5.1 X-MesageID: 48035744 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:g0ccwKPOwfMcNcBcT3/155DYdb4zR+YMi2TDiHofdfUFSKClfp 6V8cjzjSWE9Qr4WBkb6LW90DHpewKcyXcH2/hsAV7EZninhILIFvAt0WKG+VPd8kLFh5dgPM tbAstD4ZjLfCJHZKXBkUqF+rQbsaG6GcmT7I+0pRYMcegpUdAa0+4QMHfHLqQcfngjOXNNLu v72iMxnUvGRZ14VLXYOlA1G8z44/HbnpPvZhALQzQ97hOVsD+u4LnmVzCFwxY3SVp0sPUf2F mAtza8yrSosvm9xBOZ/XTU9Y5qlNzozcYGLNCQi/ISNi7nhm+TFcFcsvy5zXQISdOUmRAXee r30k4d1gNImivsl1SO0FzQMs/boW0TAjHZuAWlaDDY0LPErXoBerR8bMRiA0fkAgMbzaFB+b MO0GSDu5VNCxTc2Cz7+tjTThlv0lG5uHw4jIco/jZiuRt3Us4hkWUzxjIcLH47JlOw1GnnKp gYMOjMoPJNNV+KZXHQuWdihNSqQ3QoBx+DBkwPoNac3TRalG1wixJw/r1Sol4QsJYmD5VU7e XNNapl0LlIU88NdKp4QOMMW9G+BGDBSQ/FdGiSPVPkHqcaPG+lke+73Fz03pDiRHUs9up8pH 3saiIsiYcCQTOZNSTV5uw4zvnkehTIYd3C8LAs26RE X-IronPort-AV: E=Sophos;i="5.83,283,1616472000"; d="scan'208";a="48035744" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OVRWuo6l2LahYYPbeZBogOIZlIvNG8swwfTbbNtuLCxoLENTr0QXEaeuKB/u5kLfC4fkzc8OAS/gsRugds3efMgIGC6E+8MUjiS6/KwmajmV0mQf8rhYCKhA9crcLAmlmNpLHWBVFV1T5kAPVtE+hmxxqkTk+7Xt3IC49pJ55bF2dUPbWI/Q54mSYxoxdQqsOxysnA9iiE0KZeQuRAgM3oHxhsaK6j4h9SjAHN2elhSJdH5/qK7eC1EnjJFlf8DCh/+nphpN9RunTs3wh9+0A0lvf5G8ixy9n94kMYCILKy1Wrt0pWORIBEgbgTGj8jcM7rhIlSV3G7NyIbFgeNkwQ== 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=ZM3v6aLaujLwLWtmW4ZLVKHylAxGLWq1ExWf7EuGumQ=; b=XDaVItHQ/CNnhNprmw+IRrlTHX0tbdmsBab1lAw6E0zY+t/GQtV2Jicgq0hmqsJN+zAijgO12mCF9rIIV4NFnVieiuy8hgIz1R+7rBXyeRX7JFmSsXNIDVWd9C7iTduwOV1qHVgfuKkuUbOTbOGfMFRtOPWGYvAzeWqH1eJG2GyO5ooSVSkTfHsOlWgKgxh3tJ0UAjW+RiCtpLl6GQqhpUoGnO5IDX9fbP6wHTJUzuFRUfdqAkpikTl9xq5WlHTLxw1o4cmXMesudk6v/g6g/03hCTiovF02YB2QuT5+g5/D6v0W22yqZ5gDZsdqrRyobblaK5u7fgvskQo4yi5Nrw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZM3v6aLaujLwLWtmW4ZLVKHylAxGLWq1ExWf7EuGumQ=; b=dpe7AoEHtys/fBOPqLvRK1eONMZCGX0UzG02xeu+pJlL9hccZRCBbc4E1RKN53Hy7Ttz/UhitYeufBmsPoFG4zI0qNo6SNovERK+GIu1kueYVvKdCBryvUTrZbqeZrtlVKbJm/zBhw9+rymVfnt0hD0PU3K2vlmbtnyYenwj3NM= From: George Dunlap To: Nick Rosbrook CC: xen-devel , Nick Rosbrook , Ian Jackson , Wei Liu Subject: Re: [RESEND PATCH 03/12] golang/xenlight: fix string conversion in generated toC functions Thread-Topic: [RESEND PATCH 03/12] golang/xenlight: fix string conversion in generated toC functions Thread-Index: AQHXUNysz1ZbuKJBuU+rSVrlC2Thy6sZwI6A Date: Fri, 18 Jun 2021 11:00:26 +0000 Message-ID: <6BAF6F60-EC63-41AC-A46E-2045E746C7E1@citrix.com> References: <06763aceff41167d3d3bbd603f729572c1f55c77.1621887506.git.rosbrookn@ainfosec.com> In-Reply-To: <06763aceff41167d3d3bbd603f729572c1f55c77.1621887506.git.rosbrookn@ainfosec.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3654.60.0.2.21) x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 8be1c748-6299-4a81-c1a6-08d93248474d x-ms-traffictypediagnostic: PH0PR03MB6368: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:64; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: OdHM3lUpBKygdLnHNz4HSoDCiD2rBgbNyoSK1KBzLMjFB/XhOPps+dqEd0E6fEAPc0FUKG/ciBeLcj+yppxM02JXcG8s4RIZffpZL1klsNiNF2VVUevo8qgYtH+0fLkd7Z6sJcpSjIegzpZPVMXqLqp5+Q/ku3IxH7B3f3z2Hvbnf2nZxEHA68V2Zxm2bFiqy1O5hGq9xv4RXhXWjkqZZaX32C7iQqvrJebZsR4yxNlEncIXwGL++rcHz9V4nHGwObZ2FHEts9RqIBQnFenyTYXeeTRJqB4FJrGQp2ykr50Y7xHzAjhVYIjFFcOY9VMD1TpeA4oRyC0nWeWu6A0HhPvIIXYZ5qm2sjqbBP3zyRiYmtTA0KSmh1vLD2NM17sBslf4HebV1pUllPk2WkgSZhHV562nr2CnyvQtK6Sf3uQ3UiBJfztiQ1hoEKyaLu1WcIqgK20Q5s64Y+yGW0k3XHfjjp+tDA/Y2M66i2Re54LHgfRrDQBcY1odbqlWS+lzrB72CVbqJ/cbgUL47JYaBJrHy3CguKKmIZSBh2cunfLpsieGcYOeQjTvEWCMfLLzwzCrL0YRaA0YMPT7d/LRswZOubet+53cAwUfyxlX8WKbZoFIXxoXIAha7T//DpOCfTp1k9lsS/CbpENAgYKcG5mhTPjTCuDkFFaWXa7tnLw= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR03MB5669.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(366004)(39860400002)(136003)(346002)(376002)(66946007)(478600001)(66476007)(66556008)(76116006)(91956017)(54906003)(26005)(6916009)(2616005)(2906002)(66446008)(8936002)(8676002)(316002)(5660300002)(64756008)(6512007)(38100700002)(122000001)(6506007)(186003)(53546011)(86362001)(19627235002)(83380400001)(36756003)(6486002)(33656002)(55236004)(4326008)(30864003)(71200400001)(45980500001)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OGNIYm9NM0VtbmNCcnFBOUE1SU1OMGY4OEZXWjErT1E3ZmdLTnVITWk4eWU2?= =?utf-8?B?b2puc3h6c3ZBNGEvSzR5dkJzZkt6TVo2TS9sTXh4N1V1a25oak5QNUp6eWdK?= =?utf-8?B?eXQ3Vk9QdFVqczlWYUZWZm9meXNGYnFRR0xyNVYxZE5iUlZoZkFxR3ZVWUk4?= =?utf-8?B?Z2o4WHQwNWdrcy9PVUEvMkt1T2FPTDZRVldVQjNITVhFUmdIR2ZCTEJGVjgr?= =?utf-8?B?UUJJNTFhWCs2b1MxOXJHTHRvTXdVWmVBRkFkcHFxY3M4Qlp2UWlYWHF2aHZN?= =?utf-8?B?VUpoY1J0Q3dUWmZKbHlwTWpIVnhPRnFCWUtMa3NIcTE4NUFMYWsxK1JSSW04?= =?utf-8?B?MEVJblhDbzBsQkE5Vk96N29aenBqV1JGZExhelhwb2NhNXMvSW5jNFZ2aVE1?= =?utf-8?B?QkNDc1c0a0RNZGxUdjllZHlZUWpZRmt5VTR2R3dSTURXUmMvVGlKSXZib0d3?= =?utf-8?B?NkJqZ2svNFJiZ3FucGFQc2hpU0xPeFUvQk83Q1FNTDd5UnRkWS90eW04emhO?= =?utf-8?B?NUxWQ2xHUGgwOVN4QndIR0NYK0RHbGZGQm9WZ01HN1A2RmZJekg1SmVITzRH?= =?utf-8?B?emZ1M0x3OXFlYTFGR084bjBZVFRLaDF0RWlQc2hnWFJ2SGVKN0k4MGdaYmJR?= =?utf-8?B?UUlGWmdnaXVwVUpZVkZIMUxFQTdCNldFUE1XVG9qTytiM21BSlRmOWN0YWVT?= =?utf-8?B?bm5mdmZJMlViNnVmU3pDaUNxVm1Vdm9ISGtxa0YveXJSRzhlU1pya2xEejdo?= =?utf-8?B?NWNZTU9BYW5qbGxFc0FqQjh6OGVkaDcyT010c0FOeUxaSDJ0Y2R0YlMwSW8v?= =?utf-8?B?eHg0TmFpRE5UdkJYYVoydTgxRTN5anc0QVRNMkVsZWx0eGNENm5HZmtrUnI4?= =?utf-8?B?c05NWFIrRmlIdGViTms4TW1HUCs2TER6WGoybjFySW51YkNETlpySGJsQ0JC?= =?utf-8?B?c1FxeXhPTUlqUWwrVkhmWjFGQVlaLzZlakNxaVNHQ0xUU2RDQmdiZTVPNWY5?= =?utf-8?B?aHlsYW4yZDhiU2dCUXMzTE4zT3Z1WUt3dGNETjY2R3h5TG9MdVpmbGFLMWZK?= =?utf-8?B?WmVCSGR5UElGOVlxK2Uvd2VvS3VEQ3Q3V2NXYlcrV0pUYk9tQnlDWnVlajds?= =?utf-8?B?V01wWEgzR1FMQ1FGSHhIOXczYlFub1JiVEt5a1pGNnpqczJzTXVDMXh1MzBD?= =?utf-8?B?cDU1M0IwNVM2ZGFxNlBaYytyVGl4Q2N4STF2dzVTbHh2amt4NzNDMzdTZGZO?= =?utf-8?B?MUQ4ZEVRYWkrSUdnTFF1bHVycWYvSTUrVHBsVU5Bcmd4S0k2L2FJVzFnN3Fu?= =?utf-8?B?blJUTWd1UGZJTGhxcVcrL0RIazVyUEhBdGZyei9WMzI0dkw2a3g4bWNHS280?= =?utf-8?B?SVJ0VHBLVXduWGhiQkJROXR0SUswVS9ETmErakY3OUprVm9yWnpiRWx6dGpI?= =?utf-8?B?Q1dINkMyMzd5M1dBK3RIbldpM0dGc1ZMYlRET2RhVEhTR2NWb25XVEhvcGpU?= =?utf-8?B?VmtZT3hTVld0RjdSR1RWcWdiUGp2RytQenVXc1BFVEN2T1FmajRtM3BuQWJL?= =?utf-8?B?eE9tUEl3YXJXOS9jRE1VeWwzTkdjbzQ5QzhVK2VhNnZtYWMvQ2puRytFdVR6?= =?utf-8?B?dWd5aENCY2k3R1QzcW9sMlhRZ0xqeW42QkZndGIzSk95UWQzY3EyQldWWXpk?= =?utf-8?B?cXZOREcvR2lTNmxzVENkSGFwUTU4TkRqVDUrNVpjVDBBL2creEN5bFRUTTVZ?= =?utf-8?B?SXA0Zld2eVNHcHdscncxVVBvVm1GRWg4LzZPYWU1V3VQUEd5bStrS2JIZEpK?= =?utf-8?B?dStYaWVPeUtqekxqdysyZz09?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <794294D6E90BDA42B0CF64E89FCBEE89@namprd03.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR03MB5669.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8be1c748-6299-4a81-c1a6-08d93248474d X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Jun 2021 11:00:26.3554 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: hvsC6WFVLEC3KP/TYbUfK/ic/AAnfEx+cGyP6MNFieg7bJiVl6mBHdWqUAq8OUEa+uIDQdG0+J6YQzH7ZRSMhL+ORxoCKXYJk+TEXgXgISw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB6368 X-OriginatorOrg: citrix.com DQoNCj4gT24gTWF5IDI0LCAyMDIxLCBhdCA5OjM2IFBNLCBOaWNrIFJvc2Jyb29rIDxyb3Nicm9v a25AZ21haWwuY29tPiB3cm90ZToNCj4gDQo+IEluIGdlbmdvdHlwZXMucHksIHRoZSB0b0MgZnVu Y3Rpb25zIG9ubHkgc2V0IEMgc3RyaW5nIGZpZWxkcyB3aGVuDQo+IHRoZSBHbyBzdHJpbmdzIGFy ZSBub24tZW1wdHkuIEhvd2V2ZXIsIHRvIHByZXZlbnQgc2VnZmF1bHRzIGluIHNvbWUNCj4gY2Fz ZXMsIHRoZXNlIGZpZWxkcyBzaG91bGQgYWx3YXlzIGF0IGxlYXN0IGJlIHNldCB0byBuaWwgc28g dGhhdCB0aGUgQw0KPiBtZW1vcnkgaXMgemVyb2VkIG91dC4NCj4gDQo+IFVwZGF0ZSBnZW5nb3R5 cGVzLnB5IHNvIHRoYXQgdGhlIGdlbmVyYXRlZCBjb2RlIGFsd2F5cyBzZXRzIHRoZXNlIGZpZWxk cw0KPiB0byBuaWwgZmlyc3QsIGFuZCB0aGVuIHByb2NlZWRzIHRvIGNoZWNrIGlmIHRoZSBHbyBz dHJpbmcgaXMgbm9uLWVtcHR5Lg0KPiBBbmQsIGNvbW1pdCB0aGUgbmV3IGdlbmVyYXRlZCBjb2Rl Lg0KPiANCj4gU2lnbmVkLW9mZi1ieTogTmljayBSb3Nicm9vayA8cm9zYnJvb2tuQGFpbmZvc2Vj LmNvbT4NCg0KU28gd2FpdCDigJQgaWYgeW91IGRvDQoNCnZhciBmb28gQy50eXBlbmFtZQ0KDQpU aGVuIGdvbGFuZyB3b27igJl0IGF1dG9tYXRpY2FsbHkgemVybyBvdXQgYGZvb2A/DQoNClRoYXQg c2VlbXMgbGlrZSBhIGJ1ZyByZWFsbHk7IGJ1dCBhc3N1bWluZyB0aGlzIGZpeGVzIHJlYWwgYmVo YXZpb3IgeW914oCZdmUgZW5jb3VudGVyZWQ6DQoNClJldmlld2VkLWJ5OiBHZW9yZ2UgRHVubGFw IDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20+DQoNCj4gLS0tDQo+IHRvb2xzL2dvbGFuZy94ZW5s aWdodC9nZW5nb3R5cGVzLnB5ICB8ICAgMSArDQo+IHRvb2xzL2dvbGFuZy94ZW5saWdodC9oZWxw ZXJzLmdlbi5nbyB8IDE2MCArKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gMiBmaWxlcyBj aGFuZ2VkLCAxNjEgaW5zZXJ0aW9ucygrKQ0KPiANCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2dvbGFu Zy94ZW5saWdodC9nZW5nb3R5cGVzLnB5IGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L2dlbmdvdHlw ZXMucHkNCj4gaW5kZXggM2U0MGMzZDVkYy4uZTZkYWE5YjkyZiAxMDA2NDQNCj4gLS0tIGEvdG9v bHMvZ29sYW5nL3hlbmxpZ2h0L2dlbmdvdHlwZXMucHkNCj4gKysrIGIvdG9vbHMvZ29sYW5nL3hl bmxpZ2h0L2dlbmdvdHlwZXMucHkNCj4gQEAgLTUyNyw2ICs1MjcsNyBAQCBkZWYgeGVubGlnaHRf Z29sYW5nX2NvbnZlcnRfdG9fQyh0eSA9IE5vbmUsIG91dGVyX25hbWUgPSBOb25lLA0KPiANCj4g ICAgIGVsaWYgZ290eXBlbmFtZSA9PSAnc3RyaW5nJzoNCj4gICAgICAgICAjIFVzZSB0aGUgY2dv IGhlbHBlciBmb3IgY29udmVydGluZyBDIHN0cmluZ3MuDQo+ICsgICAgICAgIHMgKz0gJ3swfS57 MX0gPSBuaWxcbicuZm9ybWF0KGN2YXJuYW1lLCBjbmFtZSkNCj4gICAgICAgICBzICs9ICdpZiB7 MH0uezF9ICE9ICIiIHt7XG4nLmZvcm1hdChnb3Zhcm5hbWUsZ29uYW1lKQ0KPiAgICAgICAgIHMg Kz0gJ3swfS57MX0gPSBDLkNTdHJpbmcoezJ9LnszfSl9fVxuJy5mb3JtYXQoY3Zhcm5hbWUsY25h bWUsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdvdmFybmFtZSxnb25hbWUpDQo+IGRpZmYgLS1naXQgYS90b29scy9nb2xhbmcveGVubGlnaHQv aGVscGVycy5nZW4uZ28gYi90b29scy9nb2xhbmcveGVubGlnaHQvaGVscGVycy5nZW4uZ28NCj4g aW5kZXggYjQ1NGIxMmQ1Mi4uNTIyMjg5OGZiOCAxMDA2NDQNCj4gLS0tIGEvdG9vbHMvZ29sYW5n L3hlbmxpZ2h0L2hlbHBlcnMuZ2VuLmdvDQo+ICsrKyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdodC9o ZWxwZXJzLmdlbi5nbw0KPiBAQCAtMTU0LDggKzE1NCwxMCBAQCBDLmxpYnhsX3ZuY19pbmZvX2Rp c3Bvc2UoeGMpfQ0KPiBpZiBlcnIgOj0geC5FbmFibGUudG9DKCZ4Yy5lbmFibGUpOyBlcnIgIT0g bmlsIHsNCj4gcmV0dXJuIGZtdC5FcnJvcmYoImNvbnZlcnRpbmcgZmllbGQgRW5hYmxlOiAldiIs IGVycikNCj4gfQ0KPiAreGMubGlzdGVuID0gbmlsDQo+IGlmIHguTGlzdGVuICE9ICIiIHsNCj4g eGMubGlzdGVuID0gQy5DU3RyaW5nKHguTGlzdGVuKX0NCj4gK3hjLnBhc3N3ZCA9IG5pbA0KPiBp ZiB4LlBhc3N3ZCAhPSAiIiB7DQo+IHhjLnBhc3N3ZCA9IEMuQ1N0cmluZyh4LlBhc3N3ZCl9DQo+ IHhjLmRpc3BsYXkgPSBDLmludCh4LkRpc3BsYXkpDQo+IEBAIC0yMTYsMTEgKzIxOCwxMyBAQCBy ZXR1cm4gZm10LkVycm9yZigiY29udmVydGluZyBmaWVsZCBFbmFibGU6ICV2IiwgZXJyKQ0KPiB9 DQo+IHhjLnBvcnQgPSBDLmludCh4LlBvcnQpDQo+IHhjLnRsc19wb3J0ID0gQy5pbnQoeC5UbHNQ b3J0KQ0KPiAreGMuaG9zdCA9IG5pbA0KPiBpZiB4Lkhvc3QgIT0gIiIgew0KPiB4Yy5ob3N0ID0g Qy5DU3RyaW5nKHguSG9zdCl9DQo+IGlmIGVyciA6PSB4LkRpc2FibGVUaWNrZXRpbmcudG9DKCZ4 Yy5kaXNhYmxlX3RpY2tldGluZyk7IGVyciAhPSBuaWwgew0KPiByZXR1cm4gZm10LkVycm9yZigi Y29udmVydGluZyBmaWVsZCBEaXNhYmxlVGlja2V0aW5nOiAldiIsIGVycikNCj4gfQ0KPiAreGMu cGFzc3dkID0gbmlsDQo+IGlmIHguUGFzc3dkICE9ICIiIHsNCj4geGMucGFzc3dkID0gQy5DU3Ry aW5nKHguUGFzc3dkKX0NCj4gaWYgZXJyIDo9IHguQWdlbnRNb3VzZS50b0MoJnhjLmFnZW50X21v dXNlKTsgZXJyICE9IG5pbCB7DQo+IEBAIC0yMzMsOCArMjM3LDEwIEBAIGlmIGVyciA6PSB4LkNs aXBib2FyZFNoYXJpbmcudG9DKCZ4Yy5jbGlwYm9hcmRfc2hhcmluZyk7IGVyciAhPSBuaWwgew0K PiByZXR1cm4gZm10LkVycm9yZigiY29udmVydGluZyBmaWVsZCBDbGlwYm9hcmRTaGFyaW5nOiAl diIsIGVycikNCj4gfQ0KPiB4Yy51c2JyZWRpcmVjdGlvbiA9IEMuaW50KHguVXNicmVkaXJlY3Rp b24pDQo+ICt4Yy5pbWFnZV9jb21wcmVzc2lvbiA9IG5pbA0KPiBpZiB4LkltYWdlQ29tcHJlc3Np b24gIT0gIiIgew0KPiB4Yy5pbWFnZV9jb21wcmVzc2lvbiA9IEMuQ1N0cmluZyh4LkltYWdlQ29t cHJlc3Npb24pfQ0KPiAreGMuc3RyZWFtaW5nX3ZpZGVvID0gbmlsDQo+IGlmIHguU3RyZWFtaW5n VmlkZW8gIT0gIiIgew0KPiB4Yy5zdHJlYW1pbmdfdmlkZW8gPSBDLkNTdHJpbmcoeC5TdHJlYW1p bmdWaWRlbyl9DQo+IA0KPiBAQCAtMjc4LDggKzI4NCwxMCBAQCByZXR1cm4gZm10LkVycm9yZigi Y29udmVydGluZyBmaWVsZCBFbmFibGU6ICV2IiwgZXJyKQ0KPiBpZiBlcnIgOj0geC5PcGVuZ2wu dG9DKCZ4Yy5vcGVuZ2wpOyBlcnIgIT0gbmlsIHsNCj4gcmV0dXJuIGZtdC5FcnJvcmYoImNvbnZl cnRpbmcgZmllbGQgT3BlbmdsOiAldiIsIGVycikNCj4gfQ0KPiAreGMuZGlzcGxheSA9IG5pbA0K PiBpZiB4LkRpc3BsYXkgIT0gIiIgew0KPiB4Yy5kaXNwbGF5ID0gQy5DU3RyaW5nKHguRGlzcGxh eSl9DQo+ICt4Yy54YXV0aG9yaXR5ID0gbmlsDQo+IGlmIHguWGF1dGhvcml0eSAhPSAiIiB7DQo+ IHhjLnhhdXRob3JpdHkgPSBDLkNTdHJpbmcoeC5YYXV0aG9yaXR5KX0NCj4gDQo+IEBAIC0zMzcs NiArMzQ1LDcgQEAgcmV0dXJuIGZtdC5FcnJvcmYoImNvbnZlcnRpbmcgZmllbGQgVXVpZDogJXYi LCBlcnIpDQo+IH0NCj4geGMuZG9taWQgPSBDLmxpYnhsX2RvbWlkKHguRG9taWQpDQo+IHhjLnNz aWRyZWYgPSBDLnVpbnQzMl90KHguU3NpZHJlZikNCj4gK3hjLnNzaWRfbGFiZWwgPSBuaWwNCj4g aWYgeC5Tc2lkTGFiZWwgIT0gIiIgew0KPiB4Yy5zc2lkX2xhYmVsID0gQy5DU3RyaW5nKHguU3Np ZExhYmVsKX0NCj4geGMucnVubmluZyA9IEMuYm9vbCh4LlJ1bm5pbmcpDQo+IEBAIC0zOTEsNiAr NDAwLDcgQEAgQy5saWJ4bF9jcHVwb29saW5mb19kaXNwb3NlKHhjKX0NCj4gfSgpDQo+IA0KPiB4 Yy5wb29saWQgPSBDLnVpbnQzMl90KHguUG9vbGlkKQ0KPiAreGMucG9vbF9uYW1lID0gbmlsDQo+ IGlmIHguUG9vbE5hbWUgIT0gIiIgew0KPiB4Yy5wb29sX25hbWUgPSBDLkNTdHJpbmcoeC5Qb29s TmFtZSl9DQo+IHhjLnNjaGVkID0gQy5saWJ4bF9zY2hlZHVsZXIoeC5TY2hlZCkNCj4gQEAgLTQ1 OCw5ICs0NjgsMTEgQEAgaWYgZXJyICE9IG5pbHsNCj4gQy5saWJ4bF9jaGFubmVsaW5mb19kaXNw b3NlKHhjKX0NCj4gfSgpDQo+IA0KPiAreGMuYmFja2VuZCA9IG5pbA0KPiBpZiB4LkJhY2tlbmQg IT0gIiIgew0KPiB4Yy5iYWNrZW5kID0gQy5DU3RyaW5nKHguQmFja2VuZCl9DQo+IHhjLmJhY2tl bmRfaWQgPSBDLnVpbnQzMl90KHguQmFja2VuZElkKQ0KPiAreGMuZnJvbnRlbmQgPSBuaWwNCj4g aWYgeC5Gcm9udGVuZCAhPSAiIiB7DQo+IHhjLmZyb250ZW5kID0gQy5DU3RyaW5nKHguRnJvbnRl bmQpfQ0KPiB4Yy5mcm9udGVuZF9pZCA9IEMudWludDMyX3QoeC5Gcm9udGVuZElkKQ0KPiBAQCAt NDc4LDYgKzQ5MCw3IEBAIGlmICFvayB7DQo+IHJldHVybiBlcnJvcnMuTmV3KCJ3cm9uZyB0eXBl IGZvciB1bmlvbiBrZXkgY29ubmVjdGlvbiIpDQo+IH0NCj4gdmFyIHB0eSBDLmxpYnhsX2NoYW5u ZWxpbmZvX2Nvbm5lY3Rpb25fdW5pb25fcHR5DQo+ICtwdHkucGF0aCA9IG5pbA0KPiBpZiB0bXAu UGF0aCAhPSAiIiB7DQo+IHB0eS5wYXRoID0gQy5DU3RyaW5nKHRtcC5QYXRoKX0NCj4gcHR5Qnl0 ZXMgOj0gQy5Hb0J5dGVzKHVuc2FmZS5Qb2ludGVyKCZwdHkpLEMuc2l6ZW9mX2xpYnhsX2NoYW5u ZWxpbmZvX2Nvbm5lY3Rpb25fdW5pb25fcHR5KQ0KPiBAQCAtNTYzLDI0ICs1NzYsMzMgQEAgQy5s aWJ4bF92ZXJzaW9uX2luZm9fZGlzcG9zZSh4Yyl9DQo+IA0KPiB4Yy54ZW5fdmVyc2lvbl9tYWpv ciA9IEMuaW50KHguWGVuVmVyc2lvbk1ham9yKQ0KPiB4Yy54ZW5fdmVyc2lvbl9taW5vciA9IEMu aW50KHguWGVuVmVyc2lvbk1pbm9yKQ0KPiAreGMueGVuX3ZlcnNpb25fZXh0cmEgPSBuaWwNCj4g aWYgeC5YZW5WZXJzaW9uRXh0cmEgIT0gIiIgew0KPiB4Yy54ZW5fdmVyc2lvbl9leHRyYSA9IEMu Q1N0cmluZyh4LlhlblZlcnNpb25FeHRyYSl9DQo+ICt4Yy5jb21waWxlciA9IG5pbA0KPiBpZiB4 LkNvbXBpbGVyICE9ICIiIHsNCj4geGMuY29tcGlsZXIgPSBDLkNTdHJpbmcoeC5Db21waWxlcil9 DQo+ICt4Yy5jb21waWxlX2J5ID0gbmlsDQo+IGlmIHguQ29tcGlsZUJ5ICE9ICIiIHsNCj4geGMu Y29tcGlsZV9ieSA9IEMuQ1N0cmluZyh4LkNvbXBpbGVCeSl9DQo+ICt4Yy5jb21waWxlX2RvbWFp biA9IG5pbA0KPiBpZiB4LkNvbXBpbGVEb21haW4gIT0gIiIgew0KPiB4Yy5jb21waWxlX2RvbWFp biA9IEMuQ1N0cmluZyh4LkNvbXBpbGVEb21haW4pfQ0KPiAreGMuY29tcGlsZV9kYXRlID0gbmls DQo+IGlmIHguQ29tcGlsZURhdGUgIT0gIiIgew0KPiB4Yy5jb21waWxlX2RhdGUgPSBDLkNTdHJp bmcoeC5Db21waWxlRGF0ZSl9DQo+ICt4Yy5jYXBhYmlsaXRpZXMgPSBuaWwNCj4gaWYgeC5DYXBh YmlsaXRpZXMgIT0gIiIgew0KPiB4Yy5jYXBhYmlsaXRpZXMgPSBDLkNTdHJpbmcoeC5DYXBhYmls aXRpZXMpfQ0KPiAreGMuY2hhbmdlc2V0ID0gbmlsDQo+IGlmIHguQ2hhbmdlc2V0ICE9ICIiIHsN Cj4geGMuY2hhbmdlc2V0ID0gQy5DU3RyaW5nKHguQ2hhbmdlc2V0KX0NCj4geGMudmlydF9zdGFy dCA9IEMudWludDY0X3QoeC5WaXJ0U3RhcnQpDQo+IHhjLnBhZ2VzaXplID0gQy5pbnQoeC5QYWdl c2l6ZSkNCj4gK3hjLmNvbW1hbmRsaW5lID0gbmlsDQo+IGlmIHguQ29tbWFuZGxpbmUgIT0gIiIg ew0KPiB4Yy5jb21tYW5kbGluZSA9IEMuQ1N0cmluZyh4LkNvbW1hbmRsaW5lKX0NCj4gK3hjLmJ1 aWxkX2lkID0gbmlsDQo+IGlmIHguQnVpbGRJZCAhPSAiIiB7DQo+IHhjLmJ1aWxkX2lkID0gQy5D U3RyaW5nKHguQnVpbGRJZCl9DQo+IA0KPiBAQCAtNjUwLDggKzY3MiwxMCBAQCBpZiBlcnIgOj0g eC5Pb3MudG9DKCZ4Yy5vb3MpOyBlcnIgIT0gbmlsIHsNCj4gcmV0dXJuIGZtdC5FcnJvcmYoImNv bnZlcnRpbmcgZmllbGQgT29zOiAldiIsIGVycikNCj4gfQ0KPiB4Yy5zc2lkcmVmID0gQy51aW50 MzJfdCh4LlNzaWRyZWYpDQo+ICt4Yy5zc2lkX2xhYmVsID0gbmlsDQo+IGlmIHguU3NpZExhYmVs ICE9ICIiIHsNCj4geGMuc3NpZF9sYWJlbCA9IEMuQ1N0cmluZyh4LlNzaWRMYWJlbCl9DQo+ICt4 Yy5uYW1lID0gbmlsDQo+IGlmIHguTmFtZSAhPSAiIiB7DQo+IHhjLm5hbWUgPSBDLkNTdHJpbmco eC5OYW1lKX0NCj4geGMuZG9taWQgPSBDLmxpYnhsX2RvbWlkKHguRG9taWQpDQo+IEBAIC02NjUs NiArNjg5LDcgQEAgaWYgZXJyIDo9IHguUGxhdGZvcm1kYXRhLnRvQygmeGMucGxhdGZvcm1kYXRh KTsgZXJyICE9IG5pbCB7DQo+IHJldHVybiBmbXQuRXJyb3JmKCJjb252ZXJ0aW5nIGZpZWxkIFBs YXRmb3JtZGF0YTogJXYiLCBlcnIpDQo+IH0NCj4geGMucG9vbGlkID0gQy51aW50MzJfdCh4LlBv b2xpZCkNCj4gK3hjLnBvb2xfbmFtZSA9IG5pbA0KPiBpZiB4LlBvb2xOYW1lICE9ICIiIHsNCj4g eGMucG9vbF9uYW1lID0gQy5DU3RyaW5nKHguUG9vbE5hbWUpfQ0KPiBpZiBlcnIgOj0geC5SdW5I b3RwbHVnU2NyaXB0cy50b0MoJnhjLnJ1bl9ob3RwbHVnX3NjcmlwdHMpOyBlcnIgIT0gbmlsIHsN Cj4gQEAgLTcxMiw2ICs3MzcsNyBAQCBDLmxpYnhsX2RvbWFpbl9yZXN0b3JlX3BhcmFtc19kaXNw b3NlKHhjKX0NCj4gDQo+IHhjLmNoZWNrcG9pbnRlZF9zdHJlYW0gPSBDLmludCh4LkNoZWNrcG9p bnRlZFN0cmVhbSkNCj4geGMuc3RyZWFtX3ZlcnNpb24gPSBDLnVpbnQzMl90KHguU3RyZWFtVmVy c2lvbikNCj4gK3hjLmNvbG9fcHJveHlfc2NyaXB0ID0gbmlsDQo+IGlmIHguQ29sb1Byb3h5U2Ny aXB0ICE9ICIiIHsNCj4geGMuY29sb19wcm94eV9zY3JpcHQgPSBDLkNTdHJpbmcoeC5Db2xvUHJv eHlTY3JpcHQpfQ0KPiBpZiBlcnIgOj0geC5Vc2Vyc3BhY2VDb2xvUHJveHkudG9DKCZ4Yy51c2Vy c3BhY2VfY29sb19wcm94eSk7IGVyciAhPSBuaWwgew0KPiBAQCAtMTMxMiw2ICsxMzM4LDcgQEAg eGMuc2hhZG93X21lbWtiID0gQy51aW50NjRfdCh4LlNoYWRvd01lbWtiKQ0KPiB4Yy5pb21tdV9t ZW1rYiA9IEMudWludDY0X3QoeC5Jb21tdU1lbWtiKQ0KPiB4Yy5ydGNfdGltZW9mZnNldCA9IEMu dWludDMyX3QoeC5SdGNUaW1lb2Zmc2V0KQ0KPiB4Yy5leGVjX3NzaWRyZWYgPSBDLnVpbnQzMl90 KHguRXhlY1NzaWRyZWYpDQo+ICt4Yy5leGVjX3NzaWRfbGFiZWwgPSBuaWwNCj4gaWYgeC5FeGVj U3NpZExhYmVsICE9ICIiIHsNCj4geGMuZXhlY19zc2lkX2xhYmVsID0gQy5DU3RyaW5nKHguRXhl Y1NzaWRMYWJlbCl9DQo+IGlmIGVyciA6PSB4LkxvY2FsdGltZS50b0MoJnhjLmxvY2FsdGltZSk7 IGVyciAhPSBuaWwgew0KPiBAQCAtMTMyMyw2ICsxMzUwLDcgQEAgcmV0dXJuIGZtdC5FcnJvcmYo ImNvbnZlcnRpbmcgZmllbGQgRGlzYWJsZU1pZ3JhdGU6ICV2IiwgZXJyKQ0KPiBpZiBlcnIgOj0g eC5DcHVpZC50b0MoJnhjLmNwdWlkKTsgZXJyICE9IG5pbCB7DQo+IHJldHVybiBmbXQuRXJyb3Jm KCJjb252ZXJ0aW5nIGZpZWxkIENwdWlkOiAldiIsIGVycikNCj4gfQ0KPiAreGMuYmxrZGV2X3N0 YXJ0ID0gbmlsDQo+IGlmIHguQmxrZGV2U3RhcnQgIT0gIiIgew0KPiB4Yy5ibGtkZXZfc3RhcnQg PSBDLkNTdHJpbmcoeC5CbGtkZXZTdGFydCl9DQo+IGlmIG51bVZudW1hTm9kZXMgOj0gbGVuKHgu Vm51bWFOb2Rlcyk7IG51bVZudW1hTm9kZXMgPiAwIHsNCj4gQEAgLTEzNDIsMTUgKzEzNzAsMjAg QEAgaWYgZXJyIDo9IHguRGV2aWNlTW9kZWxTdHViZG9tYWluLnRvQygmeGMuZGV2aWNlX21vZGVs X3N0dWJkb21haW4pOyBlcnIgIT0gbmlsIHsNCj4gcmV0dXJuIGZtdC5FcnJvcmYoImNvbnZlcnRp bmcgZmllbGQgRGV2aWNlTW9kZWxTdHViZG9tYWluOiAldiIsIGVycikNCj4gfQ0KPiB4Yy5zdHVi ZG9tYWluX21lbWtiID0gQy51aW50NjRfdCh4LlN0dWJkb21haW5NZW1rYikNCj4gK3hjLnN0dWJk b21haW5fa2VybmVsID0gbmlsDQo+IGlmIHguU3R1YmRvbWFpbktlcm5lbCAhPSAiIiB7DQo+IHhj LnN0dWJkb21haW5fa2VybmVsID0gQy5DU3RyaW5nKHguU3R1YmRvbWFpbktlcm5lbCl9DQo+ICt4 Yy5zdHViZG9tYWluX3JhbWRpc2sgPSBuaWwNCj4gaWYgeC5TdHViZG9tYWluUmFtZGlzayAhPSAi IiB7DQo+IHhjLnN0dWJkb21haW5fcmFtZGlzayA9IEMuQ1N0cmluZyh4LlN0dWJkb21haW5SYW1k aXNrKX0NCj4gK3hjLmRldmljZV9tb2RlbCA9IG5pbA0KPiBpZiB4LkRldmljZU1vZGVsICE9ICIi IHsNCj4geGMuZGV2aWNlX21vZGVsID0gQy5DU3RyaW5nKHguRGV2aWNlTW9kZWwpfQ0KPiB4Yy5k ZXZpY2VfbW9kZWxfc3NpZHJlZiA9IEMudWludDMyX3QoeC5EZXZpY2VNb2RlbFNzaWRyZWYpDQo+ ICt4Yy5kZXZpY2VfbW9kZWxfc3NpZF9sYWJlbCA9IG5pbA0KPiBpZiB4LkRldmljZU1vZGVsU3Np ZExhYmVsICE9ICIiIHsNCj4geGMuZGV2aWNlX21vZGVsX3NzaWRfbGFiZWwgPSBDLkNTdHJpbmco eC5EZXZpY2VNb2RlbFNzaWRMYWJlbCl9DQo+ICt4Yy5kZXZpY2VfbW9kZWxfdXNlciA9IG5pbA0K PiBpZiB4LkRldmljZU1vZGVsVXNlciAhPSAiIiB7DQo+IHhjLmRldmljZV9tb2RlbF91c2VyID0g Qy5DU3RyaW5nKHguRGV2aWNlTW9kZWxVc2VyKX0NCj4gaWYgZXJyIDo9IHguRXh0cmEudG9DKCZ4 Yy5leHRyYSk7IGVyciAhPSBuaWwgew0KPiBAQCAtMTM5NywxNyArMTQzMCwyMiBAQCBpZiBlcnIg Oj0geC5DbGFpbU1vZGUudG9DKCZ4Yy5jbGFpbV9tb2RlKTsgZXJyICE9IG5pbCB7DQo+IHJldHVy biBmbXQuRXJyb3JmKCJjb252ZXJ0aW5nIGZpZWxkIENsYWltTW9kZTogJXYiLCBlcnIpDQo+IH0N Cj4geGMuZXZlbnRfY2hhbm5lbHMgPSBDLnVpbnQzMl90KHguRXZlbnRDaGFubmVscykNCj4gK3hj Lmtlcm5lbCA9IG5pbA0KPiBpZiB4Lktlcm5lbCAhPSAiIiB7DQo+IHhjLmtlcm5lbCA9IEMuQ1N0 cmluZyh4Lktlcm5lbCl9DQo+ICt4Yy5jbWRsaW5lID0gbmlsDQo+IGlmIHguQ21kbGluZSAhPSAi IiB7DQo+IHhjLmNtZGxpbmUgPSBDLkNTdHJpbmcoeC5DbWRsaW5lKX0NCj4gK3hjLnJhbWRpc2sg PSBuaWwNCj4gaWYgeC5SYW1kaXNrICE9ICIiIHsNCj4geGMucmFtZGlzayA9IEMuQ1N0cmluZyh4 LlJhbWRpc2spfQ0KPiAreGMuZGV2aWNlX3RyZWUgPSBuaWwNCj4gaWYgeC5EZXZpY2VUcmVlICE9 ICIiIHsNCj4geGMuZGV2aWNlX3RyZWUgPSBDLkNTdHJpbmcoeC5EZXZpY2VUcmVlKX0NCj4gaWYg ZXJyIDo9IHguQWNwaS50b0MoJnhjLmFjcGkpOyBlcnIgIT0gbmlsIHsNCj4gcmV0dXJuIGZtdC5F cnJvcmYoImNvbnZlcnRpbmcgZmllbGQgQWNwaTogJXYiLCBlcnIpDQo+IH0NCj4gK3hjLmJvb3Rs b2FkZXIgPSBuaWwNCj4gaWYgeC5Cb290bG9hZGVyICE9ICIiIHsNCj4geGMuYm9vdGxvYWRlciA9 IEMuQ1N0cmluZyh4LkJvb3Rsb2FkZXIpfQ0KPiBpZiBlcnIgOj0geC5Cb290bG9hZGVyQXJncy50 b0MoJnhjLmJvb3Rsb2FkZXJfYXJncyk7IGVyciAhPSBuaWwgew0KPiBAQCAtMTQzMiw2ICsxNDcw LDcgQEAgaWYgIW9rIHsNCj4gcmV0dXJuIGVycm9ycy5OZXcoIndyb25nIHR5cGUgZm9yIHVuaW9u IGtleSB0eXBlIikNCj4gfQ0KPiB2YXIgaHZtIEMubGlieGxfZG9tYWluX2J1aWxkX2luZm9fdHlw ZV91bmlvbl9odm0NCj4gK2h2bS5maXJtd2FyZSA9IG5pbA0KPiBpZiB0bXAuRmlybXdhcmUgIT0g IiIgew0KPiBodm0uZmlybXdhcmUgPSBDLkNTdHJpbmcodG1wLkZpcm13YXJlKX0NCj4gaHZtLmJp b3MgPSBDLmxpYnhsX2Jpb3NfdHlwZSh0bXAuQmlvcykNCj4gQEAgLTE0NjUsNiArMTUwNCw3IEBA IHJldHVybiBmbXQuRXJyb3JmKCJjb252ZXJ0aW5nIGZpZWxkIFZpcmlkaWFuRW5hYmxlOiAldiIs IGVycikNCj4gaWYgZXJyIDo9IHRtcC5WaXJpZGlhbkRpc2FibGUudG9DKCZodm0udmlyaWRpYW5f ZGlzYWJsZSk7IGVyciAhPSBuaWwgew0KPiByZXR1cm4gZm10LkVycm9yZigiY29udmVydGluZyBm aWVsZCBWaXJpZGlhbkRpc2FibGU6ICV2IiwgZXJyKQ0KPiB9DQo+ICtodm0udGltZW9mZnNldCA9 IG5pbA0KPiBpZiB0bXAuVGltZW9mZnNldCAhPSAiIiB7DQo+IGh2bS50aW1lb2Zmc2V0ID0gQy5D U3RyaW5nKHRtcC5UaW1lb2Zmc2V0KX0NCj4gaWYgZXJyIDo9IHRtcC5IcGV0LnRvQygmaHZtLmhw ZXQpOyBlcnIgIT0gbmlsIHsNCj4gQEAgLTE0ODEsMTAgKzE1MjEsMTMgQEAgcmV0dXJuIGZtdC5F cnJvcmYoImNvbnZlcnRpbmcgZmllbGQgTmVzdGVkSHZtOiAldiIsIGVycikNCj4gaWYgZXJyIDo9 IHRtcC5BbHRwMk0udG9DKCZodm0uYWx0cDJtKTsgZXJyICE9IG5pbCB7DQo+IHJldHVybiBmbXQu RXJyb3JmKCJjb252ZXJ0aW5nIGZpZWxkIEFsdHAyTTogJXYiLCBlcnIpDQo+IH0NCj4gK2h2bS5z eXN0ZW1fZmlybXdhcmUgPSBuaWwNCj4gaWYgdG1wLlN5c3RlbUZpcm13YXJlICE9ICIiIHsNCj4g aHZtLnN5c3RlbV9maXJtd2FyZSA9IEMuQ1N0cmluZyh0bXAuU3lzdGVtRmlybXdhcmUpfQ0KPiAr aHZtLnNtYmlvc19maXJtd2FyZSA9IG5pbA0KPiBpZiB0bXAuU21iaW9zRmlybXdhcmUgIT0gIiIg ew0KPiBodm0uc21iaW9zX2Zpcm13YXJlID0gQy5DU3RyaW5nKHRtcC5TbWJpb3NGaXJtd2FyZSl9 DQo+ICtodm0uYWNwaV9maXJtd2FyZSA9IG5pbA0KPiBpZiB0bXAuQWNwaUZpcm13YXJlICE9ICIi IHsNCj4gaHZtLmFjcGlfZmlybXdhcmUgPSBDLkNTdHJpbmcodG1wLkFjcGlGaXJtd2FyZSl9DQo+ IGh2bS5oZHR5cGUgPSBDLmxpYnhsX2hkdHlwZSh0bXAuSGR0eXBlKQ0KPiBAQCAtMTQ5Nyw2ICsx NTQwLDcgQEAgcmV0dXJuIGZtdC5FcnJvcmYoImNvbnZlcnRpbmcgZmllbGQgVmdhOiAldiIsIGVy cikNCj4gaWYgZXJyIDo9IHRtcC5WbmMudG9DKCZodm0udm5jKTsgZXJyICE9IG5pbCB7DQo+IHJl dHVybiBmbXQuRXJyb3JmKCJjb252ZXJ0aW5nIGZpZWxkIFZuYzogJXYiLCBlcnIpDQo+IH0NCj4g K2h2bS5rZXltYXAgPSBuaWwNCj4gaWYgdG1wLktleW1hcCAhPSAiIiB7DQo+IGh2bS5rZXltYXAg PSBDLkNTdHJpbmcodG1wLktleW1hcCl9DQo+IGlmIGVyciA6PSB0bXAuU2RsLnRvQygmaHZtLnNk bCk7IGVyciAhPSBuaWwgew0KPiBAQCAtMTUwOSwxOSArMTU1MywyMyBAQCBpZiBlcnIgOj0gdG1w LkdmeFBhc3N0aHJ1LnRvQygmaHZtLmdmeF9wYXNzdGhydSk7IGVyciAhPSBuaWwgew0KPiByZXR1 cm4gZm10LkVycm9yZigiY29udmVydGluZyBmaWVsZCBHZnhQYXNzdGhydTogJXYiLCBlcnIpDQo+ IH0NCj4gaHZtLmdmeF9wYXNzdGhydV9raW5kID0gQy5saWJ4bF9nZnhfcGFzc3RocnVfa2luZCh0 bXAuR2Z4UGFzc3RocnVLaW5kKQ0KPiAraHZtLnNlcmlhbCA9IG5pbA0KPiBpZiB0bXAuU2VyaWFs ICE9ICIiIHsNCj4gaHZtLnNlcmlhbCA9IEMuQ1N0cmluZyh0bXAuU2VyaWFsKX0NCj4gK2h2bS5i b290ID0gbmlsDQo+IGlmIHRtcC5Cb290ICE9ICIiIHsNCj4gaHZtLmJvb3QgPSBDLkNTdHJpbmco dG1wLkJvb3QpfQ0KPiBpZiBlcnIgOj0gdG1wLlVzYi50b0MoJmh2bS51c2IpOyBlcnIgIT0gbmls IHsNCj4gcmV0dXJuIGZtdC5FcnJvcmYoImNvbnZlcnRpbmcgZmllbGQgVXNiOiAldiIsIGVycikN Cj4gfQ0KPiBodm0udXNidmVyc2lvbiA9IEMuaW50KHRtcC5Vc2J2ZXJzaW9uKQ0KPiAraHZtLnVz YmRldmljZSA9IG5pbA0KPiBpZiB0bXAuVXNiZGV2aWNlICE9ICIiIHsNCj4gaHZtLnVzYmRldmlj ZSA9IEMuQ1N0cmluZyh0bXAuVXNiZGV2aWNlKX0NCj4gaWYgZXJyIDo9IHRtcC5Wa2JEZXZpY2Uu dG9DKCZodm0udmtiX2RldmljZSk7IGVyciAhPSBuaWwgew0KPiByZXR1cm4gZm10LkVycm9yZigi Y29udmVydGluZyBmaWVsZCBWa2JEZXZpY2U6ICV2IiwgZXJyKQ0KPiB9DQo+ICtodm0uc291bmRo dyA9IG5pbA0KPiBpZiB0bXAuU291bmRodyAhPSAiIiB7DQo+IGh2bS5zb3VuZGh3ID0gQy5DU3Ry aW5nKHRtcC5Tb3VuZGh3KX0NCj4gaWYgZXJyIDo9IHRtcC5YZW5QbGF0Zm9ybVBjaS50b0MoJmh2 bS54ZW5fcGxhdGZvcm1fcGNpKTsgZXJyICE9IG5pbCB7DQo+IEBAIC0xNTUwLDE4ICsxNTk4LDIz IEBAIGlmICFvayB7DQo+IHJldHVybiBlcnJvcnMuTmV3KCJ3cm9uZyB0eXBlIGZvciB1bmlvbiBr ZXkgdHlwZSIpDQo+IH0NCj4gdmFyIHB2IEMubGlieGxfZG9tYWluX2J1aWxkX2luZm9fdHlwZV91 bmlvbl9wdg0KPiArcHYua2VybmVsID0gbmlsDQo+IGlmIHRtcC5LZXJuZWwgIT0gIiIgew0KPiBw di5rZXJuZWwgPSBDLkNTdHJpbmcodG1wLktlcm5lbCl9DQo+IHB2LnNsYWNrX21lbWtiID0gQy51 aW50NjRfdCh0bXAuU2xhY2tNZW1rYikNCj4gK3B2LmJvb3Rsb2FkZXIgPSBuaWwNCj4gaWYgdG1w LkJvb3Rsb2FkZXIgIT0gIiIgew0KPiBwdi5ib290bG9hZGVyID0gQy5DU3RyaW5nKHRtcC5Cb290 bG9hZGVyKX0NCj4gaWYgZXJyIDo9IHRtcC5Cb290bG9hZGVyQXJncy50b0MoJnB2LmJvb3Rsb2Fk ZXJfYXJncyk7IGVyciAhPSBuaWwgew0KPiByZXR1cm4gZm10LkVycm9yZigiY29udmVydGluZyBm aWVsZCBCb290bG9hZGVyQXJnczogJXYiLCBlcnIpDQo+IH0NCj4gK3B2LmNtZGxpbmUgPSBuaWwN Cj4gaWYgdG1wLkNtZGxpbmUgIT0gIiIgew0KPiBwdi5jbWRsaW5lID0gQy5DU3RyaW5nKHRtcC5D bWRsaW5lKX0NCj4gK3B2LnJhbWRpc2sgPSBuaWwNCj4gaWYgdG1wLlJhbWRpc2sgIT0gIiIgew0K PiBwdi5yYW1kaXNrID0gQy5DU3RyaW5nKHRtcC5SYW1kaXNrKX0NCj4gK3B2LmZlYXR1cmVzID0g bmlsDQo+IGlmIHRtcC5GZWF0dXJlcyAhPSAiIiB7DQo+IHB2LmZlYXR1cmVzID0gQy5DU3RyaW5n KHRtcC5GZWF0dXJlcyl9DQo+IGlmIGVyciA6PSB0bXAuRTgyMEhvc3QudG9DKCZwdi5lODIwX2hv c3QpOyBlcnIgIT0gbmlsIHsNCj4gQEAgLTE1NzgsMTAgKzE2MzEsMTMgQEAgdmFyIHB2aCBDLmxp YnhsX2RvbWFpbl9idWlsZF9pbmZvX3R5cGVfdW5pb25fcHZoDQo+IGlmIGVyciA6PSB0bXAuUHZz aGltLnRvQygmcHZoLnB2c2hpbSk7IGVyciAhPSBuaWwgew0KPiByZXR1cm4gZm10LkVycm9yZigi Y29udmVydGluZyBmaWVsZCBQdnNoaW06ICV2IiwgZXJyKQ0KPiB9DQo+ICtwdmgucHZzaGltX3Bh dGggPSBuaWwNCj4gaWYgdG1wLlB2c2hpbVBhdGggIT0gIiIgew0KPiBwdmgucHZzaGltX3BhdGgg PSBDLkNTdHJpbmcodG1wLlB2c2hpbVBhdGgpfQ0KPiArcHZoLnB2c2hpbV9jbWRsaW5lID0gbmls DQo+IGlmIHRtcC5QdnNoaW1DbWRsaW5lICE9ICIiIHsNCj4gcHZoLnB2c2hpbV9jbWRsaW5lID0g Qy5DU3RyaW5nKHRtcC5QdnNoaW1DbWRsaW5lKX0NCj4gK3B2aC5wdnNoaW1fZXh0cmEgPSBuaWwN Cj4gaWYgdG1wLlB2c2hpbUV4dHJhICE9ICIiIHsNCj4gcHZoLnB2c2hpbV9leHRyYSA9IEMuQ1N0 cmluZyh0bXAuUHZzaGltRXh0cmEpfQ0KPiBwdmhCeXRlcyA6PSBDLkdvQnl0ZXModW5zYWZlLlBv aW50ZXIoJnB2aCksQy5zaXplb2ZfbGlieGxfZG9tYWluX2J1aWxkX2luZm9fdHlwZV91bmlvbl9w dmgpDQo+IEBAIC0xNjM1LDYgKzE2OTEsNyBAQCBDLmxpYnhsX2RldmljZV92ZmJfZGlzcG9zZSh4 Yyl9DQo+IH0oKQ0KPiANCj4geGMuYmFja2VuZF9kb21pZCA9IEMubGlieGxfZG9taWQoeC5CYWNr ZW5kRG9taWQpDQo+ICt4Yy5iYWNrZW5kX2RvbW5hbWUgPSBuaWwNCj4gaWYgeC5CYWNrZW5kRG9t bmFtZSAhPSAiIiB7DQo+IHhjLmJhY2tlbmRfZG9tbmFtZSA9IEMuQ1N0cmluZyh4LkJhY2tlbmRE b21uYW1lKX0NCj4geGMuZGV2aWQgPSBDLmxpYnhsX2RldmlkKHguRGV2aWQpDQo+IEBAIC0xNjQ0 LDYgKzE3MDEsNyBAQCByZXR1cm4gZm10LkVycm9yZigiY29udmVydGluZyBmaWVsZCBWbmM6ICV2 IiwgZXJyKQ0KPiBpZiBlcnIgOj0geC5TZGwudG9DKCZ4Yy5zZGwpOyBlcnIgIT0gbmlsIHsNCj4g cmV0dXJuIGZtdC5FcnJvcmYoImNvbnZlcnRpbmcgZmllbGQgU2RsOiAldiIsIGVycikNCj4gfQ0K PiAreGMua2V5bWFwID0gbmlsDQo+IGlmIHguS2V5bWFwICE9ICIiIHsNCj4geGMua2V5bWFwID0g Qy5DU3RyaW5nKHguS2V5bWFwKX0NCj4gDQo+IEBAIC0xNjg5LDEwICsxNzQ3LDEyIEBAIEMubGli eGxfZGV2aWNlX3ZrYl9kaXNwb3NlKHhjKX0NCj4gfSgpDQo+IA0KPiB4Yy5iYWNrZW5kX2RvbWlk ID0gQy5saWJ4bF9kb21pZCh4LkJhY2tlbmREb21pZCkNCj4gK3hjLmJhY2tlbmRfZG9tbmFtZSA9 IG5pbA0KPiBpZiB4LkJhY2tlbmREb21uYW1lICE9ICIiIHsNCj4geGMuYmFja2VuZF9kb21uYW1l ID0gQy5DU3RyaW5nKHguQmFja2VuZERvbW5hbWUpfQ0KPiB4Yy5kZXZpZCA9IEMubGlieGxfZGV2 aWQoeC5EZXZpZCkNCj4geGMuYmFja2VuZF90eXBlID0gQy5saWJ4bF92a2JfYmFja2VuZCh4LkJh Y2tlbmRUeXBlKQ0KPiAreGMudW5pcXVlX2lkID0gbmlsDQo+IGlmIHguVW5pcXVlSWQgIT0gIiIg ew0KPiB4Yy51bmlxdWVfaWQgPSBDLkNTdHJpbmcoeC5VbmlxdWVJZCl9DQo+IHhjLmZlYXR1cmVf ZGlzYWJsZV9rZXlib2FyZCA9IEMuYm9vbCh4LkZlYXR1cmVEaXNhYmxlS2V5Ym9hcmQpDQo+IEBA IC0xNzU4LDE0ICsxODE4LDE4IEBAIEMubGlieGxfZGV2aWNlX2Rpc2tfZGlzcG9zZSh4Yyl9DQo+ IH0oKQ0KPiANCj4geGMuYmFja2VuZF9kb21pZCA9IEMubGlieGxfZG9taWQoeC5CYWNrZW5kRG9t aWQpDQo+ICt4Yy5iYWNrZW5kX2RvbW5hbWUgPSBuaWwNCj4gaWYgeC5CYWNrZW5kRG9tbmFtZSAh PSAiIiB7DQo+IHhjLmJhY2tlbmRfZG9tbmFtZSA9IEMuQ1N0cmluZyh4LkJhY2tlbmREb21uYW1l KX0NCj4gK3hjLnBkZXZfcGF0aCA9IG5pbA0KPiBpZiB4LlBkZXZQYXRoICE9ICIiIHsNCj4geGMu cGRldl9wYXRoID0gQy5DU3RyaW5nKHguUGRldlBhdGgpfQ0KPiAreGMudmRldiA9IG5pbA0KPiBp ZiB4LlZkZXYgIT0gIiIgew0KPiB4Yy52ZGV2ID0gQy5DU3RyaW5nKHguVmRldil9DQo+IHhjLmJh Y2tlbmQgPSBDLmxpYnhsX2Rpc2tfYmFja2VuZCh4LkJhY2tlbmQpDQo+IHhjLmZvcm1hdCA9IEMu bGlieGxfZGlza19mb3JtYXQoeC5Gb3JtYXQpDQo+ICt4Yy5zY3JpcHQgPSBuaWwNCj4gaWYgeC5T Y3JpcHQgIT0gIiIgew0KPiB4Yy5zY3JpcHQgPSBDLkNTdHJpbmcoeC5TY3JpcHQpfQ0KPiB4Yy5y ZW1vdmFibGUgPSBDLmludCh4LlJlbW92YWJsZSkNCj4gQEAgLTE3ODEsMTMgKzE4NDUsMTcgQEAg cmV0dXJuIGZtdC5FcnJvcmYoImNvbnZlcnRpbmcgZmllbGQgQ29sb0VuYWJsZTogJXYiLCBlcnIp DQo+IGlmIGVyciA6PSB4LkNvbG9SZXN0b3JlRW5hYmxlLnRvQygmeGMuY29sb19yZXN0b3JlX2Vu YWJsZSk7IGVyciAhPSBuaWwgew0KPiByZXR1cm4gZm10LkVycm9yZigiY29udmVydGluZyBmaWVs ZCBDb2xvUmVzdG9yZUVuYWJsZTogJXYiLCBlcnIpDQo+IH0NCj4gK3hjLmNvbG9faG9zdCA9IG5p bA0KPiBpZiB4LkNvbG9Ib3N0ICE9ICIiIHsNCj4geGMuY29sb19ob3N0ID0gQy5DU3RyaW5nKHgu Q29sb0hvc3QpfQ0KPiB4Yy5jb2xvX3BvcnQgPSBDLmludCh4LkNvbG9Qb3J0KQ0KPiAreGMuY29s b19leHBvcnQgPSBuaWwNCj4gaWYgeC5Db2xvRXhwb3J0ICE9ICIiIHsNCj4geGMuY29sb19leHBv cnQgPSBDLkNTdHJpbmcoeC5Db2xvRXhwb3J0KX0NCj4gK3hjLmFjdGl2ZV9kaXNrID0gbmlsDQo+ IGlmIHguQWN0aXZlRGlzayAhPSAiIiB7DQo+IHhjLmFjdGl2ZV9kaXNrID0gQy5DU3RyaW5nKHgu QWN0aXZlRGlzayl9DQo+ICt4Yy5oaWRkZW5fZGlzayA9IG5pbA0KPiBpZiB4LkhpZGRlbkRpc2sg IT0gIiIgew0KPiB4Yy5oaWRkZW5fZGlzayA9IEMuQ1N0cmluZyh4LkhpZGRlbkRpc2spfQ0KPiAN Cj4gQEAgLTE4ODMsMTI0ICsxOTUxLDE4MCBAQCBDLmxpYnhsX2RldmljZV9uaWNfZGlzcG9zZSh4 Yyl9DQo+IH0oKQ0KPiANCj4geGMuYmFja2VuZF9kb21pZCA9IEMubGlieGxfZG9taWQoeC5CYWNr ZW5kRG9taWQpDQo+ICt4Yy5iYWNrZW5kX2RvbW5hbWUgPSBuaWwNCj4gaWYgeC5CYWNrZW5kRG9t bmFtZSAhPSAiIiB7DQo+IHhjLmJhY2tlbmRfZG9tbmFtZSA9IEMuQ1N0cmluZyh4LkJhY2tlbmRE b21uYW1lKX0NCj4geGMuZGV2aWQgPSBDLmxpYnhsX2RldmlkKHguRGV2aWQpDQo+IHhjLm10dSA9 IEMuaW50KHguTXR1KQ0KPiAreGMubW9kZWwgPSBuaWwNCj4gaWYgeC5Nb2RlbCAhPSAiIiB7DQo+ IHhjLm1vZGVsID0gQy5DU3RyaW5nKHguTW9kZWwpfQ0KPiBpZiBlcnIgOj0geC5NYWMudG9DKCZ4 Yy5tYWMpOyBlcnIgIT0gbmlsIHsNCj4gcmV0dXJuIGZtdC5FcnJvcmYoImNvbnZlcnRpbmcgZmll bGQgTWFjOiAldiIsIGVycikNCj4gfQ0KPiAreGMuaXAgPSBuaWwNCj4gaWYgeC5JcCAhPSAiIiB7 DQo+IHhjLmlwID0gQy5DU3RyaW5nKHguSXApfQ0KPiAreGMuYnJpZGdlID0gbmlsDQo+IGlmIHgu QnJpZGdlICE9ICIiIHsNCj4geGMuYnJpZGdlID0gQy5DU3RyaW5nKHguQnJpZGdlKX0NCj4gK3hj LmlmbmFtZSA9IG5pbA0KPiBpZiB4LklmbmFtZSAhPSAiIiB7DQo+IHhjLmlmbmFtZSA9IEMuQ1N0 cmluZyh4LklmbmFtZSl9DQo+ICt4Yy5zY3JpcHQgPSBuaWwNCj4gaWYgeC5TY3JpcHQgIT0gIiIg ew0KPiB4Yy5zY3JpcHQgPSBDLkNTdHJpbmcoeC5TY3JpcHQpfQ0KPiB4Yy5uaWN0eXBlID0gQy5s aWJ4bF9uaWNfdHlwZSh4Lk5pY3R5cGUpDQo+IHhjLnJhdGVfYnl0ZXNfcGVyX2ludGVydmFsID0g Qy51aW50NjRfdCh4LlJhdGVCeXRlc1BlckludGVydmFsKQ0KPiB4Yy5yYXRlX2ludGVydmFsX3Vz ZWNzID0gQy51aW50MzJfdCh4LlJhdGVJbnRlcnZhbFVzZWNzKQ0KPiAreGMuZ2F0ZXdheWRldiA9 IG5pbA0KPiBpZiB4LkdhdGV3YXlkZXYgIT0gIiIgew0KPiB4Yy5nYXRld2F5ZGV2ID0gQy5DU3Ry aW5nKHguR2F0ZXdheWRldil9DQo+ICt4Yy5jb2xvZnRfZm9yd2FyZGRldiA9IG5pbA0KPiBpZiB4 LkNvbG9mdEZvcndhcmRkZXYgIT0gIiIgew0KPiB4Yy5jb2xvZnRfZm9yd2FyZGRldiA9IEMuQ1N0 cmluZyh4LkNvbG9mdEZvcndhcmRkZXYpfQ0KPiAreGMuY29sb19zb2NrX21pcnJvcl9pZCA9IG5p bA0KPiBpZiB4LkNvbG9Tb2NrTWlycm9ySWQgIT0gIiIgew0KPiB4Yy5jb2xvX3NvY2tfbWlycm9y X2lkID0gQy5DU3RyaW5nKHguQ29sb1NvY2tNaXJyb3JJZCl9DQo+ICt4Yy5jb2xvX3NvY2tfbWly cm9yX2lwID0gbmlsDQo+IGlmIHguQ29sb1NvY2tNaXJyb3JJcCAhPSAiIiB7DQo+IHhjLmNvbG9f c29ja19taXJyb3JfaXAgPSBDLkNTdHJpbmcoeC5Db2xvU29ja01pcnJvcklwKX0NCj4gK3hjLmNv bG9fc29ja19taXJyb3JfcG9ydCA9IG5pbA0KPiBpZiB4LkNvbG9Tb2NrTWlycm9yUG9ydCAhPSAi IiB7DQo+IHhjLmNvbG9fc29ja19taXJyb3JfcG9ydCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrTWly cm9yUG9ydCl9DQo+ICt4Yy5jb2xvX3NvY2tfY29tcGFyZV9wcmlfaW5faWQgPSBuaWwNCj4gaWYg eC5Db2xvU29ja0NvbXBhcmVQcmlJbklkICE9ICIiIHsNCj4geGMuY29sb19zb2NrX2NvbXBhcmVf cHJpX2luX2lkID0gQy5DU3RyaW5nKHguQ29sb1NvY2tDb21wYXJlUHJpSW5JZCl9DQo+ICt4Yy5j b2xvX3NvY2tfY29tcGFyZV9wcmlfaW5faXAgPSBuaWwNCj4gaWYgeC5Db2xvU29ja0NvbXBhcmVQ cmlJbklwICE9ICIiIHsNCj4geGMuY29sb19zb2NrX2NvbXBhcmVfcHJpX2luX2lwID0gQy5DU3Ry aW5nKHguQ29sb1NvY2tDb21wYXJlUHJpSW5JcCl9DQo+ICt4Yy5jb2xvX3NvY2tfY29tcGFyZV9w cmlfaW5fcG9ydCA9IG5pbA0KPiBpZiB4LkNvbG9Tb2NrQ29tcGFyZVByaUluUG9ydCAhPSAiIiB7 DQo+IHhjLmNvbG9fc29ja19jb21wYXJlX3ByaV9pbl9wb3J0ID0gQy5DU3RyaW5nKHguQ29sb1Nv Y2tDb21wYXJlUHJpSW5Qb3J0KX0NCj4gK3hjLmNvbG9fc29ja19jb21wYXJlX3NlY19pbl9pZCA9 IG5pbA0KPiBpZiB4LkNvbG9Tb2NrQ29tcGFyZVNlY0luSWQgIT0gIiIgew0KPiB4Yy5jb2xvX3Nv Y2tfY29tcGFyZV9zZWNfaW5faWQgPSBDLkNTdHJpbmcoeC5Db2xvU29ja0NvbXBhcmVTZWNJbklk KX0NCj4gK3hjLmNvbG9fc29ja19jb21wYXJlX3NlY19pbl9pcCA9IG5pbA0KPiBpZiB4LkNvbG9T b2NrQ29tcGFyZVNlY0luSXAgIT0gIiIgew0KPiB4Yy5jb2xvX3NvY2tfY29tcGFyZV9zZWNfaW5f aXAgPSBDLkNTdHJpbmcoeC5Db2xvU29ja0NvbXBhcmVTZWNJbklwKX0NCj4gK3hjLmNvbG9fc29j a19jb21wYXJlX3NlY19pbl9wb3J0ID0gbmlsDQo+IGlmIHguQ29sb1NvY2tDb21wYXJlU2VjSW5Q b3J0ICE9ICIiIHsNCj4geGMuY29sb19zb2NrX2NvbXBhcmVfc2VjX2luX3BvcnQgPSBDLkNTdHJp bmcoeC5Db2xvU29ja0NvbXBhcmVTZWNJblBvcnQpfQ0KPiAreGMuY29sb19zb2NrX2NvbXBhcmVf bm90aWZ5X2lkID0gbmlsDQo+IGlmIHguQ29sb1NvY2tDb21wYXJlTm90aWZ5SWQgIT0gIiIgew0K PiB4Yy5jb2xvX3NvY2tfY29tcGFyZV9ub3RpZnlfaWQgPSBDLkNTdHJpbmcoeC5Db2xvU29ja0Nv bXBhcmVOb3RpZnlJZCl9DQo+ICt4Yy5jb2xvX3NvY2tfY29tcGFyZV9ub3RpZnlfaXAgPSBuaWwN Cj4gaWYgeC5Db2xvU29ja0NvbXBhcmVOb3RpZnlJcCAhPSAiIiB7DQo+IHhjLmNvbG9fc29ja19j b21wYXJlX25vdGlmeV9pcCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrQ29tcGFyZU5vdGlmeUlwKX0N Cj4gK3hjLmNvbG9fc29ja19jb21wYXJlX25vdGlmeV9wb3J0ID0gbmlsDQo+IGlmIHguQ29sb1Nv Y2tDb21wYXJlTm90aWZ5UG9ydCAhPSAiIiB7DQo+IHhjLmNvbG9fc29ja19jb21wYXJlX25vdGlm eV9wb3J0ID0gQy5DU3RyaW5nKHguQ29sb1NvY2tDb21wYXJlTm90aWZ5UG9ydCl9DQo+ICt4Yy5j b2xvX3NvY2tfcmVkaXJlY3RvcjBfaWQgPSBuaWwNCj4gaWYgeC5Db2xvU29ja1JlZGlyZWN0b3Iw SWQgIT0gIiIgew0KPiB4Yy5jb2xvX3NvY2tfcmVkaXJlY3RvcjBfaWQgPSBDLkNTdHJpbmcoeC5D b2xvU29ja1JlZGlyZWN0b3IwSWQpfQ0KPiAreGMuY29sb19zb2NrX3JlZGlyZWN0b3IwX2lwID0g bmlsDQo+IGlmIHguQ29sb1NvY2tSZWRpcmVjdG9yMElwICE9ICIiIHsNCj4geGMuY29sb19zb2Nr X3JlZGlyZWN0b3IwX2lwID0gQy5DU3RyaW5nKHguQ29sb1NvY2tSZWRpcmVjdG9yMElwKX0NCj4g K3hjLmNvbG9fc29ja19yZWRpcmVjdG9yMF9wb3J0ID0gbmlsDQo+IGlmIHguQ29sb1NvY2tSZWRp cmVjdG9yMFBvcnQgIT0gIiIgew0KPiB4Yy5jb2xvX3NvY2tfcmVkaXJlY3RvcjBfcG9ydCA9IEMu Q1N0cmluZyh4LkNvbG9Tb2NrUmVkaXJlY3RvcjBQb3J0KX0NCj4gK3hjLmNvbG9fc29ja19yZWRp cmVjdG9yMV9pZCA9IG5pbA0KPiBpZiB4LkNvbG9Tb2NrUmVkaXJlY3RvcjFJZCAhPSAiIiB7DQo+ IHhjLmNvbG9fc29ja19yZWRpcmVjdG9yMV9pZCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrUmVkaXJl Y3RvcjFJZCl9DQo+ICt4Yy5jb2xvX3NvY2tfcmVkaXJlY3RvcjFfaXAgPSBuaWwNCj4gaWYgeC5D b2xvU29ja1JlZGlyZWN0b3IxSXAgIT0gIiIgew0KPiB4Yy5jb2xvX3NvY2tfcmVkaXJlY3RvcjFf aXAgPSBDLkNTdHJpbmcoeC5Db2xvU29ja1JlZGlyZWN0b3IxSXApfQ0KPiAreGMuY29sb19zb2Nr X3JlZGlyZWN0b3IxX3BvcnQgPSBuaWwNCj4gaWYgeC5Db2xvU29ja1JlZGlyZWN0b3IxUG9ydCAh PSAiIiB7DQo+IHhjLmNvbG9fc29ja19yZWRpcmVjdG9yMV9wb3J0ID0gQy5DU3RyaW5nKHguQ29s b1NvY2tSZWRpcmVjdG9yMVBvcnQpfQ0KPiAreGMuY29sb19zb2NrX3JlZGlyZWN0b3IyX2lkID0g bmlsDQo+IGlmIHguQ29sb1NvY2tSZWRpcmVjdG9yMklkICE9ICIiIHsNCj4geGMuY29sb19zb2Nr X3JlZGlyZWN0b3IyX2lkID0gQy5DU3RyaW5nKHguQ29sb1NvY2tSZWRpcmVjdG9yMklkKX0NCj4g K3hjLmNvbG9fc29ja19yZWRpcmVjdG9yMl9pcCA9IG5pbA0KPiBpZiB4LkNvbG9Tb2NrUmVkaXJl Y3RvcjJJcCAhPSAiIiB7DQo+IHhjLmNvbG9fc29ja19yZWRpcmVjdG9yMl9pcCA9IEMuQ1N0cmlu Zyh4LkNvbG9Tb2NrUmVkaXJlY3RvcjJJcCl9DQo+ICt4Yy5jb2xvX3NvY2tfcmVkaXJlY3RvcjJf cG9ydCA9IG5pbA0KPiBpZiB4LkNvbG9Tb2NrUmVkaXJlY3RvcjJQb3J0ICE9ICIiIHsNCj4geGMu Y29sb19zb2NrX3JlZGlyZWN0b3IyX3BvcnQgPSBDLkNTdHJpbmcoeC5Db2xvU29ja1JlZGlyZWN0 b3IyUG9ydCl9DQo+ICt4Yy5jb2xvX2ZpbHRlcl9taXJyb3JfcXVldWUgPSBuaWwNCj4gaWYgeC5D b2xvRmlsdGVyTWlycm9yUXVldWUgIT0gIiIgew0KPiB4Yy5jb2xvX2ZpbHRlcl9taXJyb3JfcXVl dWUgPSBDLkNTdHJpbmcoeC5Db2xvRmlsdGVyTWlycm9yUXVldWUpfQ0KPiAreGMuY29sb19maWx0 ZXJfbWlycm9yX291dGRldiA9IG5pbA0KPiBpZiB4LkNvbG9GaWx0ZXJNaXJyb3JPdXRkZXYgIT0g IiIgew0KPiB4Yy5jb2xvX2ZpbHRlcl9taXJyb3Jfb3V0ZGV2ID0gQy5DU3RyaW5nKHguQ29sb0Zp bHRlck1pcnJvck91dGRldil9DQo+ICt4Yy5jb2xvX2ZpbHRlcl9yZWRpcmVjdG9yMF9xdWV1ZSA9 IG5pbA0KPiBpZiB4LkNvbG9GaWx0ZXJSZWRpcmVjdG9yMFF1ZXVlICE9ICIiIHsNCj4geGMuY29s b19maWx0ZXJfcmVkaXJlY3RvcjBfcXVldWUgPSBDLkNTdHJpbmcoeC5Db2xvRmlsdGVyUmVkaXJl Y3RvcjBRdWV1ZSl9DQo+ICt4Yy5jb2xvX2ZpbHRlcl9yZWRpcmVjdG9yMF9pbmRldiA9IG5pbA0K PiBpZiB4LkNvbG9GaWx0ZXJSZWRpcmVjdG9yMEluZGV2ICE9ICIiIHsNCj4geGMuY29sb19maWx0 ZXJfcmVkaXJlY3RvcjBfaW5kZXYgPSBDLkNTdHJpbmcoeC5Db2xvRmlsdGVyUmVkaXJlY3RvcjBJ bmRldil9DQo+ICt4Yy5jb2xvX2ZpbHRlcl9yZWRpcmVjdG9yMF9vdXRkZXYgPSBuaWwNCj4gaWYg eC5Db2xvRmlsdGVyUmVkaXJlY3RvcjBPdXRkZXYgIT0gIiIgew0KPiB4Yy5jb2xvX2ZpbHRlcl9y ZWRpcmVjdG9yMF9vdXRkZXYgPSBDLkNTdHJpbmcoeC5Db2xvRmlsdGVyUmVkaXJlY3RvcjBPdXRk ZXYpfQ0KPiAreGMuY29sb19maWx0ZXJfcmVkaXJlY3RvcjFfcXVldWUgPSBuaWwNCj4gaWYgeC5D b2xvRmlsdGVyUmVkaXJlY3RvcjFRdWV1ZSAhPSAiIiB7DQo+IHhjLmNvbG9fZmlsdGVyX3JlZGly ZWN0b3IxX3F1ZXVlID0gQy5DU3RyaW5nKHguQ29sb0ZpbHRlclJlZGlyZWN0b3IxUXVldWUpfQ0K PiAreGMuY29sb19maWx0ZXJfcmVkaXJlY3RvcjFfaW5kZXYgPSBuaWwNCj4gaWYgeC5Db2xvRmls dGVyUmVkaXJlY3RvcjFJbmRldiAhPSAiIiB7DQo+IHhjLmNvbG9fZmlsdGVyX3JlZGlyZWN0b3Ix X2luZGV2ID0gQy5DU3RyaW5nKHguQ29sb0ZpbHRlclJlZGlyZWN0b3IxSW5kZXYpfQ0KPiAreGMu Y29sb19maWx0ZXJfcmVkaXJlY3RvcjFfb3V0ZGV2ID0gbmlsDQo+IGlmIHguQ29sb0ZpbHRlclJl ZGlyZWN0b3IxT3V0ZGV2ICE9ICIiIHsNCj4geGMuY29sb19maWx0ZXJfcmVkaXJlY3RvcjFfb3V0 ZGV2ID0gQy5DU3RyaW5nKHguQ29sb0ZpbHRlclJlZGlyZWN0b3IxT3V0ZGV2KX0NCj4gK3hjLmNv bG9fY29tcGFyZV9wcmlfaW4gPSBuaWwNCj4gaWYgeC5Db2xvQ29tcGFyZVByaUluICE9ICIiIHsN Cj4geGMuY29sb19jb21wYXJlX3ByaV9pbiA9IEMuQ1N0cmluZyh4LkNvbG9Db21wYXJlUHJpSW4p fQ0KPiAreGMuY29sb19jb21wYXJlX3NlY19pbiA9IG5pbA0KPiBpZiB4LkNvbG9Db21wYXJlU2Vj SW4gIT0gIiIgew0KPiB4Yy5jb2xvX2NvbXBhcmVfc2VjX2luID0gQy5DU3RyaW5nKHguQ29sb0Nv bXBhcmVTZWNJbil9DQo+ICt4Yy5jb2xvX2NvbXBhcmVfb3V0ID0gbmlsDQo+IGlmIHguQ29sb0Nv bXBhcmVPdXQgIT0gIiIgew0KPiB4Yy5jb2xvX2NvbXBhcmVfb3V0ID0gQy5DU3RyaW5nKHguQ29s b0NvbXBhcmVPdXQpfQ0KPiAreGMuY29sb19jb21wYXJlX25vdGlmeV9kZXYgPSBuaWwNCj4gaWYg eC5Db2xvQ29tcGFyZU5vdGlmeURldiAhPSAiIiB7DQo+IHhjLmNvbG9fY29tcGFyZV9ub3RpZnlf ZGV2ID0gQy5DU3RyaW5nKHguQ29sb0NvbXBhcmVOb3RpZnlEZXYpfQ0KPiAreGMuY29sb19zb2Nr X3NlY19yZWRpcmVjdG9yMF9pZCA9IG5pbA0KPiBpZiB4LkNvbG9Tb2NrU2VjUmVkaXJlY3RvcjBJ ZCAhPSAiIiB7DQo+IHhjLmNvbG9fc29ja19zZWNfcmVkaXJlY3RvcjBfaWQgPSBDLkNTdHJpbmco eC5Db2xvU29ja1NlY1JlZGlyZWN0b3IwSWQpfQ0KPiAreGMuY29sb19zb2NrX3NlY19yZWRpcmVj dG9yMF9pcCA9IG5pbA0KPiBpZiB4LkNvbG9Tb2NrU2VjUmVkaXJlY3RvcjBJcCAhPSAiIiB7DQo+ IHhjLmNvbG9fc29ja19zZWNfcmVkaXJlY3RvcjBfaXAgPSBDLkNTdHJpbmcoeC5Db2xvU29ja1Nl Y1JlZGlyZWN0b3IwSXApfQ0KPiAreGMuY29sb19zb2NrX3NlY19yZWRpcmVjdG9yMF9wb3J0ID0g bmlsDQo+IGlmIHguQ29sb1NvY2tTZWNSZWRpcmVjdG9yMFBvcnQgIT0gIiIgew0KPiB4Yy5jb2xv X3NvY2tfc2VjX3JlZGlyZWN0b3IwX3BvcnQgPSBDLkNTdHJpbmcoeC5Db2xvU29ja1NlY1JlZGly ZWN0b3IwUG9ydCl9DQo+ICt4Yy5jb2xvX3NvY2tfc2VjX3JlZGlyZWN0b3IxX2lkID0gbmlsDQo+ IGlmIHguQ29sb1NvY2tTZWNSZWRpcmVjdG9yMUlkICE9ICIiIHsNCj4geGMuY29sb19zb2NrX3Nl Y19yZWRpcmVjdG9yMV9pZCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrU2VjUmVkaXJlY3RvcjFJZCl9 DQo+ICt4Yy5jb2xvX3NvY2tfc2VjX3JlZGlyZWN0b3IxX2lwID0gbmlsDQo+IGlmIHguQ29sb1Nv Y2tTZWNSZWRpcmVjdG9yMUlwICE9ICIiIHsNCj4geGMuY29sb19zb2NrX3NlY19yZWRpcmVjdG9y MV9pcCA9IEMuQ1N0cmluZyh4LkNvbG9Tb2NrU2VjUmVkaXJlY3RvcjFJcCl9DQo+ICt4Yy5jb2xv X3NvY2tfc2VjX3JlZGlyZWN0b3IxX3BvcnQgPSBuaWwNCj4gaWYgeC5Db2xvU29ja1NlY1JlZGly ZWN0b3IxUG9ydCAhPSAiIiB7DQo+IHhjLmNvbG9fc29ja19zZWNfcmVkaXJlY3RvcjFfcG9ydCA9 IEMuQ1N0cmluZyh4LkNvbG9Tb2NrU2VjUmVkaXJlY3RvcjFQb3J0KX0NCj4gK3hjLmNvbG9fZmls dGVyX3NlY19yZWRpcmVjdG9yMF9xdWV1ZSA9IG5pbA0KPiBpZiB4LkNvbG9GaWx0ZXJTZWNSZWRp cmVjdG9yMFF1ZXVlICE9ICIiIHsNCj4geGMuY29sb19maWx0ZXJfc2VjX3JlZGlyZWN0b3IwX3F1 ZXVlID0gQy5DU3RyaW5nKHguQ29sb0ZpbHRlclNlY1JlZGlyZWN0b3IwUXVldWUpfQ0KPiAreGMu Y29sb19maWx0ZXJfc2VjX3JlZGlyZWN0b3IwX2luZGV2ID0gbmlsDQo+IGlmIHguQ29sb0ZpbHRl clNlY1JlZGlyZWN0b3IwSW5kZXYgIT0gIiIgew0KPiB4Yy5jb2xvX2ZpbHRlcl9zZWNfcmVkaXJl Y3RvcjBfaW5kZXYgPSBDLkNTdHJpbmcoeC5Db2xvRmlsdGVyU2VjUmVkaXJlY3RvcjBJbmRldil9 DQo+ICt4Yy5jb2xvX2ZpbHRlcl9zZWNfcmVkaXJlY3RvcjBfb3V0ZGV2ID0gbmlsDQo+IGlmIHgu Q29sb0ZpbHRlclNlY1JlZGlyZWN0b3IwT3V0ZGV2ICE9ICIiIHsNCj4geGMuY29sb19maWx0ZXJf c2VjX3JlZGlyZWN0b3IwX291dGRldiA9IEMuQ1N0cmluZyh4LkNvbG9GaWx0ZXJTZWNSZWRpcmVj dG9yME91dGRldil9DQo+ICt4Yy5jb2xvX2ZpbHRlcl9zZWNfcmVkaXJlY3RvcjFfcXVldWUgPSBu aWwNCj4gaWYgeC5Db2xvRmlsdGVyU2VjUmVkaXJlY3RvcjFRdWV1ZSAhPSAiIiB7DQo+IHhjLmNv bG9fZmlsdGVyX3NlY19yZWRpcmVjdG9yMV9xdWV1ZSA9IEMuQ1N0cmluZyh4LkNvbG9GaWx0ZXJT ZWNSZWRpcmVjdG9yMVF1ZXVlKX0NCj4gK3hjLmNvbG9fZmlsdGVyX3NlY19yZWRpcmVjdG9yMV9p bmRldiA9IG5pbA0KPiBpZiB4LkNvbG9GaWx0ZXJTZWNSZWRpcmVjdG9yMUluZGV2ICE9ICIiIHsN Cj4geGMuY29sb19maWx0ZXJfc2VjX3JlZGlyZWN0b3IxX2luZGV2ID0gQy5DU3RyaW5nKHguQ29s b0ZpbHRlclNlY1JlZGlyZWN0b3IxSW5kZXYpfQ0KPiAreGMuY29sb19maWx0ZXJfc2VjX3JlZGly ZWN0b3IxX291dGRldiA9IG5pbA0KPiBpZiB4LkNvbG9GaWx0ZXJTZWNSZWRpcmVjdG9yMU91dGRl diAhPSAiIiB7DQo+IHhjLmNvbG9fZmlsdGVyX3NlY19yZWRpcmVjdG9yMV9vdXRkZXYgPSBDLkNT dHJpbmcoeC5Db2xvRmlsdGVyU2VjUmVkaXJlY3RvcjFPdXRkZXYpfQ0KPiAreGMuY29sb19maWx0 ZXJfc2VjX3Jld3JpdGVyMF9xdWV1ZSA9IG5pbA0KPiBpZiB4LkNvbG9GaWx0ZXJTZWNSZXdyaXRl cjBRdWV1ZSAhPSAiIiB7DQo+IHhjLmNvbG9fZmlsdGVyX3NlY19yZXdyaXRlcjBfcXVldWUgPSBD LkNTdHJpbmcoeC5Db2xvRmlsdGVyU2VjUmV3cml0ZXIwUXVldWUpfQ0KPiAreGMuY29sb19jaGVj a3BvaW50X2hvc3QgPSBuaWwNCj4gaWYgeC5Db2xvQ2hlY2twb2ludEhvc3QgIT0gIiIgew0KPiB4 Yy5jb2xvX2NoZWNrcG9pbnRfaG9zdCA9IEMuQ1N0cmluZyh4LkNvbG9DaGVja3BvaW50SG9zdCl9 DQo+ICt4Yy5jb2xvX2NoZWNrcG9pbnRfcG9ydCA9IG5pbA0KPiBpZiB4LkNvbG9DaGVja3BvaW50 UG9ydCAhPSAiIiB7DQo+IHhjLmNvbG9fY2hlY2twb2ludF9wb3J0ID0gQy5DU3RyaW5nKHguQ29s b0NoZWNrcG9pbnRQb3J0KX0NCj4gDQo+IEBAIC0yMDUzLDYgKzIxNzcsNyBAQCB4Yy5wb3dlcl9t Z210ID0gQy5ib29sKHguUG93ZXJNZ210KQ0KPiB4Yy5wZXJtaXNzaXZlID0gQy5ib29sKHguUGVy bWlzc2l2ZSkNCj4geGMuc2VpemUgPSBDLmJvb2woeC5TZWl6ZSkNCj4geGMucmRtX3BvbGljeSA9 IEMubGlieGxfcmRtX3Jlc2VydmVfcG9saWN5KHguUmRtUG9saWN5KQ0KPiAreGMubmFtZSA9IG5p bA0KPiBpZiB4Lk5hbWUgIT0gIiIgew0KPiB4Yy5uYW1lID0gQy5DU3RyaW5nKHguTmFtZSl9DQo+ IA0KPiBAQCAtMjEyNiw2ICsyMjUxLDcgQEAgeGMuZGV2aWQgPSBDLmxpYnhsX2RldmlkKHguRGV2 aWQpDQo+IHhjLnZlcnNpb24gPSBDLmludCh4LlZlcnNpb24pDQo+IHhjLnBvcnRzID0gQy5pbnQo eC5Qb3J0cykNCj4geGMuYmFja2VuZF9kb21pZCA9IEMubGlieGxfZG9taWQoeC5CYWNrZW5kRG9t aWQpDQo+ICt4Yy5iYWNrZW5kX2RvbW5hbWUgPSBuaWwNCj4gaWYgeC5CYWNrZW5kRG9tbmFtZSAh PSAiIiB7DQo+IHhjLmJhY2tlbmRfZG9tbmFtZSA9IEMuQ1N0cmluZyh4LkJhY2tlbmREb21uYW1l KX0NCj4gDQo+IEBAIC0yMjIzLDYgKzIzNDksNyBAQCBpZiBlcnIgIT0gbmlsew0KPiBDLmxpYnhs X2RldmljZV9kdGRldl9kaXNwb3NlKHhjKX0NCj4gfSgpDQo+IA0KPiAreGMucGF0aCA9IG5pbA0K PiBpZiB4LlBhdGggIT0gIiIgew0KPiB4Yy5wYXRoID0gQy5DU3RyaW5nKHguUGF0aCl9DQo+IA0K PiBAQCAtMjI1OSw2ICsyMzg2LDcgQEAgQy5saWJ4bF9kZXZpY2VfdnRwbV9kaXNwb3NlKHhjKX0N Cj4gfSgpDQo+IA0KPiB4Yy5iYWNrZW5kX2RvbWlkID0gQy5saWJ4bF9kb21pZCh4LkJhY2tlbmRE b21pZCkNCj4gK3hjLmJhY2tlbmRfZG9tbmFtZSA9IG5pbA0KPiBpZiB4LkJhY2tlbmREb21uYW1l ICE9ICIiIHsNCj4geGMuYmFja2VuZF9kb21uYW1lID0gQy5DU3RyaW5nKHguQmFja2VuZERvbW5h bWUpfQ0KPiB4Yy5kZXZpZCA9IEMubGlieGxfZGV2aWQoeC5EZXZpZCkNCj4gQEAgLTIyOTksMTIg KzI0MjcsMTYgQEAgQy5saWJ4bF9kZXZpY2VfcDlfZGlzcG9zZSh4Yyl9DQo+IH0oKQ0KPiANCj4g eGMuYmFja2VuZF9kb21pZCA9IEMubGlieGxfZG9taWQoeC5CYWNrZW5kRG9taWQpDQo+ICt4Yy5i YWNrZW5kX2RvbW5hbWUgPSBuaWwNCj4gaWYgeC5CYWNrZW5kRG9tbmFtZSAhPSAiIiB7DQo+IHhj LmJhY2tlbmRfZG9tbmFtZSA9IEMuQ1N0cmluZyh4LkJhY2tlbmREb21uYW1lKX0NCj4gK3hjLnRh ZyA9IG5pbA0KPiBpZiB4LlRhZyAhPSAiIiB7DQo+IHhjLnRhZyA9IEMuQ1N0cmluZyh4LlRhZyl9 DQo+ICt4Yy5wYXRoID0gbmlsDQo+IGlmIHguUGF0aCAhPSAiIiB7DQo+IHhjLnBhdGggPSBDLkNT dHJpbmcoeC5QYXRoKX0NCj4gK3hjLnNlY3VyaXR5X21vZGVsID0gbmlsDQo+IGlmIHguU2VjdXJp dHlNb2RlbCAhPSAiIiB7DQo+IHhjLnNlY3VyaXR5X21vZGVsID0gQy5DU3RyaW5nKHguU2VjdXJp dHlNb2RlbCl9DQo+IHhjLmRldmlkID0gQy5saWJ4bF9kZXZpZCh4LkRldmlkKQ0KPiBAQCAtMjMz OSw2ICsyNDcxLDcgQEAgQy5saWJ4bF9kZXZpY2VfcHZjYWxsc2lmX2Rpc3Bvc2UoeGMpfQ0KPiB9 KCkNCj4gDQo+IHhjLmJhY2tlbmRfZG9taWQgPSBDLmxpYnhsX2RvbWlkKHguQmFja2VuZERvbWlk KQ0KPiAreGMuYmFja2VuZF9kb21uYW1lID0gbmlsDQo+IGlmIHguQmFja2VuZERvbW5hbWUgIT0g IiIgew0KPiB4Yy5iYWNrZW5kX2RvbW5hbWUgPSBDLkNTdHJpbmcoeC5CYWNrZW5kRG9tbmFtZSl9 DQo+IHhjLmRldmlkID0gQy5saWJ4bF9kZXZpZCh4LkRldmlkKQ0KPiBAQCAtMjM5OSw5ICsyNTMy LDExIEBAIEMubGlieGxfZGV2aWNlX2NoYW5uZWxfZGlzcG9zZSh4Yyl9DQo+IH0oKQ0KPiANCj4g eGMuYmFja2VuZF9kb21pZCA9IEMubGlieGxfZG9taWQoeC5CYWNrZW5kRG9taWQpDQo+ICt4Yy5i YWNrZW5kX2RvbW5hbWUgPSBuaWwNCj4gaWYgeC5CYWNrZW5kRG9tbmFtZSAhPSAiIiB7DQo+IHhj LmJhY2tlbmRfZG9tbmFtZSA9IEMuQ1N0cmluZyh4LkJhY2tlbmREb21uYW1lKX0NCj4geGMuZGV2 aWQgPSBDLmxpYnhsX2RldmlkKHguRGV2aWQpDQo+ICt4Yy5uYW1lID0gbmlsDQo+IGlmIHguTmFt ZSAhPSAiIiB7DQo+IHhjLm5hbWUgPSBDLkNTdHJpbmcoeC5OYW1lKX0NCj4geGMuY29ubmVjdGlv biA9IEMubGlieGxfY2hhbm5lbF9jb25uZWN0aW9uKHguQ29ubmVjdGlvbikNCj4gQEAgLTI0MTYs NiArMjU1MSw3IEBAIGlmICFvayB7DQo+IHJldHVybiBlcnJvcnMuTmV3KCJ3cm9uZyB0eXBlIGZv ciB1bmlvbiBrZXkgY29ubmVjdGlvbiIpDQo+IH0NCj4gdmFyIHNvY2tldCBDLmxpYnhsX2Rldmlj ZV9jaGFubmVsX2Nvbm5lY3Rpb25fdW5pb25fc29ja2V0DQo+ICtzb2NrZXQucGF0aCA9IG5pbA0K PiBpZiB0bXAuUGF0aCAhPSAiIiB7DQo+IHNvY2tldC5wYXRoID0gQy5DU3RyaW5nKHRtcC5QYXRo KX0NCj4gc29ja2V0Qnl0ZXMgOj0gQy5Hb0J5dGVzKHVuc2FmZS5Qb2ludGVyKCZzb2NrZXQpLEMu c2l6ZW9mX2xpYnhsX2RldmljZV9jaGFubmVsX2Nvbm5lY3Rpb25fdW5pb25fc29ja2V0KQ0KPiBA QCAtMjQ1Miw2ICsyNTg4LDcgQEAgaWYgZXJyICE9IG5pbHsNCj4gQy5saWJ4bF9jb25uZWN0b3Jf cGFyYW1fZGlzcG9zZSh4Yyl9DQo+IH0oKQ0KPiANCj4gK3hjLnVuaXF1ZV9pZCA9IG5pbA0KPiBp ZiB4LlVuaXF1ZUlkICE9ICIiIHsNCj4geGMudW5pcXVlX2lkID0gQy5DU3RyaW5nKHguVW5pcXVl SWQpfQ0KPiB4Yy53aWR0aCA9IEMudWludDMyX3QoeC5XaWR0aCkNCj4gQEAgLTI0OTcsNiArMjYz NCw3IEBAIEMubGlieGxfZGV2aWNlX3ZkaXNwbF9kaXNwb3NlKHhjKX0NCj4gfSgpDQo+IA0KPiB4 Yy5iYWNrZW5kX2RvbWlkID0gQy5saWJ4bF9kb21pZCh4LkJhY2tlbmREb21pZCkNCj4gK3hjLmJh Y2tlbmRfZG9tbmFtZSA9IG5pbA0KPiBpZiB4LkJhY2tlbmREb21uYW1lICE9ICIiIHsNCj4geGMu YmFja2VuZF9kb21uYW1lID0gQy5DU3RyaW5nKHguQmFja2VuZERvbW5hbWUpfQ0KPiB4Yy5kZXZp ZCA9IEMubGlieGxfZGV2aWQoeC5EZXZpZCkNCj4gQEAgLTI2MDgsNiArMjc0Niw3IEBAIGlmIGVy ciAhPSBuaWx7DQo+IEMubGlieGxfdnNuZF9zdHJlYW1fZGlzcG9zZSh4Yyl9DQo+IH0oKQ0KPiAN Cj4gK3hjLnVuaXF1ZV9pZCA9IG5pbA0KPiBpZiB4LlVuaXF1ZUlkICE9ICIiIHsNCj4geGMudW5p cXVlX2lkID0gQy5DU3RyaW5nKHguVW5pcXVlSWQpfQ0KPiB4Yy5fdHlwZSA9IEMubGlieGxfdnNu ZF9zdHJlYW1fdHlwZSh4LlR5cGUpDQo+IEBAIC0yNjU0LDYgKzI3OTMsNyBAQCBpZiBlcnIgIT0g bmlsew0KPiBDLmxpYnhsX3ZzbmRfcGNtX2Rpc3Bvc2UoeGMpfQ0KPiB9KCkNCj4gDQo+ICt4Yy5u YW1lID0gbmlsDQo+IGlmIHguTmFtZSAhPSAiIiB7DQo+IHhjLm5hbWUgPSBDLkNTdHJpbmcoeC5O YW1lKX0NCj4gaWYgZXJyIDo9IHguUGFyYW1zLnRvQygmeGMucGFyYW1zKTsgZXJyICE9IG5pbCB7 DQo+IEBAIC0yNzE0LDExICsyODU0LDE0IEBAIEMubGlieGxfZGV2aWNlX3ZzbmRfZGlzcG9zZSh4 Yyl9DQo+IH0oKQ0KPiANCj4geGMuYmFja2VuZF9kb21pZCA9IEMubGlieGxfZG9taWQoeC5CYWNr ZW5kRG9taWQpDQo+ICt4Yy5iYWNrZW5kX2RvbW5hbWUgPSBuaWwNCj4gaWYgeC5CYWNrZW5kRG9t bmFtZSAhPSAiIiB7DQo+IHhjLmJhY2tlbmRfZG9tbmFtZSA9IEMuQ1N0cmluZyh4LkJhY2tlbmRE b21uYW1lKX0NCj4geGMuZGV2aWQgPSBDLmxpYnhsX2RldmlkKHguRGV2aWQpDQo+ICt4Yy5zaG9y dF9uYW1lID0gbmlsDQo+IGlmIHguU2hvcnROYW1lICE9ICIiIHsNCj4geGMuc2hvcnRfbmFtZSA9 IEMuQ1N0cmluZyh4LlNob3J0TmFtZSl9DQo+ICt4Yy5sb25nX25hbWUgPSBuaWwNCj4gaWYgeC5M b25nTmFtZSAhPSAiIiB7DQo+IHhjLmxvbmdfbmFtZSA9IEMuQ1N0cmluZyh4LkxvbmdOYW1lKX0N Cj4gaWYgZXJyIDo9IHguUGFyYW1zLnRvQygmeGMucGFyYW1zKTsgZXJyICE9IG5pbCB7DQo+IEBA IC0zMTAzLDkgKzMyNDYsMTEgQEAgaWYgZXJyICE9IG5pbHsNCj4gQy5saWJ4bF9kaXNraW5mb19k aXNwb3NlKHhjKX0NCj4gfSgpDQo+IA0KPiAreGMuYmFja2VuZCA9IG5pbA0KPiBpZiB4LkJhY2tl bmQgIT0gIiIgew0KPiB4Yy5iYWNrZW5kID0gQy5DU3RyaW5nKHguQmFja2VuZCl9DQo+IHhjLmJh Y2tlbmRfaWQgPSBDLnVpbnQzMl90KHguQmFja2VuZElkKQ0KPiAreGMuZnJvbnRlbmQgPSBuaWwN Cj4gaWYgeC5Gcm9udGVuZCAhPSAiIiB7DQo+IHhjLmZyb250ZW5kID0gQy5DU3RyaW5nKHguRnJv bnRlbmQpfQ0KPiB4Yy5mcm9udGVuZF9pZCA9IEMudWludDMyX3QoeC5Gcm9udGVuZElkKQ0KPiBA QCAtMzE0OSw5ICszMjk0LDExIEBAIGlmIGVyciAhPSBuaWx7DQo+IEMubGlieGxfbmljaW5mb19k aXNwb3NlKHhjKX0NCj4gfSgpDQo+IA0KPiAreGMuYmFja2VuZCA9IG5pbA0KPiBpZiB4LkJhY2tl bmQgIT0gIiIgew0KPiB4Yy5iYWNrZW5kID0gQy5DU3RyaW5nKHguQmFja2VuZCl9DQo+IHhjLmJh Y2tlbmRfaWQgPSBDLnVpbnQzMl90KHguQmFja2VuZElkKQ0KPiAreGMuZnJvbnRlbmQgPSBuaWwN Cj4gaWYgeC5Gcm9udGVuZCAhPSAiIiB7DQo+IHhjLmZyb250ZW5kID0gQy5DU3RyaW5nKHguRnJv bnRlbmQpfQ0KPiB4Yy5mcm9udGVuZF9pZCA9IEMudWludDMyX3QoeC5Gcm9udGVuZElkKQ0KPiBA QCAtMzE5OCw5ICszMzQ1LDExIEBAIGlmIGVyciAhPSBuaWx7DQo+IEMubGlieGxfdnRwbWluZm9f ZGlzcG9zZSh4Yyl9DQo+IH0oKQ0KPiANCj4gK3hjLmJhY2tlbmQgPSBuaWwNCj4gaWYgeC5CYWNr ZW5kICE9ICIiIHsNCj4geGMuYmFja2VuZCA9IEMuQ1N0cmluZyh4LkJhY2tlbmQpfQ0KPiB4Yy5i YWNrZW5kX2lkID0gQy51aW50MzJfdCh4LkJhY2tlbmRJZCkNCj4gK3hjLmZyb250ZW5kID0gbmls DQo+IGlmIHguRnJvbnRlbmQgIT0gIiIgew0KPiB4Yy5mcm9udGVuZCA9IEMuQ1N0cmluZyh4LkZy b250ZW5kKX0NCj4geGMuZnJvbnRlbmRfaWQgPSBDLnVpbnQzMl90KHguRnJvbnRlbmRJZCkNCj4g QEAgLTMyNTQsOSArMzQwMywxMSBAQCB4Yy5fdHlwZSA9IEMubGlieGxfdXNiY3RybF90eXBlKHgu VHlwZSkNCj4geGMuZGV2aWQgPSBDLmxpYnhsX2RldmlkKHguRGV2aWQpDQo+IHhjLnZlcnNpb24g PSBDLmludCh4LlZlcnNpb24pDQo+IHhjLnBvcnRzID0gQy5pbnQoeC5Qb3J0cykNCj4gK3hjLmJh Y2tlbmQgPSBuaWwNCj4gaWYgeC5CYWNrZW5kICE9ICIiIHsNCj4geGMuYmFja2VuZCA9IEMuQ1N0 cmluZyh4LkJhY2tlbmQpfQ0KPiB4Yy5iYWNrZW5kX2lkID0gQy51aW50MzJfdCh4LkJhY2tlbmRJ ZCkNCj4gK3hjLmZyb250ZW5kID0gbmlsDQo+IGlmIHguRnJvbnRlbmQgIT0gIiIgew0KPiB4Yy5m cm9udGVuZCA9IEMuQ1N0cmluZyh4LkZyb250ZW5kKX0NCj4geGMuZnJvbnRlbmRfaWQgPSBDLnVp bnQzMl90KHguRnJvbnRlbmRJZCkNCj4gQEAgLTM0MjIsNiArMzU3Myw3IEBAIGlmIGVyciAhPSBu aWx7DQo+IEMubGlieGxfY29ubmVjdG9yaW5mb19kaXNwb3NlKHhjKX0NCj4gfSgpDQo+IA0KPiAr eGMudW5pcXVlX2lkID0gbmlsDQo+IGlmIHguVW5pcXVlSWQgIT0gIiIgew0KPiB4Yy51bmlxdWVf aWQgPSBDLkNTdHJpbmcoeC5VbmlxdWVJZCl9DQo+IHhjLndpZHRoID0gQy51aW50MzJfdCh4Lldp ZHRoKQ0KPiBAQCAtMzQ3Myw5ICszNjI1LDExIEBAIGlmIGVyciAhPSBuaWx7DQo+IEMubGlieGxf dmRpc3BsaW5mb19kaXNwb3NlKHhjKX0NCj4gfSgpDQo+IA0KPiAreGMuYmFja2VuZCA9IG5pbA0K PiBpZiB4LkJhY2tlbmQgIT0gIiIgew0KPiB4Yy5iYWNrZW5kID0gQy5DU3RyaW5nKHguQmFja2Vu ZCl9DQo+IHhjLmJhY2tlbmRfaWQgPSBDLnVpbnQzMl90KHguQmFja2VuZElkKQ0KPiAreGMuZnJv bnRlbmQgPSBuaWwNCj4gaWYgeC5Gcm9udGVuZCAhPSAiIiB7DQo+IHhjLmZyb250ZW5kID0gQy5D U3RyaW5nKHguRnJvbnRlbmQpfQ0KPiB4Yy5mcm9udGVuZF9pZCA9IEMudWludDMyX3QoeC5Gcm9u dGVuZElkKQ0KPiBAQCAtMzYxMSw5ICszNzY1LDExIEBAIGlmIGVyciAhPSBuaWx7DQo+IEMubGli eGxfdnNuZGluZm9fZGlzcG9zZSh4Yyl9DQo+IH0oKQ0KPiANCj4gK3hjLmJhY2tlbmQgPSBuaWwN Cj4gaWYgeC5CYWNrZW5kICE9ICIiIHsNCj4geGMuYmFja2VuZCA9IEMuQ1N0cmluZyh4LkJhY2tl bmQpfQ0KPiB4Yy5iYWNrZW5kX2lkID0gQy51aW50MzJfdCh4LkJhY2tlbmRJZCkNCj4gK3hjLmZy b250ZW5kID0gbmlsDQo+IGlmIHguRnJvbnRlbmQgIT0gIiIgew0KPiB4Yy5mcm9udGVuZCA9IEMu Q1N0cmluZyh4LkZyb250ZW5kKX0NCj4geGMuZnJvbnRlbmRfaWQgPSBDLnVpbnQzMl90KHguRnJv bnRlbmRJZCkNCj4gQEAgLTM2NjQsOSArMzgyMCwxMSBAQCBpZiBlcnIgIT0gbmlsew0KPiBDLmxp YnhsX3ZrYmluZm9fZGlzcG9zZSh4Yyl9DQo+IH0oKQ0KPiANCj4gK3hjLmJhY2tlbmQgPSBuaWwN Cj4gaWYgeC5CYWNrZW5kICE9ICIiIHsNCj4geGMuYmFja2VuZCA9IEMuQ1N0cmluZyh4LkJhY2tl bmQpfQ0KPiB4Yy5iYWNrZW5kX2lkID0gQy51aW50MzJfdCh4LkJhY2tlbmRJZCkNCj4gK3hjLmZy b250ZW5kID0gbmlsDQo+IGlmIHguRnJvbnRlbmQgIT0gIiIgew0KPiB4Yy5mcm9udGVuZCA9IEMu Q1N0cmluZyh4LkZyb250ZW5kKX0NCj4geGMuZnJvbnRlbmRfaWQgPSBDLnVpbnQzMl90KHguRnJv bnRlbmRJZCkNCj4gQEAgLTM5MDIsNiArNDA2MCw3IEBAIHJldHVybiBmbXQuRXJyb3JmKCJjb252 ZXJ0aW5nIGZpZWxkIENvbXByZXNzaW9uOiAldiIsIGVycikNCj4gaWYgZXJyIDo9IHguTmV0YnVm LnRvQygmeGMubmV0YnVmKTsgZXJyICE9IG5pbCB7DQo+IHJldHVybiBmbXQuRXJyb3JmKCJjb252 ZXJ0aW5nIGZpZWxkIE5ldGJ1ZjogJXYiLCBlcnIpDQo+IH0NCj4gK3hjLm5ldGJ1ZnNjcmlwdCA9 IG5pbA0KPiBpZiB4Lk5ldGJ1ZnNjcmlwdCAhPSAiIiB7DQo+IHhjLm5ldGJ1ZnNjcmlwdCA9IEMu Q1N0cmluZyh4Lk5ldGJ1ZnNjcmlwdCl9DQo+IGlmIGVyciA6PSB4LkRpc2tidWYudG9DKCZ4Yy5k aXNrYnVmKTsgZXJyICE9IG5pbCB7DQo+IEBAIC00MDM1LDYgKzQxOTQsNyBAQCBpZiAhb2sgew0K PiByZXR1cm4gZXJyb3JzLk5ldygid3JvbmcgdHlwZSBmb3IgdW5pb24ga2V5IHR5cGUiKQ0KPiB9 DQo+IHZhciBkaXNrX2VqZWN0IEMubGlieGxfZXZlbnRfdHlwZV91bmlvbl9kaXNrX2VqZWN0DQo+ ICtkaXNrX2VqZWN0LnZkZXYgPSBuaWwNCj4gaWYgdG1wLlZkZXYgIT0gIiIgew0KPiBkaXNrX2Vq ZWN0LnZkZXYgPSBDLkNTdHJpbmcodG1wLlZkZXYpfQ0KPiBpZiBlcnIgOj0gdG1wLkRpc2sudG9D KCZkaXNrX2VqZWN0LmRpc2spOyBlcnIgIT0gbmlsIHsNCj4gLS0gDQo+IDIuMTcuMQ0KPiANCg0K