From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id B6BD2385842B; Wed, 27 Apr 2022 17:54:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B6BD2385842B Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.90,293,1643702400"; d="diff'?scan'208";a="77634205" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa1.mentor.iphmx.com with ESMTP; 27 Apr 2022 09:54:18 -0800 IronPort-SDR: WbM1gwsvVPbNppex0C74WHD1u+oH/WpqZHlr1vjKv30GBfxhjIbDJjf6pZfpoOGEKuSoaoX3a1 GbSQvQBsdNXhyKnLIVG6xjgRF9Cyz3Lb3eEq91DXtBHQGOabJCQMEd6D3MJo1seZNVe6Tkwdbc SjecjapcTCLg4+Kk/wL20uTsWaVRUbPqAW89xAssQgQkq16T7smv1J+TbWE+zuPDNTOO1mjzgE ElZg0SZi/0TiF6zeZQftusRm0hZjPAPm78M4fWf3+sPFCBQuw6OA7YCD/TVXjO6GfvUX4Tcvi8 tOA= Content-Type: multipart/mixed; boundary="------------iXJIl06DaF2qU5jWE8tn2RIu" Message-ID: <204e23b8-9d98-8ebf-d672-444ad371ed47@codesourcery.com> Date: Wed, 27 Apr 2022 19:54:13 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.1 Subject: Re: [OG11-committed][stage1-patch] Fortran: Fix finalization resolution with deep copy (was: [Patch][Stage 1] Fortran/OpenMP: Support mapping of DT with allocatable components) Content-Language: en-US From: Tobias Burnus To: gcc-patches , fortran , Jakub Jelinek References: In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-09.mgc.mentorg.com (139.181.222.9) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, KAM_SHORT, NICE_REPLY_A, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: fortran@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Fortran mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Apr 2022 17:54:22 -0000 --------------iXJIl06DaF2qU5jWE8tn2RIu Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable More testing found more issues. Instead of adding more band aid to the pre-existing band aid, which was extended before, let's try a different approach: Just ensure that all component types are resolved (which includes finalizers) before continuing with the derived type. This also resolves the finalizers (but also derived-type procedures) before using it in the _callback vtable entry (with the deep mapping patch) =E2=80=93 or in genera= l: before creating the vtable. Committed to OG11 =E2=80=93 and stashed for mainline. See attachment. Tobias PS: With the deep-mapping patch, the vtable of allocatable DT components is required. Thus, the _callback code generation tries to get the associated vtable. That in turned triggered the generation of the DT-component's vtable, which did fail with an assert, unless it either does not have finalizers or the type has been resolved before. On 25.04.22 15:47, Tobias Burnus wrote: > Found another issue =E2=80=93 applied to OG11 as attached. Will include i= t in > the mainline patch once Stage1. > > (However, I intent to split the original patch (+ follow ups) into > smaller pieces for mainline incorporation.) > > Tobias > > On 02.03.22 23:20, Tobias Burnus wrote: >> Some testing found an issue in class.cc (in the new _callback >> function) =E2=80=93 updated patch attached (long version + interdiff). >> >> Tobias >> >> (PS: OG11 - original patch was committed as >> https://gcc.gnu.org/g:98961d3a0ccb02d7d54d2d4dd07cca75473d685a ; >> follow-up version to be committed in a moment) >> >> On 01.03.22 16:34, Tobias Burnus wrote: >>> Hi all, >>> >>> this patch adds support for mapping something like >>> type t >>> type(t2), allocatable :: a, b(:) >>> integer, allocatable :: c, c(:) >>> end type t >>> type(t), allocatable :: var, var2(:,:) >>> >>> !$omp target enter data map(var, var) >>> >>> which does a deep walk of the components at runtime. >>> >>> On the ME side, the static addr/size/kinds arrays are >>> replaced (only if need) by allocatable arrays =E2=80=93 which >>> are then filled by trans-openmp.c. >>> >>> All deep-mapping handling happens via the hooks called >>> late in omp-low.c such that removing mappings or implicitly >>> added one are handled. >>> >>> In principle, there is also code to handle polymorphic >>> variables (new callback function in vtable + two on-the-fly >>> generated functions to be used for walking the vtable). >>> >>> Issues: None known, but I am sure with experimenting, >>> more can be found - especially with arrays/array sections >>> and polymorphism, I expect issues. I did find some on the >>> way and fixed them - but (see PR refs in testcase -7.f90), >>> I also found unrelated bugs, which I did not fix ;-) >>> >>> Comments? OK for mainline (GCC 13)? >>> >>> Tobias >>> >>> PS: I will commit this patch to OG11 for further testing. >>> PPS: Previously discussed at >>> https://gcc.gnu.org/pipermail/gcc-patches/2021-December/586237.html ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------iXJIl06DaF2qU5jWE8tn2RIu Content-Type: text/x-patch; charset="UTF-8"; name="deepmap-map-v18_finalfix-fix.diff" Content-Disposition: attachment; filename="deepmap-map-v18_finalfix-fix.diff" Content-Transfer-Encoding: base64 Y29tbWl0IDQ5MmVhMzU2Y2U0YjllNDBjNDE3YjM3NDBjYzI5OGQ2Y2M3OGU4NzAKQXV0aG9y OiBUb2JpYXMgQnVybnVzIDx0b2JpYXNAY29kZXNvdXJjZXJ5LmNvbT4KRGF0ZTogICBXZWQg QXByIDI3IDE5OjQ0OjUyIDIwMjIgKzAyMDAKCiAgICBGb3J0cmFuOiBGaXggZmluYWxpemF0 aW9uIHJlc29sdXRpb24gd2l0aCBkZWVwIGNvcHkgKGNvbnQpCiAgICAKICAgIGdjYy9mb3J0 cmFuL0NoYW5nZUxvZzoKICAgIAogICAgICAgICAgICAqIHJlc29sdmUuYyAoZ2ZjX3Jlc29s dmVfZmluYWxpemVycyk6IFJlbW92ZQogICAgICAgICAgICBnZmNfcmVzb2x2ZV9maW5hbGl6 ZXJzIGNhbGxzLCB1c2UgZ2ZjX2lzX2ZpbmFsaXphYmxlLgogICAgICAgICAgICAocmVzb2x2 ZV9mbF9kZXJpdmVkKTogUmVzb2x2ZSBkZXJpdmVkLXR5cGUgY29tcG9uZW50cwogICAgICAg ICAgICBmaXJzdC4KICAgIAogICAgZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CiAgICAKICAg ICAgICAgICAgKiBnZm9ydHJhbi5kZy9hYnN0cmFjdF90eXBlXzYuZjAzOiBSZW1vdmUgZGct ZXJyb3IgYXMKICAgICAgICAgICAgbm93IGhpZGRlbiBieSBvdGhlciBlcnJvcnM7IGNvcHkg dG8gLi4uCiAgICAgICAgICAgICogZ2ZvcnRyYW4uZGcvYWJzdHJhY3RfdHlwZV82YS5mMDM6 IC4uLiBoZXJlOyByZW1vdmUKICAgICAgICAgICAgc29tZSBlcnJvciB0byBkaWFnbm9zZSB0 aGUgZXJyb3IuCiAgICAgICAgICAgICogZ2ZvcnRyYW4uZGcvZmluYWxpemVfMzkuZjkwOiBO ZXcgdGVzdC4KLS0tCiBnY2MvZm9ydHJhbi9yZXNvbHZlLmMgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDI5ICsrKystLS0KIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvYWJzdHJh Y3RfdHlwZV82LmYwMyAgfCAgIDMgKy0KIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvYWJz dHJhY3RfdHlwZV82YS5mMDMgfCAgNDYgKysrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9nZm9y dHJhbi5kZy9maW5hbGl6ZV8zOS5mOTAgICAgICB8IDExMiArKysrKysrKysrKysrKysrKysr KysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDE3NyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9yZXNvbHZlLmMgYi9nY2MvZm9ydHJh bi9yZXNvbHZlLmMKaW5kZXggMTBjODlkZTBlYWEuLjg0YTUzOGVlNWJjIDEwMDY0NAotLS0g YS9nY2MvZm9ydHJhbi9yZXNvbHZlLmMKKysrIGIvZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jCkBA IC0xMzU4MiwxOCArMTM1ODIsMTAgQEAgZ2ZjX3Jlc29sdmVfZmluYWxpemVycyAoZ2ZjX3N5 bWJvbCogZGVyaXZlZCwgYm9vbCAqZmluYWxpemFibGUpCiAgICAgIGhhbmRsZSBhbGxvY2F0 YWJsZXMgYnV0IGF2b2lkIGlzc3VlcyB3aXRoIChpbilkaXJlY3QgYWxsb2NhdGFibGUgdHlw ZXMuICovCiAgIGJvb2wgaGFzX2ZpbmFsID0gZGVyaXZlZC0+ZjJrX2Rlcml2ZWQgJiYgZGVy aXZlZC0+ZjJrX2Rlcml2ZWQtPmZpbmFsaXplcnM7CiAgIGZvciAoYyA9IGRlcml2ZWQtPmNv bXBvbmVudHM7IGM7IGMgPSBjLT5uZXh0KQotICAgIGlmIChjLT50cy50eXBlID09IEJUX0RF UklWRUQgJiYgIWMtPmF0dHIucG9pbnRlciAmJiAhYy0+YXR0ci5wcm9jX3BvaW50ZXIKLQkm JiAoIWMtPmF0dHIuYWxsb2NhdGFibGUKLQkgICAgfHwgKGMtPnRzLnUuZGVyaXZlZCAhPSBk ZXJpdmVkCi0JCSYmIGMtPnRzLnUuZGVyaXZlZC0+ZjJrX2Rlcml2ZWQKLQkJJiYgYy0+dHMu dS5kZXJpdmVkLT5mMmtfZGVyaXZlZC0+ZmluYWxpemVycwotCQkmJiAhYy0+dHMudS5kZXJp dmVkLT5mMmtfZGVyaXZlZC0+ZmluYWxpemVycy0+cHJvY190cmVlKSkpCi0gICAgICB7Ci0J Ym9vbCBoYXNfZmluYWwyID0gZmFsc2U7Ci0JaWYgKCFnZmNfcmVzb2x2ZV9maW5hbGl6ZXJz IChjLT50cy51LmRlcml2ZWQsICZoYXNfZmluYWwyKSkKLQkgIHJldHVybiBmYWxzZTsgIC8q IEVycm9yLiAgKi8KLQloYXNfZmluYWwgPSBoYXNfZmluYWwgfHwgaGFzX2ZpbmFsMjsKLSAg ICAgIH0KKyAgICBpZiAoYy0+dHMudHlwZSA9PSBCVF9ERVJJVkVECisJJiYgIWMtPmF0dHIu cG9pbnRlciAmJiAhYy0+YXR0ci5wcm9jX3BvaW50ZXIgJiYgIWMtPmF0dHIuYWxsb2NhdGFi bGUpCisgICAgICBoYXNfZmluYWwgfD0gZ2ZjX2lzX2ZpbmFsaXphYmxlIChjLT50cy51LmRl cml2ZWQsIE5VTEwpOworCiAgIC8qIFJldHVybiBlYXJseSBpZiBub3QgZmluYWxpemFibGUu ICAqLwogICBpZiAoIWhhc19maW5hbCkKICAgICB7CkBAIC0xNTEwNyw2ICsxNTA5OSwxOSBA QCByZXNvbHZlX2ZsX2Rlcml2ZWQgKGdmY19zeW1ib2wgKnN5bSkKICAgICAgIHJldHVybiBm YWxzZTsKICAgICB9CiAKKyAgZ2ZjX2NvbXBvbmVudCAqYyA9IChzeW0tPmF0dHIuaXNfY2xh c3MKKwkJICAgICAgPyBDTEFTU19EQVRBIChzeW0tPmNvbXBvbmVudHMpIDogc3ltLT5jb21w b25lbnRzKTsKKyAgZm9yICggOyBjOyBjID0gYy0+bmV4dCkKKyAgICBpZiAoKGMtPnRzLnR5 cGUgPT0gQlRfREVSSVZFRCB8fCBjLT50cy50eXBlID09IEJUX0NMQVNTKQorCSYmICFjLT50 cy51LmRlcml2ZWQtPnJlc29sdmVfc3ltYm9sX2NhbGxlZCkKKyAgICAgIHsKKwlpZiAoYy0+ dHMudS5kZXJpdmVkLT5jb21wb25lbnRzID09IE5VTEwKKwkgICAgJiYgIWMtPnRzLnUuZGVy aXZlZC0+YXR0ci56ZXJvX2NvbXAKKwkgICAgJiYgIWMtPnRzLnUuZGVyaXZlZC0+YXR0ci51 c2VfYXNzb2MpCisJICBjb250aW51ZTsKKwlyZXNvbHZlX3N5bWJvbCAoYy0+dHMudS5kZXJp dmVkKTsKKyAgICAgIH0KKwogICAvKiBSZXNvbHZlIHRoZSBmaW5hbGl6ZXIgcHJvY2VkdXJl cy4gICovCiAgIGlmICghZ2ZjX3Jlc29sdmVfZmluYWxpemVycyAoc3ltLCBOVUxMKSkKICAg ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRn L2Fic3RyYWN0X3R5cGVfNi5mMDMgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2Fic3Ry YWN0X3R5cGVfNi5mMDMKaW5kZXggZWJlZjAyZWQ4MmEuLjk4YjcwYTgzZDQzIDEwMDY0NAot LS0gYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2Fic3RyYWN0X3R5cGVfNi5mMDMKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9hYnN0cmFjdF90eXBlXzYuZjAzCkBAIC0z MSw3ICszMSw4IEBAIFRZUEUsIEVYVEVORFMobWlkZGxlKSA6OiBib3R0b20KIENPTlRBSU5T CiAgICAhIHVzZWZ1bCBwcm9jIHRvIHNhdGlzZnkgZGVmZXJyZWQgcHJvY2VkdXJlIGluIHRv cC4gQmVjYXVzZSB3ZSd2ZQogICAgISBleHRlbmRlZCBtaWRkbGUgd2Ugd291bGRuJ3QgZ2V0 IHRvbGQgb2ZmIGlmIHdlIGZvcmdvdCB0aGlzLgotICAgUFJPQ0VEVVJFIDo6IHByb2NfYSA9 PiBib3R0b21fYSAgISB7IGRnLWVycm9yICJtdXN0IGJlIGEgbW9kdWxlIHByb2NlZHVyZSIg fQorICAgUFJPQ0VEVVJFIDo6IHByb2NfYSA9PiBib3R0b21fYSAgISBJbnZhbGlkLCBidXQg bm90IGRpYWdub3N0ZWQgZHVlIHRvIG90aGVyIGVycm9ycworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgISAtPiBhYnN0cmFjdF90eXBlXzZhLmYwMwogICAgISBjYWxs cyBtaWRkbGUlcHJvY19iIGFuZCB0aGVuIHByb3ZpZGVzIGV4dHJhIGJlaGF2aW9yCiAgICBQ Uk9DRURVUkUgOjogcHJvY19iID0+IGJvdHRvbV9iCiAgICAhIGNhbGxzIHRvcF9jIGFuZCB0 aGVuIHByb3ZpZGVzIGV4dHJhIGJlaGF2aW9yCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2dmb3J0cmFuLmRnL2Fic3RyYWN0X3R5cGVfNmEuZjAzIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9y dHJhbi5kZy9hYnN0cmFjdF90eXBlXzZhLmYwMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uYjA1ZTIyZDc3ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL2Fic3RyYWN0X3R5cGVfNmEuZjAzCkBAIC0wLDAgKzEsNDYg QEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgVGVzdCB0aGUgZml4IGZvciBQUjQzMjY2LCBp biB3aGljaCBhbiBJQ0UgZm9sbG93ZWQgY29ycmVjdCBlcnJvciBtZXNzYWdlcy4KKyEKKyEg U3BsaXQgb2ZmIGZyb20gYWJzdHJhY3RfdHlwZV82LmYwMyBhcyB0aGlzIGRnLWVycm9yIHdh c24ndCBkaWFnb3NlZCBkdWUgdG8KKyEgZGlhZ25vc2luZyB0aGUgb3RoZXIgaXNzdWVzIGZp cnN0LgorIQorISBDb250cmlidXRlZCBieSBUb2JpYXMgQnVybnVzIDxidXJudXNAZ2NjLmdu dS5vcmc+CishIFJlcG9ydGVkIGluIGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNhL2dyb3VwL2Nv bXAubGFuZy5mb3J0cmFuL2Jyb3dzZV90aHJlYWQvdGhyZWFkL2Y1ZWM5OTA4OWVhNzJiNzkK KyEKKyEtLS0tLS0tLS0tLS0tLS0tCishIGxpYnJhcnkgY29kZQorCittb2R1bGUgbQorVFlQ RSwgQUJTVFJBQ1QgOjogdG9wCitDT05UQUlOUworRU5EIFRZUEUgdG9wCisKKyEgQ29uY3Jl dGUgbWlkZGxlIGNsYXNzIHdpdGggdXNlZnVsIGJlaGF2aW9yCitUWVBFLCBFWFRFTkRTKHRv cCkgOjogbWlkZGxlCitDT05UQUlOUworRU5EIFRZUEUgbWlkZGxlCisKKyEtLS0tLS0tLS0t LS0tLS0tCishIGNsaWVudCBjb2RlCisKK1RZUEUsIEVYVEVORFMobWlkZGxlKSA6OiBib3R0 b20KK0NPTlRBSU5TCisgICAhIHVzZWZ1bCBwcm9jIHRvIHNhdGlzZnkgZGVmZXJyZWQgcHJv Y2VkdXJlIGluIHRvcC4gQmVjYXVzZSB3ZSd2ZQorICAgISBleHRlbmRlZCBtaWRkbGUgd2Ug d291bGRuJ3QgZ2V0IHRvbGQgb2ZmIGlmIHdlIGZvcmdvdCB0aGlzLgorICAgUFJPQ0VEVVJF IDo6IHByb2NfYSA9PiBib3R0b21fYSAgISB7IGRnLWVycm9yICJtdXN0IGJlIGEgbW9kdWxl IHByb2NlZHVyZSIgfQorICAgISBjYWxscyBtaWRkbGUlcHJvY19iIGFuZCB0aGVuIHByb3Zp ZGVzIGV4dHJhIGJlaGF2aW9yCisgICBQUk9DRURVUkUgOjogcHJvY19iID0+IGJvdHRvbV9i CisgICAhIGNhbGxzIHRvcF9jIGFuZCB0aGVuIHByb3ZpZGVzIGV4dHJhIGJlaGF2aW9yCisg ICBQUk9DRURVUkUgOjogcHJvY19jID0+IGJvdHRvbV9jCitFTkQgVFlQRSBib3R0b20KK2Nv bnRhaW5zCitTVUJST1VUSU5FIGJvdHRvbV9iKG9iaikKKyAgIENMQVNTKEJvdHRvbSkgOjog b2JqCisgICAhIG90aGVyIHN0dWZmCitFTkQgU1VCUk9VVElORSBib3R0b21fYgorCitTVUJS T1VUSU5FIGJvdHRvbV9jKG9iaikKKyAgIENMQVNTKEJvdHRvbSkgOjogb2JqCisgICAhIG90 aGVyIHN0dWZmCitFTkQgU1VCUk9VVElORSBib3R0b21fYyAKK2VuZCBtb2R1bGUKZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZmluYWxpemVfMzkuZjkwIGIvZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9maW5hbGl6ZV8zOS5mOTAKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY2YzkwYjE4ZDk5Ci0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9maW5hbGl6ZV8zOS5mOTAKQEAgLTAsMCAr MSwxMTIgQEAKK21vZHVsZSBtCisgIGltcGxpY2l0IG5vbmUKKyAgcHJpdmF0ZQorICAKKyAg dHlwZSwgcHVibGljIDo6IE15Rm9ybQorICAgIGludGVnZXIgOjogblZhbHVlcyA9IDAsIG5W YWx1ZXNVbnBhY2tlZCA9IDAsIG5WYXJpYWJsZXMgPSAwCisgICAgaW50ZWdlciwgZGltZW5z aW9uICggOiApLCBhbGxvY2F0YWJsZSA6OiBpYVVucGFja2VkCisgICAgcmVhbCwgZGltZW5z aW9uICggOiwgOiApLCBhbGxvY2F0YWJsZSA6OiBWYWx1ZQorICBjb250YWlucworICAgIHBy b2NlZHVyZSwgcHJpdmF0ZSwgcGFzcyA6OiBJbml0aWFsaXplRW1wdHkKKyAgICBwcm9jZWR1 cmUsIHByaXZhdGUsIHBhc3MgOjogSW5pdGlhbGl6ZUNvcHkKKyAgICBnZW5lcmljIDo6IElu aXRpYWxpemUgPT4gSW5pdGlhbGl6ZUVtcHR5LCBJbml0aWFsaXplQ29weQorICAgIGZpbmFs IDo6IEZpbmFsaXplCisgIGVuZCB0eXBlIE15Rm9ybQorCisgIHR5cGUsIHB1YmxpYyA6OiBN eUVsZW1lbnRGb3JtCisgICAgY2xhc3MgKCBNeUZvcm0gKSwgYWxsb2NhdGFibGUgOjogRWxl bWVudAorICBjb250YWlucworICAgIGZpbmFsIDo6IEZpbmFsaXplRWxlbWVudAorICBlbmQg dHlwZSBNeUVsZW1lbnRGb3JtCisKK2NvbnRhaW5zCisKKyAgc3Vicm91dGluZSBJbml0aWFs aXplRW1wdHkgKCBQUywgaWFVbnBhY2tlZCwgblZhbHVlc1VucGFja2VkLCBuVmFyaWFibGVz LCBDbGVhck9wdGlvbiApCisgICAgY2xhc3MgKCBNeUZvcm0gKSwgaW50ZW50ICggaW5vdXQg KSA6OiBQUworICAgIGludGVnZXIsIGRpbWVuc2lvbiAoIDogKSwgaW50ZW50ICggaW4gKSA6 OiBpYVVucGFja2VkCisgICAgaW50ZWdlciwgaW50ZW50ICggaW4gKSA6OiBuVmFsdWVzVW5w YWNrZWQsIG5WYXJpYWJsZXMKKyAgICBsb2dpY2FsLCBpbnRlbnQgKCBpbiApLCBvcHRpb25h bCA6OiBDbGVhck9wdGlvbgorCisgICAgbG9naWNhbCA6OiBDbGVhclJlcXVlc3RlZAorCisg ICAgQ2xlYXJSZXF1ZXN0ZWQgPSAuZmFsc2UuCisgICAgaWYgKCBwcmVzZW50ICggQ2xlYXJP cHRpb24gKSApICYKKyAgICAgIENsZWFyUmVxdWVzdGVkID0gQ2xlYXJPcHRpb24KKworICAg IFBTICUgblZhcmlhYmxlcyA9IG5WYXJpYWJsZXMKKyAgICBQUyAlIG5WYWx1ZXMgPSBzaXpl ICggaWFVbnBhY2tlZCApCisgICAgUFMgJSBuVmFsdWVzVW5wYWNrZWQgPSBuVmFsdWVzVW5w YWNrZWQKKworICAgIGFsbG9jYXRlICggUFMgJSBpYVVucGFja2VkICggUFMgJSBuVmFsdWVz ICkgKQorICAgIGFsbG9jYXRlICggUFMgJSBWYWx1ZSAoIFBTICUgblZhbHVlcywgUFMgJSBu VmFyaWFibGVzICkgKQorICAgIGlmICggQ2xlYXJSZXF1ZXN0ZWQgKSAmCisgICAgICBjYWxs IENsZWFyICggUFMgJSBWYWx1ZSApCisgIGVuZCBzdWJyb3V0aW5lIEluaXRpYWxpemVFbXB0 eQorCisgIHN1YnJvdXRpbmUgSW5pdGlhbGl6ZUNvcHkgKCBQUywgUFNfU291cmNlICkKKyAg ICBjbGFzcyAoIE15Rm9ybSApLCBpbnRlbnQgKCBpbm91dCApIDo6IFBTCisgICAgY2xhc3Mg KCBNeUZvcm0gKSwgaW50ZW50ICggaW4gKSA6OiBQU19Tb3VyY2UKKworICAgIFBTICUgblZh cmlhYmxlcyA9IFBTX1NvdXJjZSAlIG5WYXJpYWJsZXMKKyAgICBQUyAlIG5WYWx1ZXMgPSBQ U19Tb3VyY2UgJSBuVmFsdWVzCisgICAgUFMgJSBuVmFsdWVzVW5wYWNrZWQgPSBQU19Tb3Vy Y2UgJSBuVmFsdWVzVW5wYWNrZWQKKworICAgIGFsbG9jYXRlICggUFMgJSBpYVVucGFja2Vk ICggUFMgJSBuVmFsdWVzICkgKQorICAgIGFsbG9jYXRlICggUFMgJSBWYWx1ZSAoIFBTICUg blZhbHVlcywgUFMgJSBuVmFyaWFibGVzICkgKQorICBlbmQgc3Vicm91dGluZSBJbml0aWFs aXplQ29weQorCisgIGVsZW1lbnRhbCBzdWJyb3V0aW5lIEZpbmFsaXplICggUFMgKQorICAg IHR5cGUgKCBNeUZvcm0gKSwgaW50ZW50ICggaW5vdXQgKSA6OiBQUworCisgICAgaWYgKCBh bGxvY2F0ZWQgKCBQUyAlIFZhbHVlICkgKSAmCisgICAgICBkZWFsbG9jYXRlICggUFMgJSBW YWx1ZSApCisgICAgaWYgKCBhbGxvY2F0ZWQgKCBQUyAlIGlhVW5wYWNrZWQgKSApICYKKyAg ICAgIGRlYWxsb2NhdGUgKCBQUyAlIGlhVW5wYWNrZWQgKQorICBlbmQgc3Vicm91dGluZSBG aW5hbGl6ZQorCisgIHN1YnJvdXRpbmUgTG9hZFZhcmlhYmxlICggUGFja2VkVmFsdWUsIFVu cGFja2VkVmFsdWUsIGlhVW5wYWNrZWQsIG5WYWx1ZXMgKQorICAgIHJlYWwsIGRpbWVuc2lv biAoIDogKSwgaW50ZW50ICggaW5vdXQgKSA6OiBQYWNrZWRWYWx1ZQorICAgIHJlYWwsIGRp bWVuc2lvbiAoIDogKSwgaW50ZW50ICggaW4gKSA6OiBVbnBhY2tlZFZhbHVlCisgICAgaW50 ZWdlciwgZGltZW5zaW9uICggOiApLCBpbnRlbnQgKCBpbiApIDo6IGlhVW5wYWNrZWQKKyAg ICBpbnRlZ2VyLCBpbnRlbnQgKCBpbiApIDo6IG5WYWx1ZXMKKworICAgIGludGVnZXIgOjog aVYKKworICAgIGRvIGlWID0gMSwgblZhbHVlcworICAgICAgUGFja2VkVmFsdWUgKCBpViAp ID0gVW5wYWNrZWRWYWx1ZSAoIGlhVW5wYWNrZWQgKCBpViApICkKKyAgICBlbmQgZG8KKyAg ZW5kIHN1YnJvdXRpbmUgTG9hZFZhcmlhYmxlCisKKyAgc3Vicm91dGluZSBBZGRWYXJpYWJs ZSAoIFBhY2tlZFZhbHVlLCBVbnBhY2tlZFZhbHVlLCBpYVVucGFja2VkLCBuVmFsdWVzICkK KyAgICByZWFsLCBkaW1lbnNpb24gKCA6ICksIGludGVudCAoIGlub3V0ICkgOjogUGFja2Vk VmFsdWUKKyAgICByZWFsLCBkaW1lbnNpb24gKCA6ICksIGludGVudCAoIGluICkgOjogVW5w YWNrZWRWYWx1ZQorICAgIGludGVnZXIsIGRpbWVuc2lvbiAoIDogKSwgaW50ZW50ICggaW4g KSA6OiBpYVVucGFja2VkCisgICAgaW50ZWdlciwgaW50ZW50ICggaW4gKSA6OiBuVmFsdWVz CisKKyAgICBpbnRlZ2VyIDo6IGlWCisKKyAgICBkbyBpViA9IDEsIG5WYWx1ZXMKKyAgICAg IFBhY2tlZFZhbHVlICggaVYgKSA9IFBhY2tlZFZhbHVlICggaVYgKSArIFVucGFja2VkVmFs dWUgKCBpYVVucGFja2VkICggaVYgKSApCisgICAgZW5kIGRvCisgIGVuZCBzdWJyb3V0aW5l IEFkZFZhcmlhYmxlCisKKyAgc3Vicm91dGluZSBTdG9yZVZhcmlhYmxlICggVW5wYWNrZWRW YWx1ZSwgUGFja2VkVmFsdWUsIGlhVW5wYWNrZWQsIG5WYWx1ZXMgKQorICAgIHJlYWwsIGRp bWVuc2lvbiAoIDogKSwgaW50ZW50ICggaW5vdXQgKSA6OiBVbnBhY2tlZFZhbHVlCisgICAg cmVhbCwgZGltZW5zaW9uICggOiApLCBpbnRlbnQgKCBpbiApIDo6IFBhY2tlZFZhbHVlCisg ICAgaW50ZWdlciwgZGltZW5zaW9uICggOiApLCBpbnRlbnQgKCBpbiApIDo6IGlhVW5wYWNr ZWQKKyAgICBpbnRlZ2VyLCBpbnRlbnQgKCBpbiApIDo6IG5WYWx1ZXMKKyAgICAKKyAgICBp bnRlZ2VyIDo6IGlWCisgICAgCisgICAgZG8gaVYgPSAxLCBuVmFsdWVzCisgICAgICBVbnBh Y2tlZFZhbHVlICggaWFVbnBhY2tlZCAoIGlWICkgKSA9IFBhY2tlZFZhbHVlICggaVYgKQor ICAgIGVuZCBkbworICBlbmQgc3Vicm91dGluZSBTdG9yZVZhcmlhYmxlCisgIAorCisgIGlt cHVyZSBlbGVtZW50YWwgc3Vicm91dGluZSBGaW5hbGl6ZUVsZW1lbnQgKCBQU0UgKQorICAg IHR5cGUgKCBNeUVsZW1lbnRGb3JtICksIGludGVudCAoIGlub3V0ICkgOjogUFNFCisgICAg aWYgKCBhbGxvY2F0ZWQgKCBQU0UgJSBFbGVtZW50ICkgKSAmCisgICAgICBkZWFsbG9jYXRl ICggUFNFICUgRWxlbWVudCApCisgIGVuZCBzdWJyb3V0aW5lIEZpbmFsaXplRWxlbWVudAor ZW5kIG1vZHVsZSBtCg== --------------iXJIl06DaF2qU5jWE8tn2RIu--