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 0A9529F3F6 for ; Thu, 8 Jun 2023 03:34:36 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id D08B41F97C for ; Thu, 8 Jun 2023 03:34:05 +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 ; Thu, 8 Jun 2023 03:34:04 +0200 (CEST) Received: from CYLNEXC01.cyllene.corp (unknown [10.0.250.28]) by mail02.cetsi.fr (Postfix) with ESMTP id 7C7334050295 for ; Thu, 8 Jun 2023 03:34:03 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 mail02.cetsi.fr 7C7334050295 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groupe-cyllene.com; s=dkim; t=1686188043; bh=PZAziDLkyGCb9Nlry0UTVt3QRcCCxSO+PJ8B14Su4zw=; h=From:To:Subject:Date:References:In-Reply-To:From; b=hE8EgPFUnaxk2NGxq9t91BNs3bywnRAA6q791xxoAFxwDatIOzUxuYfK1FOimbc6d K0wcI4e86IHj86akYKjf7jveb+5gld5wRErFDjGJadXUwQw3zlxhgSelSBrzWAkMb4 DDU/qh1fWtk4PWyf/cbShXwxL4rlOkyL/qMcyh2s= 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; Thu, 8 Jun 2023 03:34:01 +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; Thu, 8 Jun 2023 03:34:01 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YE7vYW2zLUt8+eklAoeOVTw7bGWWVi/BGeACilUWhHj2s/rWq/dslcwv341ylU3YU0EdUmB/v1iiTFOk8M5etPaUe30nLsjwcXcZxp86y8yTg2UDsHs74MrZZ2pLMJNlYyuiH4fSf8OyaNNfVnMWuN62/4u3Dto/8JfJfq0IrF3TshdX0M44BJALI1qD1tyAp0J8O7ORUJd9Ohp6ov1sn5OrONRKLezTAFPG99cnVUY8ZeovqBKq7K9M9JwiVrAfvFQJ4k6aZpBl8G/+DN6aZdnA+rn6NXcKd52x/lqBxJHjPC4lY7BmzHir0kwAatL4f55NyRDUA2fk910ujpaBsg== 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=PZAziDLkyGCb9Nlry0UTVt3QRcCCxSO+PJ8B14Su4zw=; b=oLxaSW6U2+yL0MSlGa+BJzEgpilTYK9mnyNjyLgnc4GMVRsOtpwtus0IngsC+Kurvk845UQpsp6zPU6nj7Tm4ym4hO/lRo+bGGiMSsqDaT+LtvXII1M2sLw/yir18SYmHv6VbaC2Ubc/wCSy20sncHGzwLY0LZX2olGKBLa9SqyLHrDVvtltcMvSC3M/qppduTBFNnPUIvQ18zVpkGWd9SfGIAA33Zll2Ui0k3y2m0wHGMK2udKjLSOBuZ+437lchHCrdspDUhzljobclC0hzUhhCjoLICeo1z/oaO1g77EwvsiBjoPyHfnyiFy23DVBQl9povWNowQYLAaqlphsQQ== 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=PZAziDLkyGCb9Nlry0UTVt3QRcCCxSO+PJ8B14Su4zw=; b=JpWSlrWx1adw1nN6WTJWy6mZb/a7URp7G96zUDlKVjptBAuXXAtkrvw9JbFowrbCjKtfuaY9fsoikvOwsktSGNh0D/q1X1wp5YnvGEvYUq4nz1+z1rU1vcdUMREu7kMtRoPvmy1L5GXQP6U2louMl3D1ZSb0PHnoJrEwhLlGkWg= Received: from MR1P264MB2481.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:32::17) by MR1P264MB3186.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:3b::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.33; Thu, 8 Jun 2023 01:34:01 +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.030; Thu, 8 Jun 2023 01:34:01 +0000 From: "DERUMIER, Alexandre" To: "pve-devel@lists.proxmox.com" Thread-Topic: [pve-devel] [PATCH pve-network 1/1] get_local_vnets: fix permission path && perm Thread-Index: AQHZmTg6MM7OpdZRnEKGACWgnA0bDq9/bhGAgACyFIA= Date: Thu, 8 Jun 2023 01:34:00 +0000 Message-ID: <047a892d85902a579bbdf0ac066cdd46bdbbae7e.camel@groupe-cyllene.com> References: <20230607120357.4177891-1-aderumier@odiso.com> <20230607120357.4177891-5-aderumier@odiso.com> <1686149560.i7ewotwm93.astroid@yuna.none> In-Reply-To: <1686149560.i7ewotwm93.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_|MR1P264MB3186:EE_ x-ms-office365-filtering-correlation-id: fc9e0999-c481-461f-e3d6-08db67c06fb9 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: KBErq2JBa6UOW3dAAUkGpRvbgumNFEq2tTZw6jk4XmZouUdcLi+j12wDY7Y2st2CrGBynuKtwjvnPUOpd9dZqMiIH8fpkCLbyXh5LZeCap2IsC46MfMF3wpBumSpgX4XgophEV0MLI5NFwG8nZAAsoBFVQ6CdDP63whUkbwEduOtSHg81xFQ2S7FTGClIuqF4ch+o6noeSEP9sglrPpowuCiWqR+LPI1uzKFbr5BX7n1J8Pwecmi5lZYni10o1mKFpmsrMTzmtgpIXvgPWGOy65YBpUReWkJ3jw454kpOZ3Cws/oez429stTDkkM7HZAZ8KA5+k9qqqrOiRqcPXUtg3qMIahyZLu83t5P9WJ76Jc7R7l59kryk5DTWmlHXfoDoMraKIXFphNozN/jDGifofzWhf9wr8jAxtCno6W7rrnEKgPPDSfC4rxOQXGItLY40T2KShNYpDNiSICfrytpwu6WBnhrHIuS0b00Glr1bAM6g6eUo2ENbRl1Ggz4ZfU9c99VVpyKNbFbkK9XchbAYUGhZFtc9+KDG3t0A/sR3+s+Eb2oq2XgiH2ZDkeNHKrRgsTUOGRaKjrtS6EfWRdUc/ly7fYAValW7p34SsAAzoTu9Eko+oCJ+47iB9RRf0fkqdZMa8jBVExxpuoPYdbvQ== 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)(39850400004)(136003)(346002)(376002)(396003)(366004)(451199021)(19627235002)(478600001)(122000001)(91956017)(8676002)(8936002)(6916009)(76116006)(66556008)(66476007)(66446008)(64756008)(66946007)(316002)(41300700001)(38100700002)(2616005)(186003)(66574015)(966005)(83380400001)(6486002)(71200400001)(6512007)(6506007)(86362001)(5660300002)(38070700005)(2906002)(36756003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RjJIRXdBNjlRejFmRUFQUXFVV1dZd0lrRVFqUXJ2MlNGY2xPemZqZlU5MHpj?= =?utf-8?B?OWVLOVFYRGwxS05mMW5lRGFXUFlmbTZNMlRTK3gza01Cc1FBam1UZDJDTEJK?= =?utf-8?B?akg2c0IvWFZyckVaOTRkR3FzTC9JaVozZmlIV3hoYXZzQllZTHY2UzZtM3p1?= =?utf-8?B?RnNIWlRqNnkrdC9rTkVhZWdGY0UzaG1ya0cwT2EzbzYvSHFNN3lrVnBPQlRl?= =?utf-8?B?U2MwcnRsR3hTTVFFRmtSKzhmQW5aKzRCUTgrVXBtZnU5aGNucEpDSkVGRXF0?= =?utf-8?B?Q3ZrTFNHcWtzNHdnR0Zwa3lVZjU1aTFySzgydXI3RGNDZXBFY0NRUEpxVFo4?= =?utf-8?B?aE5TcE15VFNUU29CVklnVW1pbUR2QkJEdWcyTjI4SG0ySzV4OWhEb0cyYVZz?= =?utf-8?B?cmpvMHhzVTEvTmdHeGhXNGlkT2t4bDZTVHViNStvUHpwVnZiS0FJWjI3a082?= =?utf-8?B?VWZlWHNYVVFFWnRiYWxrWWtXWi8vWlRrRndJMjNCQmpiVStHRzdsM1JpVzdB?= =?utf-8?B?QkdMamZtS2JOdjZVeE9ZeFdxTCt6S0JCQVhzNm5YdFNDa3NZellVZmRRbHdQ?= =?utf-8?B?OTFzbGdyREpQYXpYMUc2S2p5TStzcFhXeW1XcVY1RlpSbmphZm9VVTlPVEYx?= =?utf-8?B?aVplWGtQM1ZLUndoRnB3TzBaS2daZGhZRUtvM1NrcTh5N1h5S2hVbnNOK204?= =?utf-8?B?SWtueFdhWllCaFR3NFhaS2JsRjFtcGxHNjRoSVBTd1NHQVU5UjNUc2ttWFZP?= =?utf-8?B?VU9NLzkzK3ZrdkdxUHF5VVpuaDZhbWNST0xGMmhRYTFnU09nb1hRenVNQ3Va?= =?utf-8?B?MlJkOTRHdXd5aGk5MlNRdEhPMFVXVXBVVE05bXFPQ005M0dFN2NRWFF3UTBi?= =?utf-8?B?bHIzclBTY0c0MWFGeFROSjBGUDVYUDhDQncreVhxKzl0OFRFY2RWU1NGL1BI?= =?utf-8?B?cDdiSnl1NFV5Z2JlN2VkdUtVaTJPZGxtYytad3B3aDJNS3ZZZzFiaWZkdDdX?= =?utf-8?B?ZmVIRWxtQjhUWGYyZ2FaT0w1MVQ3Mkc3WVBZaFlFRlA4ZHQ0U1RJUlBuTXp3?= =?utf-8?B?ZnZ1cFNLUW9kNDVmYVhtTVVQOFVsU2F1QWpZQ3RUK2dKcVI1SjFIYVZGQ0Iv?= =?utf-8?B?NkIzQ3VWdWJyNmVlZ0lzWVN2TVAyTi9QK2ltVnNpTzFhYkl6dHpNK0FDczk0?= =?utf-8?B?aUNvNFR1ZXlBclZVWGpJMndTZ2tzVWNBUzFwcmpLdHc0OURuYkFEQzM2UE80?= =?utf-8?B?SmlzZm1jOU1DRXk5a3VYczh0UDgwTlV2azY0VDVSejNwTjNGaFN5RG5qb1JK?= =?utf-8?B?cnFNenlraXBUb0I1cGYwOUpJTEFLYzR3WVVRVGEyRVJ1Y2lwOE1JdjdDckFB?= =?utf-8?B?eUVJMlpzNVF3VHh5b1h0VkNOc2NhWGk0RXRLZzNSU2RPRXhEYVE3NmlpbDd3?= =?utf-8?B?aHBCV05pd2NaREpSWDlkVmJvcnNiTk00MlViMEZteXFmeTkwdHFsUmFHQmRO?= =?utf-8?B?ZVl6MGVMTVZaUDFFRk5DMjh3NFpkSGdHeWIzK1poNmhKWDlzYnplRlc4cGJX?= =?utf-8?B?a1hURW1lUy9uR2RKQURhQk03WlJYTHBUak13WWdnaW1QR3ZaZHNuUjRlb3dy?= =?utf-8?B?MmNzSGJIWmtlWFZDM2N2YjFDMXVlOTVUbExNTmNYbGlReUswZUtpdnN6Y3F6?= =?utf-8?B?VzQzeDlqbTFxZlVHVVNXbURGZzBHclgxODM3d2JKZDVzWXJyTVBDRUExUU84?= =?utf-8?B?MldvaU1ndTlHdW4rQlhxRTc3UFozRFA4MmpwWlRFN050WlpienkvTXZRWXlF?= =?utf-8?B?Zll0NC9DUlhkYS8zWUM5UWFEQnlQcVhGYVI2TmhqTHVLQVBwbHI3Vlp3MmdS?= =?utf-8?B?a0NTTU9SbTlqSHBrcjVyOGFNTGlUS2lFOHI4eGtqV2NNS0VXZTEzUGJIZ0lU?= =?utf-8?B?SENYc2dBMW5ILzEyMUpPS0RYQ3RSNFA2S2VpNWF3MnFRVHZ5RVZUbmtUdzNx?= =?utf-8?B?YTZuVXMzeW1DNytvRVNQRjBTQXU3MjlLSG5oUnZqUjdkZnpraGxqbUZVRHg3?= =?utf-8?B?M1RQYlFkQWNvNndSaGkzM200V2VSeU1ZVVg0TG8xQmJ1dU9HQVZldDVPTkZz?= =?utf-8?B?ZWhjRlpydWRWREJ0MlRMdUo5cFpaMjR2RE9ENFBZN2M1WiswNUlhUWp2Z2Js?= =?utf-8?Q?hbPNS/af7xM2GOm+pdF7/D7LTDd8hFBKPR67CqQLbwN4?= Content-Type: text/plain; charset="utf-8" Content-ID: <5BA1CEA212C8914F80ABFA92EC4567ED@FRAP264.PROD.OUTLOOK.COM> 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: fc9e0999-c481-461f-e3d6-08db67c06fb9 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jun 2023 01:34:00.8515 (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: 2z6BymfRPe5Z/FoKgC/CO0RQU4Ey+zSxiHXJScFg707vAwjFKmA3Ym3n4eC4wEodPsmUcntJJJD7ZyqUAi8J85PkOVr7X2QxkdOpqK2/u43iDrYhI/v3/XJeK8/zaP72 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MR1P264MB3186 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.574 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 POISEN_SPAM_PILL 0.1 Meta: its spam POISEN_SPAM_PILL_1 0.1 random spam to be learned in bayes POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes 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. [vnets.pm, subnets.pm, proxmox.com, cetsi.fr, groupe-cyllene.com, sdn.pm, groupecyllene.onmicrosoft.com] Subject: Re: [pve-devel] [PATCH pve-network 1/1] get_local_vnets: fix permission path && perm 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: Thu, 08 Jun 2023 01:34:36 -0000 TGUgbWVyY3JlZGkgMDcganVpbiAyMDIzIMOgIDE2OjU2ICswMjAwLCBGYWJpYW4gR3LDvG5iaWNo bGVyIGEgw6ljcml0wqA6DQo+IHB2ZS1uZXR3b3JrIHJlcXVpcmVzIG1vcmUgd29yazoNCj4gDQo+ IC0gdGhlcmUgaXMgYSBsb3Qgb2YgL3Nkbi92bmV0cy8uLiBwZXJtaXNzaW9uIGNoZWNrcyBsZWZ0 b3ZlciAoYWxsIG9mDQo+IHRoZSB2bmV0L3N1Ym5ldCBjb2RlISkNCj4gLSB0aGVyZSBhcmUgL3Nk bi92bmV0cy8uLi9zdWJuZXRzLy4uIEFDTCBwYXRocyB0aGF0IG5lZWQgdG8gYmUNCj4gZHJvcHBl ZCwNCj4gwqAgb3IgdGhleSBjbGFzaCB3aXRoIC9zZG4vem9uZXMvPHpvbmU+Lzx2bmV0PlsvPHZs YW4+XQ0KPiANCkkgaGF2ZSBzZW5kIHNlcGFyYXRlZCBwYXRjaCB0byBmaXggcGVybWlzc2lvbnMN Cmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vcGlwZXJtYWlsL3B2ZS1kZXZlbC8yMDIzLUp1bmUv MDU3Mzc0Lmh0bWwNCg0KSSBkb24ndCBoYXZlIGNoYW5nZWQgYXBpIGZvciBub3csIGFzIEkgc2hv dWxkIG5lZWQgdG8gcmV3b3JrIHRoZSBndWkgYQ0KbGl0dGxlIGJpdC4NCihhbmQgSSdtIG5vdCBz dXJlIGFib3V0IGFwaSBwYXRoIGxpa2UgL3Nkbi96b25lcy96b25lMS92bmV0MSAgLA0KL3Nkbi96 b25lcy96b25lMi92bmV0MSAgLCBhcyB2bmV0IHNob3VsZCByZWFsbHkgYmUgdW5pcXVlKQ0KDQoN CkJ1dCBmb3Igbm93LCBhY2wgYXJlIHdvcmtpbmcgZmluZSB3aXRoIHRoaXMgcGF0Y2guDQoNCg0K PiAtIHRoZSBHVUkgc2VlbXMgdG8gYmUgYnJva2VuIHdoZW4gIkFkdmFuY2VkIiBpcyBub3QgdGlj a2VkDQo+IA0KDQpJIHJlYWxseSBkb24ndCBzZWUgd2hlcmUgaXMgdGhlIHByb2JsZW0gKGRvbid0 IGhhcHBlbiB3aXRoDQpiZ3Bjb250cm9sbGVyIGFkdmFuY2VkLCBhbmQgaXQncyBleGFjdGx5IHRo ZSBzYW1lIGNvZGUuLi4uKQ0KDQoNCj4gSSBzdGFydGVkIG9mZiwgYnV0IHRoZW4gSSByZWFsaXpl ZCB3ZSBtaWdodCBhbHNvIHdhbnQgdG8gcmUtZXZhbHVhdGU6DQo+IC0gd2hldGhlciB3ZSBldmVu IGNhcmUgYWJvdXQgcG90ZW50aWFsbHkgbGVha2luZyB0aGUgdm5ldDwtPnpvbmUNCj4gYmluZGlu Zw0KPiDCoCBpbiBjYXNlIHRoZSBBQ0wgY2hlY2tzIGZhaWwNCj4gLSB3aGV0aGVyIHdlIHdhbnQg dG8gbW92ZSB0aGUgd2hvbGUgQVBJIHRyZWUgYXMgd2VsbCB0byBoYXZlIHZuZXRzDQo+IGJlbG93 DQo+IMKgIHpvbmVzIGluc3RlYWQgb2YgbmV4dCB0byBlYWNob3RoZXIsIHNvIHdlIGFsd2F5cyBo YXZlIHRoZSB6b25lIGFzDQo+IMKgIChwYXRoKSBwYXJhbWV0ZXI/DQo+IA0KTWF5YmUgbGF0ZXIg Xl9eLCBJIG5lZWQgYSBsaXR0bGUgYml0IG1vcmUgdGltZSB0byB0aGluayBhYm91dCBpdC4NCiAN Cg0KPiBhbnlob3csIGhlcmUncyBhIGhhbGYtZGlmZiBvZiBzb21lIHBvdGVudGlhbGx5IHJlbGV2 YW50IGNoYW5nZXMgOykNCj4gDQo+IGBgYA0KPiBkaWZmIC0tZ2l0IGEvc3JjL1BWRS9BUEkyL05l dHdvcmsvU0ROL1N1Ym5ldHMucG0NCj4gYi9zcmMvUFZFL0FQSTIvTmV0d29yay9TRE4vU3VibmV0 cy5wbQ0KPiBpbmRleCAzNzdhNTY4Li5mYmUyYzQ2IDEwMDY0NA0KPiAtLS0gYS9zcmMvUFZFL0FQ STIvTmV0d29yay9TRE4vU3VibmV0cy5wbQ0KPiArKysgYi9zcmMvUFZFL0FQSTIvTmV0d29yay9T RE4vU3VibmV0cy5wbQ0KPiBAQCAtMzksNyArMzksNyBAQCBfX1BBQ0tBR0VfXy0+cmVnaXN0ZXJf bWV0aG9kICh7DQo+IMKgwqDCoMKgIG1ldGhvZCA9PiAnR0VUJywNCj4gwqDCoMKgwqAgZGVzY3Jp cHRpb24gPT4gIlNETiBzdWJuZXRzIGluZGV4LiIsDQo+IMKgwqDCoMKgIHBlcm1pc3Npb25zID0+ IHsNCj4gLcKgwqDCoMKgwqDCoMKgZGVzY3JpcHRpb24gPT4gIk9ubHkgbGlzdCBlbnRyaWVzIHdo ZXJlIHlvdSBoYXZlICdTRE4uQXVkaXQnDQo+IG9yICdTRE4uQWxsb2NhdGUnIHBlcm1pc3Npb25z IG9uICcvc2RuL3N1Ym5ldHMvPHN1Ym5ldD4nIiwNCj4gK8KgwqDCoMKgwqDCoMKgZGVzY3JpcHRp b24gPT4gIk9ubHkgbGlzdCBlbnRyaWVzIHdoZXJlIHlvdSBoYXZlICdTRE4uQXVkaXQnLA0KPiAn U0ROLlVzZScgb3IgJ1NETi5BbGxvY2F0ZScgcGVybWlzc2lvbnMgb24gJy9zZG4vc3VibmV0cy88 c3VibmV0PiciLA0KPiDCoMKgwqDCoMKgwqDCoMKgdXNlciA9PiAnYWxsJywNCj4gwqDCoMKgwqAg fSwNCj4gwqDCoMKgwqAgcGFyYW1ldGVycyA9PiB7DQo+IEBAIC04OSw3ICs4OSw3IEBAIF9fUEFD S0FHRV9fLT5yZWdpc3Rlcl9tZXRob2QgKHsNCj4gwqDCoMKgwqDCoMKgwqDCoG15IEBzaWRzID0g UFZFOjpOZXR3b3JrOjpTRE46OlN1Ym5ldHM6OnNkbl9zdWJuZXRzX2lkcygkY2ZnKTsNCj4gwqDC oMKgwqDCoMKgwqDCoG15ICRyZXMgPSBbXTsNCj4gwqDCoMKgwqDCoMKgwqDCoGZvcmVhY2ggbXkg JGlkIChAc2lkcykgew0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqAgbXkgJHByaXZzID0gWyAnU0RO LkF1ZGl0JywgJ1NETi5BbGxvY2F0ZScgXTsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIG15ICRw cml2cyA9IFsgJ1NETi5BdWRpdCcsICdTRE4uVXNlJywgJ1NETi5BbGxvY2F0ZScgXTsNCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBuZXh0IGlmICEkcnBjZW52LT5jaGVja19hbnkoJGF1dGh1c2Vy LA0KPiAiL3Nkbi92bmV0cy8kdm5ldGlkL3N1Ym5ldHMvJGlkIiwgJHByaXZzLCAxKTsNCj4gwqAN Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBteSAkc2NmZyA9ICYkYXBpX3Nkbl9zdWJuZXRzX2Nv bmZpZygkY2ZnLCAkaWQpOw0KPiBkaWZmIC0tZ2l0IGEvc3JjL1BWRS9BUEkyL05ldHdvcmsvU0RO L1ZuZXRzLnBtDQo+IGIvc3JjL1BWRS9BUEkyL05ldHdvcmsvU0ROL1ZuZXRzLnBtDQo+IGluZGV4 IDgxMWEyZTguLmVhYTNhMDQgMTAwNjQ0DQo+IC0tLSBhL3NyYy9QVkUvQVBJMi9OZXR3b3JrL1NE Ti9WbmV0cy5wbQ0KPiArKysgYi9zcmMvUFZFL0FQSTIvTmV0d29yay9TRE4vVm5ldHMucG0NCj4g QEAgLTUwLDYgKzUwLDEzIEBAIG15ICRhcGlfc2RuX3ZuZXRzX2RlbGV0ZWRfY29uZmlnID0gc3Vi IHsNCj4gwqDCoMKgwqAgfQ0KPiDCoH07DQo+IMKgDQo+ICsjIGNoZWNrcyBhY2Nlc3MsIGJ1dCBt YXNrcyB6b25lIHRvIGF2b2lkIGluZm8gbGVhay4uDQo+ICtteSAkY2hlY2tfdm5ldF9hY2Nlc3Mg PSBzdWIgew0KPiArwqDCoMKgIHN1YiAoJHJwY2VudiwgJGF1dGh1c2VyLCAkem9uZSwgJHZuZXQs ICRwcml2cykgPSBAXzsNCj4gK8KgwqDCoCAkcnBjZW52LT5jaGVja19hbnkoJGF1dGh1c2VyLCAi L3Nkbi96b25lcy88em9uZT4vJHZuZXQiLCAkcHJpdnMpDQo+ICvCoMKgwqDCoMKgwqDCoGlmICEk cnBjZW52LT5jaGVja19hbnkoJGF1dGh1c2VyLCAiL3Nkbi96b25lcy8kem9uZS8kdm5ldCIsDQo+ ICRwcml2cywgMSk7DQo+ICt9DQo+ICsNCj4gwqBfX1BBQ0tBR0VfXy0+cmVnaXN0ZXJfbWV0aG9k ICh7DQo+IMKgwqDCoMKgIG5hbWUgPT4gJ2luZGV4JywNCj4gwqDCoMKgwqAgcGF0aCA9PiAnJywN Cj4gQEAgLTU3LDcgKzY0LDcgQEAgX19QQUNLQUdFX18tPnJlZ2lzdGVyX21ldGhvZCAoew0KPiDC oMKgwqDCoCBkZXNjcmlwdGlvbiA9PiAiU0ROIHZuZXRzIGluZGV4LiIsDQo+IMKgwqDCoMKgIHBl cm1pc3Npb25zID0+IHsNCj4gwqDCoMKgwqDCoMKgwqDCoGRlc2NyaXB0aW9uID0+ICJPbmx5IGxp c3QgZW50cmllcyB3aGVyZSB5b3UgaGF2ZSAnU0ROLkF1ZGl0Jw0KPiBvciAnU0ROLkFsbG9jYXRl JyINCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgIC4iIHBlcm1pc3Npb25zIG9uICcvc2RuL3ZuZXRz Lzx2bmV0PiciLA0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgLiIgcGVybWlzc2lvbnMgb24gJy9z ZG4vem9uZXMvPHpvbmU+Lzx2bmV0PiciLA0KPiDCoMKgwqDCoMKgwqDCoMKgdXNlciA9PiAnYWxs JywNCj4gwqDCoMKgwqAgfSwNCj4gwqDCoMKgwqAgcGFyYW1ldGVycyA9PiB7DQo+IEBAIC0xMDQs OCArMTExLDEwIEBAIF9fUEFDS0FHRV9fLT5yZWdpc3Rlcl9tZXRob2QgKHsNCj4gwqDCoMKgwqDC oMKgwqDCoG15IEBzaWRzID0gUFZFOjpOZXR3b3JrOjpTRE46OlZuZXRzOjpzZG5fdm5ldHNfaWRz KCRjZmcpOw0KPiDCoMKgwqDCoMKgwqDCoMKgbXkgJHJlcyA9IFtdOw0KPiDCoMKgwqDCoMKgwqDC oMKgZm9yZWFjaCBteSAkaWQgKEBzaWRzKSB7DQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoCBteSAk cHJpdnMgPSBbICdTRE4uQXVkaXQnLCAnU0ROLkFsbG9jYXRlJyBdOw0KPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqAgbmV4dCBpZiAhJHJwY2Vudi0+Y2hlY2tfYW55KCRhdXRodXNlciwgIi9zZG4vdm5l dHMvJGlkIiwNCj4gJHByaXZzLCAxKTsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIG15ICRwcml2 cyA9IFsgJ1NETi5BdWRpdCcsICdTRE4uVXNlJywgJ1NETi5BbGxvY2F0ZScgXTsNCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgIG15ICR6b25lID0gJGNmZy0+eyRpZH0tPnt6b25lfTsNCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgIG5leHQgaWYgISR6b25lOw0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg bmV4dCBpZiAhJHJwY2Vudi0+Y2hlY2tfYW55KCRhdXRodXNlciwNCj4gIi9zZG4vem9uZXMvJHpv bmUvJGlkIiwgJHByaXZzLCAxKTsNCj4gwqANCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBteSAk c2NmZyA9ICYkYXBpX3Nkbl92bmV0c19jb25maWcoJGNmZywgJGlkKTsNCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBwdXNoIEAkcmVzLCAkc2NmZzsNCj4gQEAgLTEyMCw4ICsxMjksOSBAQCBfX1BB Q0tBR0VfXy0+cmVnaXN0ZXJfbWV0aG9kICh7DQo+IMKgwqDCoMKgIG1ldGhvZCA9PiAnR0VUJywN Cj4gwqDCoMKgwqAgZGVzY3JpcHRpb24gPT4gIlJlYWQgc2RuIHZuZXQgY29uZmlndXJhdGlvbi4i LA0KPiDCoMKgwqDCoCBwZXJtaXNzaW9ucyA9PiB7DQo+IC3CoMKgwqDCoMKgwqDCoGNoZWNrID0+ IFsncGVybScsICcvc2RuL3ZuZXRzL3t2bmV0fScsIFsnU0ROLkFsbG9jYXRlJ11dLA0KPiAtwqDC oCB9LA0KPiArwqDCoMKgwqDCoMKgwqBkZXNjcmlwdGlvbiA9PiAiUmVxdWlyZXMgJ1NETi5BbGxv Y2F0ZScgcGVybWlzc2lvbiBvbg0KPiAnL3Nkbi96b25lcy88em9uZT4vPHZuZXQ+JyIsDQo+ICvC oMKgwqDCoMKgwqDCoHVzZXIgPT4gJ2FsbCcsDQo+ICvCoMKgwqAgfSwNCj4gwqDCoMKgwqAgcGFy YW1ldGVycyA9PiB7DQo+IMKgwqDCoMKgwqDCoMKgwqBhZGRpdGlvbmFsUHJvcGVydGllcyA9PiAw LA0KPiDCoMKgwqDCoMKgwqDCoMKgcHJvcGVydGllcyA9PiB7DQo+IEBAIC0xNDQsNiArMTU0LDkg QEAgX19QQUNLQUdFX18tPnJlZ2lzdGVyX21ldGhvZCAoew0KPiDCoMKgwqDCoCBjb2RlID0+IHN1 YiB7DQo+IMKgwqDCoMKgwqDCoMKgwqBteSAoJHBhcmFtKSA9IEBfOw0KPiDCoA0KPiArwqDCoMKg wqDCoMKgwqBteSAkcnBjZW52ID0gUFZFOjpSUENFbnZpcm9ubWVudDo6Z2V0KCk7DQo+ICvCoMKg wqDCoMKgwqDCoG15ICRhdXRodXNlciA9ICRycGNlbnYtPmdldF91c2VyKCk7DQo+ICsNCj4gwqDC oMKgwqDCoMKgwqDCoG15ICRjZmcgPSB7fTsNCj4gwqDCoMKgwqDCoMKgwqDCoGlmKCRwYXJhbS0+ e3BlbmRpbmd9KSB7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbXkgJHJ1bm5pbmdfY2ZnID0g UFZFOjpOZXR3b3JrOjpTRE46OnJ1bm5pbmdfY29uZmlnKCk7DQo+IEBAIC0xNTYsNiArMTY5LDEx IEBAIF9fUEFDS0FHRV9fLT5yZWdpc3Rlcl9tZXRob2QgKHsNCj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAkY2ZnID0gUFZFOjpOZXR3b3JrOjpTRE46OlZuZXRzOjpjb25maWcoKTsNCj4gwqDCoMKg wqDCoMKgwqDCoH0NCj4gwqANCj4gK8KgwqDCoMKgwqDCoMKgbXkgJHpvbmUgPSAkY2ZnLT57JHZu ZXR9LT57em9uZX07DQo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBpZiAhJHpvbmU7DQo+ICsNCj4g K8KgwqDCoMKgwqDCoMKgJGNoZWNrX3ZuZXRfYWNjZXNzKCRycGNlbnYsICRhdXRodXNlciwgJHpv bmUsICR2bmV0LA0KPiBbJ1NETi5BbGxvY2F0ZSddKTsNCj4gKw0KPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuICRhcGlfc2RuX3ZuZXRzX2NvbmZpZy0+KCRjZmcsICRwYXJhbS0+e3ZuZXR9KTsNCj4g wqDCoMKgwqAgfX0pOw0KPiDCoA0KPiBAQCAtMTY2LDcgKzE4NCw3IEBAIF9fUEFDS0FHRV9fLT5y ZWdpc3Rlcl9tZXRob2QgKHsNCj4gwqDCoMKgwqAgbWV0aG9kID0+ICdQT1NUJywNCj4gwqDCoMKg wqAgZGVzY3JpcHRpb24gPT4gIkNyZWF0ZSBhIG5ldyBzZG4gdm5ldCBvYmplY3QuIiwNCj4gwqDC oMKgwqAgcGVybWlzc2lvbnMgPT4gew0KPiAtwqDCoMKgwqDCoMKgwqBjaGVjayA9PiBbJ3Blcm0n LCAnL3Nkbi92bmV0cycsIFsnU0ROLkFsbG9jYXRlJ11dLA0KPiArwqDCoMKgwqDCoMKgwqBjaGVj ayA9PiBbJ3Blcm0nLCAnL3Nkbi96b25lcy97em9uZX0nLCBbJ1NETi5BbGxvY2F0ZSddXSwNCj4g wqDCoMKgwqAgfSwNCj4gwqDCoMKgwqAgcGFyYW1ldGVycyA9PiBQVkU6Ok5ldHdvcms6OlNETjo6 Vm5ldFBsdWdpbi0+Y3JlYXRlU2NoZW1hKCksDQo+IMKgwqDCoMKgIHJldHVybnMgPT4geyB0eXBl ID0+ICdudWxsJyB9LA0KPiBAQCAtMjEwLDI0ICsyMjgsMzYgQEAgX19QQUNLQUdFX18tPnJlZ2lz dGVyX21ldGhvZCAoew0KPiDCoMKgwqDCoCBtZXRob2QgPT4gJ1BVVCcsDQo+IMKgwqDCoMKgIGRl c2NyaXB0aW9uID0+ICJVcGRhdGUgc2RuIHZuZXQgb2JqZWN0IGNvbmZpZ3VyYXRpb24uIiwNCj4g wqDCoMKgwqAgcGVybWlzc2lvbnMgPT4gew0KPiAtwqDCoMKgwqDCoMKgwqBjaGVjayA9PiBbJ3Bl cm0nLCAnL3Nkbi92bmV0cycsIFsnU0ROLkFsbG9jYXRlJ11dLA0KPiArwqDCoMKgwqDCoMKgwqBk ZXNjcmlwdGlvbiA9PiAiUmVxdWlyZXMgJ1NETi5BbGxvY2F0ZScgcGVybWlzc2lvbiBvbg0KPiAn L3Nkbi96b25lcy88em9uZT4vPHZuZXQ+JyIsDQo+ICvCoMKgwqDCoMKgwqDCoHVzZXIgPT4gJ2Fs bCcsDQo+IMKgwqDCoMKgIH0sDQo+IMKgwqDCoMKgIHBhcmFtZXRlcnMgPT4gUFZFOjpOZXR3b3Jr OjpTRE46OlZuZXRQbHVnaW4tPnVwZGF0ZVNjaGVtYSgpLA0KPiDCoMKgwqDCoCByZXR1cm5zID0+ IHsgdHlwZSA9PiAnbnVsbCcgfSwNCj4gwqDCoMKgwqAgY29kZSA9PiBzdWIgew0KPiDCoMKgwqDC oMKgwqDCoMKgbXkgKCRwYXJhbSkgPSBAXzsNCj4gwqANCj4gK8KgwqDCoMKgwqDCoMKgbXkgJHJw Y2VudiA9IFBWRTo6UlBDRW52aXJvbm1lbnQ6OmdldCgpOw0KPiArwqDCoMKgwqDCoMKgwqBteSAk YXV0aHVzZXIgPSAkcnBjZW52LT5nZXRfdXNlcigpOw0KPiArDQo+IMKgwqDCoMKgwqDCoMKgwqBt eSAkaWQgPSBleHRyYWN0X3BhcmFtKCRwYXJhbSwgJ3ZuZXQnKTsNCj4gwqDCoMKgwqDCoMKgwqDC oG15ICRkaWdlc3QgPSBleHRyYWN0X3BhcmFtKCRwYXJhbSwgJ2RpZ2VzdCcpOw0KPiDCoA0KPiDC oMKgwqDCoMKgwqDCoMKgUFZFOjpOZXR3b3JrOjpTRE46OmxvY2tfc2RuX2NvbmZpZyhzdWIgew0K PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG15ICRjZmcgPSBQVkU6Ok5ldHdvcms6OlNETjo6Vm5l dHM6OmNvbmZpZygpOw0KPiDCoA0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqAgUFZFOjpTZWN0aW9u Q29uZmlnOjphc3NlcnRfaWZfbW9kaWZpZWQoJGNmZywgJGRpZ2VzdCk7DQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoCBteSAkem9uZSA9ICRjZmctPntpZHN9LT57JGlkfS0+e3pvbmV9IC8vICRwYXJh bXMtPnt6b25lfTsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgICMgVE9ETyBjYW4gdGhpcyBldmVu IGhhcHBlbj8NCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHJhaXNlX3BhcmFtX2V4Yyh7IHpvbmUg PT4gIm1pc3Npbmcgem9uZSIgfSkgaWYgISR6b25lOw0KPiArDQo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoCAkY2hlY2tfdm5ldF9hY2Nlc3MoJHJwY2VudiwgJGF1dGh1c2VyLCAkem9uZSwgJGlkLA0K PiBbJ1NETi5BbGxvY2F0ZSddKTsNCj4gKw0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKG15 ICRuZXdfem9uZSA9ICRwYXJhbXMtPnt6b25lfSkgew0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgJHJwY2Vudi0+Y2hlY2soJGF1dGh1c2VyLCAiL3Nkbi96b25lcy8kbmV3X3pvbmUv JGlkIiwNCj4gWydTRE4uQWxsb2NhdGUnXSk7DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+ IMKgDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBQVkU6OlNlY3Rpb25Db25maWc6OmFzc2VydF9p Zl9tb2RpZmllZCgkY2ZnLCAkZGlnZXN0KTsNCj4gwqANCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBteSAkb3B0cyA9IFBWRTo6TmV0d29yazo6U0ROOjpWbmV0UGx1Z2luLQ0KPiA+Y2hlY2tfY29u ZmlnKCRpZCwgJHBhcmFtLCAwLCAxKTsNCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgIHJhaXNlX3Bh cmFtX2V4Yyh7IHpvbmUgPT4gIm1pc3Npbmcgem9uZSJ9KSBpZiAhJG9wdHMtDQo+ID57em9uZX07 DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbXkgJHN1Ym5ldHMgPSBQVkU6Ok5ldHdvcms6OlNE Tjo6Vm5ldHM6OmdldF9zdWJuZXRzKCRpZCk7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmFp c2VfcGFyYW1fZXhjKHsgem9uZSA9PiAiY2FuJ3QgY2hhbmdlIHpvbmUgaWYgc3VibmV0cw0KPiBl eGlzdHMifSkgaWYoJHN1Ym5ldHMgJiYgJG9wdHMtPnt6b25lfSBuZSAkY2ZnLT57aWRzfS0+eyRp ZH0tDQo+ID57em9uZX0pOw0KPiDCoA0KPiBAQCAtMjU2LDcgKzI4Niw4IEBAIF9fUEFDS0FHRV9f LT5yZWdpc3Rlcl9tZXRob2QgKHsNCj4gwqDCoMKgwqAgbWV0aG9kID0+ICdERUxFVEUnLA0KPiDC oMKgwqDCoCBkZXNjcmlwdGlvbiA9PiAiRGVsZXRlIHNkbiB2bmV0IG9iamVjdCBjb25maWd1cmF0 aW9uLiIsDQo+IMKgwqDCoMKgIHBlcm1pc3Npb25zID0+IHsNCj4gLcKgwqDCoMKgwqDCoMKgY2hl Y2sgPT4gWydwZXJtJywgJy9zZG4vdm5ldHMnLCBbJ1NETi5BbGxvY2F0ZSddXSwNCj4gK8KgwqDC oMKgwqDCoMKgZGVzY3JpcHRpb24gPT4gIlJlcXVpcmVzICdTRE4uQWxsb2NhdGUnIHBlcm1pc3Np b24gb24NCj4gJy9zZG4vem9uZXMvPHpvbmU+Lzx2bmV0PiciLA0KPiArwqDCoMKgwqDCoMKgwqB1 c2VyID0+ICdhbGwnLA0KPiDCoMKgwqDCoCB9LA0KPiDCoMKgwqDCoCBwYXJhbWV0ZXJzID0+IHsN Cj4gwqDCoMKgwqDCoMKgwqDCoGFkZGl0aW9uYWxQcm9wZXJ0aWVzID0+IDAsDQo+IEBAIC0yNzAs MTAgKzMwMSwxOSBAQCBfX1BBQ0tBR0VfXy0+cmVnaXN0ZXJfbWV0aG9kICh7DQo+IMKgwqDCoMKg IGNvZGUgPT4gc3ViIHsNCj4gwqDCoMKgwqDCoMKgwqDCoG15ICgkcGFyYW0pID0gQF87DQo+IMKg DQo+ICvCoMKgwqDCoMKgwqDCoG15ICRycGNlbnYgPSBQVkU6OlJQQ0Vudmlyb25tZW50OjpnZXQo KTsNCj4gK8KgwqDCoMKgwqDCoMKgbXkgJGF1dGh1c2VyID0gJHJwY2Vudi0+Z2V0X3VzZXIoKTsN Cj4gKw0KPiDCoMKgwqDCoMKgwqDCoMKgbXkgJGlkID0gZXh0cmFjdF9wYXJhbSgkcGFyYW0sICd2 bmV0Jyk7DQo+IMKgDQo+IMKgwqDCoMKgwqDCoMKgwqAgUFZFOjpOZXR3b3JrOjpTRE46OmxvY2tf c2RuX2NvbmZpZyhzdWIgew0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG15ICRjZmcgPSBQVkU6 Ok5ldHdvcms6OlNETjo6Vm5ldHM6OmNvbmZpZygpOw0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg bXkgJHpvbmUgPSAkY2ZnLT57aWRzfS0+eyRpZH0tPnt6b25lfTsNCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgICMgVE9ETyBjYW4gdGhpcyBldmVuIGhhcHBlbj8NCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgIHJhaXNlX3BhcmFtX2V4Yyh7IHpvbmUgPT4gIm1pc3Npbmcgem9uZSIgfSkgaWYgISR6b25l Ow0KPiArDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCAkY2hlY2tfdm5ldF9hY2Nlc3MoJHJwY2Vu diwgJGF1dGh1c2VyLCAkem9uZSwgJGlkLA0KPiBbJ1NETi5BbGxvY2F0ZSddKTsNCj4gKw0KPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIG15ICRzY2ZnID0NCj4gUFZFOjpOZXR3b3JrOjpTRE46OlZu ZXRzOjpzZG5fdm5ldHNfY29uZmlnKCRjZmcsICRpZCk7ICMgY2hlY2sgaWYNCj4gZXhpc3RzDQo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbXkgJHZuZXRfY2ZnID0gUFZFOjpOZXR3b3JrOjpTRE46 OlZuZXRzOjpjb25maWcoKTsNCj4gwqANCj4gYGBgDQo+IA0KPiBPbiBKdW5lIDcsIDIwMjMgMjow MyBwbSwgQWxleGFuZHJlIERlcnVtaWVyIHdyb3RlOg0KPiA+IG5ldyBwYXRoIGlzIC96b25lcy88 em9uZT4vPHZuZXRpZD4NCj4gPiANCj4gPiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUgRGVydW1p ZXIgPGFkZXJ1bWllckBvZGlzby5jb20+DQo+ID4gLS0tDQo+ID4gwqBQVkUvTmV0d29yay9TRE4u cG0gfCA0ICsrLS0NCj4gPiDCoDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL1BWRS9OZXR3b3JrL1NETi5wbSBiL1BW RS9OZXR3b3JrL1NETi5wbQ0KPiA+IGluZGV4IGI5NWRkNWIuLjFhZDg1ZTUgMTAwNjQ0DQo+ID4g LS0tIGEvUFZFL05ldHdvcmsvU0ROLnBtDQo+ID4gKysrIGIvUFZFL05ldHdvcmsvU0ROLnBtDQo+ ID4gQEAgLTE5MCwxMCArMTkwLDEwIEBAIHN1YiBnZXRfbG9jYWxfdm5ldHMgew0KPiA+IMKgwqDC oMKgwqDCoMKgwqBteSAkem9uZWlkID0gJHZuZXQtPnt6b25lfTsNCj4gPiDCoMKgwqDCoMKgwqDC oMKgbXkgJGNvbW1lbnRzID0gJHZuZXQtPnthbGlhc307DQo+ID4gwqANCj4gPiAtwqDCoMKgwqDC oMKgwqBteSAkcHJpdnMgPSBbICdTRE4uQXVkaXQnLCAnU0ROLkFsbG9jYXRlJyBdOw0KPiA+ICvC oMKgwqDCoMKgwqDCoG15ICRwcml2cyA9IFsgJ1NETi5BdWRpdCcsICdTRE4uVXNlJyBdOw0KPiA+ IMKgDQo+ID4gwqDCoMKgwqDCoMKgwqDCoG5leHQgaWYgISR6b25laWQ7DQo+ID4gLcKgwqDCoMKg wqDCoMKgbmV4dCBpZiAhJHJwY2Vudi0+Y2hlY2tfYW55KCRhdXRodXNlciwNCj4gPiAiL3Nkbi96 b25lcy8kem9uZWlkIiwgJHByaXZzLCAxKSAmJiAhJHJwY2Vudi0+Y2hlY2tfYW55KCRhdXRodXNl ciwNCj4gPiAiL3Nkbi92bmV0cy8kdm5ldGlkIiwgJHByaXZzLCAxKTsNCj4gPiArwqDCoMKgwqDC oMKgwqBuZXh0IGlmICEkcnBjZW52LT5jaGVja19zZG5fYnJpZGdlKCRhdXRodXNlciwgJHpvbmVp ZCwNCj4gPiAkdm5ldGlkLCAkcHJpdnMsIDEpOw0KPiA+IMKgDQo+ID4gwqDCoMKgwqDCoMKgwqDC oG15ICR6b25lX2NvbmZpZyA9DQo+ID4gUFZFOjpOZXR3b3JrOjpTRE46OlpvbmVzOjpzZG5fem9u ZXNfY29uZmlnKCR6b25lc19jZmcsICR6b25laWQpOw0KPiA+IMKgDQo+ID4gLS0gDQo+ID4gMi4z MC4yDQo+ID4gDQo+ID4gDQo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18NCj4gPiBwdmUtZGV2ZWwgbWFpbGluZyBsaXN0DQo+ID4gcHZlLWRldmVsQGxp c3RzLnByb3htb3guY29tDQo+ID4gaHR0cHM6Ly9hbnRpcGhpc2hpbmcuY2V0c2kuZnIvcHJveHkv djM/aT1NVW8wUnpGSVJUVnZiRmhZVkdsb1FvbG9aUWo2dHZxeWhwRVJzbjV6OFo0JnI9Y0ZkR05I RmpWRU5uV0RFelVWbGlTWWlLOTJBLTh0UGp5ME9rclFCRktzTnR3RlFQVkZWd3ZQYWdhRlhPZEl2 SyZmPU9EbEpORlJKVGpaQmNXRmxhV3hRYUNDQ2ZLRkVpUHFuTklkQS1PRmVSV2hSa1lHdkNva0Fz WThQZG9QRjh6LUllcTRWM1dOcHpvNEdyOG5FNzZZT3hRJnU9aHR0cHMlM0EvL2xpc3RzLnByb3ht b3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwmaz1iMXA1DQo+ID4gDQo+ ID4gDQo+ID4gDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18NCj4gcHZlLWRldmVsIG1haWxpbmcgbGlzdA0KPiBwdmUtZGV2ZWxAbGlzdHMu cHJveG1veC5jb20NCj4gaHR0cHM6Ly9hbnRpcGhpc2hpbmcuY2V0c2kuZnIvcHJveHkvdjM/aT1N VW8wUnpGSVJUVnZiRmhZVkdsb1FvbG9aUWo2dHZxeWhwRVJzbjV6OFo0JnI9Y0ZkR05IRmpWRU5u V0RFelVWbGlTWWlLOTJBLTh0UGp5ME9rclFCRktzTnR3RlFQVkZWd3ZQYWdhRlhPZEl2SyZmPU9E bEpORlJKVGpaQmNXRmxhV3hRYUNDQ2ZLRkVpUHFuTklkQS1PRmVSV2hSa1lHdkNva0FzWThQZG9Q Rjh6LUllcTRWM1dOcHpvNEdyOG5FNzZZT3hRJnU9aHR0cHMlM0EvL2xpc3RzLnByb3htb3guY29t L2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwmaz1iMXA1DQo+IA0KDQo=