From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x1035.google.com (mail-pj1-x1035.google.com [IPv6:2607:f8b0:4864:20::1035]) by sourceware.org (Postfix) with ESMTPS id 99A75386183D; Thu, 28 Mar 2024 15:39:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 99A75386183D 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 99A75386183D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::1035 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711640385; cv=none; b=ufmQ+8s3uweD2TQvVGWj19VykREIu0oUZjC+FwsJRmLlHIU6dsqwRFGxV0bdXCiX0OGGnDKGtt1cz+xJhUq4YJT143HWEhYBOR5fiYuUG8JMofzGlLInqP5pEKc5HyBkxR1bjicw75+3l+Ps9ZYm7oZFtCPiWH99+xBCdR3H1Y4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711640385; c=relaxed/simple; bh=Xi6f5W/NwLrkYkf5Fug2R9DUDQTWyEv409nMBAutWU8=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=AnKRdScT0Y5QfncbXTYhv7mFA4sF2CNq+s3QQr9YfQa7iZkkzAbmg1Es3JwSR2RqtEvFPfJ4Ocyjvcumxc/Z/sbNgSwJ2G21O6cXEhlxbkqgaBbpUcRE8gV2aSD76Cd+VzxEplbVZRRcAgqihAmasK5wtbthMpfdnOM3hC/i82Y= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-29ddfd859eeso966592a91.1; Thu, 28 Mar 2024 08:39:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711640381; x=1712245181; darn=gcc.gnu.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=a4CB4qJdHLJ8awE7W2d1QcLHBlz62jxKORfqioTohNg=; b=m9IgC3evxOLhvati+WiWUj6XMH64twd/S6IM/GGhuZ/vCE471WJUwR9JB/LsTVoMmv R72z7QEAOYvyzCQ08CabGlFQoYuDtwLl2D12kp0+k8epwvH8HOlYe166BNlb8tueIlXf HXbc9OI26G/XCQIXqUAW6oFrm8ivvimAbJWDpO3wM2MXbDOX4v3QB4RLixfyJjS2O0zo KwVVlIO7o5oaV1zMKYBDCCksa8HpOaMM9BERX7EdGUZaAeWkb7SuLdr+8dFoTC3DMQ+Q ERRR17wc0Xe5pWDoYQd4TkOq3NNadwWavVD1s2QiurBYOvC/hGBVoIxYAvKnmxRLHqhR /6rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711640381; x=1712245181; h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=a4CB4qJdHLJ8awE7W2d1QcLHBlz62jxKORfqioTohNg=; b=S34HstjUKOIIbRqP11Jhyn4Lzpn3MucOyYeRTwT4SYxZkjIVgTxO3anfaF+56SPXp4 myRrlnA+zpbmtoa8q6MW22MA3xWdrQl4xyIkx6rm7oP0Ty1Bi++xjueNoi7xUTy5b+F+ 3R0XLp7MQ3WvYX+45AntnhTs/I+yOJGWGYMt99P3cvHa+hXr+B+qWh7Kv/ABcmNGATK/ OfohXgYChKlqrtUCHEDZzH3vR8oEfLZ6bpQRcIkasFqwksLLlSDpiNN8LYOzRKajaLAB XuFtizD0zTLQKdi+F9jIIPal+a6dkSa6xfknUdBNkI+vtZIEPn3hqVmVQyt8To8GuK52 DzGQ== X-Forwarded-Encrypted: i=1; AJvYcCWoHELcjvwuiEJTanRJk++PsxYezHJx0AGTREMGQB/tXIyVCzoK7rIR1l4Y6ha0DL7b7p6FCD0WbSdZF3PI1EGxiKr2c5GurA== X-Gm-Message-State: AOJu0YyCnQmjI0lQZPotaBKM4CKMimDFcw3LNyDgmoeeoeQJYT+LDLMn ZwIh2XsGDGvwNs6XpZ9Qp2w7kxFywuOAvkrWyaeiekhaK9VeAj2XNGaxWng5dRbuH2mDvcDt75F d96LRLvF3LusLGMOXgmtxC964drzio1wS1jU= X-Google-Smtp-Source: AGHT+IG1cFVJ/dFPjIJ0CDviquZ51MCajSDN9buEqxfytm8I1hFFGsqRwwrD95DCIk2XyT9GS0DQ/QSzmFNFog1ZZMQ= X-Received: by 2002:a17:90a:398c:b0:29b:6e9d:5897 with SMTP id z12-20020a17090a398c00b0029b6e9d5897mr3607215pjb.23.1711640381196; Thu, 28 Mar 2024 08:39:41 -0700 (PDT) MIME-Version: 1.0 From: Paul Richard Thomas Date: Thu, 28 Mar 2024 15:39:30 +0000 Message-ID: Subject: [Patch, fortran] PR110987 and PR113885 - gimplifier ICEs and wrong results in finalization To: "fortran@gcc.gnu.org" , gcc-patches Cc: chilikin.k@gmail.com Content-Type: multipart/mixed; boundary="000000000000e7bf560614ba54ba" X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,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: --000000000000e7bf560614ba54ba Content-Type: multipart/alternative; boundary="000000000000e7bf540614ba54b8" --000000000000e7bf540614ba54b8 Content-Type: text/plain; charset="UTF-8" Hi All, The attached patch has two elements: (i) A fix for gimplifier ICEs with derived type having no components. The reporter himself suggested (thanks Kirill!): - if (derived && derived->attr.zero_comp) + if (derived && (derived->components == NULL)) As far as I can tell, this is the correct fix. I tried setting attr.zero_comp in resolve.cc for all the OK types without components but this caused all sorts of fallout. (ii) Final calls were occurring in the wrong place for finalizable elemental function calls within scalarizer loops. This caused incorrect results even for derived types with components. This is also fixed. It should be noted that finalizer calls from the rhs of an assignment are occurring at the wrong time, since F2018/24-7.5.6.3 requires: "If an executable construct references a nonpointer function, the result is finalized after execution of the innermost executable construct containing the reference.", while in the present implementation, this happening just before assignment to the lhs temporary. Fixing this is going to be really tough and invasive, so I decided that getting the right results and the correct number of finalization should be sufficient for the 14-branch release. As it happens, I had been mulling over how to do this for finalizations hidden in constructors and other contexts than assignment (eg. write statements or allocation with source). It's a few months away and will be appropriate for stage 1. Regtests on x86_64 - OK for mainline and then, after a bit, for backporting to 13-branch? Regards to all Paul Fortran: Fix a gimplifier ICE/wrong result with finalization [PR104555] 2024-03-28 Paul Thomas gcc/fortran PR fortran/36337 PR fortran/110987 PR fortran/113885 * trans-expr.cc (gfc_trans_assignment_1): Place finalization block before rhs post block for elemental rhs. * trans.cc (gfc_finalize_tree_expr): Check directly if a type has no components, rather than the zero components attribute. Treat elemental zero component expressions in the same way as scalars. gcc/testsuite/ PR fortran/113885 * gfortran.dg/finalize_54.f90: New test. * gfortran.dg/finalize_55.f90: New test. gcc/testsuite/ PR fortran/110987 * gfortran.dg/finalize_56.f90: New test. --000000000000e7bf540614ba54b8-- --000000000000e7bf560614ba54ba Content-Type: text/x-patch; charset="US-ASCII"; name="submit.diff" Content-Disposition: attachment; filename="submit.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lubeh7800 ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLWV4cHIuY2MgYi9nY2Mv Zm9ydHJhbi90cmFucy1leHByLmNjCmluZGV4IDc2YmVkOTgzMGM0Li4wNzlh YzkzYWE4YSAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMtZXhwci5j YworKysgYi9nY2MvZm9ydHJhbi90cmFucy1leHByLmNjCkBAIC0xMjUxMSwx MSArMTI1MTEsMTQgQEAgZ2ZjX3RyYW5zX2Fzc2lnbm1lbnRfMSAoZ2ZjX2V4 cHIgKiBleHByMSwgZ2ZjX2V4cHIgKiBleHByMiwgYm9vbCBpbml0X2ZsYWcs CiAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZib2R5LCAmbHNlLnByZSk7 CiAgIGdmY19hZGRfZXhwcl90b19ibG9jayAoJmJvZHksIHRtcCk7CgotICAv KiBBZGQgdGhlIHBvc3QgYmxvY2tzIHRvIHRoZSBib2R5LiAgKi8KLSAgaWYg KCFsX2lzX3RlbXApCisgIC8qIEFkZCB0aGUgcG9zdCBibG9ja3MgdG8gdGhl IGJvZHkuICBTY2FsYXIgZmluYWxpemF0aW9uIG11c3QgYXBwZWFyIGJlZm9y ZQorICAgICB0aGUgcG9zdCBibG9jayBpbiBjYXNlIGFueSBkZWxsb2NhdGlv bnMgYXJlIGRvbmUuICAqLworICBpZiAocnNlLmZpbmFsYmxvY2suaGVhZAor ICAgICAgJiYgKCFsX2lzX3RlbXAgfHwgKGV4cHIyLT5leHByX3R5cGUgPT0g RVhQUl9GVU5DVElPTgorCQkJICYmIGdmY19leHByX2F0dHIgKGV4cHIyKS5l bGVtZW50YWwpKSkKICAgICB7Ci0gICAgICBnZmNfYWRkX2Jsb2NrX3RvX2Js b2NrICgmcnNlLmZpbmFsYmxvY2ssICZyc2UucG9zdCk7CiAgICAgICBnZmNf YWRkX2Jsb2NrX3RvX2Jsb2NrICgmYm9keSwgJnJzZS5maW5hbGJsb2NrKTsK KyAgICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZib2R5LCAmcnNlLnBv c3QpOwogICAgIH0KICAgZWxzZQogICAgIGdmY19hZGRfYmxvY2tfdG9fYmxv Y2sgKCZib2R5LCAmcnNlLnBvc3QpOwpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRy YW4vdHJhbnMuY2MgYi9nY2MvZm9ydHJhbi90cmFucy5jYwppbmRleCA3ZjUw YjE2YWVlOS4uYmFkYWQ2YWU4OTIgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFu L3RyYW5zLmNjCisrKyBiL2djYy9mb3J0cmFuL3RyYW5zLmNjCkBAIC0xNjI0 LDcgKzE2MjQsNyBAQCBnZmNfZmluYWxpemVfdHJlZV9leHByIChnZmNfc2Ug KnNlLCBnZmNfc3ltYm9sICpkZXJpdmVkLAogICAgIH0KICAgZWxzZSBpZiAo ZGVyaXZlZCAmJiBnZmNfaXNfZmluYWxpemFibGUgKGRlcml2ZWQsIE5VTEwp KQogICAgIHsKLSAgICAgIGlmIChkZXJpdmVkLT5hdHRyLnplcm9fY29tcCAm JiAhcmFuaykKKyAgICAgIGlmICghZGVyaXZlZC0+Y29tcG9uZW50cyAmJiAo IXJhbmsgfHwgYXR0ci5lbGVtZW50YWwpKQogCXsKIAkgIC8qIEFueSBhdHRl bXB0IHRvIGFzc2lnbiB6ZXJvIGxlbmd0aCBlbnRpdGllcywgY2F1c2VzIHRo ZSBnaW1wbGlmaWVyCiAJICAgICBhbGwgbWFubmVyIG9mIHByb2JsZW1zLiBJ bnN0ZWFkLCBhIHZhcmlhYmxlIGlzIGNyZWF0ZWQgdG8gYWN0IGFzCkBAIC0x Njc1LDcgKzE2NzUsNyBAQCBnZmNfZmluYWxpemVfdHJlZV9leHByIChnZmNf c2UgKnNlLCBnZmNfc3ltYm9sICpkZXJpdmVkLAogCQkJCQkgICAgICBmaW5h bF9mbmRlY2wpOwogICBpZiAoIUdGQ19ERVNDUklQVE9SX1RZUEVfUCAoVFJF RV9UWVBFIChkZXNjKSkpCiAgICAgewotICAgICAgaWYgKGlzX2NsYXNzKQor ICAgICAgaWYgKGlzX2NsYXNzIHx8IGF0dHIuZWxlbWVudGFsKQogCWRlc2Mg PSBnZmNfY29udl9zY2FsYXJfdG9fZGVzY3JpcHRvciAoc2UsIGRlc2MsIGF0 dHIpOwogICAgICAgZWxzZQogCXsKQEAgLTE2ODUsNyArMTY4NSw3IEBAIGdm Y19maW5hbGl6ZV90cmVlX2V4cHIgKGdmY19zZSAqc2UsIGdmY19zeW1ib2wg KmRlcml2ZWQsCiAJfQogICAgIH0KCi0gIGlmIChkZXJpdmVkICYmIGRlcml2 ZWQtPmF0dHIuemVyb19jb21wKQorICBpZiAoZGVyaXZlZCAmJiAhZGVyaXZl ZC0+Y29tcG9uZW50cykKICAgICB7CiAgICAgICAvKiBBbGwgdGhlIGNvbmRp dGlvbnMgYmVsb3cgYnJlYWsgZG93biBmb3IgemVybyBsZW5ndGggZGVyaXZl ZCB0eXBlcy4gICovCiAgICAgICB0bXAgPSBidWlsZF9jYWxsX2V4cHJfbG9j IChpbnB1dF9sb2NhdGlvbiwgZmluYWxfZm5kZWNsLCAzLApkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9maW5hbGl6ZV81NC5mOTAg Yi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2ZpbmFsaXplXzU0LmY5MApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzNkMzJi MWIzMzMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL2ZpbmFsaXplXzU0LmY5MApAQCAtMCwwICsxLDQ3IEBACishIHsg ZGctZG8gY29tcGlsZSB9CishIFRlc3QgdGhlIGZpeCBmb3IgUFIxMTM4ODUs IHdoZXJlIG5vdCBvbmx5IHdhcyB0aGVyZSBhIGdpbXBsaWZpZXIgSUNFCish IGZvciBhIGRlcml2ZWQgdHlwZSAndCcgd2l0aCBubyBjb21wb25lbnRzIGJ1 dCwgd2l0aCBhIGNvbXBvbmVudCwgZ2ZvcnRyYW4KKyEgZ2F2ZSB3cm9uZyBy ZXN1bHRzLgorISBDb250cmlidXRlZCBieSBEYXZpZCBCaW5kZXJtYW4gIDxk Y2IzMTRAaG90bWFpbC5jb20+CishCittb2R1bGUgdHlwZXMKKyAgdHlwZSB0 CisgICBjb250YWlucworICAgICBmaW5hbCA6OiBmaW5hbGl6ZQorICBlbmQg dHlwZSB0Citjb250YWlucworICBwdXJlIHN1YnJvdXRpbmUgZmluYWxpemUo eCkKKyAgICB0eXBlKHQpLCBpbnRlbnQoaW5vdXQpIDo6IHgKKyAgZW5kIHN1 YnJvdXRpbmUgZmluYWxpemUKK2VuZCBtb2R1bGUgdHlwZXMKKworc3Vicm91 dGluZSB0ZXN0MSh4KQorICB1c2UgdHlwZXMKKyAgaW50ZXJmYWNlCisgICAg IGVsZW1lbnRhbCBmdW5jdGlvbiBlbGVtKHgpCisgICAgICAgdXNlIHR5cGVz CisgICAgICAgdHlwZSh0KSwgaW50ZW50KGluKSA6OiB4CisgICAgICAgdHlw ZSh0KSA6OiBlbGVtCisgICAgIGVuZCBmdW5jdGlvbiBlbGVtCisgIGVuZCBp bnRlcmZhY2UKKyAgdHlwZSh0KSA6OiB4KDopCisgIHggPSBlbGVtKHgpCitl bmQgc3Vicm91dGluZSB0ZXN0MQorCitzdWJyb3V0aW5lIHRlc3QyKHgpCisg IHVzZSB0eXBlcworICBpbnRlcmZhY2UKKyAgICAgZWxlbWVudGFsIGZ1bmN0 aW9uIGVsZW0oeCkKKyAgICAgICB1c2UgdHlwZXMKKyAgICAgICB0eXBlKHQp LCBpbnRlbnQoaW4pIDo6IHgKKyAgICAgICB0eXBlKHQpIDo6IGVsZW0KKyAg ICAgZW5kIGZ1bmN0aW9uIGVsZW0KKyAgICAgZWxlbWVudGFsIGZ1bmN0aW9u IGVsZW0yKHgsIHkpCisgICAgICAgdXNlIHR5cGVzCisgICAgICAgdHlwZSh0 KSwgaW50ZW50KGluKSA6OiB4LCB5CisgICAgICAgdHlwZSh0KSA6OiBlbGVt MgorICAgICBlbmQgZnVuY3Rpb24gZWxlbTIKKyAgZW5kIGludGVyZmFjZQor ICB0eXBlKHQpIDo6IHgoOikKKyAgeCA9IGVsZW0yKGVsZW0oeCksIGVsZW0o eCkpCitlbmQgc3Vicm91dGluZSB0ZXN0MgpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9maW5hbGl6ZV81NS5mOTAgYi9nY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL2ZpbmFsaXplXzU1LmY5MApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmE3ZTU1MmVlYTUKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2Zp bmFsaXplXzU1LmY5MApAQCAtMCwwICsxLDg5IEBACishIHsgZGctZG8gcnVu IH0KKyEgVGVzdCB0aGUgZml4IGZvciBQUjExMzg4NSwgd2hlcmUgbm90IG9u bHkgd2FzIHRoZXJlIGEgZ2ltcGxpZmllciBJQ0UKKyEgZm9yIGEgZGVyaXZl ZCB0eXBlICd0JyB3aXRoIG5vIGNvbXBvbmVudHMgYnV0IHRoaXMgdmVyc2lv biBnYXZlIHdyb25nCishIHJlc3VsdHMuCishIENvbnRyaWJ1dGVkIGJ5IERh dmlkIEJpbmRlcm1hbiAgPGRjYjMxNEBob3RtYWlsLmNvbT4KKyEKK21vZHVs ZSB0eXBlcworICB0eXBlIHQKKyAgICAgaW50ZWdlciA6OiBpCisgICBjb250 YWlucworICAgICBmaW5hbCA6OiBmaW5hbGl6ZQorICBlbmQgdHlwZSB0Cisg IGludGVnZXIgOjogY3RyID0gMAorY29udGFpbnMKKyAgaW1wdXJlIGVsZW1l bnRhbCBzdWJyb3V0aW5lIGZpbmFsaXplKHgpCisgICAgdHlwZSh0KSwgaW50 ZW50KGlub3V0KSA6OiB4CisgICAgY3RyID0gY3RyICsgMQorICBlbmQgc3Vi cm91dGluZSBmaW5hbGl6ZQorZW5kIG1vZHVsZSB0eXBlcworCitpbXB1cmUg ZWxlbWVudGFsIGZ1bmN0aW9uIGVsZW0oeCkKKyAgdXNlIHR5cGVzCisgIHR5 cGUodCksIGludGVudChpbikgOjogeAorICB0eXBlKHQpIDo6IGVsZW0KKyAg ZWxlbSVpID0geCVpICsgMQorZW5kIGZ1bmN0aW9uIGVsZW0KKworaW1wdXJl IGVsZW1lbnRhbCBmdW5jdGlvbiBlbGVtMih4LCB5KQorICB1c2UgdHlwZXMK KyAgdHlwZSh0KSwgaW50ZW50KGluKSA6OiB4LCB5CisgIHR5cGUodCkgOjog ZWxlbTIKKyAgZWxlbTIlaSA9IHglaSArIHklaQorZW5kIGZ1bmN0aW9uIGVs ZW0yCisKK3N1YnJvdXRpbmUgdGVzdDEoeCkKKyAgdXNlIHR5cGVzCisgIGlu dGVyZmFjZQorICAgICBpbXB1cmUgZWxlbWVudGFsIGZ1bmN0aW9uIGVsZW0o eCkKKyAgICAgICB1c2UgdHlwZXMKKyAgICAgICB0eXBlKHQpLCBpbnRlbnQo aW4pIDo6IHgKKyAgICAgICB0eXBlKHQpIDo6IGVsZW0KKyAgICAgZW5kIGZ1 bmN0aW9uIGVsZW0KKyAgZW5kIGludGVyZmFjZQorICB0eXBlKHQpIDo6IHgo OikKKyAgdHlwZSh0KSwgYWxsb2NhdGFibGUgOjogeSg6KQorICB5ID0geAor ICB4ID0gZWxlbSh5KQorZW5kIHN1YnJvdXRpbmUgdGVzdDEKKworc3Vicm91 dGluZSB0ZXN0Mih4KQorICB1c2UgdHlwZXMKKyAgaW50ZXJmYWNlCisgICAg IGltcHVyZSBlbGVtZW50YWwgZnVuY3Rpb24gZWxlbSh4KQorICAgICAgIHVz ZSB0eXBlcworICAgICAgIHR5cGUodCksIGludGVudChpbikgOjogeAorICAg ICAgIHR5cGUodCkgOjogZWxlbQorICAgICBlbmQgZnVuY3Rpb24gZWxlbQor ICAgICBpbXB1cmUgZWxlbWVudGFsIGZ1bmN0aW9uIGVsZW0yKHgsIHkpCisg ICAgICAgdXNlIHR5cGVzCisgICAgICAgdHlwZSh0KSwgaW50ZW50KGluKSA6 OiB4LCB5CisgICAgICAgdHlwZSh0KSA6OiBlbGVtMgorICAgICBlbmQgZnVu Y3Rpb24gZWxlbTIKKyAgZW5kIGludGVyZmFjZQorICB0eXBlKHQpIDo6IHgo OikKKyAgdHlwZSh0KSwgYWxsb2NhdGFibGUgOjogeSg6KQorICB5ID0geAor ICB4ID0gZWxlbTIoZWxlbSh5KSwgZWxlbSh5KSkKK2VuZCBzdWJyb3V0aW5l IHRlc3QyCisKK3Byb2dyYW0gdGVzdDExMzg4NQorICB1c2UgdHlwZXMKKyAg aW50ZXJmYWNlCisgICAgc3Vicm91dGluZSB0ZXN0MSh4KQorICAgICAgdXNl IHR5cGVzCisgICAgICB0eXBlKHQpIDo6IHgoOikKKyAgICBlbmQgc3Vicm91 dGluZQorICAgIHN1YnJvdXRpbmUgdGVzdDIoeCkKKyAgICAgIHVzZSB0eXBl cworICAgICAgdHlwZSh0KSA6OiB4KDopCisgICAgZW5kIHN1YnJvdXRpbmUK KyAgZW5kIGludGVyZmFjZQorICB0eXBlKHQpIDo6IHgoMikgPSBbdCgxKSx0 KDIpXQorICBjYWxsIHRlc3QxICh4KQorICBpZiAoYW55ICh4JWkgLm5lLiBb MiwzXSkpIHN0b3AgMQorICBpZiAoY3RyIC5uZS4gNikgc3RvcCAyCisgIGNh bGwgdGVzdDIgKHgpCisgIGlmIChhbnkgKHglaSAubmUuIFs2LDhdKSkgc3Rv cCAzCisgIGlmIChjdHIgLm5lLiAxNikgc3RvcCA0CitlbmQKZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZmluYWxpemVfNTYuZjkw IGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9maW5hbGl6ZV81Ni5mOTAK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJkMzUw YTNiYzFjCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9y dHJhbi5kZy9maW5hbGl6ZV81Ni5mOTAKQEAgLTAsMCArMSwxNjggQEAKKyEg eyBkZy1kbyBydW4gfQorISBUZXN0IHRoZSBmaXggZm9yIFBSMTEwOTg3Cish IFNlZ2ZhdWx0ZWQgaW4gcnVudGltZSwgYXMgc2hvd24gYmVsb3cuCishIENv bnRyaWJ1dGVkIGJ5IEtpcmlsbCBDaGFua2luICA8Y2hpbGlraW4ua0BnbWFp bC5jb20+CishIGFuZCBKb2huIEhhaWR1Y2VrICA8amhhaWR1Y2VAZ21haWwu Y29tPiAoY29tbWVudCA1KQorIQorTU9EVUxFIG9yaWdpbmFsX21vZAorICBJ TVBMSUNJVCBOT05FCisKKyAgVFlQRSBUMV9QT0lOVEVSCisgICAgQ0xBU1Mo VDEpLCBQT0lOVEVSIDo6IFQxCisgIEVORCBUWVBFCisKKyAgVFlQRSBUMQor ICAgIElOVEVHRVIgTl9ORVhUCisgICAgQ0xBU1MoVDFfUE9JTlRFUiksIEFM TE9DQVRBQkxFIDo6IE5FWFQoOikKKyAgQ09OVEFJTlMKKyAgICBGSU5BTCA6 OiBUMV9ERVNUUlVDVE9SCisgICAgUFJPQ0VEVVJFIDo6IFNFVF9OX05FWFQg PT4gVDFfU0VUX05fTkVYVAorICAgIFBST0NFRFVSRSA6OiBHRVRfTkVYVCA9 PiBUMV9HRVRfTkVYVAorICBFTkQgVFlQRQorCisgIElOVEVSRkFDRSBUMQor ICAgIFBST0NFRFVSRSBUMV9DT05TVFJVQ1RPUgorICBFTkQgSU5URVJGQUNF CisKKyAgVFlQRSwgRVhURU5EUyhUMSkgOjogVDIKKyAgICBSRUFMIFgKKyAg Q09OVEFJTlMKKyAgRU5EIFRZUEUKKworICBJTlRFUkZBQ0UgVDIKKyAgICBQ Uk9DRURVUkUgVDJfQ09OU1RSVUNUT1IKKyAgRU5EIElOVEVSRkFDRQorCisg IFRZUEUsIEVYVEVORFMoVDEpIDo6IFQzCisgIENPTlRBSU5TCisgICAgRklO QUwgOjogVDNfREVTVFJVQ1RPUgorICBFTkQgVFlQRQorCisgIElOVEVSRkFD RSBUMworICAgIFBST0NFRFVSRSBUM19DT05TVFJVQ1RPUgorICBFTkQgSU5U RVJGQUNFCisKKyAgSU5URUdFUiA6OiBDT1VOVFMgPSAwCisKK0NPTlRBSU5T CisKKyAgVFlQRShUMSkgRlVOQ1RJT04gVDFfQ09OU1RSVUNUT1IoKSBSRVNV TFQoTCkKKyAgICBJTVBMSUNJVCBOT05FCisgICAgTCVOX05FWFQgPSAwCisg IEVORCBGVU5DVElPTgorCisgIFNVQlJPVVRJTkUgVDFfREVTVFJVQ1RPUihT RUxGKQorICAgIElNUExJQ0lUIE5PTkUKKyAgICBUWVBFKFQxKSwgSU5URU5U KElOT1VUKSA6OiBTRUxGCisgICAgSUYgKEFMTE9DQVRFRChTRUxGJU5FWFQp KSBUSEVOCisgICAgICBERUFMTE9DQVRFKFNFTEYlTkVYVCkKKyAgICBFTkRJ RgorICBFTkQgU1VCUk9VVElORQorCisgIFNVQlJPVVRJTkUgVDNfREVTVFJV Q1RPUihTRUxGKQorICAgIElNUExJQ0lUIE5PTkUKKyAgICBUWVBFKFQzKSwg SU5URU5UKElOKSA6OiBTRUxGCisgICAgaWYgKC5OT1QuQUxMT0NBVEVEIChT RUxGJU5FWFQpKSBDT1VOVFMgPSBDT1VOVFMgKyAxCisgIEVORCBTVUJST1VU SU5FCisKKyAgU1VCUk9VVElORSBUMV9TRVRfTl9ORVhUKFNFTEYsIE5fTkVY VCkKKyAgICBJTVBMSUNJVCBOT05FCisgICAgQ0xBU1MoVDEpLCBJTlRFTlQo SU5PVVQpIDo6IFNFTEYKKyAgICBJTlRFR0VSLCBJTlRFTlQoSU4pIDo6IE5f TkVYVAorICAgIElOVEVHRVIgSQorICAgIFNFTEYlTl9ORVhUID0gTl9ORVhU CisgICAgQUxMT0NBVEUoU0VMRiVORVhUKE5fTkVYVCkpCisgICAgRE8gSSA9 IDEsIE5fTkVYVAorICAgICAgTlVMTElGWShTRUxGJU5FWFQoSSklVDEpCisg ICAgRU5ERE8KKyAgRU5EIFNVQlJPVVRJTkUKKworICBGVU5DVElPTiBUMV9H RVRfTkVYVChTRUxGKSBSRVNVTFQoTkVYVCkKKyAgICBJTVBMSUNJVCBOT05F CisgICAgQ0xBU1MoVDEpLCBUQVJHRVQsIElOVEVOVChJTikgOjogU0VMRgor ICAgIENMQVNTKFQxKSwgUE9JTlRFUiA6OiBORVhUCisgICAgQ0xBU1MoVDEp LCBQT0lOVEVSIDo6IEwKKyAgICBJTlRFR0VSIEkKKyAgICBJRiAoU0VMRiVO X05FWFQgLkdFLiAxKSBUSEVOCisgICAgICBORVhUID0+IFNFTEYlTkVYVCgx KSVUMQorICAgICAgUkVUVVJOCisgICAgRU5ESUYKKyAgICBOVUxMSUZZKE5F WFQpCisgIEVORCBGVU5DVElPTgorCisgIFRZUEUoVDIpIEZVTkNUSU9OIFQy X0NPTlNUUlVDVE9SKCkgUkVTVUxUKEwpCisgICAgSU1QTElDSVQgTk9ORQor ICAgIEwlVDEgPSBUMSgpCisgICAgQ0FMTCBMJVQxJVNFVF9OX05FWFQoMSkK KyAgRU5EIEZVTkNUSU9OCisKKyAgVFlQRShUMykgRlVOQ1RJT04gVDNfQ09O U1RSVUNUT1IoKSBSRVNVTFQoTCkKKyAgICBJTVBMSUNJVCBOT05FCisgICAg TCVUMSA9IFQxKCkKKyAgRU5EIEZVTkNUSU9OCisKK0VORCBNT0RVTEUgb3Jp Z2luYWxfbW9kCisKK21vZHVsZSBjb21tZW50NV9tb2QKKyAgdHlwZTo6cGFy ZW50CisgICAgIGNoYXJhY3Rlcig6KSwgYWxsb2NhdGFibGU6Om5hbWUKKyAg ZW5kIHR5cGUgcGFyZW50CisgIHR5cGUsIGV4dGVuZHMocGFyZW50KTo6Y2hp bGQKKyAgIGNvbnRhaW5zCisgICAgIGZpbmFsOjpjaGlsZF9maW5hbGl6ZQor ICBlbmQgdHlwZSBjaGlsZAorICBpbnRlcmZhY2UgY2hpbGQKKyAgICAgbW9k dWxlIHByb2NlZHVyZSBuZXdfY2hpbGQKKyAgZW5kIGludGVyZmFjZSBjaGls ZAorICBpbnRlZ2VyIDo6IGNvdW50cyA9IDAKKworY29udGFpbnMKKworICB0 eXBlKGNoaWxkKSBmdW5jdGlvbiBuZXdfY2hpbGQobmFtZSkKKyAgICBjaGFy YWN0ZXIoKik6Om5hbWUKKyAgICBuZXdfY2hpbGQlbmFtZT1uYW1lCisgIGVu ZCBmdW5jdGlvbiBuZXdfY2hpbGQKKworICBzdWJyb3V0aW5lIGNoaWxkX2Zp bmFsaXplKHRoaXMpCisgICAgdHlwZShjaGlsZCksIGludGVudChpbik6OnRo aXMKKyAgICBjb3VudHMgPSBjb3VudHMgKyAxCisgIGVuZCBzdWJyb3V0aW5l IGNoaWxkX2ZpbmFsaXplCitlbmQgbW9kdWxlIGNvbW1lbnQ1X21vZAorCitQ Uk9HUkFNIFRFU1RfUFJPR1JBTQorICBjYWxsIG9yaWdpbmFsCisgIGNhbGwg Y29tbWVudDUKK2NvbnRhaW5zCisgIHN1YnJvdXRpbmUgb3JpZ2luYWwKKyAg ICBVU0Ugb3JpZ2luYWxfbW9kCisgICAgSU1QTElDSVQgTk9ORQorICAgIFRZ UEUoVDEpLCBUQVJHRVQgOjogWDEKKyAgICBUWVBFKFQyKSwgVEFSR0VUIDo6 IFgyCisgICAgVFlQRShUMyksIFRBUkdFVCA6OiBYMworICAgIENMQVNTKFQx KSwgUE9JTlRFUiA6OiBMCisgICAgWDEgPSBUMSgpCisgICAgWDIgPSBUMigp CisgICAgWDIlTkVYVCgxKSVUMSA9PiBYMQorICAgIFgzID0gVDMoKQorICAg IENBTEwgWDMlU0VUX05fTkVYVCgxKQorICAgIFgzJU5FWFQoMSklVDEgPT4g WDIKKyAgICBMID0+IFgzCisgICAgRE8gV0hJTEUgKC5UUlVFLikKKyAgICAg IEwgPT4gTCVHRVRfTkVYVCgpICAgICAgICAgICAgICAgICAhIFVzZWQgdG8g c2VnZmF1bHQgaGVyZSBpbiBydW50aW1lCisgICAgICBJRiAoLk5PVC4gQVNT T0NJQVRFRChMKSkgRVhJVAorICAgICAgQ09VTlRTID0gQ09VTlRTICsgMQor ICAgIEVORERPCishIFR3byBmb3IgVDMgZmluYWxpemF0aW9uIGFuZCB0d28g Zm9yIGFzc29jaWF0ZWQgJ0wncworICAgIElGIChDT1VOVFMgLk5FLiA0KSBT VE9QIDEKKyAgZW5kIHN1YnJvdXRpbmUgb3JpZ2luYWwKKworICBzdWJyb3V0 aW5lIGNvbW1lbnQ1CisgICAgdXNlIGNvbW1lbnQ1X21vZCwgb25seTogY2hp bGQsIGNvdW50cworICAgIGltcGxpY2l0IG5vbmUKKyAgICB0eXBlKGNoaWxk KTo6a2lkCisgICAga2lkID0gY2hpbGQoIk5hbWUiKQorICAgIGlmICgubm90 LmFsbG9jYXRlZCAoa2lkJW5hbWUpKSBzdG9wIDIKKyAgICBpZiAoa2lkJW5h bWUgLm5lLiAiTmFtZSIpIHN0b3AgMworICAgIGlmIChjb3VudHMgLm5lLiAy KSBzdG9wIDQKKyAgZW5kIHN1YnJvdXRpbmUgY29tbWVudDUKK0VORCBQUk9H UkFNCg== --000000000000e7bf560614ba54ba--