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 428433858D3C; Mon, 24 Jan 2022 08:45:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 428433858D3C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com IronPort-SDR: x17vs+AN0CohJ7LZNcfHMsRAcLTIIeTV1Wo7JyPQQSd4qo7EaFF276H3ebDf7x0aVomKf40JU7 ZjRr1Sb6hwSBqInCOfUiLpPnutudBEOh9X1OG8Q6w1sLzk8O+7X864SErMqv5QLVaP4dEmduLh 3l1zZBDmEoLYDybsV6jIxvtvh/31gFHf8myk08msjruRyAQOFlQF84lrachGRCg95MHkJ1ADwx dN8mTTzc/ZLh5NWUZTT7GMGUJBsFV0lMO0mmPAFearPyHae6uVcuuX1TzfSqaMhQAZtHiFn/ue n6QWvLlitCDxfhya+3KLoKJZ X-IronPort-AV: E=Sophos;i="5.88,311,1635235200"; d="diff'?scan'208";a="73660081" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa1.mentor.iphmx.com with ESMTP; 24 Jan 2022 00:45:56 -0800 IronPort-SDR: JZltVGWt0onT6UVDF4UDejR7PoNIvx0pKCZvNfITSYYc5CNj/EgdHlSTk3y5OHznViOObSaalU uuy52Kn3ZB0aEVtX5VenSyVwDlTUyA4KUsZyQfX+5Jg3w1gr39ryWraOjGKsZOmTtO5F0n3iRS kZcauNc0IiKKCUaxPCIS4hU9+9xcXIa8/2tBEnbcSAKcTbLvyjMT2myE3vxjWK0MT7xBmSyRQ7 4vd6r+9K1EuyHymjCBgPEDyvxe/Qoqh33AAVf2vx7VbVPJ3MUQXJtghYh/EHz/N2Tvd1IDWaM4 Kig= Content-Type: multipart/mixed; boundary="------------JeyMGtY0XLZkt5n1xb7qdWsM" Message-ID: Date: Mon, 24 Jan 2022 09:45:48 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: [PATCH] [gfortran] Add support for allocate clause (OpenMP 5.0). Content-Language: en-US To: Tobias Burnus , Thomas Schwinge , Hafiz Abid Qadeer CC: Jakub Jelinek , , References: <20211022130502.2211568-1-abidh@codesourcery.com> <20211102162714.GF304296@tucnak> <20211220200650.GN2646553@tucnak> <8735lh6mcx.fsf@euler.schwinge.homeip.net> <48d8c123-fa4f-d4a3-17de-b082de32f0bf@codesourcery.com> From: Tobias Burnus In-Reply-To: <48d8c123-fa4f-d4a3-17de-b082de32f0bf@codesourcery.com> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) To svr-ies-mbx-01.mgc.mentorg.com (139.181.222.1) X-Spam-Status: No, score=-9.0 required=5.0 tests=BAYES_00, BODY_8BITS, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, NICE_REPLY_A, SCC_10_SHORT_WORD_LINES, SCC_5_SHORT_WORD_LINES, 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: Mon, 24 Jan 2022 08:45:59 -0000 --------------JeyMGtY0XLZkt5n1xb7qdWsM Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable On 21.01.22 18:43, Tobias Burnus wrote: > On 21.01.22 18:15, Thomas Schwinge wrote: >> 11 |=C2=A0=C2=A0=C2=A0=C2=A0 integer(c_int) function is_64bit_al= igned (a) bind(C) >> Warning: Variable =E2=80=98a=E2=80=99 at (1) is a dummy argument of= the BIND(C) >> procedure =E2=80=98is_64bit_aligned=E2=80=99 but may not be C interopera= ble >> [-Wc-binding-type] >> >> Is that something to worry about? I have attached a patch (not commited), which silences the three kind of warnings and fixes the interface issue. TODO: commit it. On 21.01.22 18:15, Thomas Schwinge wrote: > I'm seeing this test case randomly/non-deterministically FAIL to execute, > differently on different systems and runs, for example: [...] > I'd assume there's some concurrency issue: the problem disappears if I > manually specify a lowerish 'OMP_NUM_THREADS' If one compiles the program with -fsanitize=3Dthread, it shows tons of erro= rs :-( The first one is: WARNING: ThreadSanitizer: data race (pid=3D3034413) Read of size 8 at 0x7fff8b5a8340 by thread T1: #0 __m_MOD_foo._omp_fn.2 ../../libgomp/testsuite/libgomp.fortran/alloc= ate-1.f90:116 (a.out+0x402a88) #1 gomp_thread_start ../../../repos/gcc-trunk-commit/libgomp/team.c:12= 9 (libgomp.so.1+0x1e5ed) Previous write of size 8 at 0x7fff8b5a8340 by main thread: #0 __m_MOD_foo._omp_fn.1 ../../libgomp/testsuite/libgomp.fortran/alloc= ate-1.f90:116 (a.out+0x4029c0) #1 GOMP_teams_reg ../../../repos/gcc-trunk-commit/libgomp/teams.c:51 (= libgomp.so.1+0x3638c) #2 MAIN__ ../../libgomp/testsuite/libgomp.fortran/allocate-1.f90:328 (= a.out+0x4024c0) #3 main ../../libgomp/testsuite/libgomp.fortran/allocate-1.f90:312 (a.= out+0x4025b0) Location is stack of main thread. Location is global '' at 0x000000000000 ([stack]+0x1f340) Thread T1 (tid=3D3034416, running) created by main thread at: #0 pthread_create ../../../../repos/gcc-trunk-commit/libsanitizer/tsan= /tsan_interceptors_posix.cpp:1001 (libtsan.so.2+0x62c76) #1 gomp_team_start ../../../repos/gcc-trunk-commit/libgomp/team.c:858 = (libgomp.so.1+0x1ec18) #2 MAIN__ ../../libgomp/testsuite/libgomp.fortran/allocate-1.f90:328 (= a.out+0x4024c0) #3 main ../../libgomp/testsuite/libgomp.fortran/allocate-1.f90:312 (a.= out+0x4025b0) SUMMARY: ThreadSanitizer: data race ../../libgomp/testsuite/libgomp.fortran= /allocate-1.f90:116 in __m_MOD_foo._omp_fn.2 Tobias ----------------- 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 --------------JeyMGtY0XLZkt5n1xb7qdWsM Content-Type: text/x-patch; charset="UTF-8"; name="patch.diff" Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9hbGxvY2F0 ZS0xLmMgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdGUtMS5j CmluZGV4IGQzM2FjYzZmZWVmLi5jYjZkMzU1YWZjNiAxMDA2NDQKLS0tIGEvbGliZ29tcC90 ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2FsbG9jYXRlLTEuYworKysgYi9saWJnb21wL3Rl c3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdGUtMS5jCkBAIC0xLDcgKzEsNyBAQAog I2luY2x1ZGUgPHN0ZGludC5oPgogCiBpbnQKLWlzXzY0Yml0X2FsaWduZWRfICh1aW50cHRy X3QgYSkKK2lzXzY0Yml0X2FsaWduZWQgKHVpbnRwdHJfdCBhKQogewogICByZXR1cm4gKCAo YSAmIDB4M2YpID09IDApOwogfQpkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGli Z29tcC5mb3J0cmFuL2FsbG9jYXRlLTEuZjkwIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29t cC5mb3J0cmFuL2FsbG9jYXRlLTEuZjkwCmluZGV4IDM1ZDE3NTBiODc4Li5mMzFiZDUzM2U3 ZiAxMDA2NDQKLS0tIGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2FsbG9j YXRlLTEuZjkwCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9hbGxv Y2F0ZS0xLmY5MApAQCAtNSwzMCArNSwzMCBAQAogbW9kdWxlIG0KICAgdXNlIG9tcF9saWIK ICAgdXNlIGlzb19jX2JpbmRpbmcKLSAgaW1wbGljaXQgbm9uZQorICBpbXBsaWNpdCBub25l ICh0eXBlLCBleHRlcm5hbCkKIAogICBpbnRlcmZhY2UKICAgICBpbnRlZ2VyKGNfaW50KSBm dW5jdGlvbiBpc182NGJpdF9hbGlnbmVkIChhKSBiaW5kKEMpCiAgICAgICBpbXBvcnQgOjog Y19pbnQKLSAgICAgIGludGVnZXIgIDo6IGEKKyAgICAgIHR5cGUoKikgIDo6IGEKICAgICBl bmQKICAgZW5kIGludGVyZmFjZQotZW5kIG1vZHVsZSBtCiAKLXN1YnJvdXRpbmUgZm9vICh4 LCBwLCBxLCBweCwgaCwgZmwpCitjb250YWlucworCitzdWJyb3V0aW5lIGZvbyAoeCwgcCwg cSwgaCwgZmwpCiAgIHVzZSBvbXBfbGliCiAgIHVzZSBpc29fY19iaW5kaW5nCiAgIGludGVn ZXIgIDo6IHgKICAgaW50ZWdlciwgZGltZW5zaW9uKDQpIDo6IHAKICAgaW50ZWdlciwgZGlt ZW5zaW9uKDQpIDo6IHEKLSAgaW50ZWdlciAgOjogcHgKICAgaW50ZWdlciAoa2luZD1vbXBf YWxsb2NhdG9yX2hhbmRsZV9raW5kKSA6OiBoCiAgIGludGVnZXIgIDo6IGZsCiAKICAgaW50 ZWdlciAgOjogeQogICBpbnRlZ2VyICA6OiByLCBpLCBpMSwgaTIsIGkzLCBpNCwgaTUKICAg aW50ZWdlciAgOjogbCwgbDMsIGw0LCBsNSwgbDYKLSAgaW50ZWdlciAgOjogbiwgbjEsIG4y LCBuMywgbjQKKyAgaW50ZWdlciAgOjogbiwgbjIsIG4zLCBuNAogICBpbnRlZ2VyICA6OiBq MiwgajMsIGo0CiAgIGludGVnZXIsIGRpbWVuc2lvbig0KSA6OiBsMgogICBpbnRlZ2VyLCBk aW1lbnNpb24oNCkgOjogcjIKQEAgLTExOCw2ICsxMTgsNyBAQCBzdWJyb3V0aW5lIGZvbyAo eCwgcCwgcSwgcHgsIGgsIGZsKQogICBlbmQgaWYKICAgISRvbXAgZW5kIHBhcmFsbGVsCiAg ICEkb21wIGVuZCB0ZWFtcworc3RvcAogCiAgICEkb21wIHBhcmFsbGVsIGRvIHByaXZhdGUg KHkpIGZpcnN0cHJpdmF0ZSAoeCkgIHJlZHVjdGlvbigrOiByKSBhbGxvY2F0ZSAoaDogeCwg eSwgciwgbCwgbikgbGFzdHByaXZhdGUgKGwpICBsaW5lYXIgKG46IDE2KQogICBkbyBpID0g MCwgNjMKQEAgLTE1Myw3NyArMTU0LDc3IEBAIHN1YnJvdXRpbmUgZm9vICh4LCBwLCBxLCBw eCwgaCwgZmwpCiAgICAgICAgICAgICgoaXNfNjRiaXRfYWxpZ25lZChsMigxKSkgPT0gMCkg Lm9yLiAmCiAgICAgICAgICAgICAoaXNfNjRiaXRfYWxpZ25lZChsMykgPT0gMCkgLm9yLiAm CiAgICAgICAgICAgICAoaXNfNjRiaXRfYWxpZ25lZChpMSkgPT0gMCkpKSB0aGVuCi0Jc3Rv cCAxMAorICAgICAgICBzdG9wIDEwCiAgICAgICBlbmQgaWYKICAgICBlbmQgZG8KIAogICAg ICEkb21wIGRvIGNvbGxhcHNlKDIpIGxhc3Rwcml2YXRlKGw0LCBpMiwgajIpIGxpbmVhciAo bjI6MTcpIGFsbG9jYXRlIChoOiBuMiwgbDQsIGkyLCBqMikKICAgICBkbyBpMiA9IDMsIDQK ICAgICAgIGRvIGoyID0gMTcsIDIyLCAyCi0JbjIgPSBuMiArIDE3Ci0JbDQgPSBpMiAqIDMx ICsgajIKLQlpZiAoIChhbmQoZmwsIDEpIC89IDApIC5hbmQuICAgICAgICAgICYKLQkgICgo aXNfNjRiaXRfYWxpZ25lZChsNCkgPT0gMCkgLm9yLiAmCi0JICAoaXNfNjRiaXRfYWxpZ25l ZChuMikgPT0gMCkgLm9yLiAmCi0JICAoaXNfNjRiaXRfYWxpZ25lZChpMikgPT0gMCkgLm9y LiAmCi0JICAoaXNfNjRiaXRfYWxpZ25lZChqMikgPT0gMCkpKSB0aGVuCi0JICBzdG9wIDEx Ci0JZW5kIGlmCisgICAgICAgIG4yID0gbjIgKyAxNworICAgICAgICBsNCA9IGkyICogMzEg KyBqMgorICAgICAgICBpZiAoIChhbmQoZmwsIDEpIC89IDApIC5hbmQuICAgICAgICAgICYK KyAgICAgICAgICAgICAoKGlzXzY0Yml0X2FsaWduZWQobDQpID09IDApIC5vci4gJgorICAg ICAgICAgICAgICAoaXNfNjRiaXRfYWxpZ25lZChuMikgPT0gMCkgLm9yLiAmCisgICAgICAg ICAgICAgIChpc182NGJpdF9hbGlnbmVkKGkyKSA9PSAwKSAub3IuICYKKyAgICAgICAgICAg ICAgKGlzXzY0Yml0X2FsaWduZWQoajIpID09IDApKSkgdGhlbgorICAgICAgICAgIHN0b3Ag MTEKKyAgICAgICAgZW5kIGlmCiAgICAgICBlbmQgZG8KICAgICBlbmQgZG8KIAogICAgICEk b21wIGRvIGNvbGxhcHNlKDIpIGxhc3Rwcml2YXRlKGw1LCBpMywgajMpIGxpbmVhciAobjM6 MTcpIHNjaGVkdWxlIChzdGF0aWMsIDMpIGFsbG9jYXRlIChuMywgbDUsIGkzLCBqMykKICAg ICBkbyBpMyA9IDMsIDQKICAgICAgIGRvIGozID0gMTcsIDIyLCAyCi0JICBuMyA9IG4zICsg MTcKLQkgIGw1ID0gaTMgKiAzMSArIGozCi0JICBpZiAoIChhbmQoZmwsIDIpIC89IDApIC5h bmQuICAgICAgJgotCSAgKChpc182NGJpdF9hbGlnbmVkKGw1KSA9PSAwKSAub3IuICYKLQkg IChpc182NGJpdF9hbGlnbmVkKG4zKSA9PSAwKSAub3IuICYKLQkgIChpc182NGJpdF9hbGln bmVkKGkzKSA9PSAwKSAub3IuICYKLQkgIChpc182NGJpdF9hbGlnbmVkKGozKSA9PSAwKSkp IHRoZW4KLQkgIHN0b3AgMTIKLQllbmQgaWYKKyAgICAgICAgICBuMyA9IG4zICsgMTcKKyAg ICAgICAgICBsNSA9IGkzICogMzEgKyBqMworICAgICAgICAgIGlmICggKGFuZChmbCwgMikg Lz0gMCkgLmFuZC4gICAgICAmCisgICAgICAgICAgICAgKChpc182NGJpdF9hbGlnbmVkKGw1 KSA9PSAwKSAub3IuICYKKyAgICAgICAgICAgICAgKGlzXzY0Yml0X2FsaWduZWQobjMpID09 IDApIC5vci4gJgorICAgICAgICAgICAgICAoaXNfNjRiaXRfYWxpZ25lZChpMykgPT0gMCkg Lm9yLiAmCisgICAgICAgICAgICAgIChpc182NGJpdF9hbGlnbmVkKGozKSA9PSAwKSkpIHRo ZW4KKyAgICAgICAgICBzdG9wIDEyCisgICAgICAgIGVuZCBpZgogICAgICAgZW5kIGRvCiAg ICAgZW5kIGRvCiAKICAgICAhJG9tcCBkbyBjb2xsYXBzZSgyKSBsYXN0cHJpdmF0ZShsNiwg aTQsIGo0KSBsaW5lYXIgKG40OjE3KSBzY2hlZHVsZSAoZHluYW1pYykgYWxsb2NhdGUgKGg6 IG40LCBsNiwgaTQsIGo0KQogICAgIGRvIGk0ID0gMywgNAogICAgICAgZG8gajQgPSAxNywg MjIsMgotCSAgbjQgPSBuNCArIDE3OwotCSAgbDYgPSBpNCAqIDMxICsgajQ7Ci0JaWYgKCAo YW5kKGZsLCAxKSAvPSAwKSAuYW5kLiAgICAgICAgICAmCi0JICAoKGlzXzY0Yml0X2FsaWdu ZWQobDYpID09IDApIC5vci4gJgotCSAgKGlzXzY0Yml0X2FsaWduZWQobjQpID09IDApIC5v ci4gJgotCSAgKGlzXzY0Yml0X2FsaWduZWQoaTQpID09IDApIC5vci4gJgotCSAgKGlzXzY0 Yml0X2FsaWduZWQoajQpID09IDApKSkgdGhlbgotCSAgc3RvcCAxMwotCWVuZCBpZgorICAg ICAgICAgIG40ID0gbjQgKyAxNzsKKyAgICAgICAgICBsNiA9IGk0ICogMzEgKyBqNDsKKyAg ICAgICAgaWYgKCAoYW5kKGZsLCAxKSAvPSAwKSAuYW5kLiAgICAgICAgICAmCisgICAgICAg ICAgICAoKGlzXzY0Yml0X2FsaWduZWQobDYpID09IDApIC5vci4gJgorICAgICAgICAgICAg IChpc182NGJpdF9hbGlnbmVkKG40KSA9PSAwKSAub3IuICYKKyAgICAgICAgICAgICAoaXNf NjRiaXRfYWxpZ25lZChpNCkgPT0gMCkgLm9yLiAmCisgICAgICAgICAgICAgKGlzXzY0Yml0 X2FsaWduZWQoajQpID09IDApKSkgdGhlbgorICAgICAgICAgIHN0b3AgMTMKKyAgICAgICAg ZW5kIGlmCiAgICAgICBlbmQgZG8KICAgICBlbmQgZG8KIAogICAgICEkb21wIGRvIGxhc3Rw cml2YXRlIChpNSkgYWxsb2NhdGUgKGk1KQogICAgIGRvIGk1ID0gMSwgMTcsIDMKICAgICAg IGlmICggKGFuZChmbCwgMikgLz0gMCkgLmFuZC4gICAgICAgICAgJgotCSAgIChpc182NGJp dF9hbGlnbmVkKGk1KSA9PSAwKSkgdGhlbgotCXN0b3AgMTQKKyAgICAgICAgICAgKGlzXzY0 Yml0X2FsaWduZWQoaTUpID09IDApKSB0aGVuCisgICAgICAgIHN0b3AgMTQKICAgICAgIGVu ZCBpZgogICAgIGVuZCBkbwogCiAgICAgISRvbXAgZG8gcmVkdWN0aW9uKCs6cCwgcSwgcjIp IGFsbG9jYXRlKGg6IHAsIHEsIHIyKQogICAgIGRvIGkgPSAwLCAzMQotCXAoMykgPSBwKDMp ICsgIGk7Ci0JcCg0KSA9IHAoNCkgKyAoMiAqIGkpCi0JcSgxKSA9IHEoMSkgKyAoMyAqIGkp Ci0JcSgzKSA9IHEoMykgKyAoNCAqIGkpCi0JcjIoMSkgPSByMigxKSArICg1ICogaSkKLQly Mig0KSA9IHIyKDQpICsgKDYgKiBpKQotCWlmICggKGFuZChmbCwgMSkgLz0gMCkgLmFuZC4g ICAgICAgICAgJgotCSAgKChpc182NGJpdF9hbGlnbmVkKHEoMSkpID09IDApIC5vci4gJgot CSAgKGlzXzY0Yml0X2FsaWduZWQocCgxKSkgPT0gMCkgLm9yLiAmCi0JICAoaXNfNjRiaXRf YWxpZ25lZChyMigxKSkgPT0gMCkgKSkgdGhlbgotCSAgc3RvcCAxNQotCWVuZCBpZgorICAg ICAgICBwKDMpID0gcCgzKSArICBpOworICAgICAgICBwKDQpID0gcCg0KSArICgyICogaSkK KyAgICAgICAgcSgxKSA9IHEoMSkgKyAoMyAqIGkpCisgICAgICAgIHEoMykgPSBxKDMpICsg KDQgKiBpKQorICAgICAgICByMigxKSA9IHIyKDEpICsgKDUgKiBpKQorICAgICAgICByMig0 KSA9IHIyKDQpICsgKDYgKiBpKQorICAgICAgICBpZiAoIChhbmQoZmwsIDEpIC89IDApIC5h bmQuICAgICAgICAgICAgICYKKyAgICAgICAgICAgICAoKGlzXzY0Yml0X2FsaWduZWQocSgx KSkgPT0gMCkgLm9yLiAmCisgICAgICAgICAgICAgIChpc182NGJpdF9hbGlnbmVkKHAoMSkp ID09IDApIC5vci4gJgorICAgICAgICAgICAgICAoaXNfNjRiaXRfYWxpZ25lZChyMigxKSkg PT0gMCkgKSkgdGhlbgorICAgICAgICAgIHN0b3AgMTUKKyAgICAgICAgZW5kIGlmCiAgICAg ZW5kIGRvCiAKICAgICAhJG9tcCB0YXNrIHByaXZhdGUoeSkgZmlyc3Rwcml2YXRlKHgpIGFs bG9jYXRlKHgsIHkpCkBAIC0zMDUsMTEgKzMwNiwxMyBAQCBzdWJyb3V0aW5lIGZvbyAoeCwg cCwgcSwgcHgsIGgsIGZsKQogICAgICAgLm9yLiByMigxKSAvPSAoNSAqIHAoMykpIC5vci4g cjIoNCkgLz0gKDYgKiBwKDMpKSkgdGhlbgogICAgIHN0b3AgMjUKICAgZW5kIGlmCi0KIGVu ZCBzdWJyb3V0aW5lCitlbmQgbW9kdWxlIG0KIAogcHJvZ3JhbSBtYWluCiAgIHVzZSBvbXBf bGliCisgIHVzZSBtCisgIGltcGxpY2l0IG5vbmUgKHR5cGUsIGV4dGVybmFsKQogICBpbnRl Z2VyLCBkaW1lbnNpb24oNCkgOjogcAogICBpbnRlZ2VyLCBkaW1lbnNpb24oNCkgOjogcQog CkBAIC0zMjMsMTEgKzMyNiwxMSBAQCBwcm9ncmFtIG1haW4KICAgaWYgKGEgPT0gb21wX251 bGxfYWxsb2NhdG9yKSBzdG9wIDEKIAogICBjYWxsIG9tcF9zZXRfZGVmYXVsdF9hbGxvY2F0 b3IgKG9tcF9kZWZhdWx0X21lbV9hbGxvYyk7Ci0gIGNhbGwgZm9vICg0MiwgcCwgcSwgMiwg YSwgMCk7Ci0gIGNhbGwgZm9vICg0MiwgcCwgcSwgMiwgb21wX2RlZmF1bHRfbWVtX2FsbG9j LCAwKTsKLSAgY2FsbCBmb28gKDQyLCBwLCBxLCAyLCBhLCAxKTsKKyAgY2FsbCBmb28gKDQy LCBwLCBxLCBhLCAwKTsKKyAgY2FsbCBmb28gKDQyLCBwLCBxLCBvbXBfZGVmYXVsdF9tZW1f YWxsb2MsIDApOworICBjYWxsIGZvbyAoNDIsIHAsIHEsIGEsIDEpOwogICBjYWxsIG9tcF9z ZXRfZGVmYXVsdF9hbGxvY2F0b3IgKGEpOwotICBjYWxsIGZvbyAoNDIsIHAsIHEsIDIsIG9t cF9udWxsX2FsbG9jYXRvciwgMyk7Ci0gIGNhbGwgZm9vICg0MiwgcCwgcSwgMiwgb21wX2Rl ZmF1bHRfbWVtX2FsbG9jLCAyKTsKKyAgY2FsbCBmb28gKDQyLCBwLCBxLCBvbXBfbnVsbF9h bGxvY2F0b3IsIDMpOworICBjYWxsIGZvbyAoNDIsIHAsIHEsIG9tcF9kZWZhdWx0X21lbV9h bGxvYywgMik7CiAgIGNhbGwgb21wX2Rlc3Ryb3lfYWxsb2NhdG9yIChhKTsKIGVuZAo= --------------JeyMGtY0XLZkt5n1xb7qdWsM--