From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 78643 invoked by alias); 30 Nov 2017 12:47:58 -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 78625 invoked by uid 89); 30 Nov 2017 12:47:57 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-5.3 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_2,KAM_ASCII_DIVIDERS,KB_WAM_FROM_NAME_SINGLEWORD,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=cm, tse, tweaks, c2 X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-yb0-f170.google.com Received: from mail-yb0-f170.google.com (HELO mail-yb0-f170.google.com) (209.85.213.170) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 30 Nov 2017 12:47:53 +0000 Received: by mail-yb0-f170.google.com with SMTP id 184so2626727ybw.12; Thu, 30 Nov 2017 04:47:53 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=gDEMy6yVn0D1r1/46CENueqgPuM3Ie21Ognf1hCHXvw=; b=tWoj/jm3+6dxRWxDJ24ZbTy3M63wqqVrz+se4H5MCC5uFxCNU8kueHIvNvD7MZiK8I sG7xAVQHkaccQp7gRylNBOcAOmA49+ZNNOJye3k0sAdrS0R0pYznhtAmWpTewp2xc9ca sO2nBdpqPH+mL4DXHeyh3OUArDE0D3tnZDK8QWNwlOsaeEZtpHdJ74nwvs69ShWaI/we CAXKwSwTAkNmEhf9MRjZJtBUtTrCxDQ4kS8+BPqI2dYA94jDikbTaWTDPOVLN9eW28YE 8tLDW3kmWcU2dCVKcAHXuJL8nU5SJdcbmevj3vCiPMgfd5PK/BzC9nkQDL5v+hCm88sv DZzw== X-Gm-Message-State: AJaThX6YxXxqx3n0JZPGTw8/rmFZShtf32YRpc97MhwhhAeGNs7uCs/H 9II3yQePbjgoAoXKJemHV5Uj326WOt6+OWwrq8Sd3A== X-Google-Smtp-Source: AGs4zMYG6L47tWb8++QPOf53Nrv/OYorlZCpFpqpuXqT/v/BPjQuFcl9IUVpFCQhvZ2a1vAF7kBW0R8P6/qrYBM6EzA= X-Received: by 10.37.183.197 with SMTP id u5mr1339647ybj.48.1512046071481; Thu, 30 Nov 2017 04:47:51 -0800 (PST) MIME-Version: 1.0 Received: by 10.129.156.81 with HTTP; Thu, 30 Nov 2017 04:47:50 -0800 (PST) From: Paul Richard Thomas Date: Thu, 30 Nov 2017 13:10:00 -0000 Message-ID: Subject: [Patch, fortran] PRs 82605, 82606 and 82622 - PDT problems To: "fortran@gcc.gnu.org" , gcc-patches Content-Type: multipart/mixed; boundary="089e0822edf8f9b53a055f32a8a7" X-SW-Source: 2017-11/txt/msg02561.txt.bz2 --089e0822edf8f9b53a055f32a8a7 Content-Type: text/plain; charset="UTF-8" Content-length: 2193 This patch fixes the above PRs and the additional problems in comment #1 of both 82606 and 82622. For the main part, the patch consists of 'obvious' tweaks to the PDT machinery. The exception to this is the chunk in trans-array.c(set_loop_bounds), which is needed to handle parameterized array components coming from trans-io.c. This is safe because the code would have fallen through to gcc_unreachable otherwise. If the info->end is present then this can be used. Bootstrapped and regtested on FC23/x86_64 - OK for trunk? I will commit tomorrow morning if there are no complaints in the meantime. Regards Paul 2017-11-30 Paul Thomas PR fortran/82605 * resolve.c (get_pdt_constructor): Initialize 'cons' to NULL. (resolve_pdt): Correct typo in prior comment. Emit an error if any parameters are deferred and the object is neither pointer nor allocatable. PR fortran/82606 * decl.c (gfc_get_pdt_instance): Continue if the parameter sym is not present or has no name. Select the parameter by name of component, rather than component order. Remove all the other manipulations of 'tail' when building the pdt instance. (gfc_match_formal_arglist): Emit and error if a star is picked up in a PDT decl parameter list. PR fortran/82622 * trans-array.c (set_loop_bounds): If a GFC_SS_COMPONENT has an info->end, use it rather than falling through to gcc_unreachable. (structure_alloc_comps): Check that param->name is non-null before comparing with the component name. * trans-decl.c (gfc_get_symbol_decl): Do not use the static initializer for PDT symbols. (gfc_init_default_dt): Do nothing for PDT symbols. * trans-io.c (transfer_array_component): Parameterized array components use the descriptor ubound since the shape is not available. 2017-11-30 Paul Thomas PR fortran/82605 * gfortran.dg/pdt_4.f03 : Incorporate the new error. PR fortran/82606 * gfortran.dg/pdt_19.f03 : New test. * gfortran.dg/pdt_21.f03 : New test. PR fortran/82622 * gfortran.dg/pdt_20.f03 : New test. * gfortran.dg/pdt_22.f03 : New test. --089e0822edf8f9b53a055f32a8a7 Content-Type: text/plain; charset="US-ASCII"; name="submit_all.diff" Content-Disposition: attachment; filename="submit_all.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jamh5ad40 Content-length: 19602 SW5kZXg6IGdjYy9mb3J0cmFuL2RlY2wuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CioqKiBnY2MvZm9ydHJhbi9kZWNsLmMJKHJldmlzaW9uIDI1NTI0OSkK LS0tIGdjYy9mb3J0cmFuL2RlY2wuYwkod29ya2luZyBjb3B5KQoqKioqKioq KioqKioqKiogZ2ZjX2dldF9wZHRfaW5zdGFuY2UgKGdmY19hY3R1YWxfYXJn bGlzdAoqKiogMzI1MCwzMjU1ICoqKioKLS0tIDMyNTAsMzI1OCAtLS0tCiAg CW5hbWVfc2VlbiA9IHRydWU7CiAgICAgICAgcGFyYW0gPSB0eXBlX3BhcmFt X25hbWVfbGlzdC0+c3ltOwogIAorICAgICAgIGlmICghcGFyYW0gfHwgIXBh cmFtLT5uYW1lKQorIAljb250aW51ZTsKKyAKICAgICAgICBjMSA9IGdmY19m aW5kX2NvbXBvbmVudCAocGR0LCBwYXJhbS0+bmFtZSwgZmFsc2UsIHRydWUs IE5VTEwpOwogICAgICAgIC8qIEFuIGVycm9yIHNob3VsZCBhbHJlYWR5IGhh dmUgYmVlbiB0aHJvd24gaW4gcmVzb2x2ZS5jCiAgCSAocmVzb2x2ZV9mbF9k ZXJpdmVkMCkuICAqLwoqKioqKioqKioqKioqKiogZ2ZjX2dldF9wZHRfaW5z dGFuY2UgKGdmY19hY3R1YWxfYXJnbGlzdAoqKiogMzQwNiwzNDE0ICoqKioK LS0tIDM0MDksMzQyNyAtLS0tCiAgICBmb3IgKDsgYzE7IGMxID0gYzEtPm5l eHQpCiAgICAgIHsKICAgICAgICBnZmNfYWRkX2NvbXBvbmVudCAoaW5zdGFu Y2UsIGMxLT5uYW1lLCAmYzIpOworIAogICAgICAgIGMyLT50cyA9IGMxLT50 czsKICAgICAgICBjMi0+YXR0ciA9IGMxLT5hdHRyOwogIAorICAgICAgIC8q IFRoZSBvcmRlciBvZiBkZWNsYXJhdGlvbiBvZiB0aGUgdHlwZV9zcGVjcyBt aWdodCBub3QgYmUgdGhlCisgCSBzYW1lIGFzIHRoYXQgb2YgdGhlIGNvbXBv bmVudHMuICAqLworICAgICAgIGlmIChjMS0+YXR0ci5wZHRfa2luZCB8fCBj MS0+YXR0ci5wZHRfbGVuKQorIAl7CisgCSAgZm9yICh0YWlsID0gdHlwZV9w YXJhbV9zcGVjX2xpc3Q7IHRhaWw7IHRhaWwgPSB0YWlsLT5uZXh0KQorIAkg ICAgaWYgKHN0cmNtcCAoYzEtPm5hbWUsIHRhaWwtPm5hbWUpID09IDApCisg CSAgICAgIGJyZWFrOworIAl9CisgCiAgICAgICAgLyogRGVhbCB3aXRoIHR5 cGUgZXh0ZW5zaW9uIGJ5IHJlY3Vyc2l2ZWx5IGNhbGxpbmcgdGhpcyBmdW5j dGlvbgogIAkgdG8gb2J0YWluIHRoZSBpbnN0YW5jZSBvZiB0aGUgZXh0ZW5k ZWQgdHlwZS4gICovCiAgICAgICAgaWYgKGdmY19jdXJyZW50X3N0YXRlICgp ICE9IENPTVBfREVSSVZFRAoqKioqKioqKioqKioqKiogZ2ZjX2dldF9wZHRf aW5zdGFuY2UgKGdmY19hY3R1YWxfYXJnbGlzdAoqKiogMzQ1MywzNDY0ICoq KioKICAJICAgIH0KICAJICBpbnN0YW5jZS0+YXR0ci5leHRlbnNpb24gPSBj Mi0+dHMudS5kZXJpdmVkLT5hdHRyLmV4dGVuc2lvbiArIDE7CiAgCi0gCSAg LyogQWR2YW5jZSB0aGUgcG9zaXRpb24gaW4gdGhlIHNwZWMgbGlzdCBieSB0 aGUgbnVtYmVyIG9mCi0gCSAgICAgcGFyYW1ldGVycyBpbiB0aGUgZXh0ZW5k ZWQgdHlwZS4gICovCi0gCSAgdGFpbCA9IHR5cGVfcGFyYW1fc3BlY19saXN0 OwotIAkgIGZvciAoZiA9IGMxLT50cy51LmRlcml2ZWQtPmZvcm1hbDsgZiAm JiBmLT5uZXh0OyBmID0gZi0+bmV4dCkKLSAJICAgIHRhaWwgPSB0YWlsLT5u ZXh0OwotIAogIAkgIGNvbnRpbnVlOwogIAl9CiAgCi0tLSAzNDY2LDM0NzEg LS0tLQoqKioqKioqKioqKioqKiogZ2ZjX2dldF9wZHRfaW5zdGFuY2UgKGdm Y19hY3R1YWxfYXJnbGlzdAoqKiogMzUwOSwzNTE2ICoqKioKICAKICAJICBp ZiAoIWMyLT5pbml0aWFsaXplciAmJiBjMS0+aW5pdGlhbGl6ZXIpCiAgCSAg ICBjMi0+aW5pdGlhbGl6ZXIgPSBnZmNfY29weV9leHByIChjMS0+aW5pdGlh bGl6ZXIpOwotIAotIAkgIHRhaWwgPSB0YWlsLT5uZXh0OwogIAl9CiAgCiAg ICAgICAgLyogQ29weSB0aGUgYXJyYXkgc3BlYy4gICovCi0tLSAzNTE2LDM1 MjEgLS0tLQoqKioqKioqKioqKioqKiogZ2ZjX21hdGNoX2Zvcm1hbF9hcmds aXN0IChnZmNfc3ltYm9sICpwcgoqKiogNTk0NCw1OTU1ICoqKioKICAgICAg ICBpZiAoZ2ZjX21hdGNoX2NoYXIgKCcqJykgPT0gTUFUQ0hfWUVTKQogIAl7 CiAgCSAgc3ltID0gTlVMTDsKISAJICBpZiAoIWdmY19ub3RpZnlfc3RkIChH RkNfU1REX0Y5NV9PQlMsICJBbHRlcm5hdGUtcmV0dXJuIGFyZ3VtZW50ICIK ISAJCQkgICAgICAgImF0ICVDIikpCiAgCSAgICB7CiAgCSAgICAgIG0gPSBN QVRDSF9FUlJPUjsKICAJICAgICAgZ290byBjbGVhbnVwOwogIAkgICAgfQog IAl9CiAgICAgICAgZWxzZQogIAl7Ci0tLSA1OTQ5LDU5NjIgLS0tLQogICAg ICAgIGlmIChnZmNfbWF0Y2hfY2hhciAoJyonKSA9PSBNQVRDSF9ZRVMpCiAg CXsKICAJICBzeW0gPSBOVUxMOwohIAkgIGlmICghdHlwZXBhcmFtICYmICFn ZmNfbm90aWZ5X3N0ZCAoR0ZDX1NURF9GOTVfT0JTLAohIAkJCSAgICAgIkFs dGVybmF0ZS1yZXR1cm4gYXJndW1lbnQgYXQgJUMiKSkKICAJICAgIHsKICAJ ICAgICAgbSA9IE1BVENIX0VSUk9SOwogIAkgICAgICBnb3RvIGNsZWFudXA7 CiAgCSAgICB9CisgCSAgZWxzZSBpZiAodHlwZXBhcmFtKQorIAkgICAgZ2Zj X2Vycm9yX25vdyAoIkEgcGFyYW1ldGVyIG5hbWUgaXMgcmVxdWlyZWQgYXQg JUMiKTsKICAJfQogICAgICAgIGVsc2UKICAJewpJbmRleDogZ2NjL2ZvcnRy YW4vcmVzb2x2ZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKioqIGdjYy9m b3J0cmFuL3Jlc29sdmUuYwkocmV2aXNpb24gMjU1MjQ5KQotLS0gZ2NjL2Zv cnRyYW4vcmVzb2x2ZS5jCSh3b3JraW5nIGNvcHkpCioqKioqKioqKioqKioq KiBzdGF0aWMgYm9vbAoqKiogMTE3NCwxMTgwICoqKioKICBnZXRfcGR0X2Nv bnN0cnVjdG9yIChnZmNfZXhwciAqZXhwciwgZ2ZjX2NvbnN0cnVjdG9yICoq Y29uc3RyLAogIAkJICAgICBnZmNfc3ltYm9sICpkZXJpdmVkKQogIHsKISAg IGdmY19jb25zdHJ1Y3RvciAqY29uczsKICAgIGdmY19jb21wb25lbnQgKmNv bXA7CiAgICBib29sIHQgPSB0cnVlOwogIAotLS0gMTE3NCwxMTgwIC0tLS0K ICBnZXRfcGR0X2NvbnN0cnVjdG9yIChnZmNfZXhwciAqZXhwciwgZ2ZjX2Nv bnN0cnVjdG9yICoqY29uc3RyLAogIAkJICAgICBnZmNfc3ltYm9sICpkZXJp dmVkKQogIHsKISAgIGdmY19jb25zdHJ1Y3RvciAqY29ucyA9IE5VTEw7CiAg ICBnZmNfY29tcG9uZW50ICpjb21wOwogICAgYm9vbCB0ID0gdHJ1ZTsKICAK KioqKioqKioqKioqKioqIHJlc29sdmVfZmxfZGVyaXZlZDAgKGdmY19zeW1i b2wgKnN5bSkKKioqIDE0MDEwLDE0MDE1ICoqKioKLS0tIDE0MDEwLDE0MDE3 IC0tLS0KICAgICAgewogICAgICAgIGZvciAoZiA9IHN5bS0+Zm9ybWFsOyBm OyBmID0gZi0+bmV4dCkKICAJeworIAkgIGlmICghZi0+c3ltKQorIAkgICAg Y29udGludWU7CiAgCSAgYyA9IGdmY19maW5kX2NvbXBvbmVudCAoc3ltLCBm LT5zeW0tPm5hbWUsIHRydWUsIHRydWUsIE5VTEwpOwogIAkgIGlmIChjID09 IE5VTEwpCiAgCSAgICB7CioqKioqKioqKioqKioqKiByZXNvbHZlX2ZsX3Bh cmFtZXRlciAoZ2ZjX3N5bWJvbCAqc3ltKQoqKiogMTQyODMsMTQyODkgKioq KgogIH0KICAKICAKISAvKiBDYWxsZWQgYnkgcmVzb2x2ZV9zeW1ib2wgdG8g Y2hhY2sgUERUcy4gICovCiAgCiAgc3RhdGljIHZvaWQKICByZXNvbHZlX3Bk dCAoZ2ZjX3N5bWJvbCogc3ltKQotLS0gMTQyODUsMTQyOTEgLS0tLQogIH0K ICAKICAKISAvKiBDYWxsZWQgYnkgcmVzb2x2ZV9zeW1ib2wgdG8gY2hlY2sg UERUcy4gICovCiAgCiAgc3RhdGljIHZvaWQKICByZXNvbHZlX3BkdCAoZ2Zj X3N5bWJvbCogc3ltKQoqKioqKioqKioqKioqKiogcmVzb2x2ZV9wZHQgKGdm Y19zeW1ib2wqIHN5bSkKKioqIDE0MjkzLDE0MzAzICoqKioKICAgIGdmY19j b21wb25lbnQgKmM7CiAgICBib29sIGNvbnN0X2xlbl9leHBycyA9IHRydWU7 CiAgICBib29sIGFzc3VtZWRfbGVuX2V4cHJzID0gZmFsc2U7CiAgCiAgICBp ZiAoc3ltLT50cy50eXBlID09IEJUX0RFUklWRUQpCiEgICAgIGRlcml2ZWQg PSBzeW0tPnRzLnUuZGVyaXZlZDsKICAgIGVsc2UgaWYgKHN5bS0+dHMudHlw ZSA9PSBCVF9DTEFTUykKISAgICAgZGVyaXZlZCA9IENMQVNTX0RBVEEgKHN5 bSktPnRzLnUuZGVyaXZlZDsKICAgIGVsc2UKICAgICAgZ2NjX3VucmVhY2hh YmxlICgpOwogIAotLS0gMTQyOTUsMTQzMTIgLS0tLQogICAgZ2ZjX2NvbXBv bmVudCAqYzsKICAgIGJvb2wgY29uc3RfbGVuX2V4cHJzID0gdHJ1ZTsKICAg IGJvb2wgYXNzdW1lZF9sZW5fZXhwcnMgPSBmYWxzZTsKKyAgIHN5bWJvbF9h dHRyaWJ1dGUgKmF0dHI7CiAgCiAgICBpZiAoc3ltLT50cy50eXBlID09IEJU X0RFUklWRUQpCiEgICAgIHsKISAgICAgICBkZXJpdmVkID0gc3ltLT50cy51 LmRlcml2ZWQ7CiEgICAgICAgYXR0ciA9ICYoc3ltLT5hdHRyKTsKISAgICAg fQogICAgZWxzZSBpZiAoc3ltLT50cy50eXBlID09IEJUX0NMQVNTKQohICAg ICB7CiEgICAgICAgZGVyaXZlZCA9IENMQVNTX0RBVEEgKHN5bSktPnRzLnUu ZGVyaXZlZDsKISAgICAgICBhdHRyID0gJihDTEFTU19EQVRBIChzeW0pLT5h dHRyKTsKISAgICAgfQogICAgZWxzZQogICAgICBnY2NfdW5yZWFjaGFibGUg KCk7CiAgCioqKioqKioqKioqKioqKiByZXNvbHZlX3BkdCAoZ2ZjX3N5bWJv bCogc3ltKQoqKiogMTQzMTUsMTQzMjAgKioqKgotLS0gMTQzMjQsMTQzMzcg LS0tLQogIAljb25zdF9sZW5fZXhwcnMgPSBmYWxzZTsKICAgICAgICBlbHNl IGlmIChwYXJhbS0+c3BlY190eXBlID09IFNQRUNfQVNTVU1FRCkKICAJYXNz dW1lZF9sZW5fZXhwcnMgPSB0cnVlOworIAorICAgICAgIGlmIChwYXJhbS0+ c3BlY190eXBlID09IFNQRUNfREVGRVJSRUQKKyAJICAmJiAhYXR0ci0+YWxs b2NhdGFibGUgJiYgIWF0dHItPnBvaW50ZXIpCisgCWdmY19lcnJvciAoIlRo ZSBvYmplY3QgJXFzIGF0ICVMIGhhcyBhIGRlZmVycmVkIExFTiAiCisgCQkg ICAicGFyYW1ldGVyICVxcyBhbmQgaXMgbmVpdGhlciBhbGxvY2F0YWJsZSAi CisgCQkgICAibm9yIGEgcG9pbnRlciIsIHN5bS0+bmFtZSwgJnN5bS0+ZGVj bGFyZWRfYXQsCisgCQkgICBwYXJhbS0+bmFtZSk7CisgCiAgICAgIH0KICAK ICAgIGlmICghY29uc3RfbGVuX2V4cHJzCkluZGV4OiBnY2MvZm9ydHJhbi90 cmFucy1hcnJheS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKioqIGdjYy9m b3J0cmFuL3RyYW5zLWFycmF5LmMJKHJldmlzaW9uIDI1NTI0OSkKLS0tIGdj Yy9mb3J0cmFuL3RyYW5zLWFycmF5LmMJKHdvcmtpbmcgY29weSkKKioqKioq KioqKioqKioqIHNldF9sb29wX2JvdW5kcyAoZ2ZjX2xvb3BpbmZvICpsb29w KQoqKiogNTA0Myw1MDQ4ICoqKioKLS0tIDUwNDMsNTA1OSAtLS0tCiAgCQli cmVhazsKICAJICAgICAgfQogIAorIAkgICAgY2FzZSBHRkNfU1NfQ09NUE9O RU5UOgorIAkgICAgICB7CisgCQlpZiAoaW5mby0+ZW5kW2RpbV0gIT0gTlVM TF9UUkVFKQorIAkJICB7CisgCQkgICAgbG9vcC0+dG9bbl0gPSBpbmZvLT5l bmRbZGltXTsKKyAJCSAgICBicmVhazsKKyAJCSAgfQorIAkJZWxzZQorIAkJ ICBnY2NfdW5yZWFjaGFibGUgKCk7CisgCSAgICAgIH0KKyAKICAJICAgIGRl ZmF1bHQ6CiAgCSAgICAgIGdjY191bnJlYWNoYWJsZSAoKTsKICAJICAgIH0K KioqKioqKioqKioqKioqIHN0cnVjdHVyZV9hbGxvY19jb21wcyAoZ2ZjX3N5 bWJvbCAqIGRlcl8KKioqIDg5NzUsODk4MSAqKioqCiAgCSAgICAgIGdmY19h Y3R1YWxfYXJnbGlzdCAqcGFyYW0gPSBwZHRfcGFyYW1fbGlzdDsKICAJICAg ICAgZ2ZjX2luaXRfc2UgKCZ0c2UsIE5VTEwpOwogIAkgICAgICBmb3IgKDsg cGFyYW07IHBhcmFtID0gcGFyYW0tPm5leHQpCiEgCQlpZiAoIXN0cmNtcCAo Yy0+bmFtZSwgcGFyYW0tPm5hbWUpKQogIAkJICBjX2V4cHIgPSBwYXJhbS0+ ZXhwcjsKICAKICAJICAgICAgaWYgKCFjX2V4cHIpCi0tLSA4OTg2LDg5OTIg LS0tLQogIAkgICAgICBnZmNfYWN0dWFsX2FyZ2xpc3QgKnBhcmFtID0gcGR0 X3BhcmFtX2xpc3Q7CiAgCSAgICAgIGdmY19pbml0X3NlICgmdHNlLCBOVUxM KTsKICAJICAgICAgZm9yICg7IHBhcmFtOyBwYXJhbSA9IHBhcmFtLT5uZXh0 KQohIAkJaWYgKHBhcmFtLT5uYW1lICYmICFzdHJjbXAgKGMtPm5hbWUsIHBh cmFtLT5uYW1lKSkKICAJCSAgY19leHByID0gcGFyYW0tPmV4cHI7CiAgCiAg CSAgICAgIGlmICghY19leHByKQpJbmRleDogZ2NjL2ZvcnRyYW4vdHJhbnMt ZGVjbC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKioqIGdjYy9mb3J0cmFu L3RyYW5zLWRlY2wuYwkocmV2aXNpb24gMjU1MjQ5KQotLS0gZ2NjL2ZvcnRy YW4vdHJhbnMtZGVjbC5jCSh3b3JraW5nIGNvcHkpCioqKioqKioqKioqKioq KiBnZmNfZ2V0X3N5bWJvbF9kZWNsIChnZmNfc3ltYm9sICogc3ltKQoqKiog MTgwOSwxODE1ICoqKioKICAJICB8fCAhZ2ZjX2Nhbl9wdXRfdmFyX29uX3N0 YWNrIChERUNMX1NJWkVfVU5JVCAoZGVjbCkpCiAgCSAgfHwgc3ltLT5hdHRy LmRhdGEgfHwgc3ltLT5ucy0+cHJvY19uYW1lLT5hdHRyLmZsYXZvciA9PSBG TF9NT0RVTEUpCiAgICAgICAgJiYgKGZsYWdfY29hcnJheSAhPSBHRkNfRkNP QVJSQVlfTElCCiEgCSAgfHwgIXN5bS0+YXR0ci5jb2RpbWVuc2lvbiB8fCBz eW0tPmF0dHIuYWxsb2NhdGFibGUpKQogICAgICB7CiAgICAgICAgLyogQWRk IHN0YXRpYyBpbml0aWFsaXplci4gRm9yIHByb2NlZHVyZXMsIGl0IGlzIG9u bHkgbmVlZGVkIGlmCiAgCSBTQVZFIGlzIHNwZWNpZmllZCBvdGhlcndpc2Ug dGhleSBuZWVkIHRvIGJlIHJlaW5pdGlhbGl6ZWQKLS0tIDE4MDksMTgxOCAt LS0tCiAgCSAgfHwgIWdmY19jYW5fcHV0X3Zhcl9vbl9zdGFjayAoREVDTF9T SVpFX1VOSVQgKGRlY2wpKQogIAkgIHx8IHN5bS0+YXR0ci5kYXRhIHx8IHN5 bS0+bnMtPnByb2NfbmFtZS0+YXR0ci5mbGF2b3IgPT0gRkxfTU9EVUxFKQog ICAgICAgICYmIChmbGFnX2NvYXJyYXkgIT0gR0ZDX0ZDT0FSUkFZX0xJQgoh IAkgIHx8ICFzeW0tPmF0dHIuY29kaW1lbnNpb24gfHwgc3ltLT5hdHRyLmFs bG9jYXRhYmxlKQohICAgICAgICYmICEoc3ltLT50cy50eXBlID09IEJUX0RF UklWRUQgJiYgc3ltLT50cy51LmRlcml2ZWQtPmF0dHIucGR0X3R5cGUpCiEg ICAgICAgJiYgIShzeW0tPnRzLnR5cGUgPT0gQlRfQ0xBU1MKISAJICAgJiYg Q0xBU1NfREFUQSAoc3ltKS0+dHMudS5kZXJpdmVkLT5hdHRyLnBkdF90eXBl KSkKICAgICAgewogICAgICAgIC8qIEFkZCBzdGF0aWMgaW5pdGlhbGl6ZXIu IEZvciBwcm9jZWR1cmVzLCBpdCBpcyBvbmx5IG5lZWRlZCBpZgogIAkgU0FW RSBpcyBzcGVjaWZpZWQgb3RoZXJ3aXNlIHRoZXkgbmVlZCB0byBiZSByZWlu aXRpYWxpemVkCioqKioqKioqKioqKioqKiBnZmNfaW5pdF9kZWZhdWx0X2R0 IChnZmNfc3ltYm9sICogc3ltLCBzCioqKiA0MDA0LDQwMDkgKioqKgotLS0g NDAwNyw0MDE2IC0tLS0KICAKICAgIGdjY19hc3NlcnQgKGJsb2NrKTsKICAK KyAgIC8qIEluaXRpYWxpemF0aW9uIG9mIFBEVHMgaXMgZG9uZSBlbHNld2hl cmUuICAqLworICAgaWYgKHN5bS0+dHMudHlwZSA9PSBCVF9ERVJJVkVEICYm IHN5bS0+dHMudS5kZXJpdmVkLT5hdHRyLnBkdF90eXBlKQorICAgICByZXR1 cm47CisgCiAgICBnY2NfYXNzZXJ0ICghc3ltLT5hdHRyLmFsbG9jYXRhYmxl KTsKICAgIGdmY19zZXRfc3ltX3JlZmVyZW5jZWQgKHN5bSk7CiAgICBlID0g Z2ZjX2x2YWxfZXhwcl9mcm9tX3N5bSAoc3ltKTsKSW5kZXg6IGdjYy9mb3J0 cmFuL3RyYW5zLWlvLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoqKiogZ2Nj L2ZvcnRyYW4vdHJhbnMtaW8uYwkocmV2aXNpb24gMjU1MjQ5KQotLS0gZ2Nj L2ZvcnRyYW4vdHJhbnMtaW8uYwkod29ya2luZyBjb3B5KQoqKioqKioqKioq KioqKiogdHJhbnNmZXJfYXJyYXlfY29tcG9uZW50ICh0cmVlIGV4cHIsIGdm YwoqKiogMjE0NiwyMTUyICoqKioKICAgIHNzID0gZ2ZjX2dldF9hcnJheV9z cyAoZ2ZjX3NzX3Rlcm1pbmF0b3IsIE5VTEwsIGNtLT5hcy0+cmFuaywKICAJ CQkgR0ZDX1NTX0NPTVBPTkVOVCk7CiAgICBzc19hcnJheSA9ICZzcy0+aW5m by0+ZGF0YS5hcnJheTsKISAgIHNzX2FycmF5LT5zaGFwZSA9IGdmY19nZXRf c2hhcGUgKGNtLT5hcy0+cmFuayk7CiAgICBzc19hcnJheS0+ZGVzY3JpcHRv ciA9IGV4cHI7CiAgICBzc19hcnJheS0+ZGF0YSA9IGdmY19jb252X2FycmF5 X2RhdGEgKGV4cHIpOwogICAgc3NfYXJyYXktPm9mZnNldCA9IGdmY19jb252 X2FycmF5X29mZnNldCAoZXhwcik7Ci0tLSAyMTQ2LDIxNTcgLS0tLQogICAg c3MgPSBnZmNfZ2V0X2FycmF5X3NzIChnZmNfc3NfdGVybWluYXRvciwgTlVM TCwgY20tPmFzLT5yYW5rLAogIAkJCSBHRkNfU1NfQ09NUE9ORU5UKTsKICAg IHNzX2FycmF5ID0gJnNzLT5pbmZvLT5kYXRhLmFycmF5OwohIAohICAgaWYg KGNtLT5hdHRyLnBkdF9hcnJheSkKISAgICAgc3NfYXJyYXktPnNoYXBlID0g TlVMTDsKISAgIGVsc2UKISAgICAgc3NfYXJyYXktPnNoYXBlID0gZ2ZjX2dl dF9zaGFwZSAoY20tPmFzLT5yYW5rKTsKISAKICAgIHNzX2FycmF5LT5kZXNj cmlwdG9yID0gZXhwcjsKICAgIHNzX2FycmF5LT5kYXRhID0gZ2ZjX2NvbnZf YXJyYXlfZGF0YSAoZXhwcik7CiAgICBzc19hcnJheS0+b2Zmc2V0ID0gZ2Zj X2NvbnZfYXJyYXlfb2Zmc2V0IChleHByKTsKKioqKioqKioqKioqKioqIHRy YW5zZmVyX2FycmF5X2NvbXBvbmVudCAodHJlZSBleHByLCBnZmMKKioqIDIx NTUsMjE2NCAqKioqCiAgICAgICAgc3NfYXJyYXktPnN0YXJ0W25dID0gZ2Zj X2NvbnZfYXJyYXlfbGJvdW5kIChleHByLCBuKTsKICAgICAgICBzc19hcnJh eS0+c3RyaWRlW25dID0gZ2ZjX2luZGV4X29uZV9ub2RlOwogIAohICAgICAg IG1wel9pbml0IChzc19hcnJheS0+c2hhcGVbbl0pOwohICAgICAgIG1wel9z dWIgKHNzX2FycmF5LT5zaGFwZVtuXSwgY20tPmFzLT51cHBlcltuXS0+dmFs dWUuaW50ZWdlciwKISAgICAgICAgICAgICAgICBjbS0+YXMtPmxvd2VyW25d LT52YWx1ZS5pbnRlZ2VyKTsKISAgICAgICBtcHpfYWRkX3VpIChzc19hcnJh eS0+c2hhcGVbbl0sIHNzX2FycmF5LT5zaGFwZVtuXSwgMSk7CiAgICAgIH0K ICAKICAgIC8qIE9uY2Ugd2UgZ290IHNzLCB3ZSB1c2Ugc2NhbGFyaXplciB0 byBjcmVhdGUgdGhlIGxvb3AuICAqLwotLS0gMjE2MCwyMTc0IC0tLS0KICAg ICAgICBzc19hcnJheS0+c3RhcnRbbl0gPSBnZmNfY29udl9hcnJheV9sYm91 bmQgKGV4cHIsIG4pOwogICAgICAgIHNzX2FycmF5LT5zdHJpZGVbbl0gPSBn ZmNfaW5kZXhfb25lX25vZGU7CiAgCiEgICAgICAgaWYgKGNtLT5hdHRyLnBk dF9hcnJheSkKISAJc3NfYXJyYXktPmVuZFtuXSA9IGdmY19jb252X2FycmF5 X3Vib3VuZCAoZXhwciwgbik7CiEgICAgICAgZWxzZQohIAl7CiEgCSAgbXB6 X2luaXQgKHNzX2FycmF5LT5zaGFwZVtuXSk7CiEgCSAgbXB6X3N1YiAoc3Nf YXJyYXktPnNoYXBlW25dLCBjbS0+YXMtPnVwcGVyW25dLT52YWx1ZS5pbnRl Z2VyLAohIAkJICAgY20tPmFzLT5sb3dlcltuXS0+dmFsdWUuaW50ZWdlcik7 CiEgCSAgbXB6X2FkZF91aSAoc3NfYXJyYXktPnNoYXBlW25dLCBzc19hcnJh eS0+c2hhcGVbbl0sIDEpOwohIAl9CiAgICAgIH0KICAKICAgIC8qIE9uY2Ug d2UgZ290IHNzLCB3ZSB1c2Ugc2NhbGFyaXplciB0byBjcmVhdGUgdGhlIGxv b3AuICAqLwoqKioqKioqKioqKioqKiogdHJhbnNmZXJfYXJyYXlfY29tcG9u ZW50ICh0cmVlIGV4cHIsIGdmYwoqKiogMjE5MywyMjAwICoqKioKICAgIGdm Y19hZGRfYmxvY2tfdG9fYmxvY2sgKCZibG9jaywgJmxvb3AucHJlKTsKICAg IGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZibG9jaywgJmxvb3AucG9zdCk7 CiAgCiEgICBnY2NfYXNzZXJ0IChzc19hcnJheS0+c2hhcGUgIT0gTlVMTCk7 CiEgICBnZmNfZnJlZV9zaGFwZSAoJnNzX2FycmF5LT5zaGFwZSwgY20tPmFz LT5yYW5rKTsKICAgIGdmY19jbGVhbnVwX2xvb3AgKCZsb29wKTsKICAKICAg IHJldHVybiBnZmNfZmluaXNoX2Jsb2NrICgmYmxvY2spOwotLS0gMjIwMywy MjEzIC0tLS0KICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZibG9jaywg Jmxvb3AucHJlKTsKICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZibG9j aywgJmxvb3AucG9zdCk7CiAgCiEgICBpZiAoIWNtLT5hdHRyLnBkdF9hcnJh eSkKISAgICAgewohICAgICAgIGdjY19hc3NlcnQgKHNzX2FycmF5LT5zaGFw ZSAhPSBOVUxMKTsKISAgICAgICBnZmNfZnJlZV9zaGFwZSAoJnNzX2FycmF5 LT5zaGFwZSwgY20tPmFzLT5yYW5rKTsKISAgICAgfQogICAgZ2ZjX2NsZWFu dXBfbG9vcCAoJmxvb3ApOwogIAogICAgcmV0dXJuIGdmY19maW5pc2hfYmxv Y2sgKCZibG9jayk7CkluZGV4OiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRn L3BkdF8xOS5mMDMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoqKiogZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9wZHRfMTkuZjAzCShub25leGlzdGVudCkK LS0tIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcGR0XzE5LmYwMwkod29y a2luZyBjb3B5KQoqKioqKioqKioqKioqKioKKioqIDAgKioqKgotLS0gMSwx OCAtLS0tCisgISB7IGRnLWRvIGNvbXBpbGUgfQorICEKKyAhIFRlc3RzIHRo ZSBmaXggZm9yIFBSODI2MDYuCisgIQorICEgQ29udHJpYnV0ZWQgYnkgR2Vy aGFyZCBTdGVpbm1ldHogIDxnc2NmcUB0LW9ubGluZS5kZT4KKyAhCisgcHJv Z3JhbSBwCisgICAgdHlwZSB0KGEsIGIpCisgICAgICAgaW50ZWdlciwgbGVu IDo6IGIgICAhIE5vdGUgZGlmZmVyZW50IG9yZGVyIG9mIGNvbXBvbmVudCBk ZWNsYXJhdGlvbnMKKyAgICAgICBpbnRlZ2VyLCBraW5kIDo6IGEgICEgY29t cGFyZWQgd2l0aCB0aGUgdHlwZV9zcGVjX2xpc3Qgb3JkZXIuCisgICAgICAg cmVhbChhKSA6OiByKGIpCisgICAgZW5kIHR5cGUKKyAgICB0eXBlKHQoOCwg OikpLCBhbGxvY2F0YWJsZSA6OiB4CisgICAgcmVhbCh4JWEpIDo6IHkgICAg ICAgICAhIFVzZWQgdG8gZGllIGhlcmUgYmVjYXVzZSBpbml0aWFsaXplcnMg d2VyZSBtaXhlZCB1cC4KKyAgICBhbGxvY2F0ZSh0KDgsIDIpIDo6IHgpCisg ICAgaWYgKGtpbmQoeSkgLm5lLiB4JWEpIGNhbGwgYWJvcnQKKyAgICBkZWFs bG9jYXRlKHgpCisgZW5kCkluZGV4OiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFu LmRnL3BkdF8yMC5mMDMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoqKiogZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wZHRfMjAuZjAzCShub25leGlzdGVu dCkKLS0tIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcGR0XzIwLmYwMwko d29ya2luZyBjb3B5KQoqKioqKioqKioqKioqKioKKioqIDAgKioqKgotLS0g MSwyMCAtLS0tCisgISB7IGRnLWRvIHJ1biB9CisgIQorICEgVGVzdHMgdGhl IGZpeCBmb3IgUFI4MjYyMi4KKyAhCisgISBDb250cmlidXRlZCBieSBHZXJo YXJkIFN0ZWlubWV0eiAgPGdzY2ZxQHQtb25saW5lLmRlPgorICEKKyBwcm9n cmFtIHAKKyAgICB0eXBlIHQoYSkKKyAgICAgICBpbnRlZ2VyLCBsZW4gOjog YQorICAgIGVuZCB0eXBlCisgICAgdHlwZSB0MihiKQorICAgICAgIGludGVn ZXIsIGxlbiA6OiBiCisgICAgICAgdHlwZSh0KDEpKSA6OiByKGIpCisgICAg ZW5kIHR5cGUKKyAgICB0eXBlKHQyKDopKSwgYWxsb2NhdGFibGUgOjogeAor ICAgIGFsbG9jYXRlICh0MigzKSA6OiB4KSAgICAgICAgICAgICEgVXNlZCB0 byBzZWdmYXVsdCBpbiB0cmFucy1hcnJheS5jLgorICAgIGlmICh4JWIgLm5l LiAzKSBjYWxsIGFib3J0CisgICAgaWYgKHglYiAubmUuIHNpemUgKHglciwg MSkpIGNhbGwgYWJvcnQKKyAgICBpZiAoYW55ICh4JXIlYSAubmUuIDEpKSBj YWxsIGFib3J0CisgZW5kCkluZGV4OiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFu LmRnL3BkdF8yMS5mMDMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoqKiogZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wZHRfMjEuZjAzCShub25leGlzdGVu dCkKLS0tIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcGR0XzIxLmYwMwko d29ya2luZyBjb3B5KQoqKioqKioqKioqKioqKioKKioqIDAgKioqKgotLS0g MSwxNSAtLS0tCisgISB7IGRnLWRvIGNvbXBpbGUgfQorICEKKyAhIFRlc3Rz IHRoZSBmaXggZm9yIFBSODI2MDYgY29tbWVudCAjMS4KKyAhCisgISBDb250 cmlidXRlZCBieSBHZXJoYXJkIFN0ZWlubWV0eiAgPGdzY2ZxQHQtb25saW5l LmRlPgorICEKKyBwcm9ncmFtIHAKKyAgICB0eXBlIHQoYSwgYiwgKikgISB7 IGRnLWVycm9yICJBIHBhcmFtZXRlciBuYW1lIGlzIHJlcXVpcmVkIiB9Cisg ICAgICAgaW50ZWdlciwga2luZCA6OiBhCisgICAgICAgaW50ZWdlciwgbGVu IDo6IGIKKyAgICAgICByZWFsKGEpIDo6IHIoYikKKyAgICBlbmQgdHlwZQor ICAgIHR5cGUodCg4LCAzKSkgOjogeAorICAgIHJlYWwoeCVhKSA6OiB5Cisg ZW5kCkluZGV4OiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF8yMi5m MDMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQoqKiogZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9wZHRfMjIuZjAzCShub25leGlzdGVudCkKLS0tIGdjYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcGR0XzIyLmYwMwkod29ya2luZyBjb3B5 KQoqKioqKioqKioqKioqKioKKioqIDAgKioqKgotLS0gMSwyMyAtLS0tCisg ISB7IGRnLWRvIHJ1biB9CisgIQorICEgVGVzdHMgdGhlIGZpeCBmb3IgUFI4 MjYyMiBjb21tZW50ICMxLCB3aGVyZSB0aGUgZGVjbGFyYXRpb24gb2YKKyAh ICd4JyBjaG9rZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBPbmNlIGZpeGVk LCBpdCB3YXMgZm91bmQgdGhhdAorICEgSU8gd2FzIG5vdCB3b3JraW5nIGNv cnJlY3RseSBmb3IgUERUIGFycmF5IGNvbXBvbmVudHMuCisgIQorICEgQ29u dHJpYnV0ZWQgYnkgR2VyaGFyZCBTdGVpbm1ldHogIDxnc2NmcUB0LW9ubGlu ZS5kZT4KKyAhCisgcHJvZ3JhbSBwCisgICAgY2hhcmFjdGVyKDEyMCkgOjog YnVmZmVyCisgICAgaW50ZWdlciA6OiBpKDQpCisgICAgdHlwZSB0KGEpCisg ICAgICAgaW50ZWdlciwgbGVuIDo6IGEKKyAgICBlbmQgdHlwZQorICAgIHR5 cGUgdDIoYikKKyAgICAgICBpbnRlZ2VyLCBsZW4gOjogYgorICAgICAgIHR5 cGUodCgxKSkgOjogcihiKQorICAgIGVuZCB0eXBlCisgICAgdHlwZSh0Migz KSkgOjogeAorICAgIHdyaXRlIChidWZmZXIsKikgeAorICAgIHJlYWQgKGJ1 ZmZlciwqKSBpCisgICAgaWYgKGFueSAoaSAubmUuIFszLDEsMSwxXSkpIGNh bGwgYWJvcnQKKyBlbmQKSW5kZXg6IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4u ZGcvcGR0XzQuZjAzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKioqIGdjYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcGR0XzQuZjAzCShyZXZpc2lvbiAyNTUy NDkpCi0tLSBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF80LmYwMwko d29ya2luZyBjb3B5KQoqKioqKioqKioqKioqKiogY29udGFpbnMKKioqIDk2 LDEwMiAqKioqCiAgICBzdWJyb3V0aW5lIGZvbyhhcmcpCiAgICAgIHR5cGUg KG15dHlwZSg0LCAqKSkgOjogYXJnICAgICAgISBPSwogICAgZW5kIHN1YnJv dXRpbmUKISAgIHN1YnJvdXRpbmUgYmFyKGFyZykgICAgICAgICAgICAgICAh IE9LCiAgICAgIHR5cGUgKHRoeXR5cGUoOCwgOiwgNCkgOjogYXJnCiAgICBl bmQgc3Vicm91dGluZQogIGVuZAotLS0gOTYsMTA1IC0tLS0KICAgIHN1YnJv dXRpbmUgZm9vKGFyZykKICAgICAgdHlwZSAobXl0eXBlKDQsICopKSA6OiBh cmcgICAgICAhIE9LCiAgICBlbmQgc3Vicm91dGluZQohICAgc3Vicm91dGlu ZSBiYXIoYXJnKSAgICAgICAgICAgICAgICEgeyBkZy1lcnJvciAiaXMgbmVp dGhlciBhbGxvY2F0YWJsZSBub3IgYSBwb2ludGVyIiB9CiAgICAgIHR5cGUg KHRoeXR5cGUoOCwgOiwgNCkgOjogYXJnCiAgICBlbmQgc3Vicm91dGluZQor ICAgc3Vicm91dGluZSBmb29iYXIoYXJnKSAgICAgICAgICAgICEgT0sKKyAg ICAgdHlwZSAodGh5dHlwZSg4LCAqLCA0KSA6OiBhcmcKKyAgIGVuZCBzdWJy b3V0aW5lCiAgZW5kCg== --089e0822edf8f9b53a055f32a8a7--