From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 9A6319D1F3 for ; Fri, 2 Jun 2023 14:32:17 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 52A522A789 for ; Fri, 2 Jun 2023 14:32:17 +0200 (CEST) Received: from mail02.cetsi.fr (mail02.cetsi.fr [91.151.64.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Fri, 2 Jun 2023 14:32:16 +0200 (CEST) Received: from CYLNEXC01.cyllene.corp (unknown [10.0.250.28]) by mail02.cetsi.fr (Postfix) with ESMTP id B4E454050294 for ; Fri, 2 Jun 2023 14:32:14 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 mail02.cetsi.fr B4E454050294 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groupe-cyllene.com; s=dkim; t=1685709134; bh=25TSD1b0oyxGLGMzao9Jbnp9qEOgQRO228eEtPEgt7U=; h=From:To:Subject:Date:References:In-Reply-To:From; b=HGKXNkR4Bg5afnHrQOiIpegAavHHHCw+ErX2/5N1mCVr/cNqCk5CCvkcrd70Q+bFR 7WJTWDZVF+W7ZjMownoVMrnzz7aZX3U7U5glmPHddwxta0fsIa5x2yVZXh+rGFVDUG V38fTKbnoOLrls9PD1fYmXzzJo1OAXNmncu9B+08= Received: from CYLNEXC01.cyllene.corp (10.0.250.28) by CYLNEXC01.cyllene.corp (10.0.250.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Fri, 2 Jun 2023 14:32:13 +0200 Received: from FRA01-MR2-obe.outbound.protection.outlook.com (10.0.250.254) by CYLNEXC01.cyllene.corp (10.0.250.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23 via Frontend Transport; Fri, 2 Jun 2023 14:32:12 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jjSqYQApJ1kdbIPabcqlzQLL301j+aJR2f6WmKL5nGqj5MrKcfe+/zWMXnV/t85yIT61TlPj3czbgCAz6uha2ORQvHzuD8k9rFCYVGXjjqNl9SCNj/V88FoejpbNhmHQwGyEJHinoU+6kJfPrvE5K2xETDwj3UnXth58pzWOeN9kBGdwUrl4dwPxol0Dt+JyBFgFkhPyF4uZ9s+kgieipipd/+fTtOy9FwWKulWTodt+xfBSwT6ZdHCsLzPCYbqVl3iXqSLn4O9nXoFBr2FEY/D9ynNgofgaVO5j2KUsgXxD6ezIAxbS8AFf1hPSezni4KE0Ia/TkMGPvpy+7h+soQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=25TSD1b0oyxGLGMzao9Jbnp9qEOgQRO228eEtPEgt7U=; b=BYwcH71PX2rYA37mZHyTURSgn5OtRlrPdIFyWx0/dI4MAFWDzkV32XZAiolJUGLQfGXfCTGEpzfBK8fME8elSx/fdlNUM7dai2EaD3Z87pAxeTchrfeqeoR1QmlgEOqXOXR821GQx3wV++gdOrjYBNZ6uday9weo2dfr619dzRO2+FwDtNGZscp9aEs005fsiao2kK7+EV7wpWicZlCACaCpHNtgKR4pyvLgEg0LnEOYgWXVqy1mxbgfFScwOtfsfY5QNclYFRq1TAZuJfig1TRuc5Mx9smtzrzNDdkaMFQaLAPysawUJkCGbEZz0JhzekVqdUVNUiOqzFPm96urzA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=groupe-cyllene.com; dmarc=pass action=none header.from=groupe-cyllene.com; dkim=pass header.d=groupe-cyllene.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=groupecyllene.onmicrosoft.com; s=selector2-groupecyllene-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=25TSD1b0oyxGLGMzao9Jbnp9qEOgQRO228eEtPEgt7U=; b=jhmq2E7sdot19lWufg6+VuRQKWXOPcofmARG7vvKlJb8HOZgdoMtHsxYe0Fpmb1ttD3e2UPSIONdRJDeF4Y+az0MkrpGj1qBJOOIwhn6PXuY1vF+n9TDfgG2RLLAcJOXedjNcpNTRchoYFbbk/FjJWlu8+IkZXzAjQei8IWQHPQ= Received: from MR1P264MB2481.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:32::17) by MRZP264MB2363.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:1c::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.24; Fri, 2 Jun 2023 12:32:11 +0000 Received: from MR1P264MB2481.FRAP264.PROD.OUTLOOK.COM ([fe80::cef1:6229:8d42:b0ee]) by MR1P264MB2481.FRAP264.PROD.OUTLOOK.COM ([fe80::cef1:6229:8d42:b0ee%2]) with mapi id 15.20.6455.024; Fri, 2 Jun 2023 12:32:11 +0000 From: "DERUMIER, Alexandre" To: "pve-devel@lists.proxmox.com" Thread-Topic: [pve-devel] [PATCH pve-manager 4/4] api2: network: check vlan permissions for local bridges Thread-Index: AQHZj6OV4uGwvKZDokKQrEPZYZazna93bp+AgAAOmIA= Date: Fri, 2 Jun 2023 12:32:10 +0000 Message-ID: References: <20230526072724.1605613-1-aderumier@odiso.com> <20230526072724.1605613-5-aderumier@odiso.com> <1685703684.s6g3qc3qqp.astroid@yuna.none> In-Reply-To: <1685703684.s6g3qc3qqp.astroid@yuna.none> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.48.1-0ubuntu1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=groupe-cyllene.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MR1P264MB2481:EE_|MRZP264MB2363:EE_ x-ms-office365-filtering-correlation-id: b11f1b55-1906-4ec1-16d9-08db63656334 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: SESL1T5pAyvKARnf1iGPxdBV2bvjqMNF+4A00vUV76O1JaNnTeEDBZHN6x5F30/Ibbc5GKlYsWXhbXI2P/aBmrouhU1ALAf+Og04sIbvhPKpqXwaUAaVlB6TSXoZznZp01XLqno9Pxgpv4SlXQgPC9SEmIePvnb/7H08dkXKFr/1lHkSqLhKJwoUlArL3m9WpG4nOM6yiptvGDcNYgYmVCQ8kYnvu2ERA+FaGPc6O4onuzPkTydZdAQySU2pkljaXUazRDTQeDL3dFZPvFD5GTUlP0WcqQypXmEV80QKS/q2z9tzwZXTkHkoEtNPj/GwNXl1JT4YWuYkxXGYtSeTyRi93boaYQA3t2JiSK1Z3u2LB8Ooz9CpwoNN+ukckgZ6ug5An/FfglHcm+VV+Dr2HgiOwcR3wL26dUgNXQdtZEKLv3T0cr717ASEVrsyQF2M8O04xo7AYo8479xNQhvYNJvgFQ5gSVt49afjFRPN5k5hB5DCsW9WeO37S4Ah9Cn8PjshiP9j7ALPqf+xbtXPvUzviXTkR1tgTaSoafzONkcFn+o8/F6587GA//tHDJDgswXpQOWQ11qVlN9xKnj1gkl3skfZYPMe5cP0b5+tiAU= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MR1P264MB2481.FRAP264.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230028)(4636009)(136003)(39850400004)(366004)(346002)(376002)(396003)(451199021)(36756003)(2906002)(86362001)(38070700005)(5660300002)(66574015)(83380400001)(6486002)(71200400001)(186003)(966005)(6512007)(53546011)(6506007)(478600001)(91956017)(66476007)(66446008)(66556008)(66946007)(6916009)(41300700001)(2616005)(38100700002)(316002)(122000001)(8936002)(8676002)(76116006)(64756008); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?M0ZGUitod3hPZ2JiZmZyVjJkVWlURXVDd1RoSVVWdmViTllnSktFU0VKMXlo?= =?utf-8?B?QVRrT2ZTMkh2SWZ3RHUrN05GY0R4R2s3UWtSYlRYNnhuaHd2L2ZwK0trc3J0?= =?utf-8?B?d2c3LzA3cVNFYjZkcUZzaG15MEFxZjk0elIrcklCd2Z2UnZ0b0c4bmxJUWVZ?= =?utf-8?B?TWlEUXlTRUdlWWhSTy9oK0UvWmlFR3BiaTR5RDR1cWJ3UXVPS09LM2swUzBF?= =?utf-8?B?c0lXZVRwMTFYZThKZUVuM2c4UGdPL25nYzhyQ1BNK3pCa3gzODFlVmJrMU5Q?= =?utf-8?B?TW9xK3hmakRNUWN0TXZJalBlRy9VNlQrQWljOVNzMVBWTFRFdmxRc1U4R1lN?= =?utf-8?B?OWRIMFVEdzg0TWw0ZEJKYTFmOTB1b21QenVEVDFtMlNmZUE5TjlRNEpVVitP?= =?utf-8?B?dG9memVMZFNDS21nQk8ybTUxVlJFTldPTk5kTlBzODVtSXQrbWFPbDB0Mkc5?= =?utf-8?B?OVNBa2V2NnZqOUVNalRUbmdGWCtYY2tCZWEzNk5JeThDS05sNjNzY0E4cVFN?= =?utf-8?B?aUtQa0pZMDV4RFArTmlCYndjVm1IRUNNeVdodkE5UEJUejFXbTBjU0Y1VU5j?= =?utf-8?B?U3ZaWUZYUTg3R2JkamJ1YzlKbTdlVzNXT3JINTdZbWhRS1NpeGIrc2hIRFEw?= =?utf-8?B?Ukp5cll1LzhYaXV6d3Nwam1RSlJ3RjBrNGpXcnlVU084OForcnJBMXlrZGJB?= =?utf-8?B?d3Myd3hlZC9La3NxVVdFOUUzTTAyQ0RSVS83ejZVTW9FMVNnTE9sS1VaZGVj?= =?utf-8?B?SkpSaFkyaU0ySWR1V2Vzd2s4cFA0TmVTRXRnMlAyN1FmTS9UUGJEM0RBWUtN?= =?utf-8?B?YVRKT0paT1k3SEVvNk1yeEVtQXN5V29Xdmd5VEJtT1grYkhUUTc0U3p1UVlL?= =?utf-8?B?L0J1b3JqcUR0aHZPV1Z4dlBSZElUeFpzbTVocldDdTQ0OG0yQjFmcFNIa1Nt?= =?utf-8?B?aUp1cFRXajRwNXRlOW1sejhVODZjUnVwallhay9tZzY0V0w4Wm81R1pVZmdw?= =?utf-8?B?dGt3dFc3MDQwUzFGRjgrUEg1RjRQSSt4RXRseGNjS0N5eUlCZmFoV3VCbTJE?= =?utf-8?B?WUVGekhnUTNndzFwZjFWRCtSRnQyaVIvYitOTWdCeHNucGNOdFB4dEtPTDNr?= =?utf-8?B?V3lKTS9Rb1lBbzB2L21vZmpiTWpaNWFKeWIvaEJHL1VCeXNyaUxHNitjOThL?= =?utf-8?B?aDVNZktCaXR2am5GQUJEU29tSUZIeGUrbVB0aFVLN21pb290UFpRbFUzSWc4?= =?utf-8?B?eDZoalJxMloraXVvMmRjampwWnFKYSt1em5uMlRyaXM4UENKSDBkQjJkZ09R?= =?utf-8?B?WGJaQ3NHMjJ6UnkzNWxURjVMdjVYak9odTBXYVRNTGJKdTVqWThGTWZsS0pX?= =?utf-8?B?aWZPZGRyUmUwS0x2NVRwa2Zlb2ZUMHZob3N5M2hLRGZGdE45Z0lFTk1MQ3BW?= =?utf-8?B?OHZ0VGxyNnMvbVVneFE2L1VIVlA5NS9ZeUp6V1owQ0wwbVlndERWMEdJOXBG?= =?utf-8?B?NTV3eHRVd28zYzVCVWtUS3dVMUs2eEJ5R3FZZ1NhSEdXVUY2OVRINEs1SzZy?= =?utf-8?B?K1VaU1BaTFd6VjFWT0FkYTRuaE1HSW9SZzZJcWNwRHBSb29YdVB1SlB2cjhS?= =?utf-8?B?Rk5HaERaMVNCSm5QNUxvelZYcmVFTUZjQ0FjOXhNS2labTVVZGN2V2tLbFVt?= =?utf-8?B?SkNkNzl4NDU2SFJabjJTOFoxdXZRY3h2dGNlMHhBMWlyUTlYWnhIelFLUWNu?= =?utf-8?B?QldKOURCVmJ2N2w3YW5mRVo1ZFU2Rnd6N2lXQjZ2ZlRNNitBNUNtMWVLbzhV?= =?utf-8?B?V1BCSTg2R2xiOHIxV3RsU3RIaVlHU3FSOHBaS2ppWVJHWFVpNm9GUFBHNXF3?= =?utf-8?B?aE1nTEpEdEYvSnF6YVBrcTc3ZHBNdTVZOC9QY1RHMUp0dndkeHpLSlBZSVA5?= =?utf-8?B?UmtKaGZ0MTN0cGtnbUw2d3dka2hFTGQ4R0xQVXpiZ2x4a1BvN1F5bDMvQjJI?= =?utf-8?B?QzhldEtyRGEwelF6bUhQY3JmZ2V6ZnYwRVh0UkVRYXJJV3BiSndKT0R5YWVr?= =?utf-8?B?ek4yaTF4MGJ2UjZUNVE4ZDhqZVVQLytBTFU1a1luYkpIdWY0cFZhREwzajJn?= =?utf-8?B?TkhGYWJ6RUQ1VUZDVXE3M0FjWlBTNG1KTXIzQVI3SWtycTlCeXc1QjMyOCtX?= =?utf-8?Q?PxPVU2k9U3oxQEu4GyYvD5lrL/i4eigJQX5x7tA7PXVM?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MR1P264MB2481.FRAP264.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: b11f1b55-1906-4ec1-16d9-08db63656334 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jun 2023 12:32:10.9714 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: ee11ccf7-112c-4284-848b-f229745e715b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: qOx3WoKAYvw+ziwi6nM9g5NJaZGOQVapL3+brkOXhpAbCUzr++cEfo8wjGibi/kNQB5ut1PyOg3ahyjGtRAhPRn0qj2Yl4QNUur4bSHb/PzuRlUg5rc7K1f0uaxu0XSg X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRZP264MB2363 X-OriginatorOrg: groupe-cyllene.com X-SPAM-LEVEL: Spam detection results: 0 ARC_SIGNED 0.001 Message has a ARC signature ARC_VALID 0.001 Message has a valid ARC signature AWL -0.447 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain DMARC_MISSING 0.1 Missing DMARC policy KAM_ASCII_DIVIDERS 0.8 Email that uses ascii formatting dividers and possible spam tricks SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [groupe-cyllene.com, network.pm, cetsi.fr, proxmox.com, groupecyllene.onmicrosoft.com] Subject: Re: [pve-devel] [PATCH pve-manager 4/4] api2: network: check vlan permissions for local bridges X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jun 2023 12:32:17 -0000 TGUgdmVuZHJlZGkgMDIganVpbiAyMDIzIMOgIDEzOjM5ICswMjAwLCBGYWJpYW4gR3LDvG5iaWNo bGVyIGEgw6ljcml0wqA6DQo+IE9uIE1heSAyNiwgMjAyMyA5OjI3IGFtLCBBbGV4YW5kcmUgRGVy dW1pZXIgd3JvdGU6DQo+ID4gV2UgbmVlZCB0byBkaXNwbGF5IHRoZSBicmlkZ2UgaXMgdGhlIHVz ZXIgaGF2ZSBhIHBlcm1pc3Npb24NCj4gPiBvbiBhbnkgdmxhbiBvbiB0aGUgYnJpZGdlLg0KPiA+ IA0KPiA+IHRvIGF2b2lkIHRvIGNoZWNrIHBlcm1pc3Npb25zIG9uIDQwOTYgdmxhbnMgZm9yIGVh Y2ggYnJpZGdlDQo+ID4gKGNvdWxkIGJlIHNsb3cgd2l0aCBhIGxvdCBvZiBicmlkZ2VzKSwNCj4g PiB3ZSBmaXJzdCBsaXN0IHZsYW5zIHdoZXJlIGFjbHMgYXJlIGRlZmluZWQuDQo+ID4gDQo+ID4g KDQwMDAgY2hlY2sgdG9vayA2MG1zIG9uIDEweWVhciB4ZW9uIHNlcnZlciwgc2hvdWxkIGJlIGVu b3VnaA0KPiA+IGZvciBhbnkgbmV0d29yayB3aGVyZSB0aGUgdG90YWwgbnVtYmVyIG9mIHZsYW5z IGlzIGxpbWl0ZWQpDQo+IA0KPiBzb21lIHNvcnQgb2Ygc3BlYyBoZXJlIGZvciBob3cgdGhlIEFD TCBsb29rcyBsaWtlIHdvdWxkIGJlIG5pY2UgdG8NCj4gaGF2ZQ0KPiAod2hpbGUgaXQncyBwb3Nz aWJsZSB0byByZXZlcnNlIGl0IGZyb20gdGhlIGNvZGUsIGl0J3MgYWx3YXlzIG5pY2VyDQo+IHRv DQo+IGhhdmUgdGhlIGV4cGVjdGlvbiBleHBsaWNpdCBhcyB3ZWxsKS4NCj4gDQo+ID4gDQo+ID4g U2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIERlcnVtaWVyIDxhZGVydW1pZXJAb2Rpc28uY29tPg0K PiA+IC0tLQ0KPiA+IMKgUFZFL0FQSTIvTmV0d29yay5wbSB8IDIwICsrKysrKysrKysrKysrKysr KystDQo+ID4gwqAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQ0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9QVkUvQVBJMi9OZXR3b3JrLnBtIGIvUFZFL0FQSTIv TmV0d29yay5wbQ0KPiA+IGluZGV4IGJhM2IzZTBlLi4zOWYxN2QxNCAxMDA2NDQNCj4gPiAtLS0g YS9QVkUvQVBJMi9OZXR3b3JrLnBtDQo+ID4gKysrIGIvUFZFL0FQSTIvTmV0d29yay5wbQ0KPiA+ IEBAIC0yNDAsMTcgKzI0MCwzNSBAQCBfX1BBQ0tBR0VfXy0+cmVnaXN0ZXJfbWV0aG9kKHsNCj4g PiDCoA0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAobXkgJHRmaWx0ZXIgPSAkcGFyYW0tPnt0eXBl fSkgew0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbXkgJHZuZXRzOw0KPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoCBteSAkYnJpZGdlc192bGFuc19hY2wgPSB7fTsNCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICNjaGVjayBhY2Nlc3MgZm9yIGxvY2FsIGJyaWRnZXMNCj4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIG15ICRjYW5fYWNjZXNzX3ZuZXQgPSBzdWIgew0KPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBteSAkYnJpZGdlID0gJF9bMF07DQo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMSBpZiAkYXV0aHVzZXIgZXEgJ3Jvb3RAcGFt JzsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAxIGlmICRycGNl bnYtPmNoZWNrX2FueSgkYXV0aHVzZXIsDQo+ID4gIi9zZG4vem9uZXMvbG9jYWwiLCBbJ1NETi5B dWRpdCcsICdTRE4uQWxsb2NhdGUnXSwgMSk7DQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiAxIGlmICRycGNlbnYtPmNoZWNrX2FueSgkYXV0aHVzZXIsDQo+ID4gIi9z ZG4vdm5ldHMvJF9bMF0iLCBbJ1NETi5BdWRpdCcsICdTRE4uQWxsb2NhdGUnXSwgMSk7DQo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAxIGlmICRycGNlbnYtPmNoZWNr KCRhdXRodXNlciwNCj4gPiAiL3Nkbi92bmV0cy8kYnJpZGdlIiwgWydTRE4uQXVkaXQnXSwgMSk7 DQo+IA0KPiB3aHkgZG9lcyB0aGlzIGRyb3AgdGhlIEFsbG9jYXRlPyB3ZSB1c3VhbGx5IGhhdmUg dGhlICJtb3JlDQo+IHByaXZpbGVnZWQiDQo+IHByaXZpbGVnZSBpbiBhZGRpdGlvbiB0byBBdWRp dCAoaWYgdGhlcmUgaXMgb25lKS4NCg0KSSB0aGluayBhbGxvY2F0ZSBtYXliZSBzZW5zZSBvbiB6 b25lLiAoYXMgd2hhdCdzIHdlIGFsbG9jYXRlIGFyZQ0Kdm5ldHMpLg0KKGl0IHNob3VsZCBiZSBy ZW1vdmVkIG9uIC9zZG4vdm5ldHMvJF9bMF0pLg0KDQoNCkJ1dCBJIGRvbid0LCBtYXliZSBpZiB1 c2VyIGFkZCBhIHNpbXBsZSBhY2wgbGlrZSAiLyIgKyBwcm9wYWdhdGUgd2l0aA0KU0ROLmFsbG9j YXRlIG9ubHksIHdlIHdhbnQgdG8gZ2l2ZSBpdCBhY2Nlc3MgZXZlcnl3aGVyZSA/DQoNCg0KPiAN Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbXkgJGJyaWRnZV92bGFuID0gJGJy aWRnZXNfdmxhbnNfYWNsLT57JGJyaWRnZX07DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGZvciBteSAkdGFnIChzb3J0IGtleXMgJSRicmlkZ2Vfdmxhbikgew0KPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDEgaWYgJHJwY2Vudi0+Y2hl Y2soJGF1dGh1c2VyLA0KPiA+ICIvc2RuL3ZuZXRzLyRicmlkZ2UuJHRhZyIsIFsnU0ROLkF1ZGl0 J10sIDEpOw0KPiANCj4gd291bGRuJ3QgJGJyaWRnZS8kdGFnIGJlIG1vcmUgbmF0dXJhbD8gaXQg d291bGQgYWxsb3cgcHJvcGFnYXRpb24NCj4gZnJvbSBhDQo+IGJyaWRnZSB0byBhbGwgdGFncyB1 c2luZyB0aGUgdXN1YWwgcHJvcGFnYXRlIGZsYWcgYXMgd2VsbC4uDQo+IA0KPiB0aGlzIGNvdWxk IGFsc28gbGl2ZSBpbiBwdmUtYWNjZXNzLWNvbnRyb2wgYXMgYSBzcGVjaWFsIGhlbHBlciwgdGhl bg0KPiB3ZQ0KPiB3b3VsZG4ndCBuZWVkIHRvIGRvIHRoaXMgZGFuY2UgaGVyZSAoaXQgd291bGQg YmUgdGhlIGZpcnN0DQo+IGl0ZXJhdGVfYWNsX3RyZWUgY2FsbCBzaXRlIG91dHNpZGUgb2YgcHZl LWFjY2Vzcy1jb250cm9sISkuDQo+IA0KPiBzb21ldGhpbmcgbGlrZSB0aGlzIGluIFBWRTo6UlBD RW52aXJvbm1lbnQ6DQo+IA0KPiBzdWIgY2hlY2tfc2RuX3ZsYW4oLi4sICRicmlkZ2UsICRwcml2 KSB7DQo+IMKgIC4uIGl0ZXJhdGUgb3ZlciBhbGwgdmxhbnMgYW5kIGNoZWNrIHdoaWxlIGl0ZXJh dGluZywgcmV0dXJuaW5nDQo+IGVhcmx5IGZvciBmaXJzdCBvbmUgd2l0aCBhY2Nlc3MNCj4gfQ0K PiANCj4gYmFzaWNhbGx5Og0KPiANCj4gbXkgJGJyaWRnZSA9IFBWRTo6QWNjZXNzQ29udHJvbDo6 ZmluZF9hY2xfdHJlZV9ub2RlKCRjZmctPnthY2xfcm9vdH0sDQo+ICIvc2RuL3ZuZXRzLyRicmlk Z2UiKTsNCj4gaWYgKCRicmlkZ2UpIHsNCj4gwqAgZm9yIG15ICR2bGFuIChrZXlzICRicmlkZ2Ut PntjaGlsZHJlbn0tPiUkKSB7DQo+IMKgwqDCoCByZXR1cm4gMSBpZiAkc2VsZi0+Y2hlY2tfYW55 KC4uLik7DQo+IMKgIH0NCj4gwqAgcmV0dXJuIDEgaWYgIyBjaGVjayBwcm9wYWdhdGUgb24gYnJp ZGdlIGl0c2VsZg0KPiB9DQo+IHJldHVybiAwOw0KPiANCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfTsNCj4gPiDCoA0KPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCRoYXZlX3NkbiAmJiAkcGFyYW0tPnt0eXBlfSBl cSAnYW55X2JyaWRnZScpIHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCR2 bmV0cyA9IFBWRTo6TmV0d29yazo6U0ROOjpnZXRfbG9jYWxfdm5ldHMoKTsgIw0KPiA+IHJldHVy bnMgYWxyZWFkeSBhY2Nlc3MtZmlsdGVyZWQNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0N Cj4gPiDCoA0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCAjZmluZCBhbGwgdmxhbnMgd2hlcmUg d2UgaGF2ZSBzcGVjaWZpYyBhY2xzDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgkdGZp bHRlciA9fiAvXmFueShfbG9jYWwpP19icmlkZ2UkLykgew0KPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBteSAkY2ZnID0gJHJwY2Vudi0+e3VzZXJfY2ZnfTsNCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbXkgJHZuZXRzX2FjbF9yb290ID0gJGNmZy0+e2FjbF9y b290fS0+e2NoaWxkcmVufS0NCj4gPiA+e3Nkbn0tPntjaGlsZHJlbn0tPnt2bmV0c307DQo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFBWRTo6QWNjZXNzQ29udHJvbDo6aXRlcmF0 ZV9hY2xfdHJlZSgiLyIsDQo+ID4gJHZuZXRzX2FjbF9yb290LCBzdWIgew0KPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbXkgKCRwYXRoLCAkbm9kZSkgPSBAXzsNCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgkcGF0aCA9fiAvXC8o LiopXC4oXGQrKSQvKSB7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAkYnJpZGdlc192bGFuc19hY2wtPnskMX0tPnskMn0gPSAxOw0KPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9KTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPiANCj4gYmVj YXVzZSB0aGlzIGl0ZXJhdGVzIG92ZXIgKmFsbCogQUNMcywgb25seSB0byB0aGVuIHJldHVybiB1 cG9uIHRoZQ0KPiBmaXJzdCBtYXRjaCBhYm92ZSBpbiAkY2FuX2FjY2Vzc192bmV0Li4NCj4gDQo+ IGl0IHNob3VsZCBhbHNvIGJlDQo+IA0KPiBpdGVyYXRlX2FjbF90cmVlKCIvc2RuL3ZuZXRzIiwg Li4pIG9yICIvc2RuL3ZuZXRzLyRicmlkZ2UiIGlmIHZsYW4NCj4gdGFncw0KPiBsaXZlIGFzIGNo aWxkcmVuIG9mIHRoZSBicmlkZ2UgKHBhdGggYW5kIHRoZSBub2RlIHNob3VsZCBtYXRjaCEpLg0K PiB0aGVyZQ0KPiBhbHNvIGlzICJmaW5kX2FjbF90cmVlX25vZGUiIHNvIHlvdSBkb24ndCBuZWVk IHRvIG1ha2UgYXNzdW1wdGlvbnMNCj4gYWJvdXQNCj4gaG93IHRoZSBub2RlcyBhcmUgbGFpZCBv dXQuDQo+IA0KDQpUaGFua3MgISBJIHdhcyByZWFsbHkgYmFuZ2luZyBteSBoZWFkIHRvIGltcGxl bWVudCB0aGlzIHByb3Blcmx5ICYmDQpmYXN0IF5fXg0KDQoNCj4gSSBkbyB3b25kZXIgd2hldGhl ciBzb21ldGhpbmcgdGhhdCBzdXBwb3J0cyByYW5nZXMgd291bGQgYmUgbW9yZQ0KPiBhcHByb3By aWF0ZSByYXRoZXIgdGhlbiBlbmNvZGluZyB0aGlzIGluIEFDTHMgZGlyZWN0bHkgdGhvdWdoLi4N Cj4gIGNvdWxkDQo+IGFsd2F5cyBiZSBhZGRlZCBsYXRlciBvbiB0aG91Z2ggKGUuZy4sIG5hbWVk IHZsYW4gb2JqZWN0cyB0aGF0IGRlZmluZQ0KPiBhDQo+IHNldCBvZiB2bGFucykuDQoNCnllcywg SSB3YXMgdGhpbmtpbmcgdGhlIHNhbWUgdG8gYXZvaWQgdG9vIG11Y2ggYWNsIHdoZW4geW91IG5l ZWQgdG8NCmFjY2VzcyB0byBtYW55IHZsYW5zLg0KDQo+IA0KPiA+ICsNCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGZvciBteSAkayAoc29ydCBrZXlzICRpZmFjZXMtPiUqKSB7DQo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBteSAkdHlwZSA9ICRpZmFjZXMtPnska30tPnt0 eXBlfTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG15ICRtYXRjaCA9ICR0 ZmlsdGVyIGVxICR0eXBlIHx8ICgkdGZpbHRlciA9fg0KPiA+IC9eYW55KF9sb2NhbCk/X2JyaWRn ZSQvICYmICgkdHlwZSBlcSAnYnJpZGdlJyB8fCAkdHlwZSBlcQ0KPiA+ICdPVlNCcmlkZ2UnKSk7 DQo+ID4gLS0gDQo+ID4gMi4zMC4yDQo+ID4gDQo+ID4gDQo+ID4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gPiBwdmUtZGV2ZWwgbWFpbGluZyBsaXN0 DQo+ID4gcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tDQo+ID4gaHR0cHM6Ly9hbnRpcGhpc2hp bmcuY2V0c2kuZnIvcHJveHkvdjM/aT1NbFpTVHpCaFpGWjZOemw0YzNFeU43ZmJTS0RlUExNeGk1 dTVfb25wQW9JJnI9Y20xcVZtUllVV2syV1hoWVpWRkhXQTBQWHRUYVl4ejctRklPVGtaQm0zNF9k SGRTY2gtZ1huN1NUOWVHaFFMTiZmPVMxWmtkMDQyVldkclpHNXFRVXh4V2s1cHM0dDY3a051SHNC WnpkemhwcXVMS3VYcVRaTElxMksxRGZLcjlONjF5QmFmbTdBdUFJVGQ2Ykh0UlU0ekVRJnU9aHR0 cHMlM0EvL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2 ZWwmaz1GMWlzDQo+ID4gDQo+ID4gDQo+ID4gDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gcHZlLWRldmVsIG1haWxpbmcgbGlzdA0K PiBwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20NCj4gaHR0cHM6Ly9hbnRpcGhpc2hpbmcuY2V0 c2kuZnIvcHJveHkvdjM/aT1NbFpTVHpCaFpGWjZOemw0YzNFeU43ZmJTS0RlUExNeGk1dTVfb25w QW9JJnI9Y20xcVZtUllVV2syV1hoWVpWRkhXQTBQWHRUYVl4ejctRklPVGtaQm0zNF9kSGRTY2gt Z1huN1NUOWVHaFFMTiZmPVMxWmtkMDQyVldkclpHNXFRVXh4V2s1cHM0dDY3a051SHNCWnpkemhw cXVMS3VYcVRaTElxMksxRGZLcjlONjF5QmFmbTdBdUFJVGQ2Ykh0UlU0ekVRJnU9aHR0cHMlM0Ev L2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwmaz1G MWlzDQo+IA0KDQo=