Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w2K5w-000Bk0-0b for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Mar 2026 02:23:44 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w2K5t-00F9nB-2Z for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Mar 2026 02:23:41 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w2K5t-00F9n3-0o for pgsql-hackers@lists.postgresql.org; Tue, 17 Mar 2026 02:23:41 +0000 Received: from mail-qk1-x744.google.com ([2607:f8b0:4864:20::744]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w2K5o-0000000071x-2ewk for pgsql-hackers@lists.postgresql.org; Tue, 17 Mar 2026 02:23:40 +0000 Received: by mail-qk1-x744.google.com with SMTP id af79cd13be357-8cb5c9ba82bso717984685a.2 for ; Mon, 16 Mar 2026 19:23:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773714217; cv=none; d=google.com; s=arc-20240605; b=V5Kqf4g00ijxRJ1aYBp3k9RlbHI25x6n/JX3quEypNjsMS/4iycrPTVKXr63PR4qrr Ur+031ccjN8gcWuHTHGSl2b6kgl/vIYywWTFOPxgM93DamMHCZvDKUtLHz7GKzGfmdYy K6XBGJkdoUd1Q+n0tGkjCNkSgvJf7AAV3Rud9dR2NTVyiohxqzrzTnrJbhbdXYTt9j6u VnCPCl/ZkOMxSOfkp59LqkKzOWh3vOF/v/3gR+/Mo2/qZSCfc9AhsMYTXNSb9YxcmTyJ G0Wlnc7czuZ5edt4AnaogjkMCWdmKxBw9VwxUQkAoLI5nGzeV6nvotsZ8VQuuDgzuusV /ifg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=3bq3eHReea2oC9PclM1zR8kl9FY94X9LeAYCW3biY78=; fh=hLfqbuiKhsTBFTJQYLO+C9brjNk2+6xdJuQsQPzE4Mo=; b=CcXuSvzJX9fPZbpeYFIJrozFSJesYVQVFMvLB+A+Zfsa0PPN8KSBZbqMcNSh8KrakO 13HMLm1DtrXkkBRyKIwd4WpNV0J7NiyuNV9Zo4Uq/8C4lwkF6pH68Afz94/HmtKL5imw mwzEktywByEZLq7bVdUj9AvKo6tfHVE6PlTmxvdKvTIOjNPyfDePsEat6CqHzw38uvLo F5KnfhSeeM148RGPfDn3+cX1AKvpeBM+UmLuibOdKZ4kL+Nu0EZnK6iyVHB+Cv2C2616 8Yu/d3NpoBK0E1Reuh1Opibemu5l2I6jWT4pzKG0QWDVUAxh4IOjoOpqTlKnDChjPGGk Vdtw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773714217; x=1774319017; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=3bq3eHReea2oC9PclM1zR8kl9FY94X9LeAYCW3biY78=; b=UDG6KiJIqdzLkWInreqAjHiYuEhfH0JfrBTkBfK7uPMqAlaYx6OTK6frtDEZzmWifR DiUacO9UkxrBhA1RlqPkukHL5Rb2ftzFXqUslQWnSfg6F10KdmM3BGV6bBczyiAhJeDy Mtc0VCKTkBXTNcP1FH1TNoZ1364dEJxX1e9Fw08cKQkPj+VozqU9B+dLzkXTM5lLByp2 fX+zM8g4jYSecl+3H+iCBLuWGXePPuwFp7E7F+2pUE+9PeSvlPX+dSR2V2e3oGLNCya8 yoZC+Cz/OPbsRxH1owH9G5GjRuQ2auEZiemVAATWTDuca+RNgHkHZp39NskUBLcGUgP6 REAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773714217; x=1774319017; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=3bq3eHReea2oC9PclM1zR8kl9FY94X9LeAYCW3biY78=; b=bYz1pSFyg7CUlHOfknED4Iw08MgipwZgRMeNHBTInBqj+0WG8IPFB9dlwz1ARlOU8J BaCCuqt4THnOBGiszf7t0Q3BfIK/e+mhXHV4+Y4OuX49Kgxl45vzB2dY1LO7EnmgibFC lMIndL8u2d9fLypzQvvqexNjNjwRRiLAfj1Aq59v8PX+IALDZioAJfRWt8MyHlBkv8Zv FeUWp/L+T1Kygx5qZbip1swdziTgbLF8UX/P6mZ2zTgAtZK6gWWSXpOpVZjFWTZO/iNY +YlkJbAKQN00D8N4i45kSDv0q9OYn9S0k4q5iUMYBSGRrGfyRC3zjZUrRzlckPGeBsS9 HcnQ== X-Forwarded-Encrypted: i=1; AJvYcCUENnRLlUs56r9K+F6pz46qAYqdjPgBzMi0uTHVniqJEnwOfe5yJpq7PT/TU9LW7/PIMPtdWOrRfBzWxvrL@lists.postgresql.org X-Gm-Message-State: AOJu0Yw2mbBOVo0srCgiSfYgUJWuga3CN2bvnrZkmKw39MmIqKPjTjH5 0fSwIkgQj/kxm0FHEdhKQLjhfYmwVdIlR8GKgQtCN9w1v6l9nFCG6Rgbv1GA72AazpeqpeGfLvu 6eWF3P5wYdj+xmM4YDIZ3od/cOgs1N9M= X-Gm-Gg: ATEYQzyZnSetZcffF2dmfWUvzLSGdSswvaMbxbP+IGzgbHRz7NJvJH5BW9g/j4bcelb /fxy0XoRdvQH4Oi2xP5gBa/0ML0VmaMKeShv4PDPKsKBhKuSrJSp6mbTCZmgFX1fXNEvL4P/et8 VGC5wi/1oggyEtWlKANw1XXqkF1NY4oz72E9p7tI3nxcLHv1s8hRyMAucpR6R4V1Y1lVNaL4/wK EJaWrKVW4VXl4MrPlosb+J9bdvmRAjhW1Zh1/iVvGqsSEj3UFr0dGvN53fowQ9+yseIDxQZPZQR /jCIiqmqPVOxhKKa6y76VrrEkC8y+Gs26JdR99NSHVDm5D4Tx/pkWav8kYNc9wRdfSWaIr2hLjC a08reD8u6WBhufV9Kpx4Or6tlRxeCrXVG5I1UPA== X-Received: by 2002:a05:620a:28c8:b0:8cd:b389:fb69 with SMTP id af79cd13be357-8cdb5a4b926mr1965585185a.4.1773714217127; Mon, 16 Mar 2026 19:23:37 -0700 (PDT) MIME-Version: 1.0 References: <20250911054220.3784-1-root@ip-172-31-36-228.ec2.internal> <0be1b7b05726652ea0d83e8f72fd4cfe@postgrespro.ru> In-Reply-To: From: John Naylor Date: Tue, 17 Mar 2026 09:23:25 +0700 X-Gm-Features: AaiRm51_yaAno59UDWPfbDkCKqCeYrUxORnbbjhqr8xcgi_XPOsnDSALrUcSNPY Message-ID: Subject: Re: Proposal for enabling auto-vectorization for checksum calculations To: Andrew Kim Cc: Oleg Tselebrovskiy , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000d8ab72064d2f058e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d8ab72064d2f058e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Mar 16, 2026 at 3:00=E2=80=AFPM Andrew Kim = wrote: > > It looks like your PostgreSQL build on Cirrus CI is failing during the > Meson configuration phase because it cannot find the libedit > libraries. > Should we add these to the pacman installation command in our CI > scripts, or is there a preferred way to handle terminal library > dependencies for the Windows Meson builds? I'll leave that to the people who maintain it. Sometimes intermittent glitches happen. And please don't top-post. I've attached v12 which is just a rebase over the new centralized feature detection. I also have some review: +# Check if the compiler supports AVX2 target attribute. +# This is used for optimized checksum calculations with runtime detection. It could possibly be used for other things, in which case this will get out of date. It's most reliable to grep for the symbol to see where something is used. Also, the first statement is not true: +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include + #if defined(__has_attribute) && __has_attribute (target) + __attribute__((target("avx2"))) + static int avx2_test(void) + { + return 0; + } + #endif], With these guards, I think any compiler will pass the test, and CI does show it passes on MSVC: [01:09:52.888] Checking if "AVX2 support" links: YES The consequence is that two functions get built with identical non-AVX2 contents. Then at runtime we pick one of them, but it doesn't matter which. This needs to test what it says it's testing. -- John Naylor Amazon Web Services --000000000000d8ab72064d2f058e Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0001-Benchmark-code-for-postgres-checksums.patch" Content-Disposition: attachment; filename="v12-0001-Benchmark-code-for-postgres-checksums.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmtzewco0 RnJvbSA1NjE1NDIyODlhNDY5NmRlN2U4ZTBmNTYzNTAxOWYwOTI3MTRlNmM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgS2ltIDxhbmRyZXcua2ltQGludGVsLmNvbT4KRGF0 ZTogV2VkLCA1IE5vdiAyMDI1IDE0OjM3OjI5IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MTIgMS8z XSBCZW5jaG1hcmsgY29kZSBmb3IgcG9zdGdyZXMgY2hlY2tzdW1zCgpBZGQgcGdfY2hlY2tzdW1f YmVuY2ggZXh0ZW5zaW9uIGZvciBwZXJmb3JtYW5jZSB0ZXN0aW5nIG9mIGNoZWNrc3VtCmltcGxl bWVudGF0aW9ucyB3aXRoIEFWWDIgb3B0aW1pemF0aW9uLgoKWFhYIG5vdCBmb3IgY29tbWl0Ci0t LQogY29udHJpYi9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwog Y29udHJpYi9wZ19jaGVja3N1bV9iZW5jaC9tZXNvbi5idWlsZCAgICAgICAgIHwgMjMgKysrKysr KysrKwogLi4uL3BnX2NoZWNrc3VtX2JlbmNoLS0xLjAuc3FsICAgICAgICAgICAgICAgIHwgIDgg KysrKwogY29udHJpYi9wZ19jaGVja3N1bV9iZW5jaC9wZ19jaGVja3N1bV9iZW5jaC5jIHwgNDIg KysrKysrKysrKysrKysrKysrKwogLi4uL3BnX2NoZWNrc3VtX2JlbmNoLmNvbnRyb2wgICAgICAg ICAgICAgICAgIHwgIDQgKysKIC4uLi9zcWwvcGdfY2hlY2tzdW1fYmVuY2guc3FsICAgICAgICAg ICAgICAgICB8IDE3ICsrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKykK IGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX2NoZWNrc3VtX2JlbmNoL21lc29uLmJ1aWxk CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ19jaGVja3N1bV9iZW5jaC9wZ19jaGVja3N1 bV9iZW5jaC0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGdfY2hlY2tzdW1f YmVuY2gvcGdfY2hlY2tzdW1fYmVuY2guYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGdf Y2hlY2tzdW1fYmVuY2gvcGdfY2hlY2tzdW1fYmVuY2guY29udHJvbAogY3JlYXRlIG1vZGUgMTAw NjQ0IGNvbnRyaWIvcGdfY2hlY2tzdW1fYmVuY2gvc3FsL3BnX2NoZWNrc3VtX2JlbmNoLnNxbAoK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvbWVzb24uYnVpbGQgYi9jb250cmliL21lc29uLmJ1aWxkCmlu ZGV4IDVhNzUyZWFjMzQ3Li45NTI5ZjBiMWFlZSAxMDA2NDQKLS0tIGEvY29udHJpYi9tZXNvbi5i dWlsZAorKysgYi9jb250cmliL21lc29uLmJ1aWxkCkBAIC0xMiw2ICsxMiw3IEBAIGNvbnRyaWJf ZG9jX2FyZ3MgPSB7CiAgICdpbnN0YWxsX2Rpcic6IGNvbnRyaWJfZG9jX2RpciwKIH0KIAorc3Vi ZGlyKCdwZ19jaGVja3N1bV9iZW5jaCcpCiBzdWJkaXIoJ2FtY2hlY2snKQogc3ViZGlyKCdhdXRo X2RlbGF5JykKIHN1YmRpcignYXV0b19leHBsYWluJykKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdf Y2hlY2tzdW1fYmVuY2gvbWVzb24uYnVpbGQgYi9jb250cmliL3BnX2NoZWNrc3VtX2JlbmNoL21l c29uLmJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zMmNjZDll ZmEwZgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdfY2hlY2tzdW1fYmVuY2gvbWVzb24u YnVpbGQKQEAgLTAsMCArMSwyMyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjItMjAyNSwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworcGdfY2hlY2tzdW1fYmVuY2hfc291cmNl cyA9IGZpbGVzKAorICAncGdfY2hlY2tzdW1fYmVuY2guYycsCispCisKK2lmIGhvc3Rfc3lzdGVt ID09ICd3aW5kb3dzJworICBwZ19jaGVja3N1bV9iZW5jaF9zb3VyY2VzICs9IHJjX2xpYl9nZW4u cHJvY2Vzcyh3aW4zMnZlcl9yYywgZXh0cmFfYXJnczogWworICAgICctLU5BTUUnLCAncGdfY2hl Y2tzdW1fYmVuY2gnLAorICAgICctLUZJTEVERVNDJywgJ3BnX2NoZWNrc3VtX2JlbmNoJyxdKQor ZW5kaWYKKworcGdfY2hlY2tzdW1fYmVuY2ggPSBzaGFyZWRfbW9kdWxlKCdwZ19jaGVja3N1bV9i ZW5jaCcsCisgIHBnX2NoZWNrc3VtX2JlbmNoX3NvdXJjZXMsCisgIGt3YXJnczogY29udHJpYl9t b2RfYXJncywKKykKK2NvbnRyaWJfdGFyZ2V0cyArPSBwZ19jaGVja3N1bV9iZW5jaAorCitpbnN0 YWxsX2RhdGEoCisgICdwZ19jaGVja3N1bV9iZW5jaC0tMS4wLnNxbCcsCisgICdwZ19jaGVja3N1 bV9iZW5jaC5jb250cm9sJywKKyAga3dhcmdzOiBjb250cmliX2RhdGFfYXJncywKKykKZGlmZiAt LWdpdCBhL2NvbnRyaWIvcGdfY2hlY2tzdW1fYmVuY2gvcGdfY2hlY2tzdW1fYmVuY2gtLTEuMC5z cWwgYi9jb250cmliL3BnX2NoZWNrc3VtX2JlbmNoL3BnX2NoZWNrc3VtX2JlbmNoLS0xLjAuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41ZjEzY2JlM2M1ZQotLS0g L2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdfY2hlY2tzdW1fYmVuY2gvcGdfY2hlY2tzdW1fYmVu Y2gtLTEuMC5zcWwKQEAgLTAsMCArMSw4IEBACisvKiBjb250cmliL3BnX2NoZWNrc3VtX2JlbmNo L3BnX2NoZWNrc3VtX2JlbmNoLS0xLjAuc3FsICovCisKKy0tIGNvbXBsYWluIGlmIHNjcmlwdCBp cyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBDUkVBVEUgRVhURU5TSU9OCistLSBc ZWNobyBVc2UgIkNSRUFURSBFWFRFTlNJT04gcGdfY2hlY2tzdW1fYmVuY2giIHRvIGxvYWQgdGhp cyBmaWxlLiBccXVpdAorCitDUkVBVEUgRlVOQ1RJT04gZHJpdmVfcGdfY2hlY2tzdW0ocGFnZV9j b3VudCBpbnQpCisJUkVUVVJOUyBwZ19jYXRhbG9nLnZvaWQKKwlBUyAnTU9EVUxFX1BBVEhOQU1F JyBMQU5HVUFHRSBDOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19jaGVja3N1bV9iZW5jaC9wZ19j aGVja3N1bV9iZW5jaC5jIGIvY29udHJpYi9wZ19jaGVja3N1bV9iZW5jaC9wZ19jaGVja3N1bV9i ZW5jaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kYzIwMzk1YTU5 MAotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdfY2hlY2tzdW1fYmVuY2gvcGdfY2hlY2tz dW1fYmVuY2guYwpAQCAtMCwwICsxLDQyIEBACisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNs dWRlICJmbWdyLmgiCisjaW5jbHVkZSAicG9ydC9jaGVja3N1bS5oIgorI2luY2x1ZGUgInBvcnQv Y2hlY2tzdW1faW1wbC5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxhc3NlcnQu aD4KKworUEdfTU9EVUxFX01BR0lDOworCisjZGVmaW5lIFJFUEVBVFMgMTAwMDAwMAorCitQR19G VU5DVElPTl9JTkZPX1YxKGRyaXZlX3BnX2NoZWNrc3VtKTsKK0RhdHVtCitkcml2ZV9wZ19jaGVj a3N1bShQR19GVU5DVElPTl9BUkdTKQoreworCWludAkJCXBhZ2VfY291bnQgPSBQR19HRVRBUkdf SU5UMzIoMCk7CisJUEdDaGVja3N1bW1hYmxlUGFnZSAqcGFnZXM7CisJaW50CQkJaTsKKwlzaXpl X3QJCWo7CisKKwlwYWdlcyA9IHBhbGxvYyhwYWdlX2NvdW50ICogc2l6ZW9mKFBHQ2hlY2tzdW1t YWJsZVBhZ2UpKTsKKwlzcmFuZCgwKTsKKwlmb3IgKGogPSAwOyBqIDwgcGFnZV9jb3VudCAqIHNp emVvZihQR0NoZWNrc3VtbWFibGVQYWdlKTsgaisrKQorCXsKKwkJY2hhcgkgICAqYnl0ZV9wdHIg PSAoY2hhciAqKSBwYWdlczsKKworCQlieXRlX3B0cltqXSA9IHJhbmQoKSAlIDI1NjsKKwl9CisK Kwlmb3IgKGkgPSAwOyBpIDwgUkVQRUFUUzsgaSsrKQorCXsKKwkJY29uc3QgUEdDaGVja3N1bW1h YmxlUGFnZSAqdGVzdF9wYWdlID0gcGFnZXMgKyAoaSAlIHBhZ2VfY291bnQpOworCQl2b2xhdGls ZSB1aW50MzIgcmVzdWx0ID0gcGdfY2hlY2tzdW1fYmxvY2tfY2hvb3NlKChjb25zdCBjaGFyICop IHRlc3RfcGFnZSk7CisKKwkJKHZvaWQpIHJlc3VsdDsKKwl9CisKKwlwZnJlZSgodm9pZCAqKSBw YWdlcyk7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19j aGVja3N1bV9iZW5jaC9wZ19jaGVja3N1bV9iZW5jaC5jb250cm9sIGIvY29udHJpYi9wZ19jaGVj a3N1bV9iZW5jaC9wZ19jaGVja3N1bV9iZW5jaC5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi40YTRlMmM5MzYzYwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRy aWIvcGdfY2hlY2tzdW1fYmVuY2gvcGdfY2hlY2tzdW1fYmVuY2guY29udHJvbApAQCAtMCwwICsx LDQgQEAKK2NvbW1lbnQgPSAncGdfY2hlY2tzdW0gYmVuY2htYXJrJworZGVmYXVsdF92ZXJzaW9u ID0gJzEuMCcKK21vZHVsZV9wYXRobmFtZSA9ICckbGliZGlyL3BnX2NoZWNrc3VtX2JlbmNoJwor cmVsb2NhdGFibGUgPSB0cnVlCmRpZmYgLS1naXQgYS9jb250cmliL3BnX2NoZWNrc3VtX2JlbmNo L3NxbC9wZ19jaGVja3N1bV9iZW5jaC5zcWwgYi9jb250cmliL3BnX2NoZWNrc3VtX2JlbmNoL3Nx bC9wZ19jaGVja3N1bV9iZW5jaC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjRiMzQ3Njk5OTUzCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9wZ19jaGVja3N1 bV9iZW5jaC9zcWwvcGdfY2hlY2tzdW1fYmVuY2guc3FsCkBAIC0wLDAgKzEsMTcgQEAKK0NSRUFU RSBFWFRFTlNJT04gcGdfY2hlY2tzdW1fYmVuY2g7CisKK1NFTEVDVCBkcml2ZV9wZ19jaGVja3N1 bSgtMSk7CisKK1x0aW1pbmcgb24KKworU0VMRUNUIGRyaXZlX3BnX2NoZWNrc3VtKDEpOworU0VM RUNUIGRyaXZlX3BnX2NoZWNrc3VtKDIpOworU0VMRUNUIGRyaXZlX3BnX2NoZWNrc3VtKDQpOwor U0VMRUNUIGRyaXZlX3BnX2NoZWNrc3VtKDgpOworU0VMRUNUIGRyaXZlX3BnX2NoZWNrc3VtKDE2 KTsKK1NFTEVDVCBkcml2ZV9wZ19jaGVja3N1bSgzMik7CitTRUxFQ1QgZHJpdmVfcGdfY2hlY2tz dW0oNjQpOworU0VMRUNUIGRyaXZlX3BnX2NoZWNrc3VtKDEyOCk7CitTRUxFQ1QgZHJpdmVfcGdf Y2hlY2tzdW0oMjU2KTsKK1NFTEVDVCBkcml2ZV9wZ19jaGVja3N1bSg1MTIpOworU0VMRUNUIGRy aXZlX3BnX2NoZWNrc3VtKDEwMjQpOwotLSAKMi41My4wCgo= --000000000000d8ab72064d2f058e Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0002-Adjust-benchmark-to-use-core-checksum.patch" Content-Disposition: attachment; filename="v12-0002-Adjust-benchmark-to-use-core-checksum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmtzewdh1 RnJvbSA1NTZkZGJiNGM2N2IwZjliNzQyYzQwY2NiNGNhMzk1MDBkZTQ1ODA1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIE5heWxvciA8am9obi5uYXlsb3JAcG9zdGdyZXNxbC5v cmc+CkRhdGU6IEZyaSwgOSBKYW4gMjAyNiAxNzowNzozNyArMDcwMApTdWJqZWN0OiBbUEFUQ0gg djEyIDIvM10gQWRqdXN0IGJlbmNobWFyayB0byB1c2UgY29yZSBjaGVja3N1bQoKWFhYIG5vdCBm b3IgY29tbWl0Ci0tLQogY29udHJpYi9wZ19jaGVja3N1bV9iZW5jaC9wZ19jaGVja3N1bV9iZW5j aC5jIHwgMTUgKysrKysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCsp LCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfY2hlY2tzdW1fYmVuY2gv cGdfY2hlY2tzdW1fYmVuY2guYyBiL2NvbnRyaWIvcGdfY2hlY2tzdW1fYmVuY2gvcGdfY2hlY2tz dW1fYmVuY2guYwppbmRleCBkYzIwMzk1YTU5MC4uNjFkYTY2NGU3MjMgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvcGdfY2hlY2tzdW1fYmVuY2gvcGdfY2hlY2tzdW1fYmVuY2guYworKysgYi9jb250cmli L3BnX2NoZWNrc3VtX2JlbmNoL3BnX2NoZWNrc3VtX2JlbmNoLmMKQEAgLTEsNyArMSw2IEBACiAj aW5jbHVkZSAicG9zdGdyZXMuaCIKICNpbmNsdWRlICJmbWdyLmgiCi0jaW5jbHVkZSAicG9ydC9j aGVja3N1bS5oIgotI2luY2x1ZGUgInBvcnQvY2hlY2tzdW1faW1wbC5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvY2hlY2tzdW0uaCIKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8YXNzZXJ0 Lmg+CkBAIC0xNSwyMyArMTQsMjMgQEAgRGF0dW0KIGRyaXZlX3BnX2NoZWNrc3VtKFBHX0ZVTkNU SU9OX0FSR1MpCiB7CiAJaW50CQkJcGFnZV9jb3VudCA9IFBHX0dFVEFSR19JTlQzMigwKTsKLQlQ R0NoZWNrc3VtbWFibGVQYWdlICpwYWdlczsKKwljaGFyICpwYWdlczsKIAlpbnQJCQlpOwogCXNp emVfdAkJajsKIAotCXBhZ2VzID0gcGFsbG9jKHBhZ2VfY291bnQgKiBzaXplb2YoUEdDaGVja3N1 bW1hYmxlUGFnZSkpOworCXBhZ2VzID0gcGFsbG9jKHBhZ2VfY291bnQgKiBCTENLU1opOwogCXNy YW5kKDApOwotCWZvciAoaiA9IDA7IGogPCBwYWdlX2NvdW50ICogc2l6ZW9mKFBHQ2hlY2tzdW1t YWJsZVBhZ2UpOyBqKyspCisJZm9yIChqID0gMDsgaiA8IHBhZ2VfY291bnQgKiBCTENLU1o7IGor KykKIAl7Ci0JCWNoYXIJICAgKmJ5dGVfcHRyID0gKGNoYXIgKikgcGFnZXM7CisJCWNoYXIJICAg KmJ5dGVfcHRyID0gIHBhZ2VzOwogCiAJCWJ5dGVfcHRyW2pdID0gcmFuZCgpICUgMjU2OwogCX0K IAogCWZvciAoaSA9IDA7IGkgPCBSRVBFQVRTOyBpKyspCiAJewotCQljb25zdCBQR0NoZWNrc3Vt bWFibGVQYWdlICp0ZXN0X3BhZ2UgPSBwYWdlcyArIChpICUgcGFnZV9jb3VudCk7Ci0JCXZvbGF0 aWxlIHVpbnQzMiByZXN1bHQgPSBwZ19jaGVja3N1bV9ibG9ja19jaG9vc2UoKGNvbnN0IGNoYXIg KikgdGVzdF9wYWdlKTsKKwkJY2hhciAqdGVzdF9wYWdlID0gcGFnZXMgKyAoaSAlIHBhZ2VfY291 bnQpOworCQl2b2xhdGlsZSB1aW50MzIgcmVzdWx0ID0gcGdfY2hlY2tzdW1fcGFnZSgoY2hhciAq KSB0ZXN0X3BhZ2UsIDApOwogCiAJCSh2b2lkKSByZXN1bHQ7CiAJfQotLSAKMi41My4wCgo= --000000000000d8ab72064d2f058e Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0003-Enable-autovectorizing-page-checksums-with-AVX2-.patch" Content-Disposition: attachment; filename="v12-0003-Enable-autovectorizing-page-checksums-with-AVX2-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmtzewdp2 RnJvbSBhMmU1ODk5MGNmNzlkYzIxNzc1NTQzMWE4NjA4NGU1ZDNjY2QxZTViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIE5heWxvciA8am9obi5uYXlsb3JAcG9zdGdyZXNxbC5v cmc+CkRhdGU6IE1vbiwgMiBNYXIgMjAyNiAxNzoyODo1OCArMDcwMApTdWJqZWN0OiBbUEFUQ0gg djEyIDMvM10gRW5hYmxlIGF1dG92ZWN0b3JpemluZyBwYWdlIGNoZWNrc3VtcyB3aXRoIEFWWDIg d2hlcmUKIGF2YWlsYWJsZQoKV2UgYWxyZWFkeSByZWx5IG9uIGF1dG92ZWN0b3JpemF0aW9uIGZv ciBjb21wdXRpbmcgcGFnZSBjaGVja3N1bXMsCmJ1dCBvbiB4ODYgd2UgY2FuIGdldCBhYm91dCB0 d2ljZSB0aGUgcGVyZm9ybWFuY2UgYnkgYW5ub3RhdGluZwpwZ19jaGVja3N1bV9ibG9jaygpIHdp dGggZnVuY3Rpb24gdGFyZ2V0IGF0dHJpYnV0ZXMgZm9yIEFWWDIsCndoaWNoIHVzZXMgMjU2LWJp dCByZWdpc3RlcnMuCgpDby1hdXRob3JlZC1ieTogTWF0dGhldyBTdGVycmV0dCA8bWF0dGhld3N0 ZXJyZXR0MkBnbWFpbC5jb20+CkNvLWF1dGhvcmVkLWJ5OiBBbmRyZXcgS2ltIDxhbmRyZXcua2lt QGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IE9sZWcgVHNlbGVicm92c2tpeSA8by50c2VsZWJyb3Zz a2l5QHBvc3RncmVzcHJvLnJ1PgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBJTJC dkE4NV81R1R1JTJCSEhuaVNidnZQJTJCOGszJTNEeFpPJTNEV0U4NE5Qd2lLeXh6dHF2cGZaM1El NDBtYWlsLmdtYWlsLmNvbQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzIwMjUwOTEx MDU0MjIwLjM3ODQtMS1yb290JTQwaXAtMTcyLTMxLTM2LTIyOC5lYzIuaW50ZXJuYWwKLS0tCiBj b25maWcvYy1jb21waWxlci5tNCAgICAgICAgICAgICAgICAgICAgIHwgMjYgKysrKysrKysrKysr KwogY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQ2ICsrKysrKysr KysrKysrKysrKysrKysrCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDkgKysrKysKIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAz MCArKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvcGFnZS9jaGVja3N1bS5jICAg ICAgfCA0NCArKysrKysrKysrKysrKysrKysrKystCiBzcmMvaW5jbHVkZS9wZ19jb25maWcuaC5p biAgICAgICAgICAgICAgIHwgIDMgKysKIHNyYy9pbmNsdWRlL3BvcnQvcGdfY3B1LmggICAgICAg ICAgICAgICAgfCAgMyArKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9jaGVja3N1bV9ibG9jay5pbmMu YyB8IDQyICsrKysrKysrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9jaGVja3N1 bV9pbXBsLmggICAgICB8IDQ4ICsrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogc3JjL3BvcnQvcGdf Y3B1X3g4Ni5jICAgICAgICAgICAgICAgICAgICB8ICA2ICsrLQogMTAgZmlsZXMgY2hhbmdlZCwg MjIyIGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy9pbmNsdWRlL3N0b3JhZ2UvY2hlY2tzdW1fYmxvY2suaW5jLmMKCmRpZmYgLS1naXQgYS9jb25m aWcvYy1jb21waWxlci5tNCBiL2NvbmZpZy9jLWNvbXBpbGVyLm00CmluZGV4IDg4MzMzZWYzMDFk Li41NjZjNjJkYWJhYiAxMDA2NDQKLS0tIGEvY29uZmlnL2MtY29tcGlsZXIubTQKKysrIGIvY29u ZmlnL2MtY29tcGlsZXIubTQKQEAgLTY5MSw2ICs2OTEsMzIgQEAgZmkKIHVuZGVmaW5lKFtBY19j YWNoZXZhcl0pZG5sCiBdKSMgUEdBQ19TU0U0Ml9DUkMzMl9JTlRSSU5TSUNTCiAKKyMgUEdBQ19B VlgyX1NVUFBPUlQKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIGlmIHRo ZSBjb21waWxlciBzdXBwb3J0cyBBVlgyIHRhcmdldCBhdHRyaWJ1dGUuCisjIFRoaXMgaXMgdXNl ZCBmb3Igb3B0aW1pemVkIGNoZWNrc3VtIGNhbGN1bGF0aW9ucyB3aXRoIHJ1bnRpbWUgZGV0ZWN0 aW9uLgorIworIyBJZiBBVlgyIHRhcmdldCBhdHRyaWJ1dGUgaXMgc3VwcG9ydGVkLCBzZXRzIHBn YWNfYXZ4Ml9zdXBwb3J0LgorQUNfREVGVU4oW1BHQUNfQVZYMl9TVVBQT1JUXSwKK1tkZWZpbmUo W0FjX2NhY2hldmFyXSwgW0FTX1RSX1NIKFtwZ2FjX2N2X2F2eDJfc3VwcG9ydF0pXSlkbmwKK0FD X0NBQ0hFX0NIRUNLKFtmb3IgQVZYMiB0YXJnZXQgYXR0cmlidXRlIHN1cHBvcnRdLCBbQWNfY2Fj aGV2YXJdLAorW0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oWyNpbmNsdWRlIDxz dGRpbnQuaD4KKyAgICAjaWYgZGVmaW5lZChfX2hhc19hdHRyaWJ1dGUpICYmIF9faGFzX2F0dHJp YnV0ZSAodGFyZ2V0KQorICAgIF9fYXR0cmlidXRlX18oKHRhcmdldCgiYXZ4MiIpKSkKKyAgICBz dGF0aWMgaW50IGF2eDJfdGVzdCh2b2lkKQorICAgIHsKKyAgICAgIHJldHVybiAwOworICAgIH0K KyAgICAjZW5kaWZdLAorICBbcmV0dXJuIGF2eDJfdGVzdCgpO10pXSwKKyAgW0FjX2NhY2hldmFy PXllc10sCisgIFtBY19jYWNoZXZhcj1ub10pXSkKK2lmIHRlc3QgeCIkQWNfY2FjaGV2YXIiID0g eCJ5ZXMiOyB0aGVuCisgIHBnYWNfYXZ4Ml9zdXBwb3J0PXllcworZmkKK3VuZGVmaW5lKFtBY19j YWNoZXZhcl0pZG5sCitdKSMgUEdBQ19BVlgyX1NVUFBPUlQKKwogIyBQR0FDX0FWWDUxMl9QQ0xN VUxfSU5UUklOU0lDUwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgQ2hlY2sgaWYg dGhlIGNvbXBpbGVyIHN1cHBvcnRzIEFWWC01MTIgY2FycnlsZXNzIG11bHRpcGxpY2F0aW9uCmRp ZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggNGM3ODliZDkyODkuLjg3ZWJl YjBjZDBlIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0xNzgzNSw2 ICsxNzgzNSw1MiBAQCAkYXNfZWNobyAiI2RlZmluZSBIQVZFX19DUFVJREVYIDEiID4+Y29uZmRl ZnMuaAogICBmaQogZmkKIAorIyBDaGVjayBmb3IgQVZYMiB0YXJnZXQgYW5kIGludHJpbnNpYyBz dXBwb3J0CisjCitpZiB0ZXN0IHgiJGhvc3RfY3B1IiA9IHgieDg2XzY0IjsgdGhlbgorICB7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBBVlgyIHRh cmdldCBhdHRyaWJ1dGUgc3VwcG9ydCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgQVZY MiB0YXJnZXQgYXR0cmlidXRlIHN1cHBvcnQuLi4gIiA+JjY7IH0KK2lmICR7cGdhY19jdl9hdngy X3N1cHBvcnQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgor ZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBl bmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RkaW50Lmg+CisgICAgI2lmIGRlZmluZWQo X19oYXNfYXR0cmlidXRlKSAmJiBfX2hhc19hdHRyaWJ1dGUgKHRhcmdldCkKKyAgICBfX2F0dHJp YnV0ZV9fKCh0YXJnZXQoImF2eDIiKSkpCisgICAgc3RhdGljIGludCBhdngyX3Rlc3Qodm9pZCkK KyAgICB7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgI2VuZGlmCitpbnQKK21haW4gKCkK K3sKK3JldHVybiBhdngyX3Rlc3QoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYg YWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBwZ2FjX2N2X2F2eDJfc3Vw cG9ydD15ZXMKK2Vsc2UKKyAgcGdhY19jdl9hdngyX3N1cHBvcnQ9bm8KK2ZpCitybSAtZiBjb3Jl IGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHBnYWNfY3Zf YXZ4Ml9zdXBwb3J0IiA+JjUKKyRhc19lY2hvICIkcGdhY19jdl9hdngyX3N1cHBvcnQiID4mNjsg fQoraWYgdGVzdCB4IiRwZ2FjX2N2X2F2eDJfc3VwcG9ydCIgPSB4InllcyI7IHRoZW4KKyAgcGdh Y19hdngyX3N1cHBvcnQ9eWVzCitmaQorCisgIGlmIHRlc3QgeCIkcGdhY19hdngyX3N1cHBvcnQi ID0geCJ5ZXMiOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIFVTRV9BVlgyX1dJVEhfUlVOVElN RV9DSEVDSyAxIiA+PmNvbmZkZWZzLmgKKworICBmaQorZmkKKwogIyBDaGVjayBmb3IgWFNBVkUg aW50cmluc2ljcwogIwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj aGVja2luZyBmb3IgX3hnZXRidiIgPiY1CmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25m aWd1cmUuYWMKaW5kZXggOWVkZmZlNDgxYTYuLjA0NDVlMWNiY2ZmIDEwMDY0NAotLS0gYS9jb25m aWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0yMTMwLDYgKzIxMzAsMTUgQEAgZWxzZQog ICBmaQogZmkKIAorIyBDaGVjayBmb3IgQVZYMiB0YXJnZXQgYW5kIGludHJpbnNpYyBzdXBwb3J0 CisjCitpZiB0ZXN0IHgiJGhvc3RfY3B1IiA9IHgieDg2XzY0IjsgdGhlbgorICBQR0FDX0FWWDJf U1VQUE9SVCgpCisgIGlmIHRlc3QgeCIkcGdhY19hdngyX3N1cHBvcnQiID0geCJ5ZXMiOyB0aGVu CisgICAgQUNfREVGSU5FKFVTRV9BVlgyX1dJVEhfUlVOVElNRV9DSEVDSywgMSwgW0RlZmluZSB0 byAxIHRvIHVzZSBBVlgyIGluc3RydWN0aW9ucyB3aXRoIGEgcnVudGltZSBjaGVjay5dKQorICBm aQorZmkKKwogIyBDaGVjayBmb3IgWFNBVkUgaW50cmluc2ljcwogIwogUEdBQ19YU0FWRV9JTlRS SU5TSUNTKCkKZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKaW5kZXggZjdh ODdlZGNjOTQuLmQ1N2U5Zjg5NDg3IDEwMDY0NAotLS0gYS9tZXNvbi5idWlsZAorKysgYi9tZXNv bi5idWlsZApAQCAtMjQzNiw2ICsyNDM2LDM2IEBAIGludCBtYWluKHZvaWQpCiBlbmRpZgogCiAK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBDaGVjayBmb3IgdGhlIGF2YWlsYWJpbGl0eSBvZiBBVlgyIHN1cHBvcnQKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCitpZiBob3N0X2NwdSA9PSAneDg2XzY0JworCisgIHByb2cgPSAnJycKKyNpbmNsdWRl IDxpbW1pbnRyaW4uaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpZiBkZWZpbmVkKF9faGFzX2F0 dHJpYnV0ZSkgJiYgX19oYXNfYXR0cmlidXRlICh0YXJnZXQpCitfX2F0dHJpYnV0ZV9fKCh0YXJn ZXQoImF2eDIiKSkpCisjZW5kaWYKK3N0YXRpYyBpbnQgYXZ4Ml90ZXN0KHZvaWQpCit7CisgICAg cmV0dXJuIDA7Cit9CisKK2ludCBtYWluKHZvaWQpCit7CisgICAgcmV0dXJuIGF2eDJfdGVzdCgp OworfQorJycnCisKKyAgaWYgY2MubGlua3MocHJvZywgbmFtZTogJ0FWWDIgc3VwcG9ydCcsIGFy Z3M6IHRlc3RfY19hcmdzKQorICAgIGNkYXRhLnNldCgnVVNFX0FWWDJfV0lUSF9SVU5USU1FX0NI RUNLJywgMSkKKyAgZW5kaWYKKworZW5kaWYKKworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQ2hlY2sgZm9yIHRoZSBh dmFpbGFiaWxpdHkgb2YgQVZYLTUxMiBwb3Bjb3VudCBpbnRyaW5zaWNzLgogIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3BhZ2UvY2hlY2tzdW0uYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvcGFnZS9jaGVja3N1bS5jCmluZGV4IDg3MTY2NTFjOGI1Li43Y2U1MWZlOWQyZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9wYWdlL2NoZWNrc3VtLmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9wYWdlL2NoZWNrc3VtLmMKQEAgLTEzLDEwICsxMyw1MiBAQAogICov CiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgInBvcnQvcGdfY3B1LmgiCiAjaW5j bHVkZSAic3RvcmFnZS9jaGVja3N1bS5oIgogLyoKICAqIFRoZSBhY3R1YWwgY29kZSBpcyBpbiBz dG9yYWdlL2NoZWNrc3VtX2ltcGwuaC4gIFRoaXMgaXMgZG9uZSBzbyB0aGF0CiAgKiBleHRlcm5h bCBwcm9ncmFtcyBjYW4gaW5jb3Jwb3JhdGUgdGhlIGNoZWNrc3VtIGNvZGUgYnkgI2luY2x1ZGUn aW5nCi0gKiB0aGF0IGZpbGUgZnJvbSB0aGUgZXhwb3J0ZWQgUG9zdGdyZXMgaGVhZGVycy4gIChD b21wYXJlIG91ciBDUkMgY29kZS4pCisgKiB0aGF0IGZpbGUgZnJvbSB0aGUgZXhwb3J0ZWQgUG9z dGdyZXMgaGVhZGVycy4gIChDb21wYXJlIG91ciBsZWdhY3kKKyAqIENSQyBjb2RlIGluIHBnX2Ny Yy5oLikKKyAqIFRoZSBQR19DSEVDS1NVTV9JTlRFUk5BTCBzeW1ib2wgYWxsb3dzIGNvcmUgdG8g dXNlIGhhcmR3YXJlLXNwZWNpZmljCisgKiBjb2Rpbmcgd2l0aG91dCBhZmZlY3RpbmcgZXh0ZXJu YWwgcHJvZ3JhbXMuCiAgKi8KKyNkZWZpbmUgUEdfQ0hFQ0tTVU1fSU5URVJOQUwKICNpbmNsdWRl ICJzdG9yYWdlL2NoZWNrc3VtX2ltcGwuaCIJLyogSVdZVSBwcmFnbWE6IGtlZXAgKi8KKworCitz dGF0aWMgdWludDMyCitwZ19jaGVja3N1bV9ibG9ja19mYWxsYmFjayhjb25zdCBQR0NoZWNrc3Vt bWFibGVQYWdlICpwYWdlKQoreworI2luY2x1ZGUgInN0b3JhZ2UvY2hlY2tzdW1fYmxvY2suaW5j LmMiCit9CisKKy8qCisgKiBBVlgyLW9wdGltaXplZCBibG9jayBjaGVja3N1bSBhbGdvcml0aG0u CisgKi8KKyNpZmRlZiBVU0VfQVZYMl9XSVRIX1JVTlRJTUVfQ0hFQ0sKK3BnX2F0dHJpYnV0ZV90 YXJnZXQoImF2eDIiKQorc3RhdGljIHVpbnQzMgorcGdfY2hlY2tzdW1fYmxvY2tfYXZ4Mihjb25z dCBQR0NoZWNrc3VtbWFibGVQYWdlICpwYWdlKQoreworI2luY2x1ZGUgInN0b3JhZ2UvY2hlY2tz dW1fYmxvY2suaW5jLmMiCit9CisjZW5kaWYJCQkJCQkJLyogVVNFX0FWWDJfV0lUSF9SVU5USU1F X0NIRUNLICovCisKKy8qCisgKiBDaG9vc2UgdGhlIGJlc3QgYXZhaWxhYmxlIGNoZWNrc3VtIGlt cGxlbWVudGF0aW9uLgorICovCitzdGF0aWMgdWludDMyCitwZ19jaGVja3N1bV9jaG9vc2UoY29u c3QgUEdDaGVja3N1bW1hYmxlUGFnZSAqcGFnZSkKK3sKKwlwZ19jaGVja3N1bV9ibG9jayA9IHBn X2NoZWNrc3VtX2Jsb2NrX2ZhbGxiYWNrOworCisjaWZkZWYgVVNFX0FWWDJfV0lUSF9SVU5USU1F X0NIRUNLCisJaWYgKHg4Nl9mZWF0dXJlX2F2YWlsYWJsZShQR19BVlgyKSkKKwkJcGdfY2hlY2tz dW1fYmxvY2sgPSBwZ19jaGVja3N1bV9ibG9ja19hdngyOworI2VuZGlmCisKKwlyZXR1cm4gcGdf Y2hlY2tzdW1fYmxvY2socGFnZSk7Cit9CisKK3N0YXRpYyB1aW50MzIgKCpwZ19jaGVja3N1bV9i bG9jaykgKGNvbnN0IFBHQ2hlY2tzdW1tYWJsZVBhZ2UgKnBhZ2UpID0gcGdfY2hlY2tzdW1fY2hv b3NlOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4gYi9zcmMvaW5jbHVk ZS9wZ19jb25maWcuaC5pbgppbmRleCA3OTM3OWE0ZDEyNS4uNzFmNjY0NmNkMGIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCisrKyBiL3NyYy9pbmNsdWRlL3BnX2NvbmZp Zy5oLmluCkBAIC02NzQsNiArNjc0LDkgQEAKIC8qIERlZmluZSB0byAxIHRvIHVzZSBBVlgtNTEy IENSQyBhbGdvcml0aG1zIHdpdGggYSBydW50aW1lIGNoZWNrLiAqLwogI3VuZGVmIFVTRV9BVlg1 MTJfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSwogCisvKiBEZWZpbmUgdG8gMSB0byB1c2UgQVZY MiBpbnN0cnVjdGlvbnMgd2l0aCBhIHJ1bnRpbWUgY2hlY2suICovCisjdW5kZWYgVVNFX0FWWDJf V0lUSF9SVU5USU1FX0NIRUNLCisKIC8qIERlZmluZSB0byAxIHRvIHVzZSBBVlgtNTEyIHBvcGNv dW50IGluc3RydWN0aW9ucyB3aXRoIGEgcnVudGltZSBjaGVjay4gKi8KICN1bmRlZiBVU0VfQVZY NTEyX1BPUENOVF9XSVRIX1JVTlRJTUVfQ0hFQ0sKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cG9ydC9wZ19jcHUuaCBiL3NyYy9pbmNsdWRlL3BvcnQvcGdfY3B1LmgKaW5kZXggYjkzYjgyOGQz YWMuLmM1ZDk2YmI0ZjQ3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3J0L3BnX2NwdS5oCisr KyBiL3NyYy9pbmNsdWRlL3BvcnQvcGdfY3B1LmgKQEAgLTI0LDYgKzI0LDkgQEAgdHlwZWRlZiBl bnVtIFg4NkZlYXR1cmVJZAogCVBHX1NTRTRfMiwKIAlQR19QT1BDTlQsCiAKKwkvKiAyNTYtYml0 IFlNTSByZWdpc3RlcnMgKi8KKwlQR19BVlgyLAorCiAJLyogNTEyLWJpdCBaTU0gcmVnaXN0ZXJz ICovCiAJUEdfQVZYNTEyX0JXLAogCVBHX0FWWDUxMl9WTCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3N0b3JhZ2UvY2hlY2tzdW1fYmxvY2suaW5jLmMgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2No ZWNrc3VtX2Jsb2NrLmluYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li43NDM0MzQ2NDRhNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvY2hl Y2tzdW1fYmxvY2suaW5jLmMKQEAgLTAsMCArMSw0MiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KgorICogY2hlY2tzdW1fYmxvY2suaW5jLmMKKyAqCSAgQ29yZSBhbGdvcml0aG0gZm9yIHBhZ2Ug Y2hlY2tzdW1zLCBzZW1pIHByaXZhdGUgdG8gY2hlY2tzdW1faW1wbC5oCisgKgkgIGFuZCBjaGVj a3N1bS5jLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMv aW5jbHVkZS9zdG9yYWdlL2NoZWNrc3VtX2Jsb2NrLmluYy5jCisgKgorICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKi8KKworLyogdGhlcmUgaXMgZGVsaWJlcmF0ZWx5IG5vdCBhbiAjaWZuZGVmIENIRUNL U1VNX0JMT0NLX0lOQ19DIGhlcmUgKi8KKwordWludDMyCQlzdW1zW05fU1VNU107Cit1aW50MzIJ CXJlc3VsdCA9IDA7Cit1aW50MzIJCWksCisJCQlqOworCisvKiBlbnN1cmUgdGhhdCB0aGUgc2l6 ZSBpcyBjb21wYXRpYmxlIHdpdGggdGhlIGFsZ29yaXRobSAqLworQXNzZXJ0KHNpemVvZihQR0No ZWNrc3VtbWFibGVQYWdlKSA9PSBCTENLU1opOworCisvKiBpbml0aWFsaXplIHBhcnRpYWwgY2hl Y2tzdW1zIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgb2Zmc2V0cyAqLworbWVtY3B5KHN1bXMsIGNo ZWNrc3VtQmFzZU9mZnNldHMsIHNpemVvZihjaGVja3N1bUJhc2VPZmZzZXRzKSk7CisKKy8qIG1h aW4gY2hlY2tzdW0gY2FsY3VsYXRpb24gKi8KK2ZvciAoaSA9IDA7IGkgPCAodWludDMyKSAoQkxD S1NaIC8gKHNpemVvZih1aW50MzIpICogTl9TVU1TKSk7IGkrKykKKwlmb3IgKGogPSAwOyBqIDwg Tl9TVU1TOyBqKyspCisJCUNIRUNLU1VNX0NPTVAoc3Vtc1tqXSwgcGFnZS0+ZGF0YVtpXVtqXSk7 CisKKy8qIGZpbmFsbHkgYWRkIGluIHR3byByb3VuZHMgb2YgemVyb2VzIGZvciBhZGRpdGlvbmFs IG1peGluZyAqLworZm9yIChpID0gMDsgaSA8IDI7IGkrKykKKwlmb3IgKGogPSAwOyBqIDwgTl9T VU1TOyBqKyspCisJCUNIRUNLU1VNX0NPTVAoc3Vtc1tqXSwgMCk7CisKKy8qIHhvciBmb2xkIHBh cnRpYWwgY2hlY2tzdW1zIHRvZ2V0aGVyICovCitmb3IgKGkgPSAwOyBpIDwgTl9TVU1TOyBpKysp CisJcmVzdWx0IF49IHN1bXNbaV07CisKK3JldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9zdG9yYWdlL2NoZWNrc3VtX2ltcGwuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvY2hl Y2tzdW1faW1wbC5oCmluZGV4IDVjMmRjYmM2M2U3Li40OTk3NDA0M2RjMiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9jaGVja3N1bV9pbXBsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9jaGVja3N1bV9pbXBsLmgKQEAgLTczLDExICs3MywxMCBAQAogICogMmUtMTYgZmFsc2Ug cG9zaXRpdmUgcmF0ZSB3aXRoaW4gbWFyZ2luIG9mIGVycm9yLgogICoKICAqIFZlY3Rvcml6YXRp b24gb2YgdGhlIGFsZ29yaXRobSByZXF1aXJlcyAzMmJpdCB4IDMyYml0IC0+IDMyYml0IGludGVn ZXIKLSAqIG11bHRpcGxpY2F0aW9uIGluc3RydWN0aW9uLiBBcyBvZiAyMDEzIHRoZSBjb3JyZXNw b25kaW5nIGluc3RydWN0aW9uIGlzCi0gKiBhdmFpbGFibGUgb24geDg2IFNTRTQuMSBleHRlbnNp b25zIChwbXVsbGQpIGFuZCBBUk0gTkVPTiAodm11bC5pMzIpLgotICogVmVjdG9yaXphdGlvbiBy ZXF1aXJlcyBhIGNvbXBpbGVyIHRvIGRvIHRoZSB2ZWN0b3JpemF0aW9uIGZvciB1cy4gRm9yIHJl Y2VudAotICogR0NDIHZlcnNpb25zIHRoZSBmbGFncyAtbXNzZTQuMSAtZnVucm9sbC1sb29wcyAt ZnRyZWUtdmVjdG9yaXplIGFyZSBlbm91Z2gKLSAqIHRvIGFjaGlldmUgdmVjdG9yaXphdGlvbi4K KyAqIG11bHRpcGxpY2F0aW9uIGluc3RydWN0aW9uLiBFeGFtcGxlcyBpbmNsdWRlIHg4NiBBVlgy IGV4dGVuc2lvbnMgKHZwbXVsbGQpCisgKiBhbmQgQVJNIE5FT04gKHZtdWwuaTMyKS4gRm9yIHNp bXBsaWNpdHkgd2UgcmVseSBvbiB0aGUgY29tcGlsZXIgdG8gZG8gdGhlCisgKiB2ZWN0b3JpemF0 aW9uIGZvciB1cy4gRm9yIEdDQyBhbmQgY2xhbmcgdGhlIGZsYWdzIC1mdW5yb2xsLWxvb3BzCisg KiAtZnRyZWUtdmVjdG9yaXplIGFyZSBlbm91Z2ggdG8gYWNoaWV2ZSB2ZWN0b3JpemF0aW9uLgog ICoKICAqIFRoZSBvcHRpbWFsIGFtb3VudCBvZiBwYXJhbGxlbGlzbSB0byB1c2UgZGVwZW5kcyBv biBDUFUgc3BlY2lmaWMgaW5zdHJ1Y3Rpb24KICAqIGxhdGVuY3ksIFNJTUQgaW5zdHJ1Y3Rpb24g d2lkdGgsIHRocm91Z2hwdXQgYW5kIHRoZSBhbW91bnQgb2YgcmVnaXN0ZXJzCkBAIC04OSw4ICs4 OCw5IEBACiAgKgogICogVGhlIHBhcmFsbGVsaXNtIG51bWJlciAzMiB3YXMgY2hvc2VuIGJhc2Vk IG9uIHRoZSBmYWN0IHRoYXQgaXQgaXMgdGhlCiAgKiBsYXJnZXN0IHN0YXRlIHRoYXQgZml0cyBp bnRvIGFyY2hpdGVjdHVyYWxseSB2aXNpYmxlIHg4NiBTU0UgcmVnaXN0ZXJzIHdoaWxlCi0gKiBs ZWF2aW5nIHNvbWUgZnJlZSByZWdpc3RlcnMgZm9yIGludGVybWVkaWF0ZSB2YWx1ZXMuIEZvciBm dXR1cmUgcHJvY2Vzc29ycwotICogd2l0aCAyNTZiaXQgdmVjdG9yIHJlZ2lzdGVycyB0aGlzIHdp bGwgbGVhdmUgc29tZSBwZXJmb3JtYW5jZSBvbiB0aGUgdGFibGUuCisgKiBsZWF2aW5nIHNvbWUg ZnJlZSByZWdpc3RlcnMgZm9yIGludGVybWVkaWF0ZSB2YWx1ZXMuIEZvciBwcm9jZXNzb3JzCisg KiB3aXRoIDI1NmJpdCB2ZWN0b3IgcmVnaXN0ZXJzIHRoaXMgbGVhdmVzIHNvbWUgcGVyZm9ybWFu Y2Ugb24gdGhlIHRhYmxlLgorICoKICAqIFdoZW4gdmVjdG9yaXphdGlvbiBpcyBub3QgYXZhaWxh YmxlIGl0IG1pZ2h0IGJlIGJlbmVmaWNpYWwgdG8gcmVzdHJ1Y3R1cmUKICAqIHRoZSBjb21wdXRh dGlvbiB0byBjYWxjdWxhdGUgYSBzdWJzZXQgb2YgdGhlIGNvbHVtbnMgYXQgYSB0aW1lIGFuZCBw ZXJmb3JtCiAgKiBtdWx0aXBsZSBwYXNzZXMgdG8gYXZvaWQgcmVnaXN0ZXIgc3BpbGxpbmcuIFRo aXMgb3B0aW1pemF0aW9uIG9wcG9ydHVuaXR5CkBAIC0xMzgsNiArMTM4LDkgQEAgZG8geyBcCiAJ KGNoZWNrc3VtKSA9IF9fdG1wICogRk5WX1BSSU1FIF4gKF9fdG1wID4+IDE3KTsgXAogfSB3aGls ZSAoMCkKIAorLyogUHJvdmlkZSBhIHN0YXRpYyBkZWZpbml0aW9uIGZvciBleHRlcm5hbCBwcm9n cmFtcyAqLworI2lmbmRlZiBQR19DSEVDS1NVTV9JTlRFUk5BTAorCiAvKgogICogQmxvY2sgY2hl Y2tzdW0gYWxnb3JpdGhtLiAgVGhlIHBhZ2UgbXVzdCBiZSBhZGVxdWF0ZWx5IGFsaWduZWQKICAq IChhdCBsZWFzdCBvbiA0LWJ5dGUgYm91bmRhcnkpLgpAQCAtMTQ1LDM0ICsxNDgsMTMgQEAgZG8g eyBcCiBzdGF0aWMgdWludDMyCiBwZ19jaGVja3N1bV9ibG9jayhjb25zdCBQR0NoZWNrc3VtbWFi bGVQYWdlICpwYWdlKQogewotCXVpbnQzMgkJc3Vtc1tOX1NVTVNdOwotCXVpbnQzMgkJcmVzdWx0 ID0gMDsKLQl1aW50MzIJCWksCi0JCQkJajsKLQotCS8qIGVuc3VyZSB0aGF0IHRoZSBzaXplIGlz IGNvbXBhdGlibGUgd2l0aCB0aGUgYWxnb3JpdGhtICovCi0JQXNzZXJ0KHNpemVvZihQR0NoZWNr c3VtbWFibGVQYWdlKSA9PSBCTENLU1opOwotCi0JLyogaW5pdGlhbGl6ZSBwYXJ0aWFsIGNoZWNr c3VtcyB0byB0aGVpciBjb3JyZXNwb25kaW5nIG9mZnNldHMgKi8KLQltZW1jcHkoc3VtcywgY2hl Y2tzdW1CYXNlT2Zmc2V0cywgc2l6ZW9mKGNoZWNrc3VtQmFzZU9mZnNldHMpKTsKLQotCS8qIG1h aW4gY2hlY2tzdW0gY2FsY3VsYXRpb24gKi8KLQlmb3IgKGkgPSAwOyBpIDwgKHVpbnQzMikgKEJM Q0tTWiAvIChzaXplb2YodWludDMyKSAqIE5fU1VNUykpOyBpKyspCi0JCWZvciAoaiA9IDA7IGog PCBOX1NVTVM7IGorKykKLQkJCUNIRUNLU1VNX0NPTVAoc3Vtc1tqXSwgcGFnZS0+ZGF0YVtpXVtq XSk7Ci0KLQkvKiBmaW5hbGx5IGFkZCBpbiB0d28gcm91bmRzIG9mIHplcm9lcyBmb3IgYWRkaXRp b25hbCBtaXhpbmcgKi8KLQlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKQotCQlmb3IgKGogPSAwOyBq IDwgTl9TVU1TOyBqKyspCi0JCQlDSEVDS1NVTV9DT01QKHN1bXNbal0sIDApOwotCi0JLyogeG9y IGZvbGQgcGFydGlhbCBjaGVja3N1bXMgdG9nZXRoZXIgKi8KLQlmb3IgKGkgPSAwOyBpIDwgTl9T VU1TOyBpKyspCi0JCXJlc3VsdCBePSBzdW1zW2ldOwotCi0JcmV0dXJuIHJlc3VsdDsKKyNpbmNs dWRlICJzdG9yYWdlL2NoZWNrc3VtX2Jsb2NrLmluYy5jIgogfQogCisjZWxzZQorc3RhdGljIHVp bnQzMiAoKnBnX2NoZWNrc3VtX2Jsb2NrKSAoY29uc3QgUEdDaGVja3N1bW1hYmxlUGFnZSAqcGFn ZSk7CisjZW5kaWYKKwogLyoKICAqIENvbXB1dGUgdGhlIGNoZWNrc3VtIGZvciBhIFBvc3RncmVz IHBhZ2UuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvcGdfY3B1X3g4Ni5jIGIvc3JjL3BvcnQv cGdfY3B1X3g4Ni5jCmluZGV4IDc1NzU4MzgyNDVjLi43YWM0YzRiM2ZkNSAxMDA2NDQKLS0tIGEv c3JjL3BvcnQvcGdfY3B1X3g4Ni5jCisrKyBiL3NyYy9wb3J0L3BnX2NwdV94ODYuYwpAQCAtODAs NyArODAsNyBAQCBzZXRfeDg2X2ZlYXR1cmVzKHZvaWQpCiAJewogCQl1aW50MzIJCXhjcjBfdmFs ID0gMDsKIAotCQkvKiBzZWNvbmQgY3B1aWQgY2FsbCBvbiBsZWFmIDcgdG8gY2hlY2sgZXh0ZW5k ZWQgQVZYLTUxMiBzdXBwb3J0ICovCisJCS8qIGNwdWlkIGNhbGwgb24gbGVhZiA3ICovCiAKIAkJ bWVtc2V0KGV4eCwgMCwgNCAqIHNpemVvZihleHhbMF0pKTsKIApAQCAtOTUsNiArOTUsMTAgQEAg c2V0X3g4Nl9mZWF0dXJlcyh2b2lkKQogCQl4Y3IwX3ZhbCA9IF94Z2V0YnYoMCk7CiAjZW5kaWYK IAorCQkvKiBBcmUgWU1NIHJlZ2lzdGVycyBlbmFibGVkPyAqLworCQlpZiAobWFza19hdmFpbGFi bGUoeGNyMF92YWwsIFhNTSB8IFlNTSkpCisJCQlYODZGZWF0dXJlc1tQR19BVlgyXSA9IGV4eFsx XSA+PiA1ICYgMTsKKwogCQkvKiBBcmUgWk1NIHJlZ2lzdGVycyBlbmFibGVkPyAqLwogCQlpZiAo bWFza19hdmFpbGFibGUoeGNyMF92YWwsIFhNTSB8IFlNTSB8CiAJCQkJCQkgICBPUE1BU0sgfCBa TU0wXzE1IHwgWk1NMTZfMzEpKQotLSAKMi41My4wCgo= --000000000000d8ab72064d2f058e--