From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32229 invoked by alias); 19 Feb 2014 15:51:37 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 32208 invoked by uid 89); 19 Feb 2014 15:51:37 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-qa0-f48.google.com Received: from mail-qa0-f48.google.com (HELO mail-qa0-f48.google.com) (209.85.216.48) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Wed, 19 Feb 2014 15:51:35 +0000 Received: by mail-qa0-f48.google.com with SMTP id f11so700964qae.7 for ; Wed, 19 Feb 2014 07:51:33 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.140.89.71 with SMTP id u65mr1745665qgd.93.1392825092937; Wed, 19 Feb 2014 07:51:32 -0800 (PST) Received: by 10.96.156.38 with HTTP; Wed, 19 Feb 2014 07:51:32 -0800 (PST) In-Reply-To: References: <5148D5DF.9000508@net-b.de> Date: Wed, 19 Feb 2014 15:51:00 -0000 Message-ID: Subject: Re: [Patch, fortran] PR51976 - [F2003] Support deferred-length character components of derived types (allocatable string length) From: Janus Weil To: Tobias Burnus Cc: Paul Richard Thomas , "fortran@gcc.gnu.org" , gcc-patches Content-Type: multipart/mixed; boundary=001a11c1390ae62cd004f2c45c47 X-SW-Source: 2014-02/txt/msg01171.txt.bz2 --001a11c1390ae62cd004f2c45c47 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2447 The patch was not applying cleanly any more, so here is a re-diffed version for current trunk. It works nicely on the included test case as well as the one provided by Walter Spector in comment 12 of the PR. Since, also in the current state, "character(:)" works only in a subset of all cases, I think it cannot hurt to add more cases that work for 4.9 (even if still not all possible cases work). Please let me know what you think ... Cheers, Janus 2014-02-19 16:16 GMT+01:00 Janus Weil : > Hi all, > > the patch below has been posted a long time ago, but was never > actually committed (although it seems close to being finished). > > Could it still be considered for trunk? I think it is a rather popular > feature, which would be helpful for many users ... > > Cheers, > Janus > > > > 2013-03-19 22:17 GMT+01:00 Tobias Burnus : >> Dear Paul, dear all, >> >> >> On February 24, 2013 Paul Richard Thomas wrote: >>> >>> The attached patch represents progress to date. It fixes the original >>> problem in this PR and allows John Reid's version of >>> iso_varying_string/vocabulary_word_count.f90 to compile and run >>> correctly. It even bootstraps and regtests! >> >> >> Attached is a re-diffed patch; I have additionally fixed some indenting >> issues. >> >> Additionally, I have tested the patch - and it fails with deferred-length >> *array* character components. See attached test case. Also, the following >> line of the included test case leaks memory: >> allocate (array(2), source = [t("abcedefg","hi"), t("jkl","mnop")]) >> >> I think at least the array bug should be fixed prior committal. (Fixing the >> memory leak and some of the below-mentioned issues would be nice, too.) >> Otherwise, I think the patch looks fine. For completeness, I have some >> naming remarks, which I would also like to considered: >> http://thread.gmane.org/gmane.comp.gcc.fortran/40393/focus=281580 >> >> Tobias >> >> >>> However, it doe not fix: >>> PR51976 comment #6 and PR51550 - allocate with typespec ICEs >>> PR51976 comment #6 FORALL assignment is messed up and ICEs.. >>> PR47545 the compiler complains about the lack of an initializer for >>> the hidden character length field. >>> PR45170 will need going through from one end to the other - there is a >>> lot of "stuff" here! >>> >>> Of these, I consider the fix of the PR47545 problem to be a must and >>> the allocate with typespec desirable. --001a11c1390ae62cd004f2c45c47 Content-Type: text/plain; charset=US-ASCII; name="deferred-len-comp_2014-02-19.diff" Content-Disposition: attachment; filename="deferred-len-comp_2014-02-19.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hrurw43m0 Content-length: 20541 SW5kZXg6IGdjYy9mb3J0cmFuL2dmb3J0cmFuLmgKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaAkocmV2aXNpb24g MjA3ODk2KQorKysgZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaAkod29ya2luZyBj b3B5KQpAQCAtODExLDYgKzgxMSw5IEBAIHR5cGVkZWYgc3RydWN0CiAgIC8q IEF0dHJpYnV0ZXMgc2V0IGJ5IGNvbXBpbGVyIGV4dGVuc2lvbnMgKCFHQ0Mk IEFUVFJJQlVURVMpLiAgKi8KICAgdW5zaWduZWQgZXh0X2F0dHI6RVhUX0FU VFJfTlVNOwogCisgIC8qIElzIGEgcGFyYW1ldGVyIGFzc29jaWF0ZWQgd2l0 aCBhIGRlZmVycmVkIHR5cGUgY29tcG9uZW50LiAgKi8KKyAgdW5zaWduZWQg ZGVmZXJyZWRfcGFyYW1ldGVyOjE7CisKICAgLyogVGhlIG5hbWVzcGFjZSB3 aGVyZSB0aGUgYXR0cmlidXRlIGhhcyBiZWVuIHNldC4gICovCiAgIHN0cnVj dCBnZmNfbmFtZXNwYWNlICp2b2xhdGlsZV9ucywgKmFzeW5jaHJvbm91c19u czsKIH0KSW5kZXg6IGdjYy9mb3J0cmFuL3ByaW1hcnkuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBnY2MvZm9ydHJhbi9wcmltYXJ5LmMJKHJldmlz aW9uIDIwNzg5NikKKysrIGdjYy9mb3J0cmFuL3ByaW1hcnkuYwkod29ya2lu ZyBjb3B5KQpAQCAtMjM1NSw3ICsyMzU1LDcgQEAgYnVpbGRfYWN0dWFsX2Nv bnN0cnVjdG9yIChnZmNfc3RydWN0dXJlX2N0b3JfY29tcG8KIAl9CiAKICAg ICAgIC8qIElmIGl0IHdhcyBub3QgZm91bmQsIHRyeSB0aGUgZGVmYXVsdCBp bml0aWFsaXplciBpZiB0aGVyZSdzIGFueTsKLQkgb3RoZXJ3aXNlLCBpdCdz IGFuIGVycm9yLiAgKi8KKwkgb3RoZXJ3aXNlLCBpdCdzIGFuIGVycm9yIHVu bGVzcyB0aGlzIGlzIGEgZGVmZXJyZWQgcGFyYW1ldGVyLiAgKi8KICAgICAg IGlmICghY29tcF9pdGVyKQogCXsKIAkgIGlmIChjb21wLT5pbml0aWFsaXpl cikKQEAgLTIzNjUsNyArMjM2NSw3IEBAIGJ1aWxkX2FjdHVhbF9jb25zdHJ1 Y3RvciAoZ2ZjX3N0cnVjdHVyZV9jdG9yX2NvbXBvCiAJCXJldHVybiBmYWxz ZTsKIAkgICAgICB2YWx1ZSA9IGdmY19jb3B5X2V4cHIgKGNvbXAtPmluaXRp YWxpemVyKTsKIAkgICAgfQotCSAgZWxzZQorCSAgZWxzZSBpZiAoIWNvbXAt PmF0dHIuZGVmZXJyZWRfcGFyYW1ldGVyKQogCSAgICB7CiAJICAgICAgZ2Zj X2Vycm9yICgiTm8gaW5pdGlhbGl6ZXIgZm9yIGNvbXBvbmVudCAnJXMnIGdp dmVuIGluIHRoZSIKIAkJCSAiIHN0cnVjdHVyZSBjb25zdHJ1Y3RvciBhdCAl QyEiLCBjb21wLT5uYW1lKTsKQEAgLTI0NDcsNyArMjQ0Nyw3IEBAIGdmY19j b252ZXJ0X3RvX3N0cnVjdHVyZV9jb25zdHJ1Y3RvciAoZ2ZjX2V4cHIgKmUs CiAJewogCSAgLyogQ29tcG9uZW50cyB3aXRob3V0IG5hbWUgYXJlIG5vdCBh bGxvd2VkIGFmdGVyIHRoZSBmaXJzdCBuYW1lZAogCSAgICAgY29tcG9uZW50 IGluaXRpYWxpemVyISAgKi8KLQkgIGlmICghY29tcCkKKwkgIGlmICghY29t cCB8fCBjb21wLT5hdHRyLmRlZmVycmVkX3BhcmFtZXRlcikKIAkgICAgewog CSAgICAgIGlmIChsYXN0X25hbWUpCiAJCWdmY19lcnJvciAoIkNvbXBvbmVu dCBpbml0aWFsaXplciB3aXRob3V0IG5hbWUgYWZ0ZXIgY29tcG9uZW50IgpJ bmRleDogZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGdjYy9mb3J0cmFuL3Jlc29sdmUuYwkocmV2aXNpb24gMjA3 ODk2KQorKysgZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jCSh3b3JraW5nIGNvcHkp CkBAIC0xMjEwNSwxNCArMTIxMDUsNiBAQCByZXNvbHZlX2ZsX2Rlcml2ZWQw IChnZmNfc3ltYm9sICpzeW0pCiAgICAgICBpZiAoYy0+YXR0ci5hcnRpZmlj aWFsKQogCWNvbnRpbnVlOwogCi0gICAgICAvKiBTZWUgUFJzIDUxNTUwLCA0 NzU0NSwgNDg2NTQsIDQ5MDUwLCA1MTA3NSAtIGFuZCA0NTE3MC4gICovCi0g ICAgICBpZiAoYy0+dHMudHlwZSA9PSBCVF9DSEFSQUNURVIgJiYgYy0+dHMu ZGVmZXJyZWQgJiYgIWMtPmF0dHIuZnVuY3Rpb24pCi0JewotCSAgZ2ZjX2Vy cm9yICgiRGVmZXJyZWQtbGVuZ3RoIGNoYXJhY3RlciBjb21wb25lbnQgJyVz JyBhdCAlTCBpcyBub3QgIgotCQkgICAgICJ5ZXQgc3VwcG9ydGVkIiwgYy0+ bmFtZSwgJmMtPmxvYyk7Ci0JICByZXR1cm4gZmFsc2U7Ci0JfQotCiAgICAg ICAvKiBGMjAwOCwgQzQ0Mi4gICovCiAgICAgICBpZiAoKCFzeW0tPmF0dHIu aXNfY2xhc3MgfHwgYyAhPSBzeW0tPmNvbXBvbmVudHMpCiAJICAmJiBjLT5h dHRyLmNvZGltZW5zaW9uCkBAIC0xMjM2NCw2ICsxMjM1NiwyNSBAQCByZXNv bHZlX2ZsX2Rlcml2ZWQwIChnZmNfc3ltYm9sICpzeW0pCiAJICByZXR1cm4g ZmFsc2U7CiAJfQogCisgICAgICAvKiBBZGQgdGhlIGhpZGRlbiBkZWZlcnJl ZCBsZW5ndGggZmllbGQuICAqLworICAgICAgaWYgKGMtPnRzLnR5cGUgPT0g QlRfQ0hBUkFDVEVSICYmIGMtPnRzLmRlZmVycmVkICYmICFjLT5hdHRyLmZ1 bmN0aW9uCisJICAmJiAhc3ltLT5hdHRyLmlzX2NsYXNzKQorCXsKKwkgIGNo YXIgbmFtZVtHRkNfTUFYX1NZTUJPTF9MRU4rMV07CisJICBnZmNfY29tcG9u ZW50ICpzdHJsZW47CisJICBzcHJpbnRmIChuYW1lLCAiXyVzIiwgYy0+bmFt ZSk7CisJICBzdHJsZW4gPSBnZmNfZmluZF9jb21wb25lbnQgKHN5bSwgbmFt ZSwgdHJ1ZSwgdHJ1ZSk7CisJICBpZiAoc3RybGVuID09IE5VTEwpCisJICAg IHsKKwkgICAgICBpZiAoIWdmY19hZGRfY29tcG9uZW50IChzeW0sIG5hbWUs ICZzdHJsZW4pKQorCQlyZXR1cm4gZmFsc2U7CisJICAgICAgc3RybGVuLT50 cy50eXBlID0gQlRfSU5URUdFUjsKKwkgICAgICBzdHJsZW4tPnRzLmtpbmQg PSBnZmNfY2hhcmxlbl9pbnRfa2luZDsKKwkgICAgICBzdHJsZW4tPmF0dHIu YWNjZXNzID0gQUNDRVNTX1BSSVZBVEU7CisJICAgICAgc3RybGVuLT5hdHRy LmRlZmVycmVkX3BhcmFtZXRlciA9IDE7CisJICAgIH0KKwl9CisKICAgICAg IGlmIChjLT50cy50eXBlID09IEJUX0RFUklWRUQKIAkgICYmIHN5bS0+Y29t cG9uZW50X2FjY2VzcyAhPSBBQ0NFU1NfUFJJVkFURQogCSAgJiYgZ2ZjX2No ZWNrX3N5bWJvbF9hY2Nlc3MgKHN5bSkKSW5kZXg6IGdjYy9mb3J0cmFuL3Ry YW5zLWFycmF5LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2Zv cnRyYW4vdHJhbnMtYXJyYXkuYwkocmV2aXNpb24gMjA3ODk2KQorKysgZ2Nj L2ZvcnRyYW4vdHJhbnMtYXJyYXkuYwkod29ya2luZyBjb3B5KQpAQCAtNzM2 NSw3ICs3MzY1LDcgQEAgZ2V0X2Z1bGxfYXJyYXlfc2l6ZSAoc3RtdGJsb2Nr X3QgKmJsb2NrLCB0cmVlIGRlY2wKIAogc3RhdGljIHRyZWUKIGR1cGxpY2F0 ZV9hbGxvY2F0YWJsZSAodHJlZSBkZXN0LCB0cmVlIHNyYywgdHJlZSB0eXBl LCBpbnQgcmFuaywKLQkJICAgICAgIGJvb2wgbm9fbWFsbG9jKQorCQkgICAg ICAgYm9vbCBub19tYWxsb2MsIHRyZWUgc3RybGVuKQogewogICB0cmVlIHRt cDsKICAgdHJlZSBzaXplOwpAQCAtNzM4Niw3ICs3Mzg2LDExIEBAIGR1cGxp Y2F0ZV9hbGxvY2F0YWJsZSAodHJlZSBkZXN0LCB0cmVlIHNyYywgdHJlZSB0 CiAgICAgICBudWxsX2RhdGEgPSBnZmNfZmluaXNoX2Jsb2NrICgmYmxvY2sp OwogCiAgICAgICBnZmNfaW5pdF9ibG9jayAoJmJsb2NrKTsKLSAgICAgIHNp emUgPSBUWVBFX1NJWkVfVU5JVCAoVFJFRV9UWVBFICh0eXBlKSk7CisgICAg ICBpZiAoc3RybGVuICE9IE5VTExfVFJFRSkKKwlzaXplID0gc3RybGVuOwor ICAgICAgZWxzZQorCXNpemUgPSBUWVBFX1NJWkVfVU5JVCAoVFJFRV9UWVBF ICh0eXBlKSk7CisKICAgICAgIGlmICghbm9fbWFsbG9jKQogCXsKIAkgIHRt cCA9IGdmY19jYWxsX21hbGxvYyAoJmJsb2NrLCB0eXBlLCBzaXplKTsKQEAg LTc0MTAsOCArNzQxNCwxMSBAQCBkdXBsaWNhdGVfYWxsb2NhdGFibGUgKHRy ZWUgZGVzdCwgdHJlZSBzcmMsIHRyZWUgdAogICAgICAgZWxzZQogCW5lbGVt cyA9IGdmY19pbmRleF9vbmVfbm9kZTsKIAotICAgICAgdG1wID0gZm9sZF9j b252ZXJ0IChnZmNfYXJyYXlfaW5kZXhfdHlwZSwKLQkJCSAgVFlQRV9TSVpF X1VOSVQgKGdmY19nZXRfZWxlbWVudF90eXBlICh0eXBlKSkpOworICAgICAg aWYgKHN0cmxlbiAhPSBOVUxMX1RSRUUpCisJdG1wID0gZm9sZF9jb252ZXJ0 IChnZmNfYXJyYXlfaW5kZXhfdHlwZSwgc3RybGVuKTsKKyAgICAgIGVsc2UK Kwl0bXAgPSBmb2xkX2NvbnZlcnQgKGdmY19hcnJheV9pbmRleF90eXBlLAor CQkJICAgIFRZUEVfU0laRV9VTklUIChnZmNfZ2V0X2VsZW1lbnRfdHlwZSAo dHlwZSkpKTsKICAgICAgIHNpemUgPSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0 X2xvY2F0aW9uLCBNVUxUX0VYUFIsIGdmY19hcnJheV9pbmRleF90eXBlLAog CQkJICAgICAgbmVsZW1zLCB0bXApOwogICAgICAgaWYgKCFub19tYWxsb2Mp CkBAIC03NDUyLDcgKzc0NTksNyBAQCBkdXBsaWNhdGVfYWxsb2NhdGFibGUg KHRyZWUgZGVzdCwgdHJlZSBzcmMsIHRyZWUgdAogdHJlZQogZ2ZjX2R1cGxp Y2F0ZV9hbGxvY2F0YWJsZSAodHJlZSBkZXN0LCB0cmVlIHNyYywgdHJlZSB0 eXBlLCBpbnQgcmFuaykKIHsKLSAgcmV0dXJuIGR1cGxpY2F0ZV9hbGxvY2F0 YWJsZSAoZGVzdCwgc3JjLCB0eXBlLCByYW5rLCBmYWxzZSk7CisgIHJldHVy biBkdXBsaWNhdGVfYWxsb2NhdGFibGUgKGRlc3QsIHNyYywgdHlwZSwgcmFu aywgZmFsc2UsIE5VTExfVFJFRSk7CiB9CiAKIApAQCAtNzQ2MSw3ICs3NDY4 LDcgQEAgZ2ZjX2R1cGxpY2F0ZV9hbGxvY2F0YWJsZSAodHJlZSBkZXN0LCB0 cmVlIHNyYywgdHIKIHRyZWUKIGdmY19jb3B5X2FsbG9jYXRhYmxlX2RhdGEg KHRyZWUgZGVzdCwgdHJlZSBzcmMsIHRyZWUgdHlwZSwgaW50IHJhbmspCiB7 Ci0gIHJldHVybiBkdXBsaWNhdGVfYWxsb2NhdGFibGUgKGRlc3QsIHNyYywg dHlwZSwgcmFuaywgdHJ1ZSk7CisgIHJldHVybiBkdXBsaWNhdGVfYWxsb2Nh dGFibGUgKGRlc3QsIHNyYywgdHlwZSwgcmFuaywgdHJ1ZSwgTlVMTF9UUkVF KTsKIH0KIAogCkBAIC03NzE4LDYgKzc3MjUsMTYgQEAgc3RydWN0dXJlX2Fs bG9jX2NvbXBzIChnZmNfc3ltYm9sICogZGVyX3R5cGUsIHRyZWUKIAkJCQkg ICAgIHZvaWRfdHlwZV9ub2RlLCBjb21wLAogCQkJCSAgICAgYnVpbGRfaW50 X2NzdCAoVFJFRV9UWVBFIChjb21wKSwgMCkpOwogCSAgICAgIGdmY19hZGRf ZXhwcl90b19ibG9jayAoJmZuYmxvY2ssIHRtcCk7CisJICAgICAgaWYgKGdm Y19kZWZlcnJlZF9zdHJsZW4gKGMsICZjb21wKSkKKwkJeworCQkgIGNvbXAg PSBmb2xkX2J1aWxkM19sb2MgKGlucHV0X2xvY2F0aW9uLCBDT01QT05FTlRf UkVGLAorCQkJCQkgIFRSRUVfVFlQRSAoY29tcCksCisJCQkJCSAgZGVjbCwg Y29tcCwgTlVMTF9UUkVFKTsKKwkJICB0bXAgPSBmb2xkX2J1aWxkMl9sb2Mg KGlucHV0X2xvY2F0aW9uLCBNT0RJRllfRVhQUiwKKwkJCQkJIFRSRUVfVFlQ RSAoY29tcCksIGNvbXAsCisJCQkJCSBidWlsZF9pbnRfY3N0IChUUkVFX1RZ UEUgKGNvbXApLCAwKSk7CisJCSAgZ2ZjX2FkZF9leHByX3RvX2Jsb2NrICgm Zm5ibG9jaywgdG1wKTsKKwkJfQogCSAgICB9CiAJICBlbHNlIGlmIChjLT50 cy50eXBlID09IEJUX0NMQVNTICYmIENMQVNTX0RBVEEgKGMpLT5hdHRyLmFs bG9jYXRhYmxlKQogCSAgICB7CkBAIC03ODU1LDkgKzc4NzIsMjYgQEAgc3Ry dWN0dXJlX2FsbG9jX2NvbXBzIChnZmNfc3ltYm9sICogZGVyX3R5cGUsIHRy ZWUKIAkgICAgICBjb250aW51ZTsKIAkgICAgfQogCi0JICBpZiAoYy0+YXR0 ci5hbGxvY2F0YWJsZSAmJiAhYy0+YXR0ci5wcm9jX3BvaW50ZXIKLQkgICAg ICAmJiAhY21wX2hhc19hbGxvY19jb21wcykKKwkgIGlmIChnZmNfZGVmZXJy ZWRfc3RybGVuIChjLCAmdG1wKSkKIAkgICAgeworCSAgICAgIHRyZWUgbGVu OworCSAgICAgIGxlbiA9IHRtcDsKKwkgICAgICB0bXAgPSBmb2xkX2J1aWxk M19sb2MgKGlucHV0X2xvY2F0aW9uLCBDT01QT05FTlRfUkVGLAorCQkJCSAg ICAgVFJFRV9UWVBFIChsZW4pLAorCQkJCSAgICAgZGVjbCwgbGVuLCBOVUxM X1RSRUUpOworCSAgICAgIGxlbiA9IGZvbGRfYnVpbGQzX2xvYyAoaW5wdXRf bG9jYXRpb24sIENPTVBPTkVOVF9SRUYsCisJCQkJICAgICBUUkVFX1RZUEUg KGxlbiksCisJCQkJICAgICBkZXN0LCBsZW4sIE5VTExfVFJFRSk7CisJICAg ICAgdG1wID0gZm9sZF9idWlsZDJfbG9jIChpbnB1dF9sb2NhdGlvbiwgTU9E SUZZX0VYUFIsCisJCQkJICAgICBUUkVFX1RZUEUgKGxlbiksIGxlbiwgdG1w KTsKKwkgICAgICBnZmNfYWRkX2V4cHJfdG9fYmxvY2sgKCZmbmJsb2NrLCB0 bXApOworCSAgICAgIHRtcCA9IGR1cGxpY2F0ZV9hbGxvY2F0YWJsZSAoZGNt cCwgY29tcCwgY3R5cGUsIHJhbmssCisJCQkJCSAgIGZhbHNlLCBsZW4pOwor CSAgICAgIGdmY19hZGRfZXhwcl90b19ibG9jayAoJmZuYmxvY2ssIHRtcCk7 CisJICAgIH0KKwkgIGVsc2UgaWYgKGMtPmF0dHIuYWxsb2NhdGFibGUgJiYg IWMtPmF0dHIucHJvY19wb2ludGVyCisJCSAgICYmICFjbXBfaGFzX2FsbG9j X2NvbXBzKQorCSAgICB7CiAJICAgICAgcmFuayA9IGMtPmFzID8gYy0+YXMt PnJhbmsgOiAwOwogCSAgICAgIGlmIChjLT5hdHRyLmNvZGltZW5zaW9uKQog CQl0bXAgPSBnZmNfY29weV9hbGxvY2F0YWJsZV9kYXRhIChkY21wLCBjb21w LCBjdHlwZSwgcmFuayk7CkBAIC04MzQyLDEwICs4Mzc2LDI0IEBAIGdmY19h bGxvY19hbGxvY2F0YWJsZV9mb3JfYXNzaWdubWVudCAoZ2ZjX2xvb3BpbmZv CiAgIC8qIEdldCB0aGUgbmV3IGxocyBzaXplIGluIGJ5dGVzLiAgKi8KICAg aWYgKGV4cHIxLT50cy50eXBlID09IEJUX0NIQVJBQ1RFUiAmJiBleHByMS0+ dHMuZGVmZXJyZWQpCiAgICAgewotICAgICAgdG1wID0gZXhwcjItPnRzLnUu Y2wtPmJhY2tlbmRfZGVjbDsKLSAgICAgIGdjY19hc3NlcnQgKGV4cHIxLT50 cy51LmNsLT5iYWNrZW5kX2RlY2wpOwotICAgICAgdG1wID0gZm9sZF9jb252 ZXJ0IChUUkVFX1RZUEUgKGV4cHIxLT50cy51LmNsLT5iYWNrZW5kX2RlY2wp LCB0bXApOwotICAgICAgZ2ZjX2FkZF9tb2RpZnkgKCZmYmxvY2ssIGV4cHIx LT50cy51LmNsLT5iYWNrZW5kX2RlY2wsIHRtcCk7CisgICAgICBpZiAoZXhw cjItPnRzLmRlZmVycmVkKQorCXsKKwkgIGlmIChUUkVFX0NPREUgKGV4cHIy LT50cy51LmNsLT5iYWNrZW5kX2RlY2wpID09IFZBUl9ERUNMKQorCSAgICB0 bXAgPSBleHByMi0+dHMudS5jbC0+YmFja2VuZF9kZWNsOworCSAgZWxzZQor CSAgICB0bXAgPSByc3MtPmluZm8tPnN0cmluZ19sZW5ndGg7CisJfQorICAg ICAgZWxzZQorCXsKKwkgIHRtcCA9IGV4cHIyLT50cy51LmNsLT5iYWNrZW5k X2RlY2w7CisJICB0bXAgPSBmb2xkX2NvbnZlcnQgKFRSRUVfVFlQRSAoZXhw cjEtPnRzLnUuY2wtPmJhY2tlbmRfZGVjbCksIHRtcCk7CisJfQorCisgICAg ICBpZiAoZXhwcjEtPnRzLnUuY2wtPmJhY2tlbmRfZGVjbAorCSAgJiYgVFJF RV9DT0RFIChleHByMS0+dHMudS5jbC0+YmFja2VuZF9kZWNsKSA9PSBWQVJf REVDTCkKKwlnZmNfYWRkX21vZGlmeSAoJmZibG9jaywgZXhwcjEtPnRzLnUu Y2wtPmJhY2tlbmRfZGVjbCwgdG1wKTsKKyAgICAgIGVsc2UKKwlnZmNfYWRk X21vZGlmeSAoJmZibG9jaywgbHNzLT5pbmZvLT5zdHJpbmdfbGVuZ3RoLCB0 bXApOwogICAgIH0KICAgZWxzZSBpZiAoZXhwcjEtPnRzLnR5cGUgPT0gQlRf Q0hBUkFDVEVSICYmIGV4cHIxLT50cy51LmNsLT5iYWNrZW5kX2RlY2wpCiAg ICAgewpJbmRleDogZ2NjL2ZvcnRyYW4vdHJhbnMtZXhwci5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIGdjYy9mb3J0cmFuL3RyYW5zLWV4cHIuYwko cmV2aXNpb24gMjA3ODk2KQorKysgZ2NjL2ZvcnRyYW4vdHJhbnMtZXhwci5j CSh3b3JraW5nIGNvcHkpCkBAIC0xNjg5LDYgKzE2ODksMTQgQEAgZ2ZjX2Nv bnZfY29tcG9uZW50X3JlZiAoZ2ZjX3NlICogc2UsIGdmY19yZWYgKiByZWYK ICAgICAgIHNlLT5zdHJpbmdfbGVuZ3RoID0gdG1wOwogICAgIH0KIAorICBp ZiAoZ2ZjX2RlZmVycmVkX3N0cmxlbiAoYywgJmZpZWxkKSkKKyAgICB7Cisg ICAgICB0bXAgPSBmb2xkX2J1aWxkM19sb2MgKGlucHV0X2xvY2F0aW9uLCBD T01QT05FTlRfUkVGLAorCQkJICAgICBUUkVFX1RZUEUgKGZpZWxkKSwKKwkJ CSAgICAgZGVjbCwgZmllbGQsIE5VTExfVFJFRSk7CisgICAgICBzZS0+c3Ry aW5nX2xlbmd0aCA9IHRtcDsKKyAgICB9CisKICAgaWYgKCgoYy0+YXR0ci5w b2ludGVyIHx8IGMtPmF0dHIuYWxsb2NhdGFibGUpCiAgICAgICAgJiYgKCFj LT5hdHRyLmRpbWVuc2lvbiAmJiAhYy0+YXR0ci5jb2RpbWVuc2lvbikKICAg ICAgICAmJiBjLT50cy50eXBlICE9IEJUX0NIQVJBQ1RFUikKQEAgLTYwNDMs OSArNjA1MSw0MCBAQCBnZmNfdHJhbnNfc3ViY29tcG9uZW50X2Fzc2lnbiAo dHJlZSBkZXN0LCBnZmNfY29tcAogCSAgZ2ZjX2FkZF9leHByX3RvX2Jsb2Nr ICgmYmxvY2ssIHRtcCk7CiAJfQogICAgIH0KLSAgZWxzZQorICBlbHNlIGlm IChnZmNfZGVmZXJyZWRfc3RybGVuIChjbSwgJnRtcCkpCiAgICAgewotICAg ICAgLyogU2NhbGFyIGNvbXBvbmVudC4gICovCisgICAgICB0cmVlIHN0cmxl bjsKKyAgICAgIHN0cmxlbiA9IHRtcDsKKyAgICAgIGdjY19hc3NlcnQgKHN0 cmxlbik7CisgICAgICBzdHJsZW4gPSBmb2xkX2J1aWxkM19sb2MgKGlucHV0 X2xvY2F0aW9uLCBDT01QT05FTlRfUkVGLAorCQkJCVRSRUVfVFlQRSAoc3Ry bGVuKSwKKwkJCQlUUkVFX09QRVJBTkQgKGRlc3QsIDApLAorCQkJCXN0cmxl biwgTlVMTF9UUkVFKTsKKworICAgICAgaWYgKGV4cHItPmV4cHJfdHlwZSA9 PSBFWFBSX05VTEwpCisJeworCSAgdG1wID0gYnVpbGRfaW50X2NzdCAoVFJF RV9UWVBFIChjbS0+YmFja2VuZF9kZWNsKSwgMCk7CisJICBnZmNfYWRkX21v ZGlmeSAoJmJsb2NrLCBkZXN0LCB0bXApOworCSAgdG1wID0gYnVpbGRfaW50 X2NzdCAoVFJFRV9UWVBFIChzdHJsZW4pLCAwKTsKKwkgIGdmY19hZGRfbW9k aWZ5ICgmYmxvY2ssIHN0cmxlbiwgdG1wKTsKKwl9CisgICAgICBlbHNlCisJ eworCSAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7CisJICBnZmNfY29udl9l eHByICgmc2UsIGV4cHIpOworCSAgdG1wID0gYnVpbGRfY2FsbF9leHByX2xv YyAoaW5wdXRfbG9jYXRpb24sCisJCQkJICAgICBidWlsdGluX2RlY2xfZXhw bGljaXQgKEJVSUxUX0lOX01BTExPQyksCisJCQkJICAgICAxLCBzZS5zdHJp bmdfbGVuZ3RoKTsKKwkgIGdmY19hZGRfbW9kaWZ5ICgmYmxvY2ssIGRlc3Qs CisJCQkgIGZvbGRfY29udmVydCAoVFJFRV9UWVBFIChkZXN0KSwgdG1wKSk7 CisJICBnZmNfYWRkX21vZGlmeSAoJmJsb2NrLCBzdHJsZW4sIHNlLnN0cmlu Z19sZW5ndGgpOworCSAgdG1wID0gZ2ZjX2J1aWxkX21lbWNweV9jYWxsIChk ZXN0LCBzZS5leHByLCBzZS5zdHJpbmdfbGVuZ3RoKTsKKwkgIGdmY19hZGRf ZXhwcl90b19ibG9jayAoJmJsb2NrLCB0bXApOworCX0KKyAgICB9CisgIGVs c2UgaWYgKCFjbS0+YXR0ci5kZWZlcnJlZF9wYXJhbWV0ZXIpCisgICAgewor ICAgICAgLyogU2NhbGFyIGNvbXBvbmVudCAoZXhjbHVkaW5nIGRlZmVycmVk IHBhcmFtZXRlcnMpLiAgKi8KICAgICAgIGdmY19pbml0X3NlICgmc2UsIE5V TEwpOwogICAgICAgZ2ZjX2luaXRfc2UgKCZsc2UsIE5VTEwpOwogCkBAIC03 NzQ3LDcgKzc3ODYsMTAgQEAgYWxsb2Nfc2NhbGFyX2FsbG9jYXRhYmxlX2Zv cl9hc3NpZ25tZW50IChzdG10YmxvY2sKIAogICAgICAgLyogVXBkYXRlIHRo ZSBsaHMgY2hhcmFjdGVyIGxlbmd0aC4gICovCiAgICAgICBzaXplID0gc3Ry aW5nX2xlbmd0aDsKLSAgICAgIGdmY19hZGRfbW9kaWZ5IChibG9jaywgZXhw cjEtPnRzLnUuY2wtPmJhY2tlbmRfZGVjbCwgc2l6ZSk7CisgICAgICBpZiAo VFJFRV9DT0RFIChleHByMS0+dHMudS5jbC0+YmFja2VuZF9kZWNsKSA9PSBW QVJfREVDTCkKKwlnZmNfYWRkX21vZGlmeSAoYmxvY2ssIGV4cHIxLT50cy51 LmNsLT5iYWNrZW5kX2RlY2wsIHNpemUpOworICAgICAgZWxzZQorCWdmY19h ZGRfbW9kaWZ5IChibG9jaywgbHNlLnN0cmluZ19sZW5ndGgsIHNpemUpOwog ICAgIH0KIH0KIApJbmRleDogZ2NjL2ZvcnRyYW4vdHJhbnMtc3RtdC5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9mb3J0cmFuL3RyYW5zLXN0 bXQuYwkocmV2aXNpb24gMjA3ODk2KQorKysgZ2NjL2ZvcnRyYW4vdHJhbnMt c3RtdC5jCSh3b3JraW5nIGNvcHkpCkBAIC01MDI4LDYgKzUwMjgsMTEgQEAg Z2ZjX3RyYW5zX2FsbG9jYXRlIChnZmNfY29kZSAqIGNvZGUpCiAJICAgICAg aWYgKHRtcCAmJiBUUkVFX0NPREUgKHRtcCkgPT0gVkFSX0RFQ0wpCiAJCWdm Y19hZGRfbW9kaWZ5ICgmc2UucHJlLCB0bXAsIGZvbGRfY29udmVydCAoVFJF RV9UWVBFICh0bXApLAogCQkJCW1lbXN6KSk7CisJICAgICAgZWxzZSBpZiAo YWwtPmV4cHItPnRzLnR5cGUgPT0gQlRfQ0hBUkFDVEVSCisJCSAgICAgICAm JiBhbC0+ZXhwci0+dHMuZGVmZXJyZWQgJiYgc2Uuc3RyaW5nX2xlbmd0aCkK KwkJZ2ZjX2FkZF9tb2RpZnkgKCZzZS5wcmUsIHNlLnN0cmluZ19sZW5ndGgs CisJCQkJZm9sZF9jb252ZXJ0IChUUkVFX1RZUEUgKHNlLnN0cmluZ19sZW5n dGgpLAorCQkJCW1lbXN6KSk7CiAKIAkgICAgICAvKiBDb252ZXJ0IHRvIHNp emUgaW4gYnl0ZXMsIHVzaW5nIHRoZSBjaGFyYWN0ZXIgS0lORC4gICovCiAJ ICAgICAgaWYgKHVubGltaXRlZF9jaGFyKQpJbmRleDogZ2NjL2ZvcnRyYW4v dHJhbnMtdHlwZXMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mv Zm9ydHJhbi90cmFucy10eXBlcy5jCShyZXZpc2lvbiAyMDc4OTYpCisrKyBn Y2MvZm9ydHJhbi90cmFucy10eXBlcy5jCSh3b3JraW5nIGNvcHkpCkBAIC0y NDg2LDEyICsyNDg2LDE1IEBAIGdmY19nZXRfZGVyaXZlZF90eXBlIChnZmNf c3ltYm9sICogZGVyaXZlZCkKICAgICAgICAgZmllbGRfdHlwZSA9IGMtPnRz LnUuZGVyaXZlZC0+YmFja2VuZF9kZWNsOwogICAgICAgZWxzZQogCXsKLQkg IGlmIChjLT50cy50eXBlID09IEJUX0NIQVJBQ1RFUikKKwkgIGlmIChjLT50 cy50eXBlID09IEJUX0NIQVJBQ1RFUiAmJiAhYy0+dHMuZGVmZXJyZWQpCiAJ ICAgIHsKIAkgICAgICAvKiBFdmFsdWF0ZSB0aGUgc3RyaW5nIGxlbmd0aC4g ICovCiAJICAgICAgZ2ZjX2NvbnZfY29uc3RfY2hhcmxlbiAoYy0+dHMudS5j bCk7CiAJICAgICAgZ2NjX2Fzc2VydCAoYy0+dHMudS5jbC0+YmFja2VuZF9k ZWNsKTsKIAkgICAgfQorCSAgZWxzZSBpZiAoYy0+dHMudHlwZSA9PSBCVF9D SEFSQUNURVIpCisJICAgIGMtPnRzLnUuY2wtPmJhY2tlbmRfZGVjbAorCQkJ PSBidWlsZF9pbnRfY3N0IChnZmNfY2hhcmxlbl90eXBlX25vZGUsIDApOwog CiAJICBmaWVsZF90eXBlID0gZ2ZjX3R5cGVub2RlX2Zvcl9zcGVjICgmYy0+ dHMpOwogCX0KSW5kZXg6IGdjYy9mb3J0cmFuL3RyYW5zLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vdHJhbnMuYwkocmV2aXNp b24gMjA3ODk2KQorKysgZ2NjL2ZvcnRyYW4vdHJhbnMuYwkod29ya2luZyBj b3B5KQpAQCAtMjA0NCwzICsyMDQ0LDIxIEBAIGdmY19saWtlbHkgKHRyZWUg Y29uZCkKICAgY29uZCA9IGZvbGRfY29udmVydCAoYm9vbGVhbl90eXBlX25v ZGUsIGNvbmQpOwogICByZXR1cm4gY29uZDsKIH0KKworCisvKiBHZXQgdGhl IHN0cmluZyBsZW5ndGggZm9yIGEgZGVmZXJyZWQgY2hhcmFjdGVyIGxlbmd0 aCBjb21wb25lbnQuICAqLworCitib29sCitnZmNfZGVmZXJyZWRfc3RybGVu IChnZmNfY29tcG9uZW50ICpjLCB0cmVlICpkZWNsKQoreworICBjaGFyIG5h bWVbR0ZDX01BWF9TWU1CT0xfTEVOKzFdOworICBnZmNfY29tcG9uZW50ICpz dHJsZW47CisgIGlmICghKGMtPnRzLnR5cGUgPT0gQlRfQ0hBUkFDVEVSICYm IGMtPnRzLmRlZmVycmVkKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHNwcmlu dGYgKG5hbWUsICJfJXMiLCBjLT5uYW1lKTsKKyAgZm9yIChzdHJsZW4gPSBj OyBzdHJsZW47IHN0cmxlbiA9IHN0cmxlbi0+bmV4dCkKKyAgICBpZiAoc3Ry Y21wIChzdHJsZW4tPm5hbWUsIG5hbWUpID09IDApCisgICAgICBicmVhazsK KyAgKmRlY2wgPSBzdHJsZW4gPyBzdHJsZW4tPmJhY2tlbmRfZGVjbCA6IE5V TExfVFJFRTsKKyAgcmV0dXJuIHN0cmxlbiAhPSBOVUxMOworfQpJbmRleDog Z2NjL2ZvcnRyYW4vdHJhbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBnY2MvZm9ydHJhbi90cmFucy5oCShyZXZpc2lvbiAyMDc4OTYpCisrKyBn Y2MvZm9ydHJhbi90cmFucy5oCSh3b3JraW5nIGNvcHkpCkBAIC01ODEsNiAr NTgxLDkgQEAgYm9vbCBnZXRfYXJyYXlfY3Rvcl9zdHJsZW4gKHN0bXRibG9j a190ICosIGdmY19jb24KIHRyZWUgZ2ZjX2xpa2VseSAodHJlZSk7CiB0cmVl IGdmY191bmxpa2VseSAodHJlZSk7CiAKKy8qIFJldHVybiB0aGUgc3RyaW5n IGxlbmd0aCBvZiBhIGRlZmVycmVkIGNoYXJhY3RlciBsZW5ndGggY29tcG9u ZW50LiAgKi8KK2Jvb2wgZ2ZjX2RlZmVycmVkX3N0cmxlbiAoZ2ZjX2NvbXBv bmVudCAqLCB0cmVlICopOworCiAvKiBHZW5lcmF0ZSBhIHJ1bnRpbWUgZXJy b3IgY2FsbC4gICovCiB0cmVlIGdmY190cmFuc19ydW50aW1lX2Vycm9yIChi b29sLCBsb2N1cyosIGNvbnN0IGNoYXIqLCAuLi4pOwogCkluZGV4OiBnY2Mv dGVzdHN1aXRlL2dmb3J0cmFuLmRnL2RlZmVycmVkX3R5cGVfY29tcG9uZW50 XzEuZjkwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvZGVmZXJyZWRfdHlwZV9jb21wb25lbnRfMS5mOTAJ KHJldmlzaW9uIDApCisrKyBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2Rl ZmVycmVkX3R5cGVfY29tcG9uZW50XzEuZjkwCSh3b3JraW5nIGNvcHkpCkBA IC0wLDAgKzEsNTQgQEAKKyEgeyBkZy1kbyBydW4gfQorISBUZXN0IGZpeCBm b3IgUFI1MTk3NiAtIGludHJvZHVjZSBkZWZlcnJlZCBjaGFyYWN0ZXIgbGVu Z3RoIGNvbXBvbmVudHMKKyEKKyEgQ29udHJpYnV0ZWQgYnkgVG9iaWFzIEJ1 cm51cyAgPGJ1cm51c0BnY2MuZ251Lm9yZz4KKyEKKyAgdHlwZSB0CisgICAg Y2hhcmFjdGVyKGxlbj06KSwgYWxsb2NhdGFibGUgOjogc3RyX2NvbXAKKyAg ICBjaGFyYWN0ZXIobGVuPTopLCBhbGxvY2F0YWJsZSA6OiBzdHJfY29tcDEK KyAgZW5kIHR5cGUgdAorICB0eXBlKHQpIDo6IHgKKyAgdHlwZSh0KSwgYWxs b2NhdGFibGUsIGRpbWVuc2lvbig6KSA6OiBhcnJheQorCishIENoZWNrIHNj YWxhcnMKKyAgYWxsb2NhdGUgKHglc3RyX2NvbXAsIHNvdXJjZSA9ICJhYmMi KQorICBjYWxsIGNoZWNrICh4JXN0cl9jb21wLCAiYWJjIikKKyAgZGVhbGxv Y2F0ZSAoeCVzdHJfY29tcCkKKyAgYWxsb2NhdGUgKHglc3RyX2NvbXAsIHNv dXJjZSA9ICJhYmNkZWZnaGlqa2xtbm9wIikKKyAgY2FsbCBjaGVjayAoeCVz dHJfY29tcCwgImFiY2RlZmdoaWprbG1ub3AiKQorICB4JXN0cl9jb21wID0g Inh5eiIKKyAgY2FsbCBjaGVjayAoeCVzdHJfY29tcCwgInh5eiIpCisgIHgl c3RyX2NvbXAgPSAiYWJjZGVmZ2hpamtsbW5vcCIKKyAgeCVzdHJfY29tcDEg PSAibG1ub3BxcnN0IgorICBjYWxsIGZvbyAoeCVzdHJfY29tcDEsICJsbW5v cHFyc3QiKQorICBjYWxsIGJhciAoeCwgImFiY2RlZmdoaWprbG1ub3AiLCAi bG1ub3BxcnN0IikKKworISBDaGVjayBhcnJheXMgYW5kIHN0cnVjdHVyZSBj b25zdHJ1Y3RvcnMKKyAgYWxsb2NhdGUgKGFycmF5KDIpLCBzb3VyY2UgPSBb dCgiYWJjZWRlZmciLCJoaSIpLCB0KCJqa2wiLCJtbm9wIildKQorICBjYWxs IGNoZWNrIChhcnJheSgxKSVzdHJfY29tcCwgImFiY2VkZWZnIikKKyAgY2Fs bCBjaGVjayAoYXJyYXkoMSklc3RyX2NvbXAxLCAiaGkiKQorICBjYWxsIGNo ZWNrIChhcnJheSgyKSVzdHJfY29tcCwgImprbCIpCisgIGNhbGwgY2hlY2sg KGFycmF5KDIpJXN0cl9jb21wMSwgIm1ub3AiKQorICBkZWFsbG9jYXRlIChh cnJheSkKKyAgYWxsb2NhdGUgKGFycmF5KDMpLCBzb3VyY2UgPSBbeCwgeCwg eF0pCisgIGFycmF5KDIpJXN0cl9jb21wID0gImJsb29leSIKKyAgY2FsbCBi YXIgKGFycmF5KDEpLCAiYWJjZGVmZ2hpamtsbW5vcCIsICJsbW5vcHFyc3Qi KQorICBjYWxsIGJhciAoYXJyYXkoMiksICJibG9vZXkiLCAibG1ub3BxcnN0 IikKKyAgY2FsbCBiYXIgKGFycmF5KDMpLCAiYWJjZGVmZ2hpamtsbW5vcCIs ICJsbW5vcHFyc3QiKQorY29udGFpbnMKKyAgc3Vicm91dGluZSBmb28gKGNo cjEsIGNocjIpCisgICAgY2hhcmFjdGVyICgqKSA6OiBjaHIxLCBjaHIyCisg ICAgY2FsbCBjaGVjayAoY2hyMSwgY2hyMikKKyAgZW5kIHN1YnJvdXRpbmUK KyAgc3Vicm91dGluZSBiYXIgKGEsIGNocjEsIGNocjIpCisgICAgY2hhcmFj dGVyICgqKSA6OiBjaHIxLCBjaHIyCisgICAgdHlwZSh0KSA6OiBhCisgICAg Y2FsbCBjaGVjayAoYSVzdHJfY29tcCwgY2hyMSkKKyAgICBjYWxsIGNoZWNr IChhJXN0cl9jb21wMSwgY2hyMikKKyAgZW5kIHN1YnJvdXRpbmUKKyAgc3Vi cm91dGluZSBjaGVjayAoY2hyMSwgY2hyMikKKyAgICBjaGFyYWN0ZXIgKCop IDo6IGNocjEsIGNocjIKKyAgICBpZiAobGVuKGNocjEpIC5uZS4gbGVuIChj aHIyKSkgY2FsbCBhYm9ydAorICAgIGlmIChjaHIxIC5uZS4gY2hyMikgY2Fs bCBhYm9ydAorICBlbmQgc3Vicm91dGluZQorZW5kCg== --001a11c1390ae62cd004f2c45c47--