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 71C7143622 for ; Sun, 19 Jun 2022 07:24:41 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F14FB68B49E; Sun, 19 Jun 2022 10:24:37 +0300 (EEST) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10olkn2036.outbound.protection.outlook.com [40.92.40.36]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F07A668A484 for ; Sun, 19 Jun 2022 10:24:31 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XyQVzgwhJTHbcwRXuQGj6HVHTF/gqDMAkbPQa5GGRmzFYP0cHpL8FSWQxAc4YJmE10ZjjTBQ5Jx7AiKU2uMmx/RGDEH7vCYhDBLRRYU6fAugTiJ19FO+3dHrV/Ear5J4aaEa2iPuxeOt/lmgQCQCn7Qchbcs0q9e05kipG1O8pP65/+HRMRs00qzsWmqQ7z7GR9gss4VjIy3KsTFlE6FsvUmLVQXn6gimQQ8AqXR7zdeD3EolSFWC7H0WxKccVOXTdZzJdLOV+oqBDd8qVOy/i5xVizuFLC1d8lOl9pB7EtSj1eiqRowO2E28sHrBXUqdp8c8ignf8OZIoFoJoe+pw== 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=DITzuWFUkJm8RTSCIsj2dzm0VkkV/ELMSPcbGdepUZk=; b=gIj9887Zrdtsmql/eZitF7hFVy+1JeVTvA23b87Nqfcc+2cB3xb9lDbO9YQlqKStKQ68eMSaJu7hT50eXwEBQ12wk+0QcYSyAGVilpcqk6eVgdCPZXhP47v4IKkFrrJ8cO4iSAjLXDldLA3v6koej0LZiPLN8GTOXGTIsP/MpSCnhxw+Q5jqXKlTUCE/5q+PuAIZudHpjdBXXdhZ0JJ7nrXTM2CwKkyhVu4H8mYTR4qzKcXrKNBZ9/CA/Gzotu1SZOauOGVLVrkSqFecavrx247Dr3xCewhNIb5BpfW+dxBfTtraanuUIAb37XyeRBlOWIvbhUwe359Og5YY8ox4zw== 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=DITzuWFUkJm8RTSCIsj2dzm0VkkV/ELMSPcbGdepUZk=; b=gR49z5QVL8Q/PAM+uHMhvG5MdMr3W+LBQ364resFMT8V2h9Mwy0EIR7pS3A3JKxUd4xKdaHEv6BueqiP6qPp3WXGdXFOi59g5x8C8JQ37b4Z2VblhYF1e9yn57JV5LJLMMlUCKuellRK95EjjqrqRLGsNpNHt3adOnHpXOsOXddh+Ip34EE12ZPAdXReqdlVapjoASuxWcis0oxumo7Wc2lZgl6sqpo4H09B7aVfPAQ2gLAZ4YEgnVN4vpqjr8xwp9D12bJ0On1aqtuTLbN6xT8soiagWMjOOFrqQzhmw5CPrKrUyDtzo481GYK2xmxveDO2jXfz46I5qQaJQ87uwQ== Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::20) by DS7P223MB0405.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:87::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.18; Sun, 19 Jun 2022 07:24:29 +0000 Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::d08c:b865:df15:6a]) by DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::d08c:b865:df15:6a%6]) with mapi id 15.20.5353.020; Sun, 19 Jun 2022 07:24:29 +0000 From: Soft Works To: FFmpeg development discussions and patches Thread-Topic: [FFmpeg-devel] [PATCH v17 1/5] libavutil: Add wchartoutf8(), wchartoansi(), utf8toansi() and getenv_utf8() Thread-Index: AQHYgi0jPoSArUYG2Um2Cp3MFxsjlq1WLhoAgAANloCAAAtUAIAACHHg Date: Sun, 19 Jun 2022 07:24:29 +0000 Message-ID: References: <20220617093141.9826-1-nil-admirari@mailo.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-tmn: [do+iE1dtLEuo1lGoY4ujP4yH0sagcsVN] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 13435814-ecdd-4913-7eb8-08da51c4bf53 x-ms-traffictypediagnostic: DS7P223MB0405:EE_ x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Uh6WLchb8vjuyUvNB0OFTkNdY+Ih7mCt33/5kNBc5gqOjAjJMEi7tK9AYeFFwiy4+Kx/q9Sdi3RePwAeWfXSM0I4wK802lWi8cN0/9Zxr8Zx/VSOd9UxQEjGZQTEpDdRaoDByfJGf4ptGYRGFfa0qRCao0qIRM5HS4wuJBWOyzKYCKa5qfZRzn75zTuM+71kNr0l7KEe7odf/Up/4ildjpnO5JBZouZyCx6KtBmFsQrvSxpZKaal5Jj9GCgwjL5rknT5UMX1SwL7xsb0cgu1WpFe2OWXZf31l8zpOvNi9ilUgHZJvZeOQrJ3fX/q/arMHUc7Wpe9z8rY3YvxRuMGrH/goao5OxY390b5dVZkMa06FkA/bY5Nl8/uS3/KqlXKb6yfRoJdQnNP1iNWXBNLS9pRN+MXieDozwWU8IZlOTKma/vGmhxA8XOquxOf9NvPUatyPHHKAHBW+sxb9R16lYTvse21EJe9y10WmD7zf+f5eYfRHAhqhB60tre2LgTJ9A+Er9YPkcQEXtyaWTFVj4U/bgpG3IDnH414cM3ZGnZyJrSDdmI82TvSSe+OvoXD+MT9ITcNtO/s/NRWq0DxhQ== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MGhlQkx5NkVEblRSejU0Z1R2UU9xZmRpOGV6OVJBdmFic3psNGx1cllpWFk2?= =?utf-8?B?K3YzT2VMVUwycmsyMmNFMjJpbGFxcEJIdmRHVTd3S3JHMHNKeWJYc21UK1BJ?= =?utf-8?B?aThvMmRaWGxldmpweVlEWitDSEtrUDJPQWV5UlpXMW11cGViYlU4bFl4OVEz?= =?utf-8?B?cHhQTXJtNXhGQWs5Z095VHhwWmlRSThzdHRkemNZQjN3aEl0SE9nVUxyM04y?= =?utf-8?B?TlVTQlQ3ZlY1dGNseTFmOWpDVjRZeWVVV3lQRXJBNlgwS2hFN1dHQm5sQk1h?= =?utf-8?B?T2RkRS8yUXJISTJGSThhQStWTzZuMWcwZW1rSFR0Skh4b3I5RGlKQzYwL0xK?= =?utf-8?B?L21KSk1BZlJ1WFVjTU1kcmFvMDdaMXNZVU4rVzNGZXFpRTFKU2lCcXJEOGw1?= =?utf-8?B?czBteUc0T0RtQTFodkNNVDU4OGFoY2E4c0lIaXF2eGVQSjF0VCs5K1pXWGQ4?= =?utf-8?B?VVJQTDZXbnJoQm1oOGkrSTNkNVRIemRSQTFHUEkvSHltbFF3d09WYU1heEpw?= =?utf-8?B?S3pndnNWeGNtV2R0R0tBbXJXa0VHVkUwSGtLVjJmdUdRU0t2OGRPZkZkUGh0?= =?utf-8?B?TlBXS0xzSzdhczl3T0xjSndUZHZJWFk0dmZmTnJGU2hkVXA3a2tTcGFENUtp?= =?utf-8?B?Q0hDbEd2dW4zWVVFaE1qclZqdHFBcEQvaVFjY3VxZWw0REtmcFlhZmtCKzhW?= =?utf-8?B?VEFNaEZkMGl6cHo3dXpob0pIaEpUVklZNVlqaHVsZ3pETFBIR0YzTCs0T21Y?= =?utf-8?B?Z0VuNTd6QzVOVmVUZk9uc3MyM3dvSDRlNW00UXJFWkFFWW5UTnB6TS9pMzh6?= =?utf-8?B?RzNFdTRkNUhnZjg2Y3ZlUVo2aG40cmZsMitvTHZxVmZhem0wSGxSY2ZkVmhH?= =?utf-8?B?UDB0TkNIcElJbHZtMEx4b3FwVklzVE91bjFJOUNCRXA2RjB5RENudTBBUXll?= =?utf-8?B?d0w5QVJRWWlJVEtKTytzOVJqMThDQ2hnT0k2S01JZm5XWmk0QXpxbHQxbnlR?= =?utf-8?B?WGdmTENDcXFZVFZQZ2locFcwclhIeVo5RHlGbEtpUUZNRWRUUXdGK3I0VGkz?= =?utf-8?B?R2VTa1VoMlJKVjQyL25RRmk3ZmQwT1MzVjVzcmdTMGdYVFMwRHlwbDdCbFEy?= =?utf-8?B?V1p0K085a3hBbnU2RW5hWWE3dlVibTBlZ3FvZ2pyMWlGajZZS0pES2JRaUZS?= =?utf-8?B?Ly9YN3VBanQ5Z0dIc2xRdUFSd3BLTC9TWlU3cHRwcThWdWpnRlhqNXdqb3dV?= =?utf-8?B?bldJbUlPM2NwelZXWDVyMjlBbTBZdmhqTUJRdTFTVHRRcU1rZmxhOXlPQzBB?= =?utf-8?B?dGJSVVZGM3lSMG1OeW9YWkZRMWczMnF0QkVDcUZ3eXRnc1IyMnVWVXBodElD?= =?utf-8?B?d2U4eVU5eldYUXZ5bGZpa0I4ZGRXOEQ1dGxUMmh4N0VneTFiMWFuT01weXRu?= =?utf-8?B?WTVCZmxYVEVKUGthWUVEakw0Tml1Q1lIUE5hL040aVZNN21zYVIreXNuWkUy?= =?utf-8?B?VWtKUnZzTi9GaVBXSjlHLzNXVlBWNVk2b1AwVFBaQ2NBREVXcEMvbDE2UEE3?= =?utf-8?B?SkhCS0hGN3JPc3FWamVOWTcxZEoycDRTL0FOUjlkQnJZZVhtV0pFdm9VcHFh?= =?utf-8?B?YUZmM2NFNDRTQUl2Sjd6eVpoVXJzWWtyL0JaenFLR2toK2pVMm1pZElXb0l6?= =?utf-8?B?R0huYWdQeURXVDlHRUxtY3BBelZ5STN4UU9oOGI2WWRVL1E1Rk9aT2tjL25Q?= =?utf-8?B?eXI3NEVlY0lDbVo4U3V0K0lGQVZDdWpLMEQ1Z1Vob0pJK3dBOTN1Q2FwbTZR?= =?utf-8?B?OTg2ZnBRQlM1VU40eldZZ090b1NkREZjZHptTkNDckE0dlZJQXBRTkNYbUdm?= =?utf-8?B?NXJua28wWjhxdWptdUpkYXVQaDh5S0NiSWIwU0gwak9UUUxMb3BNNExzUytt?= =?utf-8?Q?TkPq/UlXN+0=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: 13435814-ecdd-4913-7eb8-08da51c4bf53 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Jun 2022 07:24:29.1394 (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: DS7P223MB0405 Subject: Re: [FFmpeg-devel] [PATCH v17 1/5] libavutil: Add wchartoutf8(), wchartoansi(), utf8toansi() and getenv_utf8() 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 Zm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPiBPbiBCZWhhbGYgT2YNCj4gQW5kcmVhcyBS aGVpbmhhcmR0DQo+IFNlbnQ6IFN1bmRheSwgSnVuZSAxOSwgMjAyMiA4OjI4IEFNDQo+IFRvOiBm Zm1wZWctZGV2ZWxAZmZtcGVnLm9yZw0KPiBTdWJqZWN0OiBSZTogW0ZGbXBlZy1kZXZlbF0gW1BB VENIIHYxNyAxLzVdIGxpYmF2dXRpbDogQWRkDQo+IHdjaGFydG91dGY4KCksIHdjaGFydG9hbnNp KCksIHV0Zjh0b2Fuc2koKSBhbmQgZ2V0ZW52X3V0ZjgoKQ0KPiANCj4gU29mdCBXb3JrczoNCj4g Pg0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IGZmbXBl Zy1kZXZlbCA8ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZz4gT24gQmVoYWxmIE9mDQo+ ID4+IEFuZHJlYXMgUmhlaW5oYXJkdA0KPiA+PiBTZW50OiBTdW5kYXksIEp1bmUgMTksIDIwMjIg Njo1OSBBTQ0KPiA+PiBUbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcNCj4gPj4gU3ViamVjdDog UmU6IFtGRm1wZWctZGV2ZWxdIFtQQVRDSCB2MTcgMS81XSBsaWJhdnV0aWw6IEFkZA0KPiA+PiB3 Y2hhcnRvdXRmOCgpLCB3Y2hhcnRvYW5zaSgpLCB1dGY4dG9hbnNpKCkgYW5kIGdldGVudl91dGY4 KCkNCj4gPj4NCj4gPj4gTmlsIEFkbWlyYXJpOg0KPiA+Pj4gd2NoYXJ0b3V0ZjgoKSBjb252ZXJ0 cyBzdHJpbmdzIHJldHVybmVkIGJ5IFdpbkFQSSBpbnRvIFVURi04LA0KPiA+Pj4gd2hpY2ggaXMg RkZtcGVnJ3MgcHJlZmZlcmVkIGVuY29kaW5nLg0KPiA+Pj4NCj4gPj4+IFNvbWUgZXh0ZXJuYWwg ZGVwZW5kZW5jaWVzLCBzdWNoIGFzIEF2aVN5bnRoLCBhcmUgc3RpbGwNCj4gPj4+IG5vdCBVbmlj b2RlLWVuYWJsZWQuIHV0Zjh0b2Fuc2koKSBjb252ZXJ0cyBVVEYtOCBzdHJpbmdzDQo+ID4+PiBp bnRvIEFOU0kgaW4gdHdvIHN0ZXBzOiBVVEYtOCAtPiB3Y2hhcl90IC0+IEFOU0kuDQo+ID4+PiB3 Y2hhcnRvYW5zaSgpIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgc2Vjb25kIHN0ZXAgb2YgdGhlDQo+ IGNvbnZlcnNpb24uDQo+ID4+PiBDb252ZXJzaW9uIGluIGp1c3Qgb25lIHN0ZXAgaXMgbm90IHN1 cHBvcnRlZCBieSBXaW5BUEkuDQo+ID4+Pg0KPiA+Pj4gU2luY2UgdGhlc2UgY2hhcmFjdGVyIGNv bnZlcnRpbmcgZnVuY3Rpb25zIGFsbG9jYXRlIHRoZSBidWZmZXINCj4gPj4+IG9mIG5lY2Vzc2Fy eSBzaXplLCB0aGV5IGFsc28gZmFjaWxpdGF0ZSB0aGUgcmVtb3ZhbCBvZiBNQVhfUEFUSA0KPiA+ PiBsaW1pdA0KPiA+Pj4gaW4gcGxhY2VzIHdoZXJlIGZpeGVkLXNpemUgQU5TSS9XQ0hBUiBzdHJp bmdzIHdlcmUgdXNlZA0KPiA+Pj4gYXMgZmlsZW5hbWUgYnVmZmVycy4NCj4gPj4+DQo+ID4+PiBn ZXRlbnZfdXRmOCgpIHdyYXBzIF93Z2V0ZW52KCkgY29udmVydGluZyBpdHMgaW5wdXQgZnJvbQ0K PiA+Pj4gYW5kIGl0cyBvdXRwdXQgdG8gVVRGLTguIENvbXBhcmVkIHRvIHBsYWluIGdldGVudigp LA0KPiA+Pj4gZ2V0ZW52X3V0ZjgoKSByZXF1aXJlcyBhIGNsZWFudXAuDQo+ID4+Pg0KPiA+Pj4g QmVjYXVzZSBvZiB0aGF0LCBpbiBwbGFjZXMgdGhhdCBvbmx5IHRlc3QgdGhlIGV4aXN0ZW5jZSBv Zg0KPiA+Pj4gYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgY29tcGFyZSBpdHMgdmFsdWUgd2l0 aCBhIHN0cmluZw0KPiA+Pj4gY29uc2lzdGluZyBlbnRpcmVseSBvZiBBU0NJSSBjaGFyYWN0ZXJz LCB0aGUgdXNlIG9mIHBsYWluDQo+IGdldGVudigpDQo+ID4+PiBpcyBzdGlsbCBwcmVmZXJyZWQu IChsaWJhdnV0aWwvbG9nLmMgY2hlY2tfY29sb3JfdGVybWluYWwoKQ0KPiA+Pj4gaXMgYW4gZXhh bXBsZSBvZiBzdWNoIGEgcGxhY2UuKQ0KPiA+Pj4NCj4gPj4+IFBsYWluIGdldGVudigpIGlzIGFs c28gcHJlZmZlcmVkIGluIFVOSVgtb25seSBjb2RlLA0KPiA+Pj4gc3VjaCBhcyBia3RyLmMsIGZi ZGV2X2NvbW1vbi5jLCBvc3MuYyBpbiBsaWJhdmRldmljZQ0KPiA+Pj4gb3IgYWZfbGFkc3BhLmMg aW4gbGliYXZmaWx0ZXIuDQo+ID4+PiAtLS0NCj4gPj4+ICBjb25maWd1cmUgICAgICAgICAgICAg ICAgICB8ICAxICsNCj4gPj4+ICBsaWJhdnV0aWwvZ2V0ZW52X3V0ZjguaCAgICB8IDcxDQo+ID4+ ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4+PiAgbGliYXZ1dGls L3djaGFyX2ZpbGVuYW1lLmggfCA1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPj4+ ICAzIGZpbGVzIGNoYW5nZWQsIDEyMyBpbnNlcnRpb25zKCspDQo+ID4+PiAgY3JlYXRlIG1vZGUg MTAwNjQ0IGxpYmF2dXRpbC9nZXRlbnZfdXRmOC5oDQo+ID4+Pg0KPiA+Pj4gZGlmZiAtLWdpdCBh L2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQ0KPiA+Pj4gaW5kZXggM2RjYTFjNGJkMy4uZmEzN2E3NDUz MSAxMDA3NTUNCj4gPj4+IC0tLSBhL2NvbmZpZ3VyZQ0KPiA+Pj4gKysrIGIvY29uZmlndXJlDQo+ ID4+PiBAQCAtMjI3Miw2ICsyMjcyLDcgQEAgU1lTVEVNX0ZVTkNTPSINCj4gPj4+ICAgICAgZmNu dGwNCj4gPj4+ICAgICAgZ2V0YWRkcmluZm8NCj4gPj4+ICAgICAgZ2V0YXV4dmFsDQo+ID4+PiAr ICAgIGdldGVudg0KPiA+Pj4gICAgICBnZXRocnRpbWUNCj4gPj4+ICAgICAgZ2V0b3B0DQo+ID4+ PiAgICAgIEdldE1vZHVsZUhhbmRsZQ0KPiA+Pj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9nZXRl bnZfdXRmOC5oIGIvbGliYXZ1dGlsL2dldGVudl91dGY4LmgNCj4gPj4+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4+PiBpbmRleCAwMDAwMDAwMDAwLi4xNjFlM2U2MjAyDQo+ID4+PiAtLS0gL2Rl di9udWxsDQo+ID4+PiArKysgYi9saWJhdnV0aWwvZ2V0ZW52X3V0ZjguaA0KPiA+Pj4gQEAgLTAs MCArMSw3MSBAQA0KPiA+Pj4gKy8qDQo+ID4+PiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZt cGVnLg0KPiA+Pj4gKyAqDQo+ID4+PiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KPiA+Pj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCj4gPj4+ICsgKiBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCj4g Pj4+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXINCj4gPj4gdmVyc2lvbi4NCj4gPj4+ICsgKg0KPiA+Pj4gKyAqIEZGbXBlZyBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KPiA+Pj4gKyAq IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5DQo+IG9mDQo+ID4+PiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KPiA+PiBHTlUNCj4gPj4+ICsgKiBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KPiA+Pj4gKyAqDQo+ID4+PiAr ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsDQo+ID4+IFB1YmxpYw0KPiA+Pj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCj4gPj4+ICsgKiBGb3VuZGF0aW9uLCBJ bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BDQo+ID4+IDAy MTEwLTEzMDEgVVNBDQo+ID4+PiArICovDQo+ID4+PiArDQo+ID4+PiArI2lmbmRlZiBBVlVUSUxf R0VURU5WX1VURjhfSA0KPiA+Pj4gKyNkZWZpbmUgQVZVVElMX0dFVEVOVl9VVEY4X0gNCj4gPj4+ ICsNCj4gPj4+ICsjaW5jbHVkZSA8c3RkbGliLmg+DQo+ID4+PiArDQo+ID4+PiArI2luY2x1ZGUg Im1lbS5oIg0KPiA+Pj4gKw0KPiA+Pj4gKyNpZmRlZiBIQVZFX0dFVEVOVg0KPiA+Pj4gKw0KPiA+ Pj4gKyNpZmRlZiBfV0lOMzINCj4gPj4+ICsNCj4gPj4+ICsjaW5jbHVkZSAibGliYXZ1dGlsL3dj aGFyX2ZpbGVuYW1lLmgiDQo+ID4+PiArDQo+ID4+PiArc3RhdGljIGlubGluZSBjaGFyICpnZXRl bnZfdXRmOChjb25zdCBjaGFyICp2YXJuYW1lKQ0KPiA+Pj4gK3sNCj4gPj4+ICsgICAgd2NoYXJf dCAqdmFybmFtZV93LCAqdmFyX3c7DQo+ID4+PiArICAgIGNoYXIgKnZhcjsNCj4gPj4+ICsNCj4g Pj4+ICsgICAgaWYgKHV0Zjh0b3djaGFyKHZhcm5hbWUsICZ2YXJuYW1lX3cpKQ0KPiA+Pj4gKyAg ICAgICAgcmV0dXJuIE5VTEw7DQo+ID4+PiArICAgIGlmICghdmFybmFtZV93KQ0KPiA+Pj4gKyAg ICAgICAgcmV0dXJuIE5VTEw7DQo+ID4+PiArDQo+ID4+PiArICAgIHZhcl93ID0gX3dnZXRlbnYo dmFybmFtZV93KTsNCj4gPj4+ICsgICAgYXZfZnJlZSh2YXJuYW1lX3cpOw0KPiA+Pj4gKw0KPiA+ Pj4gKyAgICBpZiAoIXZhcl93KQ0KPiA+Pj4gKyAgICAgICAgcmV0dXJuIE5VTEw7DQo+ID4+PiAr ICAgIGlmICh3Y2hhcnRvdXRmOCh2YXJfdywgJnZhcikpDQo+ID4+PiArICAgICAgICByZXR1cm4g TlVMTDsNCj4gPj4+ICsNCj4gPj4+ICsgICAgcmV0dXJuIHZhcjsNCj4gPj4+ICsNCj4gPj4+ICsg ICAgLy8gTm8gQ1BfQUNQIGZhbGxiYWNrIGNvbXBhcmVkIHRvIG90aGVyICpfdXRmOCgpIGZ1bmN0 aW9uczoNCj4gPj4+ICsgICAgLy8gbm9uIFVURi04IHN0cmluZ3MgbXVzdCBub3QgYmUgcmV0dXJu ZWQuDQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gKyNlbHNlDQo+ID4+PiArDQo+ID4+PiArc3Rh dGljIGlubGluZSBjaGFyICpnZXRlbnZfdXRmOChjb25zdCBjaGFyICp2YXJuYW1lKQ0KPiA+Pj4g K3sNCj4gPj4+ICsgICAgcmV0dXJuIGF2X3N0cmR1cChnZXRlbnYodmFybmFtZSkpOw0KPiA+Pg0K PiA+PiBUaGlzIGZvcmNlcyBhbGxvY2F0aW9ucyBhbmQgZnJlZXMgaW4gc2NlbmFyaW9zIHdoZXJl IHRoaXMgaXMNCj4gd2hvbGx5DQo+ID4+IHVubmVjZXNzYXJ5Lg0KPiA+DQo+ID4gV2h5IGRvIHlv dSB0aGluayB0aGlzIGlzIHVubmVjZXNzYXJ5PyBBdCBsZWFzdCBvbiBXaW5kb3dzLCB0aGVyZSBp cw0KPiA+IG5vIGd1YXJhbnRlZSByZWdhcmRpbmcgdGhlIGxpZmV0aW1lIG9mIHN0cmluZ3MgcmV0 dXJuZWQgZnJvbQ0KPiA+IGdldGVudigpLiBJbiBjYXNlIHdoZW4gc29tZSBvdGhlciBjb2RlIHdv dWxkIGNhbGwgX3B1dGVudiB0byBzZXQNCj4gdGhlDQo+ID4gZW52IHZhcmlhYmxlLCB0aGlzIGNh biBjYXVzZSB0aGUgcHJldmlvdXNseSByZXR1cm5lZCBzdHJpbmcgdG8NCj4gYmVjb21lDQo+ID4g aW52YWxpZCB3aXRob3V0IHRoZSBjYWxsZXIgYmVpbmcgYWJsZSB0byBrbm93Lg0KPiA+DQo+ID4N Cj4gPj4gVGhpcyBjYW4gYmUgYXZvaWRlZCBieSBhZGRpbmcgYSBjdXN0b20gZGVhbGxvY2F0b3Ig Zm9yDQo+ID4+IHN0cmluZ3MgcmV0dXJuZWQgdmlhIGdldGVudl91dGY4OiBOYW1lbHkgYSBkZWZp bmUvd3JhcHBlciBhcm91bmQNCj4gPj4gYXZfZnJlZSBpbiB0aGUgX1dJTjMyIGFuZCBhIG5vLW9w IGVsc2UuDQo+ID4NCj4gPiBJIGRvbid0IHRoaW5rIEkgcmVhbGx5IHVuZGVyc3RhbmQgd2hhdCB5 b3UgbWVhbiwgYnkgdGhlIGFib3ZlIPCfmIkNCj4gPg0KPiANCj4gVGhlICJzY2VuYXJpb3Mgd2hl cmUgdGhpcyBpcyB3aG9sbHkgdW5uZWNlc3NhcnkiIGFyZSB0aGUgc2NlbmFyaW9zIGluDQo+IHdo aWNoIG9uZSBpcyBpbiB0aGUgYWJvdmUgI2Vsc2UgYnJhbmNoLCBpLmUuIG5vdCBvbiBXaW5kb3dz IChJDQo+IHRob3VnaHQNCj4gdGhpcyB3YXMgY2xlYXIgZnJvbSB0aGUgcGxhY2VtZW50IG9mIG15 IGNvbW1lbnQpLiBJbiB0aGlzIGNhc2UsIHRoZQ0KPiBhYm92ZSBhdl9zdHJkdXAoKSBjYW4gYmUg YXZvaWRlZCBieSBhZGRpbmcgYSBjdXN0b20gZGVhbGxvY2F0b3IgdGhhdA0KPiBib2lscyBkb3du IHRvIGF2X2ZyZWUgb24gV2luZG93cyBhbmQgYSBuby1vcCBpbiBhbGwgb3RoZXIgY2FzZXMuDQoN ClJpZ2h0LiBJIHNhdyB0aGUgcGxhY2VtZW50IHdhcyBvbiBub24tV2luZG93cyBhbmQgdGFsa2Vk IGFib3V0IFdpbmRvd3MuDQpJIGhhZCByZWFkIHNvbWUgdGltZSBhZ28gdGhhdCB0aGUgZ2V0ZW52 KCkgcmV0dXJuIHZhbHVlIG9uIExpbnV4IHdvdWxkDQpiZSBzdWJqZWN0IHRvIHRoZSBzYW1lIG5v bi1ncmFudGVkIGxpZmV0aW1lICJwb2xpY3kiIGxpa2Ugb24gV2luZG93cywgDQpidXQgSSB3YXMg dG9vIGxhenkgdG8gcmVjb25maXJtLg0KDQo+IFllcywgaWYgeW91IHdvdWxkIGtlZXAgdGhlIHJl dHVybiB2YWx1ZSBmcm9tIGdldGVudiBmb3IgdG9vIGxvbmcsDQo+IHdoaWxlDQo+IHNvbWV0aGlu ZyBlbHNlIGNoYW5nZXMgdGhlIGVudmlyb25tZW50IGluIHRoZSBzYW1lIHByb2Nlc3MsIHlvdSdk DQo+IGhhdmUNCj4gc3VjaCBhbiBpc3N1ZS4gQnV0IHRoYXQgaGFzbid0IGJlZW4gYSBjb25jZXJu IHNvIGZhciAtIHJpZ2h0Pw0KDQpIYXMgdGhpcyBldmVyIGJlZW4gYSB2YWxpZCBhcmd1bWVudCBv biB0aGlzIE1MPyA6LSkNCg0KPiBBbmQgaXQgaXNuJ3Qgd2hhdCB3ZSB0cnkgdG8gZml4IGhlcmUu DQoNClR3byBwb2ludHMgcmVnYXJkaW5nIHRoYXQgbGluZSBvZiBhcmd1bWVudGF0aW9uOg0KDQpG aXJzdCBvZiBhbGw6IGdldGVudigpIGlzIGEgaG9ycmlibGUgQVBJLCBpdCdzIG5laXRoZXIgZ3Vh cmFudGVlZCB0byBiZQ0KdGhyZWFkLXNhZmUgbm9yIGlzIGl0IHNhZmUgdG8gbWFrZSBhbnkgYXNz dW1wdGlvbiBhYm91dCB0aGUgbGlmZXRpbWUgb2YNCnRoZSByZXR1cm5lZCB2YWx1ZS4NCg0KMS4g Rm9yIGdldGVudigpLCBhIGNhbGxlciBuZWVkcyB0byBrbm93IGFib3V0IGl0J3MgYXdmdWwgc3Bl Y2lmaWNzLCBidXQNCiAgIGdldGVudl91dGY4KCkgaXMgb3VyIG93biBBUEksIGFuZCBJJ20gbm90 IHN1cmUgd2hldGhlciB0aGUgZmFjdCB0aGF0DQogICBpdCdzIHJlcGxhY2luZyBnZXRlbnYoKSBq dXN0aWZpZXMgdGhhdCB3ZSBpbnRyb2R1Y2Ugc3VjaCBiZWhhdmlvcg0KICAgaW50byAib3VyIiBB UEkgYXMgd2VsbC4NCg0KMi4gRm9yIFdpbmRvd3MsIHRoZSBjb2RlIGNoYW5nZSBhbHJlYWR5IGhh cyB0aGUgZWZmZWN0IHRoYXQgdGhlIGNhbGxlcg0KICAgZG9lcyBub3QgbmVlZCB0byBiZSBhZnJh aWQgYWJvdXQgdGhlIGxpZmV0aW1lL3ZhbGlkaXR5IG9mIHRoZSByZXN1bHQuDQogICBTbyB3aHkg bm90IGV4cG9zZSB0aGUgc2FtZSBiZWhhdmlvciBvbiBub24tV2luIHBsYXRmb3JtcyBhcyB3ZWxs Pw0KICAgKHZpYSBzdHJkdXApDQoNCg0KSW4gY2FzZSB0aGF0IG9uZSBtaWdodCBhcmd1ZSB0aGF0 IGV2ZW4gd2l0aCB0aGUgdXNlIG9mIHN0cmR1cCwgaXQgd29uJ3QgYmUNCjEwMCUgc2FmZSwgd2hp Y2ggaXMgdHJ1ZSwgYnV0IHdoZW4gY29tcGFyaW5nIHRoZSB0aW1lIHJhbmdlcyBvZiB0aGUgDQpw b3NzaWJsZSBwb2ludHMgb2YgZmFpbHVyZSwgIHRoZW4sIHRoZSB1c2Ugb2Ygc3RyZHVwIHdvdWxk IHN0aWxsIGNhdGNoIA0KdGhlIHZhc3QgbWFqb3JpdHkgb2YgcmFjZSBjb25kaXRpb25zLiANCg0K SSB0aGluayB0aGF0IE5pbCdzIHZlcnNpb24gaXMgYSBiZXR0ZXIgY2hvaWNlLiBBbnl3YXkgSSBk b24ndCB1bmRlcnN0YW5kIA0KdGhlIG1vdGl2YXRpb246IGZmbXBlZyBpcyBhbGxvY2F0aW5nIGh1 Z2UgYW1vdW50cyBvZiBtZW1vcnkgZm9yIHZpZGVvIA0KZnJhbWVzIGFuZCBoZXJlIHdlIHdhbnQg dG8gc2F2ZSB3aGF0IC0gdGhlIHN0cmluZyByZXR1cm4gdmFsdWUgb2YgYW4NCmVudmlyb25tZW50 IHZhcmlhYmxlPw0KDQpNYXliZSBJJ20gbWlzc2luZyBzb21ldGhpbmcgYW5kIEkganVzdCBjYW4n dCBzZWUgaXQuLiA6LSkNCg0KVGhhbmtzLA0Kc29mdHdvcmt6DQoNCg0KDQoNCg0KDQoNCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBt YWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21h aWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBh Ym92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1Ympl Y3QgInVuc3Vic2NyaWJlIi4K