From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com [IPv6:2a00:1450:4864:20::62a]) by sourceware.org (Postfix) with ESMTPS id 555E6386103C; Mon, 24 Jun 2024 04:53:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 555E6386103C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 555E6386103C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::62a ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1719204833; cv=none; b=YXzAHGlRO0TsT58KnWSia9DdvvGqw8INyZ2l2WoLk6GJ+BSVgHXV02liekEfG1+gDrdoA53ywLgu3CkR8E96JPqE0B9Xl0LP55LUNBI4HIFZV8lDvHqzG2WFthwM4eojNdEv5aVOlCt6566NqpVCBzDO8KQOPUXexEzj2rAbVkk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1719204833; c=relaxed/simple; bh=DAdtYlE9Sur/hKPDjEQrO8St13tVL69ciaarOpVaHlw=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:From:To; b=gxbRuzOt6qy2xzxqdHB7nHy1dVGfJYzEWD9DJl5/leFK/ubg7X2Qc3ThcQOAoReazNJ29TKeYM6mBWg1zJ2/aQmdmMI+dceCjBZElXgdU3SWBKEFTlkbtPWlp0fyydtPZVXA6C/6h7ldHZ/9DQYioohhZChN3KeaRea8MaTagVA= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ej1-x62a.google.com with SMTP id a640c23a62f3a-a6fbe639a76so615243566b.1; Sun, 23 Jun 2024 21:53:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719204829; x=1719809629; darn=gcc.gnu.org; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=0cYrqlY8ESPdU30tG7zJKg1uaxE+x5hK5V7ll27tOHc=; b=K8SY+46+e8UL2wv7K5b6JlyOYZeTWZWgy5jmofzcIvVBGCaEen71fCq/PWbIKrgZ5p UciLDZo/Qc20Fh2P/l/Ws6+7PwgfLfTMsQSAH5L+jLkoYvTnT9Qbb+j/BpfqjRnVenhp tuSkHVllV9kaCc8Pm2bZe15UJI7X6saIvsFMMWE9E3HcNrGFUwZq5d8ly7gB8ENKyHHr QO9RvKbT2E17XkhM5P7NNfDoFt9Ld25THTIEi3WtGGmSreY5IwPISgrx5wNua+v/zHm3 AQLBGWa4CrIR3hTvhvZUgRPl97KlQOD0nhF3kcN3Ver288iFAIwL2JP3OwxtKK+NnSPF 1rOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719204829; x=1719809629; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=0cYrqlY8ESPdU30tG7zJKg1uaxE+x5hK5V7ll27tOHc=; b=mxDQXMcZMXVkGyDGTF3HpSffaqmbYNaxF1P1qApVSogDfIDJovhjvo8LMkbVvx/B90 7oBNXatAu1vIe4cxnq50sOiyd1NOV9BScMsIk2uBhJfOQ4CiBwPk+wOX/LYQy46J3mb+ OnZ48tzAr4hPYFOFm8VZ2dhIxCXjwcTBuQuNTo6cU76jUNeV4bp8lO7gBlz3Cilhw+Sz oRoU/bOmGL05/ix8cbiG8XM0dSci7pq9etOtSdLquLct39+SQ9VP9pyTkuar1PIwfQFB hcY05ECVcvtJJxHrXwfDAdegi6SUrsQg0runO0wn9E4E+sp27HfjGpNzOhnp3tzDn4od CIcw== X-Gm-Message-State: AOJu0YyMOP4SZOtoOcT16YVsHqLHx4QfmwLDDy9pE+b6hKlPzunXX4z1 rtW7HWsiMcqMPOn1YbnLiuziFgdfgXgLGFYixdjodYSSGHZZ2UGjHRZwdg== X-Google-Smtp-Source: AGHT+IE3Z8gYPSdjTl5FuM0G10hBnNqgaIc3phFa9qplHohQkVJfue5pCzbexzwutbfbt455VDQnNg== X-Received: by 2002:a17:906:3c4c:b0:a6f:a2aa:a4c7 with SMTP id a640c23a62f3a-a6ffe2706b2mr348496466b.3.1719204828837; Sun, 23 Jun 2024 21:53:48 -0700 (PDT) Received: from [10.63.0.42] ([89.207.171.133]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6fcf48b109sm369962366b.56.2024.06.23.21.53.47 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 23 Jun 2024 21:53:47 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------UY7X3YTfG1W3pmLumWwhOuGl" Message-ID: <9d959a98-b1d1-4ed7-9715-503977a48a9a@gmail.com> Date: Mon, 24 Jun 2024 06:53:44 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH][_Hashtable] Fix some implementation inconsistencies From: =?UTF-8?Q?Fran=C3=A7ois_Dumont?= To: libstdc++ Cc: gcc-patches References: <6d58a734-dc69-4c38-8b31-f5f937824c15@gmail.com> <4dcef9f3-6867-4615-9e24-bb8606e4691d@gmail.com> <303e89de-465d-4bf0-8acc-11ce1662582f@gmail.com> Content-Language: en-US In-Reply-To: <303e89de-465d-4bf0-8acc-11ce1662582f@gmail.com> X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------UY7X3YTfG1W3pmLumWwhOuGl Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Still no time ? Thanks On 06/06/2024 19:02, François Dumont wrote: > No chance ? > > On 22/05/2024 06:50, François Dumont wrote: >> Ping ? >> >> On 13/05/2024 06:33, François Dumont wrote: >>> libstdc++: [_Hashtable] Fix some implementation inconsistencies >>> >>>     Get rid of the different usages of the mutable keyword except in >>>     _Prime_rehash_policy where it is preserved for abi compatibility >>> reason. >>> >>>     Fix comment to explain that we need the computation of bucket >>> index noexcept >>>     to be able to rehash the container when needed. >>> >>>     For Standard instantiations through std::unordered_xxx >>> containers we already >>>     force caching of hash code when hash functor is not noexcep so >>> it is guarantied. >>> >>>     The static_assert purpose in _Hashtable on _M_bucket_index is >>> thus limited >>>     to usages of _Hashtable with exotic _Hashtable_traits. >>> >>>     libstdc++-v3/ChangeLog: >>> >>>             * include/bits/hashtable_policy.h >>> (_NodeBuilder<>::_S_build): Remove >>>             const qualification on _NodeGenerator instance. >>> (_ReuseOrAllocNode<>::operator()(_Args&&...)): Remove const >>> qualification. >>>             (_ReuseOrAllocNode<>::_M_nodes): Remove mutable. >>>             (_Insert_base<>::_M_insert_range): Remove _NodeGetter >>> const qualification. >>>             (_Hash_code_base<>::_M_bucket_index(const >>> _Hash_node_value<>&, size_t)): >>>             Simplify noexcept declaration, we already static_assert >>> that _RangeHash functor >>>             is noexcept. >>>             * include/bits/hashtable.h: Rework comments. Remove >>> const qualifier on >>>             _NodeGenerator& arguments. >>> >>> Tested under Linux x64, ok to commit ? >>> >>> François >>> --------------UY7X3YTfG1W3pmLumWwhOuGl Content-Type: text/plain; charset=UTF-8; name="hashtable_patch.txt" Content-Disposition: attachment; filename="hashtable_patch.txt" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvaGFzaHRhYmxlLmggYi9s aWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2hhc2h0YWJsZS5oCmluZGV4IDM2MWRhMmIzYjRk Li43ZWQ2OGJiNmMzYyAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9o YXNodGFibGUuaAorKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2hhc2h0YWJsZS5o CkBAIC00OSw3ICs0OSw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAg ICAgdXNpbmcgX19jYWNoZV9kZWZhdWx0CiAgICAgICA9ICBfX25vdF88X19hbmRfPC8vIERv IG5vdCBjYWNoZSBmb3IgZmFzdCBoYXNoZXIuCiAJCSAgICAgICBfX2lzX2Zhc3RfaGFzaDxf SGFzaD4sCi0JCSAgICAgICAvLyBNYW5kYXRvcnkgdG8gaGF2ZSBlcmFzZSBub3QgdGhyb3dp bmcuCisJCSAgICAgICAvLyBNYW5kYXRvcnkgZm9yIHRoZSByZWhhc2ggcHJvY2Vzcy4KIAkJ ICAgICAgIF9faXNfbm90aHJvd19pbnZvY2FibGU8Y29uc3QgX0hhc2gmLCBjb25zdCBfVHAm Pj4+OwogCiAgIC8vIEhlbHBlciB0byBjb25kaXRpb25hbGx5IGRlbGV0ZSB0aGUgZGVmYXVs dCBjb25zdHJ1Y3Rvci4KQEAgLTQ4NCw3ICs0ODQsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1F U1BBQ0VfVkVSU0lPTgogCiAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSHQsIHR5cGVuYW1l IF9Ob2RlR2VuZXJhdG9yPgogCXZvaWQKLQlfTV9hc3NpZ24oX0h0JiYsIGNvbnN0IF9Ob2Rl R2VuZXJhdG9yJik7CisJX01fYXNzaWduKF9IdCYmLCBfTm9kZUdlbmVyYXRvciYpOwogCiAg ICAgICB2b2lkCiAgICAgICBfTV9tb3ZlX2Fzc2lnbihfSGFzaHRhYmxlJiYsIHRydWVfdHlw ZSk7CkBAIC05MjIsNyArOTIyLDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJ T04KIAogICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0t0LCB0eXBlbmFtZSBfQXJnLCB0eXBl bmFtZSBfTm9kZUdlbmVyYXRvcj4KIAlzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+Ci0JX01f aW5zZXJ0X3VuaXF1ZShfS3QmJiwgX0FyZyYmLCBjb25zdCBfTm9kZUdlbmVyYXRvciYpOwor CV9NX2luc2VydF91bmlxdWUoX0t0JiYsIF9BcmcmJiwgX05vZGVHZW5lcmF0b3ImKTsKIAog ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0t0PgogCXN0YXRpYyBfX2NvbmRpdGlvbmFsX3Q8 CkBAIC05NDIsNyArOTQyLDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04K IAogICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FyZywgdHlwZW5hbWUgX05vZGVHZW5lcmF0 b3I+CiAJc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPgotCV9NX2luc2VydF91bmlxdWVfYXV4 KF9BcmcmJiBfX2FyZywgY29uc3QgX05vZGVHZW5lcmF0b3ImIF9fbm9kZV9nZW4pCisJX01f aW5zZXJ0X3VuaXF1ZV9hdXgoX0FyZyYmIF9fYXJnLCBfTm9kZUdlbmVyYXRvciYgX19ub2Rl X2dlbikKIAl7CiAJICByZXR1cm4gX01faW5zZXJ0X3VuaXF1ZSgKIAkgICAgX1NfZm9yd2Fy ZF9rZXkoX0V4dHJhY3RLZXl7fShzdGQ6OmZvcndhcmQ8X0FyZz4oX19hcmcpKSksCkBAIC05 NTEsNyArOTUxLDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KIAogICAg ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FyZywgdHlwZW5hbWUgX05vZGVHZW5lcmF0b3I+CiAJ c3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPgotCV9NX2luc2VydChfQXJnJiYgX19hcmcsIGNv bnN0IF9Ob2RlR2VuZXJhdG9yJiBfX25vZGVfZ2VuLAorCV9NX2luc2VydChfQXJnJiYgX19h cmcsIF9Ob2RlR2VuZXJhdG9yJiBfX25vZGVfZ2VuLAogCQkgIHRydWVfdHlwZSAvKiBfX3Vr cyAqLykKIAl7CiAJICB1c2luZyBfX3RvX3ZhbHVlCkBAIC05NjIsNyArOTYyLDcgQEAgX0dM SUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KIAogICAgICAgdGVtcGxhdGU8dHlwZW5h bWUgX0FyZywgdHlwZW5hbWUgX05vZGVHZW5lcmF0b3I+CiAJaXRlcmF0b3IKLQlfTV9pbnNl cnQoX0FyZyYmIF9fYXJnLCBjb25zdCBfTm9kZUdlbmVyYXRvciYgX19ub2RlX2dlbiwKKwlf TV9pbnNlcnQoX0FyZyYmIF9fYXJnLCBfTm9kZUdlbmVyYXRvciYgX19ub2RlX2dlbiwKIAkJ ICBmYWxzZV90eXBlIF9fdWtzKQogCXsKIAkgIHVzaW5nIF9fdG9fdmFsdWUKQEAgLTk3NSw3 ICs5NzUsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICAgICAgdGVt cGxhdGU8dHlwZW5hbWUgX0FyZywgdHlwZW5hbWUgX05vZGVHZW5lcmF0b3I+CiAJaXRlcmF0 b3IKIAlfTV9pbnNlcnQoY29uc3RfaXRlcmF0b3IsIF9BcmcmJiBfX2FyZywKLQkJICBjb25z dCBfTm9kZUdlbmVyYXRvciYgX19ub2RlX2dlbiwgdHJ1ZV90eXBlIF9fdWtzKQorCQkgIF9O b2RlR2VuZXJhdG9yJiBfX25vZGVfZ2VuLCB0cnVlX3R5cGUgX191a3MpCiAJewogCSAgcmV0 dXJuCiAJICAgIF9NX2luc2VydChzdGQ6OmZvcndhcmQ8X0FyZz4oX19hcmcpLCBfX25vZGVf Z2VuLCBfX3VrcykuZmlyc3Q7CkBAIC05ODUsNyArOTg1LDcgQEAgX0dMSUJDWFhfQkVHSU5f TkFNRVNQQUNFX1ZFUlNJT04KICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BcmcsIHR5cGVu YW1lIF9Ob2RlR2VuZXJhdG9yPgogCWl0ZXJhdG9yCiAJX01faW5zZXJ0KGNvbnN0X2l0ZXJh dG9yLCBfQXJnJiYsCi0JCSAgY29uc3QgX05vZGVHZW5lcmF0b3ImLCBmYWxzZV90eXBlIF9f dWtzKTsKKwkJICBfTm9kZUdlbmVyYXRvciYsIGZhbHNlX3R5cGUgX191a3MpOwogCiAgICAg ICBzaXplX3R5cGUKICAgICAgIF9NX2VyYXNlKHRydWVfdHlwZSBfX3VrcywgY29uc3Qga2V5 X3R5cGUmKTsKQEAgLTE0MTUsNyArMTQxNSw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFD RV9WRVJTSU9OCiAgICAgICB2b2lkCiAgICAgICBfSGFzaHRhYmxlPF9LZXksIF9WYWx1ZSwg X0FsbG9jLCBfRXh0cmFjdEtleSwgX0VxdWFsLAogCQkgX0hhc2gsIF9SYW5nZUhhc2gsIF9V bnVzZWQsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+OjoKLSAgICAgIF9NX2Fzc2lnbihfSHQm JiBfX2h0LCBjb25zdCBfTm9kZUdlbmVyYXRvciYgX19ub2RlX2dlbikKKyAgICAgIF9NX2Fz c2lnbihfSHQmJiBfX2h0LCBfTm9kZUdlbmVyYXRvciYgX19ub2RlX2dlbikKICAgICAgIHsK IAlfX2J1Y2tldHNfcHRyIF9fYnVja2V0cyA9IG51bGxwdHI7CiAJaWYgKCFfTV9idWNrZXRz KQpAQCAtMTY1Nyw4ICsxNjU3LDEwIEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJT SU9OCiAgICAgfl9IYXNodGFibGUoKSBub2V4Y2VwdAogICAgIHsKICAgICAgIC8vIEdldHRp bmcgYSBidWNrZXQgaW5kZXggZnJvbSBhIG5vZGUgc2hhbGwgbm90IHRocm93IGJlY2F1c2Ug aXQgaXMgdXNlZAotICAgICAgLy8gaW4gbWV0aG9kcyAoZXJhc2UsIHN3YXAuLi4pIHRoYXQg c2hhbGwgbm90IHRocm93LiBOZWVkIGEgY29tcGxldGUKLSAgICAgIC8vIHR5cGUgdG8gY2hl Y2sgdGhpcywgc28gZG8gaXQgaW4gdGhlIGRlc3RydWN0b3Igbm90IGF0IGNsYXNzIHNjb3Bl LgorICAgICAgLy8gZHVyaW5nIHRoZSByZWhhc2ggcHJvY2Vzcy4gVGhpcyBzdGF0aWNfYXNz ZXJ0IHB1cnBvc2UgaXMgbGltaXRlZCB0byB1c2FnZQorICAgICAgLy8gb2YgX0hhc2h0YWJs ZSB3aXRoIF9IYXNodGFibGVfdHJhaXRzIHJlcXVlc3Rpbmcgbm9uLWNhY2hlZCBoYXNoIGNv ZGUuCisgICAgICAvLyBOZWVkIGEgY29tcGxldGUgdHlwZSB0byBjaGVjayB0aGlzLCBzbyBk byBpdCBpbiB0aGUgZGVzdHJ1Y3RvciBub3QgYXQKKyAgICAgIC8vIGNsYXNzIHNjb3BlLgog ICAgICAgc3RhdGljX2Fzc2VydChub2V4Y2VwdChkZWNsdmFsPGNvbnN0IF9faGFzaF9jb2Rl X2Jhc2VfYWNjZXNzJj4oKQogCQkJLl9NX2J1Y2tldF9pbmRleChkZWNsdmFsPGNvbnN0IF9f bm9kZV92YWx1ZV90eXBlJj4oKSwKIAkJCQkJIChzdGQ6OnNpemVfdCkwKSksCkBAIC0yMzE0 LDcgKzIzMTYsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICAgICAg X0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwK IAkJIF9IYXNoLCBfUmFuZ2VIYXNoLCBfVW51c2VkLCBfUmVoYXNoUG9saWN5LCBfVHJhaXRz Pjo6CiAgICAgICBfTV9pbnNlcnRfdW5pcXVlKF9LdCYmIF9faywgX0FyZyYmIF9fdiwKLQkJ ICAgICAgIGNvbnN0IF9Ob2RlR2VuZXJhdG9yJiBfX25vZGVfZ2VuKQorCQkgICAgICAgX05v ZGVHZW5lcmF0b3ImIF9fbm9kZV9nZW4pCiAgICAgICAtPiBwYWlyPGl0ZXJhdG9yLCBib29s PgogICAgICAgewogCWNvbnN0IHNpemVfdHlwZSBfX3NpemUgPSBzaXplKCk7CkBAIC0yMzUy LDcgKzIzNTQsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICAgICAg X0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwK IAkJIF9IYXNoLCBfUmFuZ2VIYXNoLCBfVW51c2VkLCBfUmVoYXNoUG9saWN5LCBfVHJhaXRz Pjo6CiAgICAgICBfTV9pbnNlcnQoY29uc3RfaXRlcmF0b3IgX19oaW50LCBfQXJnJiYgX192 LAotCQljb25zdCBfTm9kZUdlbmVyYXRvciYgX19ub2RlX2dlbiwKKwkJX05vZGVHZW5lcmF0 b3ImIF9fbm9kZV9nZW4sCiAJCWZhbHNlX3R5cGUgLyogX191a3MgKi8pCiAgICAgICAtPiBp dGVyYXRvcgogICAgICAgewpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0 cy9oYXNodGFibGVfcG9saWN5LmggYi9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2hhc2h0 YWJsZV9wb2xpY3kuaAppbmRleCAyNmRlZjI0ZjI0ZS4uMWMxMjE2NjdlZjAgMTAwNjQ0Ci0t LSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvaGFzaHRhYmxlX3BvbGljeS5oCisrKyBi L2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvaGFzaHRhYmxlX3BvbGljeS5oCkBAIC0xNTUs NyArMTU1LDcgQEAgbmFtZXNwYWNlIF9fZGV0YWlsCiAgICAgewogICAgICAgdGVtcGxhdGU8 dHlwZW5hbWUgX0t0LCB0eXBlbmFtZSBfQXJnLCB0eXBlbmFtZSBfTm9kZUdlbmVyYXRvcj4K IAlzdGF0aWMgYXV0bwotCV9TX2J1aWxkKF9LdCYmIF9faywgX0FyZyYmIF9fYXJnLCBjb25z dCBfTm9kZUdlbmVyYXRvciYgX19ub2RlX2dlbikKKwlfU19idWlsZChfS3QmJiBfX2ssIF9B cmcmJiBfX2FyZywgX05vZGVHZW5lcmF0b3ImIF9fbm9kZV9nZW4pCiAJLT4gdHlwZW5hbWUg X05vZGVHZW5lcmF0b3I6Ol9fbm9kZV9wdHIKIAl7CiAJICByZXR1cm4gX19ub2RlX2dlbihz dGQ6OmZvcndhcmQ8X0t0PihfX2spLApAQCAtMTY4LDcgKzE2OCw3IEBAIG5hbWVzcGFjZSBf X2RldGFpbAogICAgIHsKICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9LdCwgdHlwZW5hbWUg X0FyZywgdHlwZW5hbWUgX05vZGVHZW5lcmF0b3I+CiAJc3RhdGljIGF1dG8KLQlfU19idWls ZChfS3QmJiBfX2ssIF9BcmcmJiwgY29uc3QgX05vZGVHZW5lcmF0b3ImIF9fbm9kZV9nZW4p CisJX1NfYnVpbGQoX0t0JiYgX19rLCBfQXJnJiYsIF9Ob2RlR2VuZXJhdG9yJiBfX25vZGVf Z2VuKQogCS0+IHR5cGVuYW1lIF9Ob2RlR2VuZXJhdG9yOjpfX25vZGVfcHRyCiAJeyByZXR1 cm4gX19ub2RlX2dlbihzdGQ6OmZvcndhcmQ8X0t0PihfX2spKTsgfQogICAgIH07CkBAIC0y MTIsNyArMjEyLDcgQEAgbmFtZXNwYWNlIF9fZGV0YWlsCiAKICAgICAgIHRlbXBsYXRlPHR5 cGVuYW1lLi4uIF9BcmdzPgogCV9fbm9kZV9wdHIKLQlvcGVyYXRvcigpKF9BcmdzJiYuLi4g X19hcmdzKSBjb25zdAorCW9wZXJhdG9yKCkoX0FyZ3MmJi4uLiBfX2FyZ3MpCiAJewogCSAg aWYgKCFfTV9ub2RlcykKIAkgICAgcmV0dXJuIF9NX2guX01fYWxsb2NhdGVfbm9kZShzdGQ6 OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOwpAQCAtMjMwLDcgKzIzMCw3IEBAIG5hbWVz cGFjZSBfX2RldGFpbAogCX0KIAogICAgIHByaXZhdGU6Ci0gICAgICBtdXRhYmxlIF9fbm9k ZV9wdHIgX01fbm9kZXM7CisgICAgICBfX25vZGVfcHRyIF9NX25vZGVzOwogICAgICAgX19o YXNodGFibGVfYWxsb2MmIF9NX2g7CiAgICAgfTsKIApAQCAtNTU1LDYgKzU1NSw3IEBAIG5h bWVzcGFjZSBfX2RldGFpbAogICAgIHsgcmV0dXJuIF9NX21heF9sb2FkX2ZhY3RvcjsgfQog CiAgICAgLy8gUmV0dXJuIGEgYnVja2V0IHNpemUgbm8gc21hbGxlciB0aGFuIG4uCisgICAg Ly8gVE9ETzogJ2NvbnN0JyBxdWFsaWZpZXIgaXMga2VwdCBmb3IgYWJpIGNvbXBhdGliaWxp dHkgcmVhc29uLgogICAgIHN0ZDo6c2l6ZV90CiAgICAgX01fbmV4dF9ia3Qoc3RkOjpzaXpl X3QgX19uKSBjb25zdDsKIApAQCAtNTY3LDYgKzU2OCw3IEBAIG5hbWVzcGFjZSBfX2RldGFp bAogICAgIC8vIGFuZCBfX25faW5zIGlzIG51bWJlciBvZiBlbGVtZW50cyB0byBiZSBpbnNl cnRlZC4gIERvIHdlIG5lZWQgdG8KICAgICAvLyBpbmNyZWFzZSBidWNrZXQgY291bnQ/ICBJ ZiBzbywgcmV0dXJuIG1ha2VfcGFpcih0cnVlLCBuKSwgd2hlcmUgbgogICAgIC8vIGlzIHRo ZSBuZXcgYnVja2V0IGNvdW50LiAgSWYgbm90LCByZXR1cm4gbWFrZV9wYWlyKGZhbHNlLCAw KS4KKyAgICAvLyBUT0RPOiAnY29uc3QnIHF1YWxpZmllciBpcyBrZXB0IGZvciBhYmkgY29t cGF0aWJpbGl0eSByZWFzb24uCiAgICAgc3RkOjpwYWlyPGJvb2wsIHN0ZDo6c2l6ZV90Pgog ICAgIF9NX25lZWRfcmVoYXNoKHN0ZDo6c2l6ZV90IF9fbl9ia3QsIHN0ZDo6c2l6ZV90IF9f bl9lbHQsCiAJCSAgIHN0ZDo6c2l6ZV90IF9fbl9pbnMpIGNvbnN0OwpAQCAtNTg4LDYgKzU5 MCw4IEBAIG5hbWVzcGFjZSBfX2RldGFpbAogICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVf dCBfU19ncm93dGhfZmFjdG9yID0gMjsKIAogICAgIGZsb2F0CQlfTV9tYXhfbG9hZF9mYWN0 b3I7CisKKyAgICAvLyBUT0RPOiAnbXV0YWJsZScga2VwdCBmb3IgYWJpIGNvbXBhdGliaWxp dHkgcmVhc29uLgogICAgIG11dGFibGUgc3RkOjpzaXplX3QJX01fbmV4dF9yZXNpemU7CiAg IH07CiAKQEAgLTkzMSwxMiArOTM1LDEyIEBAIG5hbWVzcGFjZSBfX2RldGFpbAogICAgICAg dGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9Ob2RlR2V0dGVy PgogCXZvaWQKIAlfTV9pbnNlcnRfcmFuZ2UoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lu cHV0SXRlcmF0b3IgX19sYXN0LAotCQkJY29uc3QgX05vZGVHZXR0ZXImLCB0cnVlX3R5cGUg X191a3MpOworCQkJX05vZGVHZXR0ZXImLCB0cnVlX3R5cGUgX191a3MpOwogCiAgICAgICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX05vZGVHZXR0ZXI+ CiAJdm9pZAogCV9NX2luc2VydF9yYW5nZShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5w dXRJdGVyYXRvciBfX2xhc3QsCi0JCQljb25zdCBfTm9kZUdldHRlciYsIGZhbHNlX3R5cGUg X191a3MpOworCQkJX05vZGVHZXR0ZXImLCBmYWxzZV90eXBlIF9fdWtzKTsKIAogICAgIHB1 YmxpYzoKICAgICAgIHVzaW5nIGl0ZXJhdG9yID0gX05vZGVfaXRlcmF0b3I8X1ZhbHVlLCBf X2NvbnN0YW50X2l0ZXJhdG9yczo6dmFsdWUsCkBAIC0xMDEyLDcgKzEwMTYsNyBAQCBuYW1l c3BhY2UgX19kZXRhaWwKIAkJICAgX0hhc2gsIF9SYW5nZUhhc2gsIF9VbnVzZWQsCiAJCSAg IF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+OjoKICAgICAgIF9NX2luc2VydF9yYW5nZShfSW5w dXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCi0JCSAgICAgIGNv bnN0IF9Ob2RlR2V0dGVyJiBfX25vZGVfZ2VuLCB0cnVlX3R5cGUgX191a3MpCisJCSAgICAg IF9Ob2RlR2V0dGVyJiBfX25vZGVfZ2VuLCB0cnVlX3R5cGUgX191a3MpCiAgICAgICB7CiAJ X19oYXNodGFibGUmIF9faCA9IF9NX2Nvbmp1cmVfaGFzaHRhYmxlKCk7CiAJZm9yICg7IF9f Zmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCkBAIC0xMDI5LDcgKzEwMzMsNyBAQCBuYW1l c3BhY2UgX19kZXRhaWwKIAkJICAgX0hhc2gsIF9SYW5nZUhhc2gsIF9VbnVzZWQsCiAJCSAg IF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+OjoKICAgICAgIF9NX2luc2VydF9yYW5nZShfSW5w dXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCi0JCSAgICAgIGNv bnN0IF9Ob2RlR2V0dGVyJiBfX25vZGVfZ2VuLCBmYWxzZV90eXBlIF9fdWtzKQorCQkgICAg ICBfTm9kZUdldHRlciYgX19ub2RlX2dlbiwgZmFsc2VfdHlwZSBfX3VrcykKICAgICAgIHsK IAl1c2luZyBfX3JlaGFzaF9ndWFyZF90ID0gdHlwZW5hbWUgX19oYXNodGFibGU6Ol9fcmVo YXNoX2d1YXJkX3Q7CiAJdXNpbmcgX19wYWlyX3R5cGUgPSBzdGQ6OnBhaXI8Ym9vbCwgc3Rk OjpzaXplX3Q+OwpAQCAtMTM1OSw5ICsxMzYzLDcgQEAgbmFtZXNwYWNlIF9fZGV0YWlsCiAg ICAgICBzdGQ6OnNpemVfdAogICAgICAgX01fYnVja2V0X2luZGV4KGNvbnN0IF9IYXNoX25v ZGVfdmFsdWU8X1ZhbHVlLCBmYWxzZT4mIF9fbiwKIAkJICAgICAgc3RkOjpzaXplX3QgX19i a3RfY291bnQpIGNvbnN0Ci0Jbm9leGNlcHQoIG5vZXhjZXB0KGRlY2x2YWw8Y29uc3QgX0hh c2gmPigpKGRlY2x2YWw8Y29uc3QgX0tleSY+KCkpKQotCQkgICYmIG5vZXhjZXB0KGRlY2x2 YWw8Y29uc3QgX1JhbmdlSGFzaCY+KCkoKF9faGFzaF9jb2RlKTAsCi0JCQkJCQkJICAgKHN0 ZDo6c2l6ZV90KTApKSApCisgICAgICBub2V4Y2VwdCggbm9leGNlcHQoZGVjbHZhbDxjb25z dCBfSGFzaCY+KCkoZGVjbHZhbDxjb25zdCBfS2V5Jj4oKSkpICkKICAgICAgIHsKIAlyZXR1 cm4gX1JhbmdlSGFzaHt9KF9NX2hhc2hfY29kZShfRXh0cmFjdEtleXt9KF9fbi5fTV92KCkp KSwKIAkJCSAgICBfX2JrdF9jb3VudCk7CkBAIC0xMzY5LDkgKzEzNzEsNyBAQCBuYW1lc3Bh Y2UgX19kZXRhaWwKIAogICAgICAgc3RkOjpzaXplX3QKICAgICAgIF9NX2J1Y2tldF9pbmRl eChjb25zdCBfSGFzaF9ub2RlX3ZhbHVlPF9WYWx1ZSwgdHJ1ZT4mIF9fbiwKLQkJICAgICAg c3RkOjpzaXplX3QgX19ia3RfY291bnQpIGNvbnN0Ci0Jbm9leGNlcHQoIG5vZXhjZXB0KGRl Y2x2YWw8Y29uc3QgX1JhbmdlSGFzaCY+KCkoKF9faGFzaF9jb2RlKTAsCi0JCQkJCQkJKHN0 ZDo6c2l6ZV90KTApKSApCisJCSAgICAgIHN0ZDo6c2l6ZV90IF9fYmt0X2NvdW50KSBjb25z dCBub2V4Y2VwdAogICAgICAgeyByZXR1cm4gX1JhbmdlSGFzaHt9KF9fbi5fTV9oYXNoX2Nv ZGUsIF9fYmt0X2NvdW50KTsgfQogCiAgICAgICB2b2lkCg== --------------UY7X3YTfG1W3pmLumWwhOuGl--