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 7B7494B00E for ; Sun, 26 May 2024 02:16:45 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 54E0B68D4EB; Sun, 26 May 2024 05:16:43 +0300 (EEST) Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DB28368D4AB for ; Sun, 26 May 2024 05:16:36 +0300 (EEST) Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-6f8edde1013so1780344b3a.2 for ; Sat, 25 May 2024 19:16:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716689794; x=1717294594; darn=ffmpeg.org; h=content-transfer-encoding:in-reply-to:content-language:references :to:from:subject:user-agent:mime-version:date:message-id:from:to:cc :subject:date:message-id:reply-to; bh=XYF9nYuCYCdy8TU2xElxh0oyE4A0+lH4NxgSJkPypgY=; b=e8sB5Ld96C/Dqi6qK7z99bCwBqy75DCTfK51E9X4bxq1x/jqONJ8wRCrt+Ivw9B/9O NpqL5W18sRu2dN8Dw8loy5Xyd4kOIe2fd9T0zKiXshWkf/v0w7x4rkxqepCWBUuT1Anu we6eqrD99V7KrdbigbPhe3CrYBMctXyNJreMOh24HMUe0jc9iF+7esNMywMI2pcZDbLc r0M2klgUN5Fr4QidW53SbwLf3o+msZAaMYygi8WB7P/QlANBPhK/FOPi6Zn6cAy5bhWs pgIMemba9OyefnSd4nvkNWIeo6LWaUmBiTtaeMarefKqhSLwdkJRiPFVqb0C6iKcYYxC dUpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716689794; x=1717294594; h=content-transfer-encoding:in-reply-to:content-language:references :to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=XYF9nYuCYCdy8TU2xElxh0oyE4A0+lH4NxgSJkPypgY=; b=qOHP08768CZZm0/CJO2iqjI8Btb279OeNZ+pyfAdjxHJi59T9VR52uTVYoRKRDNXvF 39fLvB9G1Ap33qLBf6/hWQGQCo5CkhUC0dkFFtWqskOoLA5a6j3sNS9HG2YPv5K7cOFY oALsYqrt4Sdvcv3u9pkoWAUuWZVhyNUM2CIso2XQ0VgNDDFQNjXB56mYtfSgX+D1UcUz 52/nJNoGynB3oVN3QQeqI4DVLERlFVDZIPhC0dkZT2dUM4wz/qirwrXdK4Z5Ov3kiZeW kX4ywobcTlOdRUQh5SKWgEDTFqTYLH4Zj6nVugVA9uEaKgIq0m5ZTeaPBNTBn6WSnRsL s++Q== X-Gm-Message-State: AOJu0YwK6EQNlbAfcz0rwFOmXIMML2pTh+fyxpnZ00iweEeEdpuG5Wne n+Fx2VoaCz74+KGeH/K9GKtw1ZI2sbWU95M+tY73qujHDxDPSnC0qHKMVQ== X-Google-Smtp-Source: AGHT+IFVpfp0KcXY4howYU/z9z1pWpN10SCFqKRpov49UF24mybvurqU/VI5eNdNaPevFJk3j2alRA== X-Received: by 2002:a05:6a20:d494:b0:1b1:fede:59cb with SMTP id adf61e73a8af0-1b212b73d4cmr7219961637.0.1716689793733; Sat, 25 May 2024 19:16:33 -0700 (PDT) Received: from [192.168.0.10] ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1f44c9a9e1esm36086825ad.239.2024.05.25.19.16.32 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 25 May 2024 19:16:33 -0700 (PDT) Message-ID: <965ccf71-757c-4c22-ba4a-6f2c2c9814d3@gmail.com> Date: Sat, 25 May 2024 23:16:40 -0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: James Almer To: ffmpeg-devel@ffmpeg.org References: <20240525205731.2578146-1-dev@lynne.ee> <20240526014207.2697057-1-dev@lynne.ee> <54b8aabb-ab4c-46f5-88b2-fb0a0bf16f7f@gmail.com> Content-Language: en-US In-Reply-To: <54b8aabb-ab4c-46f5-88b2-fb0a0bf16f7f@gmail.com> Subject: Re: [FFmpeg-devel] [PATCH v2] lpc: rewrite lpc_compute_autocorr in external asm 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gNS8yNS8yMDI0IDEwOjUxIFBNLCBKYW1lcyBBbG1lciB3cm90ZToKPiBPbiA1LzI1LzIwMjQg MTA6NDIgUE0sIEx5bm5lIHZpYSBmZm1wZWctZGV2ZWwgd3JvdGU6Cj4+IFRoZSBpbmxpbmUgYXNt IGZ1bmN0aW9uIGhhZCBpc3N1ZXMgcnVubmluZyB1bmRlciBjaGVja2FzbS4KPj4gU28gSSBjYW1l IHRvIGZpbmlzaCB3aGF0IEkgc3RhcnRlZCwgYW5kIHdyb3RlIHRoZSBsYXN0IHBhcnQKPj4gb2Yg TFBDIGNvbXB1dGF0aW9uIGluIGFzc2VtYmx5Lgo+PiAtLS0KPj4gwqAgbGliYXZjb2RlYy94ODYv bHBjLmFzbcKgwqDCoCB8IDkxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kwo+PiDCoCBsaWJhdmNvZGVjL3g4Ni9scGNfaW5pdC5jIHwgODcgKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+PiDCoCAyIGZpbGVzIGNoYW5nZWQsIDEwMCBpbnNlcnRpb25z KCspLCA3OCBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMveDg2L2xw Yy5hc20gYi9saWJhdmNvZGVjL3g4Ni9scGMuYXNtCj4+IGluZGV4IGE1ODVjMTdlZjUuLjljMzU5 YWU0ODAgMTAwNjQ0Cj4+IC0tLSBhL2xpYmF2Y29kZWMveDg2L2xwYy5hc20KPj4gKysrIGIvbGli YXZjb2RlYy94ODYvbHBjLmFzbQo+PiBAQCAtMjYxLDMgKzI2MSw5NCBAQCBBUFBMWV9XRUxDSF9G Tgo+PiDCoCBJTklUX1lNTSBhdngyCj4+IMKgIEFQUExZX1dFTENIX0ZOCj4+IMKgICVlbmRpZgo+ PiArCj4+ICslbWFjcm8gQ09NUFVURV9BVVRPQ09SUl9GTiAwCj4+ICtjZ2xvYmFsIGxwY19jb21w dXRlX2F1dG9jb3JyLCA0LCA3LCAzLCBkYXRhLCBsZW4sIGxhZywgYXV0b2MsIGxhZ19wLCAKPj4g ZGF0YV9sLCBsZW5fcAo+PiArwqDCoMKgIHNobCBsYWdkLCAzCj4+ICvCoMKgwqAgc2hsIGxlbnEs IDMKPj4gK8KgwqDCoCB4b3IgbGFnX3BxLCBsYWdfcHEKPj4gKwo+PiArLmxhZ19sOgo+PiArwqDC oMKgIG1vdmFwcyBtMiwgW29uZV90YWJdCj4gCj4gU3VwZXIgbml0OiBtb3ZhcGQKPiAKPj4gKwo+ PiArwqDCoMKgIG1vdiBsZW5fcHEsIGxhZ19wcQo+PiArCj4+ICvCoMKgwqAgbGVhIGRhdGFfbHEs IFtsYWdfcHEgKyBtbXNpemUgLSA4XQo+PiArwqDCoMKgIG5lZyBkYXRhX2xxwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7IC1qIC0gbW1zaXplCj4+ICvCoMKgwqAgYWRk IGRhdGFfbHEsIGRhdGFxwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOyBkYXRhWy1qIC0gbW1z aXplXQo+PiArLmxlbl9sOgo+PiArCj4+ICslaWYgbW1zaXplID09IDMyCj4+ICvCoMKgwqAgdmJy b2FkY2FzdHNkIG0wLCBbZGF0YXEgKyBsZW5fcHFdCj4+ICvCoMKgwqAgdnBlcm1wZCBtMSwgW2Rh dGFfbHEgKyBsZW5fcHFdLCBxMDEyMwo+PiArJWVsc2UKPj4gK8KgwqDCoCBtb3Z1cGQgbTEsIFtk YXRhX2xxICsgbGVuX3BxXcKgwqAgOyBkYXRhW2kgLSBqXQo+PiArwqDCoMKgIG1vdnNkIHhtMCwg W2RhdGFxICsgbGVuX3BxXcKgwqDCoMKgIDsgZGF0YVtpXQo+PiArwqDCoMKgIHNodWZwZCBtMSwg bTEsIG0xLCAwMWIKCkkganVzdCByZWFsaXplZCB5b3UncmUgc2h1ZmZsaW5nIHRoZSB2YWx1ZXMg aW5zaWRlIHRoZSBsZW5fMSBsb29wIHdoZW4gCnlvdSBjb3VsZCBkbyBpdCByaWdodCBiZWZvcmUg eW91IHN0b3JlIHRoZSBzdW0uCgpTb21ldGhpbmcgbGlrZToKClsuLi5dCi5sZW5fbDoKJWlmIG1t c2l6ZSA9PSAxNgogICAgIG1vdnNkICBtMCwgW2RhdGFxICsgbGVuX3BxXSAgICAgOyBkYXRhW2ld CiAgICAgc2h1ZnBkIG0wLCBtMCwgbTAsIDAKICAgICBtb3Z1cGQgbTEsIFtkYXRhX2xxICsgbGVu X3BxXSAgIDsgZGF0YVtpIC0gal0KCiAgICAgbXVscGQgbTAsIG0xCiVlbHNlCiAgICAgdmJyb2Fk Y2FzdHNkIG0wLCBbZGF0YXEgKyBsZW5fcHFdCiAgICAgbXVscGQgbTAsIFtkYXRhX2xxICsgbGVu X3BxXSAgIDsgZGF0YVtpIC0gal0KJWVuZGlmCgogICAgIGFkZHBkIG0yLCBtMCAgICAgICAgICAg ICAgICAgICAgOyBzdW0gKz0gZGF0YVtpXSpkYXRhW2ktal0KCiAgICAgYWRkIGxlbl9wcSwgOAog ICAgIGNtcCBsZW5fcHEsIGxlbnEKICAgICBqbCAubGVuX2wKCiAgICAgc2h1ZnBkIG0yLCBtMiwg bTIsIDAxMDFiCiVpZiBtbXNpemUgPT0gMzIKICAgICB2ZXh0cmFjdGYxMjggW2F1dG9jcSArIGxh Z19wcV0sIG0yLCAxCiAgICAgbW92dXBkIFthdXRvY3EgKyBsYWdfcHEgKyAxNl0sIHhtMiA7IGF1 dG9jW2pdID0gc3VtCiVlbHNlCiAgICAgbW92dXBkIFthdXRvY3EgKyBsYWdfcHFdLCBtMiAgICAg ICA7IGF1dG9jW2pdID0gc3VtCiVlbmRpZgogICAgIGFkZCBsYWdfcHEsIG1tc2l6ZQogICAgIGNt cCBsYWdfcHEsIGxhZ3EKICAgICBqbCAubGFnX2wKWy4uLl0KCkFuZCBieSB1c2luZyB2ZXh0cmFj dGYxMjggaGVyZSBpbnN0ZWFkIG9mIHZwZXJtcGQgeW91IGNhbiBrZWVwIHRoZSAKZnVuY3Rpb24g YXMgYXZ4IGluc3RlYWQgb2YgYXZ4MiwgdW5sZXNzIGEgdnBlcm1wZCArIHNpbmdsZSAyNTZiaXQg c3RvcmUgCmlzIGZhc3RlciB0aGFuIHNodWZwZCArIHR3byBzdG9yZXMgKHZleHRyYWN0ZjEyOCAr IG1vdnUgMTI4Yml0KSwgd2hpY2ggaSAKYXNzdW1lIGl0IHdvbnQgYmVjYXVzZSBvZiBjcm9zc2xh bmUgc2h1ZmZsaW5nLgoKPj4gKyVlbmRpZgo+PiArCj4+ICvCoMKgwqAgc2h1ZnBkIG0wLCBtMCwg bTAsIDExMDBiCj4gCj4gVGhpcyBpcyBub3QgbmVlZGVkIGZvciBtbXNpemUgPT0gMzIuIFRoZSBi cm9hZGNhc3Qgc2V0IGV2ZXJ5IHF3b3JkIHRvIAo+IHRoZSB2YWx1ZSBtb3ZzZCBsb2FkZWQuCj4g Cj4+ICsKPj4gK8KgwqDCoCA7IGZtYWRkIGFjdHVhbGx5IGh1cnRzIHBlcmZvcm1hbmNlIGluIHRo aXMgY2FzZSBkdWUgdG8KPj4gK8KgwqDCoCA7IHRoZSBlYXJsaWVyIGxvYWRzICsgc2h1ZmZsZXMK Pj4gK8KgwqDCoCBtdWxwZCBtMCwgbTEKPj4gK8KgwqDCoCBhZGRwZCBtMiwgbTDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7IHN1bSArPSBkYXRhW2ldKmRhdGFbaS1qXQo+ PiArCj4+ICvCoMKgwqAgYWRkIGxlbl9wcSwgOAo+PiArwqDCoMKgIGNtcCBsZW5fcHEsIGxlbnEK Pj4gK8KgwqDCoCBqbCAubGVuX2wKPj4gKwo+PiArwqDCoMKgIG1vdnVwZCBbYXV0b2NxICsgbGFn X3BxXSwgbTLCoMKgwqAgOyBhdXRvY1tqXSA9IHN1bQo+PiArwqDCoMKgIGFkZCBsYWdfcHEsIG1t c2l6ZQo+PiArwqDCoMKgIGNtcCBsYWdfcHEsIGxhZ3EKPj4gK8KgwqDCoCBqbCAubGFnX2wKPj4g Kwo+PiArwqDCoMKgIDsgVGhlIHRhaWwgY29tcHV0YXRpb24gaXMgZ3VhcmFudGVlZCBuZXZlciB0 byBoYXBwZW4KPj4gK8KgwqDCoCA7IGFzIGxvbmcgYXMgd2UncmUgZG9pbmcgbXVsdGlwbGVzIG9m IDQsIHJhdGhlciB0aGFuIDIuCj4+ICslaWYgbW1zaXplICE9IDMyCj4+ICvCoMKgwqAgamcgLmVu ZAo+PiArwqDCoMKgIDsgSWYgbGFnX3AgPT0gbGFnIGZhbGx0aHJvdWdoCj4+ICsKPj4gKy50YWls Ogo+PiArwqDCoMKgIG1vdmFwcyBtMiwgW29uZV90YWJdCj4+ICsKPj4gK8KgwqDCoCBtb3YgbGVu X3BxLCBsYWdfcHEKPj4gK8KgwqDCoCBzdWIgbGVuX3BxLCBtbXNpemUKPj4gKwo+PiArwqDCoMKg IGxlYSBkYXRhX2xxLCBbbGFnX3BxXQo+PiArwqDCoMKgIG5lZyBkYXRhX2xxwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7IC1qCj4+ICvCoMKgwqAgYWRkIGRhdGFfbHEs IGRhdGFxwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOyBkYXRhWy1qXQo+PiArCj4+ICsudGFp bF9sOgo+PiArwqDCoMKgIG1vdnVwZCBtMCwgW2RhdGFxICsgbGVuX3BxXQo+PiArwqDCoMKgIG1v dnVwZCBtMSwgW2RhdGFfbHEgKyBsZW5fcHFdCj4+ICsKPj4gK8KgwqDCoCBtdWxwZCBtMCwgbTEK Pj4gK8KgwqDCoCBhZGRwZCBtMiwgbTDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCA7IHN1bSArPSBkYXRhW2ldKmRhdGFbaS1qXQo+PiArCj4+ICvCoMKgwqAgYWRkIGxlbl9w cSwgbW1zaXplCj4+ICvCoMKgwqAgY21wIGxlbl9wcSwgbGVucQo+PiArwqDCoMKgIGpsIC50YWls X2wKPj4gKwo+PiArwqDCoMKgIHNodWZwZCBtMSwgbTIsIG0yLCAwMWIKPj4gK8KgwqDCoCBhZGRw ZCBtMiwgbTEKPj4gKwo+PiArwqDCoMKgIDsgTGVhdmUgdGhpcyBoZXJlIGp1c3QgaW4gY2FzZSBp dHMgZXZlciBuZWVkZWQKPj4gKyVpZiBtbXNpemUgPT0gMzIKPj4gK8KgwqDCoCB2cGVybTJmMTI4 IG0xLCBtMiwgbTIsIDB4MDEKPj4gK8KgwqDCoCBhZGRwZCB4bTIsIHhtMQo+PiArwqDCoMKgIG1v dnVwZCBbYXV0b2NxICsgbGFnX3BxXSwgeG0yCj4+ICslZWxzZQo+PiArwqDCoMKgIG1vdmhwZCBb YXV0b2NxICsgbGFnX3BxXSwgeG0yCj4+ICslZW5kaWYKPj4gKwo+PiArLmVuZDoKPj4gKyVlbmRp Zgo+PiArCj4+ICvCoMKgwqAgUkVUCj4+ICslZW5kbWFjcm8KPj4gKwo+PiArSU5JVF9YTU0gc3Nl Mgo+PiArQ09NUFVURV9BVVRPQ09SUl9GTgo+PiArSU5JVF9ZTU0gYXZ4Cj4gCj4gdnBlcm1wZCBp cyBhdngyLCBzbyBpdCBuZWVkcyB0byBiZSB0aGF0Lgo+IAo+PiArQ09NUFVURV9BVVRPQ09SUl9G Tgo+PiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy94ODYvbHBjX2luaXQuYyBiL2xpYmF2Y29kZWMv eDg2L2xwY19pbml0LmMKPj4gaW5kZXggZjJmY2E1Mzc5OS4uYmIxNzRiZTUzZSAxMDA2NDQKPj4g LS0tIGEvbGliYXZjb2RlYy94ODYvbHBjX2luaXQuYwo+PiArKysgYi9saWJhdmNvZGVjL3g4Ni9s cGNfaW5pdC5jCj4+IEBAIC0yOCw4OSArMjgsMjAgQEAgdm9pZCBmZl9scGNfYXBwbHlfd2VsY2hf d2luZG93X3NzZTIoY29uc3QgaW50MzJfdCAKPj4gKmRhdGEsIHB0cmRpZmZfdCBsZW4sCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGRvdWJsZSAqd19kYXRhKTsKPj4gwqAgdm9pZCBmZl9scGNfYXBwbHlf d2VsY2hfd2luZG93X2F2eDIoY29uc3QgaW50MzJfdCAqZGF0YSwgcHRyZGlmZl90IGxlbiwKPj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZG91YmxlICp3X2RhdGEpOwo+PiAtCj4+IC1ERUNMQVJFX0FTTV9D T05TVCgxNiwgZG91YmxlLCBwZF8xKVsyXSA9IHsgMS4wLCAxLjAgfTsKPj4gLQo+PiAtI2lmIEhB VkVfU1NFMl9JTkxJTkUKPj4gLQo+PiAtc3RhdGljIHZvaWQgbHBjX2NvbXB1dGVfYXV0b2NvcnJf c3NlMihjb25zdCBkb3VibGUgKmRhdGEsIHB0cmRpZmZfdCAKPj4gbGVuLCBpbnQgbGFnLAo+PiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZG91YmxlICphdXRvYykKPj4gLXsKPj4gLcKgwqDCoCBpbnQgajsK Pj4gLQo+PiAtwqDCoMKgIGlmKCh4ODZfcmVnKWRhdGEgJiAxNSkKPj4gLcKgwqDCoMKgwqDCoMKg IGRhdGErKzsKPj4gLQo+PiAtwqDCoMKgIGZvcihqPTA7IGo8bGFnOyBqKz0yKXsKPj4gLcKgwqDC oMKgwqDCoMKgIHg4Nl9yZWcgaSA9IC1sZW4qc2l6ZW9mKGRvdWJsZSk7Cj4+IC3CoMKgwqDCoMKg wqDCoCBpZihqID09IGxhZy0yKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fYXNtX18g dm9sYXRpbGUoCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIm1vdnNkwqDCoMKg ICJNQU5HTEUocGRfMSkiLCAlJXhtbTDCoMKgwqAgXG5cdCIKPj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAibW92c2TCoMKgwqAgIk1BTkdMRShwZF8xKSIsICUleG1tMcKgwqDCoCBc blx0Igo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJtb3ZzZMKgwqDCoCAiTUFO R0xFKHBkXzEpIiwgJSV4bW0ywqDCoMKgIFxuXHQiCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgIjE6wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBcblx0Igo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICJtb3ZhcGTCoMKgICglMiwlMCksICUleG1tM8KgwqDCoMKgwqDCoMKgwqDCoMKgIFxuXHQi Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIm1vdnVwZCAtOCglMywlMCksICUl eG1tNMKgwqDCoMKgwqDCoMKgwqDCoMKgIFxuXHQiCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgIm1vdmFwZMKgwqAgKCUzLCUwKSwgJSV4bW01wqDCoMKgwqDCoMKgwqDCoMKgwqAg XG5cdCIKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAibXVscGTCoMKgwqDCoCAl JXhtbTMsICUleG1tNMKgwqDCoMKgwqDCoMKgwqDCoMKgIFxuXHQiCj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgIm11bHBkwqDCoMKgwqAgJSV4bW0zLCAlJXhtbTXCoMKgwqDCoMKg wqDCoMKgwqDCoCBcblx0Igo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJtdWxw ZCAtMTYoJTMsJTApLCAlJXhtbTPCoMKgwqDCoMKgwqDCoMKgwqDCoCBcblx0Igo+PiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJhZGRwZMKgwqDCoMKgICUleG1tNCwgJSV4bW0xwqDC oMKgwqDCoMKgwqDCoMKgwqAgXG5cdCIKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAiYWRkcGTCoMKgwqDCoCAlJXhtbTUsICUleG1tMMKgwqDCoMKgwqDCoMKgwqDCoMKgIFxuXHQi Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImFkZHBkwqDCoMKgwqAgJSV4bW0z LCAlJXhtbTLCoMKgwqDCoMKgwqDCoMKgwqDCoCBcblx0Igo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICJhZGTCoMKgwqDCoMKgwqAgJDE2LMKgwqDCoCAlMMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgXG5cdCIKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAi amwgMWLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIFxuXHQiCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIm1vdmhscHPC oMKgICUleG1tMCwgJSV4bW0zwqDCoMKgwqDCoMKgwqDCoMKgwqAgXG5cdCIKPj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAibW92aGxwc8KgwqAgJSV4bW0xLCAlJXhtbTTCoMKgwqDC oMKgwqDCoMKgwqDCoCBcblx0Igo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJt b3ZobHBzwqDCoCAlJXhtbTIsICUleG1tNcKgwqDCoMKgwqDCoMKgwqDCoMKgIFxuXHQiCj4+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImFkZHNkwqDCoMKgwqAgJSV4bW0zLCAlJXht bTDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcblx0Igo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICJhZGRzZMKgwqDCoMKgICUleG1tNCwgJSV4bW0xwqDCoMKgwqDCoMKgwqDCoMKgwqAg XG5cdCIKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiYWRkc2TCoMKgwqDCoCAl JXhtbTUsICUleG1tMsKgwqDCoMKgwqDCoMKgwqDCoMKgIFxuXHQiCj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgIm1vdnNkwqDCoMKgwqAgJSV4bW0wLMKgwqAgKCUxKcKgwqDCoMKg wqDCoMKgwqDCoMKgIFxuXHQiCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIm1v dnNkwqDCoMKgwqAgJSV4bW0xLMKgIDgoJTEpwqDCoMKgwqDCoMKgwqDCoMKgwqAgXG5cdCIKPj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAibW92c2TCoMKgwqDCoCAlJXhtbTIsIDE2 KCUxKcKgwqDCoMKgwqDCoMKgwqDCoMKgIFxuXHQiCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgOiIrJnIiKGkpCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOiJy IihhdXRvYytqKSwgInIiKGRhdGErbGVuKSwgInIiKGRhdGErbGVuLWopCj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBOQU1FRF9DT05TVFJBSU5UU19BUlJBWV9BREQocGRfMSkK Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6Im1lbW9yeSIKPj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKTsKPj4gLcKgwqDCoMKgwqDCoMKgIH0gZWxzZSB7Cj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgIF9fYXNtX18gdm9sYXRpbGUoCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgIm1vdnNkwqDCoMKgICJNQU5HTEUocGRfMSkiLCAlJXhtbTDCoMKgwqAgXG5c dCIKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAibW92c2TCoMKgwqAgIk1BTkdM RShwZF8xKSIsICUleG1tMcKgwqDCoCBcblx0Igo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICIxOsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgXG5cdCIKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAibW92YXBkwqDCoCAoJTMsJTApLCAlJXhtbTPCoMKgwqDCoMKgwqDCoMKgwqDCoCBcblx0Igo+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJtb3Z1cGQgLTgoJTQsJTApLCAlJXht bTTCoMKgwqDCoMKgwqDCoMKgwqDCoCBcblx0Igo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICJtdWxwZMKgwqDCoMKgICUleG1tMywgJSV4bW00wqDCoMKgwqDCoMKgwqDCoMKgwqAg XG5cdCIKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAibXVscGTCoMKgwqAgKCU0 LCUwKSwgJSV4bW0zwqDCoMKgwqDCoMKgwqDCoMKgwqAgXG5cdCIKPj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAiYWRkcGTCoMKgwqDCoCAlJXhtbTQsICUleG1tMcKgwqDCoMKgwqDC oMKgwqDCoMKgIFxuXHQiCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImFkZHBk wqDCoMKgwqAgJSV4bW0zLCAlJXhtbTDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcblx0Igo+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJhZGTCoMKgwqDCoMKgwqAgJDE2LMKgwqDCoCAl MMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXG5cdCIKPj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAiamwgMWLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIFxuXHQiCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgIm1vdmhscHPCoMKgICUleG1tMCwgJSV4bW0zwqDCoMKgwqDCoMKgwqDCoMKgwqAgXG5c dCIKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAibW92aGxwc8KgwqAgJSV4bW0x LCAlJXhtbTTCoMKgwqDCoMKgwqDCoMKgwqDCoCBcblx0Igo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICJhZGRzZMKgwqDCoMKgICUleG1tMywgJSV4bW0wwqDCoMKgwqDCoMKgwqDC oMKgwqAgXG5cdCIKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiYWRkc2TCoMKg wqDCoCAlJXhtbTQsICUleG1tMcKgwqDCoMKgwqDCoMKgwqDCoMKgIFxuXHQiCj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIm1vdnNkwqDCoMKgwqAgJSV4bW0wLCAlMcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgXG5cdCIKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAibW92c2TCoMKgwqDCoCAlJXhtbTEsICUywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBcblx0Igo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDoiKyZyIihpKSwgIj1t IihhdXRvY1tqXSksICI9bSIoYXV0b2NbaisxXSkKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCA6InIiKGRhdGErbGVuKSwgInIiKGRhdGErbGVuLWopCj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBOQU1FRF9DT05TVFJBSU5UU19BUlJBWV9BREQocGRfMSkKPj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKTsKPj4gLcKgwqDCoMKgwqDCoMKgIH0KPj4gLcKgwqDC oCB9Cj4+IC19Cj4+IC0KPj4gLSNlbmRpZiAvKiBIQVZFX1NTRTJfSU5MSU5FICovCj4+ICt2b2lk IGZmX2xwY19jb21wdXRlX2F1dG9jb3JyX3NzZTIoY29uc3QgZG91YmxlICpkYXRhLCBwdHJkaWZm X3QgbGVuLCAKPj4gaW50IGxhZywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkb3VibGUgKmF1dG9jKTsKPj4gK3Zv aWQgZmZfbHBjX2NvbXB1dGVfYXV0b2NvcnJfYXZ4KGNvbnN0IGRvdWJsZSAqZGF0YSwgcHRyZGlm Zl90IGxlbiwgCj4+IGludCBsYWcsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRvdWJsZSAqYXV0b2MpOwo+PiDCoCBh dl9jb2xkIHZvaWQgZmZfbHBjX2luaXRfeDg2KExQQ0NvbnRleHQgKmMpCj4+IMKgIHsKPj4gwqDC oMKgwqDCoCBpbnQgY3B1X2ZsYWdzID0gYXZfZ2V0X2NwdV9mbGFncygpOwo+PiAtI2lmIEhBVkVf U1NFMl9JTkxJTkUKPj4gLcKgwqDCoCBpZiAoSU5MSU5FX1NTRTJfU0xPVyhjcHVfZmxhZ3MpKQo+ PiAtwqDCoMKgwqDCoMKgwqAgYy0+bHBjX2NvbXB1dGVfYXV0b2NvcnIgPSBscGNfY29tcHV0ZV9h dXRvY29ycl9zc2UyOwo+PiAtI2VuZGlmCj4+ICvCoMKgwqAgaWYgKEVYVEVSTkFMX1NTRTIoY3B1 X2ZsYWdzKSkKPj4gK8KgwqDCoMKgwqDCoMKgIGMtPmxwY19jb21wdXRlX2F1dG9jb3JyID0gZmZf bHBjX2NvbXB1dGVfYXV0b2NvcnJfc3NlMjsKPiAKPiBQbGFjZSB0aGlzIHdpdGggZmZfbHBjX2Fw cGx5X3dlbGNoX3dpbmRvd19zc2UyIGJlbG93Lgo+IAo+PiArCj4+ICvCoMKgwqAgaWYgKEVYVEVS TkFMX0FWWF9GQVNUKGNwdV9mbGFncykpCj4+ICvCoMKgwqDCoMKgwqDCoCBjLT5scGNfY29tcHV0 ZV9hdXRvY29yciA9IGZmX2xwY19jb21wdXRlX2F1dG9jb3JyX2F2eDsKPj4gwqDCoMKgwqDCoCBp ZiAoRVhURVJOQUxfU1NFMihjcHVfZmxhZ3MpKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYy0+bHBj X2FwcGx5X3dlbGNoX3dpbmRvdyA9IGZmX2xwY19hcHBseV93ZWxjaF93aW5kb3dfc3NlMjsKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVs IG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcv bWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5r IGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3Vi amVjdCAidW5zdWJzY3JpYmUiLgo=