From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 2C87D42E0E for ; Mon, 9 May 2022 10:53:19 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CAF5B68B3C1; Mon, 9 May 2022 13:53:16 +0300 (EEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10olkn2019.outbound.protection.outlook.com [40.92.41.19]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3D71768B28B for ; Mon, 9 May 2022 13:53:10 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V850oX+YrFc9Rgw4R+6nziLgjy21g1iOlNzugEtOw6C7rskVeSG2jLjpfuPpYlgvfXqgJ5V5O81PdKJdm+raAteb+yEZMdHC7SyB9qRVS8V6DL7pKhLOfNmeuoBS6NY74LCc8u8Sk3WP1buh7Get/vZcv1nbxxgpCOBfdmXTjvWI5W0L4UMe4NvhGxx5t+WTnB9mHuvAUY3lJIdRAqBykTKG0pJKICElYQmwYoIQhAE3lEFPYHKaqyr+djWXybzrg99lcdczYuFaLlCqpD+lWqON+w9YTSUkEZ91Ebc5NZV4vQszXCg+t7Xko0TftLG/c8b+4o+B2Ddou9QJJQnqAg== 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=plMOHiH02rb5RVQXPssvcpmAqgjg/Hss96FUBCpd230=; b=E58Ec+KKT3WgXC3EtvcWLJhDChy/u2bTjF5ygiGNRoFZtfo1LDMpMSM/MlHRyKzRzgVFzwc17FUn5USJKoPD//Y5vFNcmkicRayGxxaSXl/Papiq09M2mTrgsXdq/ITxTUdf9jKa4hq+gK3ZOvhn7JrPYDvYsRZlhUGxNMe8nEHACLIrXTFdjWO+GSC/135/yOZy3IWAEgp0IVZjjf9UO3ahGLkKLY+RJdYe9SNKDHsnQ8nmEQRm/89cydVaWfD5jGMnK5ZydA4lM90a12K0CFVB6iVbsHqqRvniMZdFqJWwZLU8trVRVdNBDQpKuiJE3W4f9+jWhNFaewzFa7qPZQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=plMOHiH02rb5RVQXPssvcpmAqgjg/Hss96FUBCpd230=; b=k/beq9PxUo+x+ikLL8CYwLbSkWU1UYEGvhgBrjtpXfQd/xxxT9Gsjy7KgjYOjj4vZS9MQhjXK3SVO43xKQ3JpZ40z8VBCWwPXxw/O6wuQSXD1DCWzAxFKrYfQXnKHrUYvE9CoenG66qyVrzQ7AHzJzXwT8Yu1xpvuckX0g41Rvmq9+8ZFAp9enJdOkDCSdhmRdKA7r0a/XPH9aUSeiipWr7fAYu0dG1wbzI5rB935u01B2Ko2/NMyixoWJWCrZAatxxkjCqjqV16cH4nU06aCx9YVFf6eghCGGJ/Pmix0i6WdJHHyHMMcjyNjHwRfFbK9jrNbGkU2YuzId1ocygc/w== Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::20) by BL3P223MB0179.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:34e::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.20; Mon, 9 May 2022 10:53:07 +0000 Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::7472:6f83:eeb:45e3]) by DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::7472:6f83:eeb:45e3%9]) with mapi id 15.20.5227.023; Mon, 9 May 2022 10:53:07 +0000 From: Soft Works To: FFmpeg development discussions and patches Thread-Topic: [FFmpeg-devel] av_fopen_utf8 and cross-DLL CRT object sharing issue on Windows Thread-Index: AQHYVLToR1KJUGuNukO2WH1LPKjFMK0S36QQgAANyICAAAYuoIACkqyAgABF0UCAAJx1gIAADD/QgAAGDoCAAADIIA== Date: Mon, 9 May 2022 10:53:07 +0000 Message-ID: References: <3174427a-8eb7-b2c-eca4-242d8c9d32c@martin.st> <51bd257e-1466-66b5-7130-c05a50979b2b@martin.st> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-tmn: [0DQCjmYCoIXjDrmsKEd+bV6OJgyuXjqV] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 5ac87866-e6d4-4002-318e-08da31aa19b1 x-ms-traffictypediagnostic: BL3P223MB0179:EE_ x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: XnK2zJoo5wY6ttEc9+6x65DlZDQkjppFs1Q5BRm1Rm+BisrVhK6awx04O7YZCEwnCKVV3oS7FHfZ6uC0joRTj8X40eoOO+Th2NUfwZAl1A7sedtR80NzJW2B7xUrgzQk1qXHRdpGjSu2+6t1XwTSr+1KKIWNU6ti0pknHgQH54tXOz3P9haiu5jy4rQXxksZcOBb5zIsrzyPJmkZF/koW5jsbBuqSaFLSsDDviuDIHeZM3jlmzTOBwcl1NR+Xr7km887hNbUwcc3dm4AE3DARIW7xrPELDrnCdiIz2fq1cCgyBgr5fXgbui2xhULuGRwN2YOKL+Wu8zHxKWahyPA89kVbRHsYhOQ6NpZT2kPtKv0myb+ioDOjZJb9W2Ttgum1KmaKhZqEs7ereBZ2qnwQDFsbJY87WAK9UQjH74KR2xq0OvQT/pSoiYLu08y4I5F6VmnuSCzgBoxz25bnleS4Fw5P74vR+VQ8Odr3ivjWapOwmSPJ2/4bGkdvwKQsmBwz+N0aQaK7FiVJDEHngbCV6Cebyh67tyvxkVZROnTxM0Cv4/7RUSl4EG2CgtIJ+OEhqQaDyhcDHSkHLOOTQzEaFl7q/aOgP2ksYPSiChHnUzrrn8HXDas/xN5TFcqD8/T8o+Rf4Qxxy4wpjzjlMOBBg== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MnRON0dyOWN4NnFocU1ZT0c0UW04ck51dzYyRXNjNVQwdFlXM2pTK1N1cTJM?= =?utf-8?B?MmIwVHZmc3h2SHhxdWNmLzhpNHIyQ0JLNzdvUDlUWHFZQmJrRHJoSEhGS0tZ?= =?utf-8?B?SWZMWkxEcG43ZlFIUUhKUHMrdmI3RW9qZ1dzdU1UZ1JSaGdvL3grSXgyTU1k?= =?utf-8?B?WVBjajFhRW9sN1BZVlVXaFhWVnZPOHJ0WXAwWW5lK0ZtSm9iWnRRSzRCUnlw?= =?utf-8?B?cmNyWmVVdUpZZ2lHSy9FOUE5cFNoVmV5czJLb1ZLU3hSZ21mQWJHZFJLbm5E?= =?utf-8?B?NjZ5VVJZSHZSQjZZOUZEMEswWlMwbVRvQk9GUEZGSzJqclVUbVdmeGZxU0E2?= =?utf-8?B?THp4TkRNZmhzckloanRuNmhrV3NPM0FITWIrWEY2YndoMEN4aDlGeG5DRTlX?= =?utf-8?B?NUx3OTRYcVJrWHVqbmYzQTFhbEswdm1DY1prdnhvRUROWjFuRnRjMjNVRVor?= =?utf-8?B?ZCtTVVk4blA0Vi9WYzlUMGlsR09mWDVYQjFLcStaTWRUVE9BNHl0UDl4eWQ2?= =?utf-8?B?WlA4SUc4WmNtZ2gzWThJaHlQMEgyTXJTbWNHeXFJU3JJdmE1MHNWYnJIL3c2?= =?utf-8?B?ZVRJM2c2ZlFTNGgyVFJ0M3EzdmZaOVlXVUFoYTFSalJiRU90dGk1MEhkenlt?= =?utf-8?B?UkFtbG5uQWFlKzcxc0xUNE1vK2xlUUhMdXlQQ280KzA2bTRLSEpQU1B1ditW?= =?utf-8?B?L201N2lrNm1UalViYTZKRUQxTmpoWGpwaG1XR0d3MXlxQ0hCcUg5Y2drUDFs?= =?utf-8?B?S3ptOUtsZU94ME1KYjRoTEhiWThUZU5Ka2E4RnhYNWZGWjVBTnRJbFN5Q2Nz?= =?utf-8?B?M3U3Z1l3bzIrMExMb0wzeEppK0NibkZxT3BkTjJKN2tVem9KeXRxNlFURFFk?= =?utf-8?B?WFIrUjVoZEl0OXBlVU5YYUt2WTM3YmxEYmdMSExvTVVQTEJXbHRwV2ZZVlhk?= =?utf-8?B?YW9BZ29tYXBlV0FmSWhFUWViS1pjL1c0bEl6V1Y5Qnc0SzZqc0Yza0IxbkRV?= =?utf-8?B?TnV1VnJWZksvN3RkMkFCNzhpcXhVQmFBN2tLcVprRHV3ZU96R0x5Z1dXY1ZZ?= =?utf-8?B?bXZQYUx2Sko3cWMvVzNmelA4TmViRk54UEd1Lzd1NUR5cHlxYndiV3RYQWZK?= =?utf-8?B?OGVhMFM3aTk4a3laelBKbGwzQ080TDVCVTE1bmZxR1Z6TmtsYU5PUmc2emo1?= =?utf-8?B?K2lKZVhFb1pER3Q0aEV3eWcvZm9SbEF3T2dmMXM2UVllcEVURUJFcDNLZXBP?= =?utf-8?B?bGI5K09taUFtWWZTMzREVS91bVAvTG1XMFRscDdXZU1HSmd1cWhrVkZxU21D?= =?utf-8?B?L2xOa055U0Y0WUZVSW1wQVNuK3BROFZjaFhNN0lBOUhZVjgyOElqMWI1RXBo?= =?utf-8?B?cUtmaEFCOWtLMnk4RVBWbmQ2Q0xQaEcvQk5mbTArUWdabUdNZEN6MXM2QTNT?= =?utf-8?B?T2lSWFdITVRLK3l4TGdoSlM5RGI0NEdXMHhSZlBTcUEyN3ZLYlF5UzFDVWNF?= =?utf-8?B?aXZXYmVnSDBxcEhNSDIvOWxvS2VVbVZHWW5mMHBpU1Arb0FORTFPQlAyOFVi?= =?utf-8?B?OXZoRGU4RGZZOHVjdzQ4RXAxWEVxOEEzRW9MRk84ZUtmbTY3MUZJejN4aUZ3?= =?utf-8?B?Q2I3TmwrOWN2bkE5RXdFTmU0TnluZU1NOXl4UXlXV1A4bWFoeDZtTDVETUQ3?= =?utf-8?B?RzZ1SzdxQkhQMlRuYmhpekxyWVA0S3dDV1lHQU1DV2pHaHRNT0tIYlhuNGJq?= =?utf-8?B?akI5M0JTNFNaUHFQbG9xck1NRDNYalY3aHUvUHJSVHQrRDdNdHBiS0lOUFJU?= =?utf-8?B?T0JxTXBiMXdBOTJ0L0N5ZDdnQ2Z0bmZ4dUcwMnlONzhpdlFhTlpORDd5WXVZ?= =?utf-8?B?WmQyTXZwaEZnOGE4VldzRzhiSlNsVEFaVkdTNE9hMmRueUkxY1ovYllwcFRN?= =?utf-8?Q?RYptKzXZtnY=3D?= MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-1ff67.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 5ac87866-e6d4-4002-318e-08da31aa19b1 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 May 2022 10:53:07.1278 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3P223MB0179 Subject: Re: [FFmpeg-devel] av_fopen_utf8 and cross-DLL CRT object sharing issue on Windows X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZmZtcGVnLWRldmVsIDxm Zm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPiBPbiBCZWhhbGYgT2YNCj4gTWFydGluIFN0 b3JzasO2DQo+IFNlbnQ6IE1vbmRheSwgTWF5IDksIDIwMjIgMTI6NDcgUE0NCj4gVG86IEZGbXBl ZyBkZXZlbG9wbWVudCBkaXNjdXNzaW9ucyBhbmQgcGF0Y2hlcyA8ZmZtcGVnLQ0KPiBkZXZlbEBm Zm1wZWcub3JnPg0KPiBTdWJqZWN0OiBSZTogW0ZGbXBlZy1kZXZlbF0gYXZfZm9wZW5fdXRmOCBh bmQgY3Jvc3MtRExMIENSVCBvYmplY3QNCj4gc2hhcmluZyBpc3N1ZSBvbiBXaW5kb3dzDQo+IA0K PiBPbiBNb24sIDkgTWF5IDIwMjIsIFNvZnQgV29ya3Mgd3JvdGU6DQo+IA0KPiA+PiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBmZm1wZWctZGV2ZWwgPGZmbXBlZy1kZXZl bC1ib3VuY2VzQGZmbXBlZy5vcmc+IE9uIEJlaGFsZiBPZg0KPiA+PiBNYXJ0aW4gU3RvcnNqw7YN Cj4gPj4gU2VudDogTW9uZGF5LCBNYXkgOSwgMjAyMiAxMTo0MiBBTQ0KPiA+PiBUbzogRkZtcGVn IGRldmVsb3BtZW50IGRpc2N1c3Npb25zIGFuZCBwYXRjaGVzIDxmZm1wZWctDQo+ID4+IGRldmVs QGZmbXBlZy5vcmc+DQo+ID4+IFN1YmplY3Q6IFJlOiBbRkZtcGVnLWRldmVsXSBhdl9mb3Blbl91 dGY4IGFuZCBjcm9zcy1ETEwgQ1JUIG9iamVjdA0KPiA+PiBzaGFyaW5nIGlzc3VlIG9uIFdpbmRv d3MNCj4gPj4NCj4gPj4gT24gTW9uLCA5IE1heSAyMDIyLCBTb2Z0IFdvcmtzIHdyb3RlOg0KPiA+ Pg0KPiA+Pj4NCj4gPj4+DQo+ID4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+ PiBGcm9tOiBmZm1wZWctZGV2ZWwgPGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmc+IE9u IEJlaGFsZiBPZg0KPiA+Pj4+IE1hcnRpbiBTdG9yc2rDtg0KPiA+Pj4+IFNlbnQ6IFN1bmRheSwg TWF5IDgsIDIwMjIgMTA6MTIgUE0NCj4gPj4+PiBUbzogRkZtcGVnIGRldmVsb3BtZW50IGRpc2N1 c3Npb25zIGFuZCBwYXRjaGVzIDxmZm1wZWctDQo+ID4+Pj4gZGV2ZWxAZmZtcGVnLm9yZz4NCj4g Pj4+PiBTdWJqZWN0OiBSZTogW0ZGbXBlZy1kZXZlbF0gYXZfZm9wZW5fdXRmOCBhbmQgY3Jvc3Mt RExMIENSVA0KPiBvYmplY3QNCj4gPj4+PiBzaGFyaW5nIGlzc3VlIG9uIFdpbmRvd3MNCj4gPj4+ Pg0KPiA+Pj4+IE9uIFNhdCwgNyBNYXkgMjAyMiwgU29mdCBXb3JrcyB3cm90ZToNCj4gPj4+Pg0K PiA+Pj4+PiBBaCB5ZXMgb2YgY291cnNlLCB0aGFua3MgZm9yIHRoZSBleHBsYW5hdGlvbi4gSSBz dGlsbCB3b25kZXINCj4gPj4gd2hldGhlcg0KPiA+Pj4+PiB0aGVyZSBhcmVuJ3QgYW55IG90aGVy IGlzc3VlcyB3aGVuIG11bHRpcGxlIENSVHMgYXJlIGJlaW5nIHVzZWQ/DQo+ID4+Pj4+DQo+ID4+ Pj4+IE9yIGFyZSB0aGUgZmlsZSBJTyBBUElzIHRoZSBvbmx5ICJ3ZWFrIiBwb2ludCB3aXRoIHJl Z2FyZHMgdG8NCj4gPj4+Pj4gbXVsdGlwbGUgQ1JUcyBiZWluZyB1c2VkPw0KPiA+Pj4+DQo+ID4+ Pj4gSW4gdGhlIGNhc2Ugb2YgZmZtcGVnLCB5ZXMuDQo+ID4+Pj4NCj4gPj4+PiBGb3IgZ2VuZXJp YyBsaWJyYXJ5IGRlc2lnbiwgeW91J2QgaGF2ZSBhbiBpc3N1ZSBhbnl3aGVyZSB3aGVyZQ0KPiB5 b3UNCj4gPj4+PiBwYXNzDQo+ID4+Pj4gQ1JUIHJlc291cmNlcyBhcm91bmQgLSBmaWxlIGRlc2Ny aXB0b3JzIGZyb20gb3BlbiwgRklMRSosIGFuZA0KPiA+PiBpbmRlZWQNCj4gPj4+PiBhcw0KPiA+ Pj4+IHlvdSBtZW50aW9uZWQgLSBhbGxvY2F0aW5nIGFuZCBmcmVlaW5nIG1lbW9yeSB3aXRoIG1h bGxvYy9mcmVlIGluDQo+ID4+Pj4gZGlmZmVyZW50IERMTHMuIEJ1dCBhcyBsb25nIGFzIHRoZSBs aWJyYXJ5IGRlc2lnbiBpcyBzdWNoIHRoYXQNCj4geW91DQo+ID4+Pj4gZG9uJ3QNCj4gPj4+PiBo YW5kIG92ZXIgb3duZXJzaGlwIG9mIGFsbG9jYXRpb25zIGFuZCBkb24ndCBwYXNzIHN1Y2ggb2Jq ZWN0cw0KPiA+PiBhY3Jvc3MNCj4gPj4+PiBETEwNCj4gPj4+PiBib3VuZGFyaWVzLCB0aGVyZSdz IG5vIGlzc3VlLg0KPiA+Pj4NCj4gPj4+IFl1cCwgdW5kZXJzdG9vZC4gSSB0aG91Z2h0IHRoZXJl IHdvdWxkIGJlIG1hbnkgbW9yZSwgYnV0IEkNCj4gcmVhbGl6ZWQNCj4gPj4+IHRoYXQgdGhvc2Ug Im1hbnkgbW9yZSIgSSB0aG91Z2h0IGFib3V0IGFyZSBhbGwgQysrIHRoaW5ncywgbm90IEMuDQo+ ID4+Pg0KPiA+Pj4gU28sIHB1dHRpbmcgdGhpcyBhbGwgdG9nZXRoZXIsIEkgYWdyZWUgdGhhdCB0 aGUgZXhpc3RlbmNlIG9mDQo+ID4+PiBhdl9mb3Blbl91dGY4IChhcyBhIHB1YmxpYyBBUEkhKSBp cyByYXRoZXIgdW5mb3J0dW5hdGUuIFRvIG1ha2UNCj4gdGhpcw0KPiA+Pj4gY29uc2lzdGVudCwg aXQgd291bGQgYmUgbmVjZXNzYXJ5IHRvIHByb3ZpZGUgYXZfIGVxdWl2YWxlbnRzIHRvDQo+ID4+ PiBhbGwgdGhlIGZpbGUgQVBJcyBhcyB3ZWxsIChidXQgdGhlcmUgYXJlIHF1aXRlIGEgZmV3KS4N Cj4gPj4NCj4gPj4gSW5kZWVkIC0gZm9yIHRoZSBmb3BlbiBmYW1pbHkgb2YgZnVuY3Rpb25zLCB3 ZSB3b3VsZCBuZWVkIHRvDQo+IGR1cGxpY2F0ZQ0KPiA+PiBhbGwNCj4gPj4gb2YgZm9wZW4vZmNs b3NlL2ZwcmludGYvZndyaXRlL2ZwdXRzIGFuZCB3aGF0ZXZlciBtaWdodCBoYXBwZW4gdG8NCj4g YmUNCj4gPj4gdXNlZC4NCj4gPj4gU28gdGhhdCBkb2Vzbid0IHNlZW0gd29ydGh3aGlsZS4NCj4g Pj4NCj4gPj4+IFNvIEkgd29uZGVyIHdoZXRoZXIgaXQgd291bGRuJ3QgbWFrZSBzZW5zZSB0byBk ZXByZWNhdGUgdGhpcyBhcw0KPiA+Pj4gYSBwdWJsaWMgQVBJIG1lbWJlcj8NCj4gPj4NCj4gPj4g SSBhZ3JlZSB0aGF0IGl0IHByb2JhYmx5IHdvdWxkIGJlIHRoZSBiZXN0IHdheSBmb3J3YXJkLCB0 bw0KPiBkZXByZWNhdGUNCj4gPj4gaXQgYXMNCj4gPj4gYSBwdWJsaWMgQVBJLCB3aXRob3V0IGFu eSBzdWdnZXN0ZWQgcmVwbGFjZW1lbnQuIEEgcXVpY2sgZ29vZ2xpbmcNCj4gPj4gZGlkbid0DQo+ ID4+IGZpbmQgYW55IHJlYWwgdXNlIG9mIHRoZSBmdW5jdGlvbiBvdXRzaWRlIG9mIGZmbXBlZyBp dHNlbGYsIEkgb25seQ0KPiA+PiBmb3VuZA0KPiA+PiBoaXRzIGluIGxhbmd1YWdlIHdyYXBwZXJz ICh3aGljaCB0cnkgdG8gbWFwIGV2ZXJ5IHNpbmdsZSBmdW5jdGlvbg0KPiB0bw0KPiA+PiB0aGUN Cj4gPj4gb3RoZXIgbGFuZ3VhZ2UpLiBTbyBJIHRoaW5rIHRoYXQgd291bGQgaGF2ZSBtaW5pbWFs IGltcGFjdCBvbg0KPiBvdGhlcnMuDQo+ID4+DQo+ID4+IFdlIGNvdWxkIHRoZW4gYWRqdXN0IHRo ZSBmdW5jdGlvbiB0byBiZSBhIGhlYWRlciBpbmxpbmUgZnVuY3Rpb24NCj4gPj4gKHdoaWNoDQo+ ID4+IHRha2VzIGNhcmUgb2YgdGhlIGR1cGxpY2F0aW9uIGludG8gYWxsIGxpYnJhcmllcyksIGp1 c3QgbGlrZSB0aGUNCj4gb3RoZXINCj4gPj4gd2NoYXI8LT51dGY4IGZ1bmN0aW9ucyB3ZSBoYXZl IGluIGxpYmF2dXRpbC93Y2hhcl9maWxlbmFtZS5oLCBzbyB3ZQ0KPiA+PiBzYWZlbHkNCj4gPj4g Y291bGQgdXNlIHRoZW0gd2l0aGluIGZmdG9vbHMgdG9vLg0KPiA+DQo+ID4gVGhpcyB3b3VsZCBz b3VuZCBnb29kIHRvIG1lLCBzbyB3aGVuIG5vYm9keSBvYmplY3RzLCB0aGF0IHdvdWxkIGJlDQo+ ID4gdGhlIHdheSB0byBnbyBJTU8uDQo+ID4gQW5kIGluIGNhc2UgdGhhdCBzb21lYm9keSB3b3Vs ZCBvYmplY3QsIHRoZSBzZWNvbmQgYmVzdCBvcHRpb24gY291bGQNCj4gPiBiZSB0byBkZXByZWNh dGUgaXQgZm9yIFdpbmRvd3Mgb25seSAod2hpbGUgYXBpIGRpZmZlcmVuY2VzIHBlcg0KPiBwbGF0 Zm9ybQ0KPiA+IGFyZSBzdXJlbHkgbm90IGRlc2lyYWJsZSwgaXQgbWlnaHQgc3RpbGwgYmUganVz dGlmaWVkIGZvciBhIG5pY2hlDQo+IGNhc2UNCj4gPiBsaWtlIHRoaXMpLg0KPiA+DQo+ID4gQlRX IC0gY291bGQgaXQgYmUgdGhhdCB5b3VyIG9yaWdpbmFsIHBhdGNoIG1pc3NlZCB0byBhcHBseSB0 aGUgc2FtZQ0KPiBmb3INCj4gPiBsaWJhdmZpbHRlcj8NCj4gDQo+IEF0IHRoZSB0aW1lLCB0aGVy ZSB3ZXJlIG5vIHVzZXMgb2YgdGhlIHBlci1saWJyYXJ5IGR1cGxpY2F0ZWQNCj4gZnVuY3Rpb25z DQo+IHdpdGhpbiBsaWJhdmZpbHRlciwgc28gSSBkaWRuJ3QgYWRkIGl0IHRoZXJlLiBJZiB3ZSBh ZGQgdXNhZ2Ugb2YgdGhlbSwNCg0KVGhlcmUgYXJlIDkgdXNlcyBhbHJlYWR5IGFuZCBteSBwYXRj aCBhZGRzIDYuIA0KDQo+IHdvdWxkIGluZGVlZCBuZWVkIHRvIGFkZCB0aGUgc2FtZSBkdXBsaWNh dGlvbiBsb2dpYyB0aGVyZSB0b28uIChCdXQgaWYNCj4gd2UNCj4gbWFrZSB0aGUgZnVuY3Rpb24g ZW50aXJlbHkgaW5saW5lIGluIGhlYWRlcnMsIGFzIG9wcG9zZWQgdG8NCj4gYXZwcml2X29wZW4v ZmZfb3Blbiwgd2UgZG9uJ3QgbmVlZCB0byBkbyB0aGF0IGZvciB1c2Ugb2YgdGhhdA0KPiBmdW5j dGlvbi4pDQoNCll1cC4NCg0KVGhhbmtzLA0Kc29mdHdvcmt6DQpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZm bXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWls CmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmli ZSIuCg==