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 6BFB93858025 for ; Fri, 10 Dec 2021 17:38:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6BFB93858025 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: ktOKyLkb1CLZlP6hRnNbQUncCb0tq2uEo/K8+y1XIVLNV2fzLMuXt+kVanlwYWFLDPVMXRJ3u4 Gn3wOYCf4MEd0xjqgFSP3dsoCkzEd0/UvES0Ytlr2wG032EeaKKJGQ5fAR/zdbxOZJnqC7iec4 oNtX8/hMNcj+QwJXhUebRhj+JkWinkti+7ZvAaBDaMsuGjoGQyBxy4xaFe4syQQy0cMtZwGpBC YK/LRtgyhglImxQH1lU3eZiFEZReyoHtCDpGSGNYBwWSOs/LuCf/FVu4Iwqfky5q3oIcgDciAu 5HXWiGK85YQ1EMlYl8kjoQZi X-IronPort-AV: E=Sophos;i="5.88,196,1635235200"; d="scan'208,223";a="72064284" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa1.mentor.iphmx.com with ESMTP; 10 Dec 2021 09:38:06 -0800 IronPort-SDR: 7Kw2nSqP5fXo9iLxcWiXjfP3uAjm9cyWAIdbgzMqTULDDVDmkuF0/zzJIwqZDtGSKZndLoPiq9 XpImndeWxxURmkqBFS2ogB6KWIGKqvZSBmSbrlDLd6pK/fXwZdjua09cQJhUsaZ4OeKz37m7o0 PW99JbAXAgamg4EMJ662W9xQ0yvcYjCnrv0D0i8/8E61RDFYZE6xBugIk4x+Atrf/7QO8joCbZ +W+rfOk947wdbwcgVDyftBMnp5gPsmTexPu2C34z4+hHQMmWgyEHPRzU/vsKju1U5LCyqPFKeN JQI= Content-Type: multipart/mixed; boundary="------------Dr0d8D2wTyBmuwEft3o7RrBd" Message-ID: <8e830d64-4a71-2799-fda4-5ca77917f832@codesourcery.com> Date: Fri, 10 Dec 2021 17:37:34 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.4.0 References: Subject: [PATCH 5/7] openmp: Add C++ support for parsing metadirectives To: gcc-patches , Jakub Jelinek From: Kwok Cheung Yeung In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: SVR-IES-MBX-07.mgc.mentorg.com (139.181.222.7) To SVR-IES-MBX-04.mgc.mentorg.com (139.181.222.4) X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, 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: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Dec 2021 17:38:09 -0000 --------------Dr0d8D2wTyBmuwEft3o7RrBd Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit This patch adds metadirective parsing support to the C++ parser. This is basically just a straight port of the C code to the C++ front end. Kwok --------------Dr0d8D2wTyBmuwEft3o7RrBd Content-Type: text/plain; charset="UTF-8"; name="0005-openmp-Add-C-support-for-parsing-metadirectives.patch" Content-Disposition: attachment; filename="0005-openmp-Add-C-support-for-parsing-metadirectives.patch" Content-Transfer-Encoding: base64 RnJvbSBlOWJiMTM4ZDRjM2Y1NjBlNDhlNDA4ZmFjY2UyMzYxNTMzNjg1YTk4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLd29rIENoZXVuZyBZZXVuZyA8a2N5QGNvZGVzb3Vy Y2VyeS5jb20+CkRhdGU6IE1vbiwgNiBEZWMgMjAyMSAyMjo1ODowMSArMDAwMApTdWJqZWN0 OiBbUEFUQ0ggNS83XSBvcGVubXA6IEFkZCBDKysgc3VwcG9ydCBmb3IgcGFyc2luZyBtZXRh ZGlyZWN0aXZlcwoKVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHBhcnNpbmcgT3Blbk1QIG1ldGFk aXJlY3RpdmVzIGluIHRoZSBDKysgZnJvbnQgZW5kLgoKMjAyMS0xMi0xMCAgS3dvayBDaGV1 bmcgWWV1bmcgIDxrY3lAY29kZXNvdXJjZXJ5LmNvbT4KCglnY2MvY3AvCgkqIHBhcnNlci5j IChjcF9wYXJzZXJfc2tpcF90b19lbmRfb2Zfc3RhdGVtZW50KTogSGFuZGxlIHBhcmVudGhl c2VzLgoJKGNwX3BhcnNlcl9za2lwX3RvX2VuZF9vZl9ibG9ja19vcl9zdGF0ZW1lbnQpOiBM aWtld2lzZS4KCShjcF9wYXJzZXJfb21wX2NvbnRleHRfc2VsZWN0b3IpOiBBZGQgZXh0cmEg YXJndW1lbnQuICBBbGxvdwoJbm9uLWNvbnN0YW50IGV4cHJlc3Npb25zLgoJKGNwX3BhcnNl cl9vbXBfY29udGV4dF9zZWxlY3Rvcl9zcGVjaWZpY2F0aW9uKTogQWRkIGV4dHJhIGFyZ3Vt ZW50IGFuZAoJcHJvcGFnYXRlIHRvIGNwX3BhcnNlcl9vbXBfY29udGV4dF9zZWxlY3Rvci4K CShhbmFseXplX21ldGFkaXJlY3RpdmVfYm9keSk6IE5ldy4KCShjcF9wYXJzZXJfb21wX21l dGFkaXJlY3RpdmUpOiBOZXcuCgkoY3BfcGFyc2VyX29tcF9jb25zdHJ1Y3QpOiBIYW5kbGUg UFJBR01BX09NUF9NRVRBRElSRUNUSVZFLgoJKGNwX3BhcnNlcl9wcmFnbWEpOiBIYW5kbGUg UFJBR01BX09NUF9NRVRBRElSRUNUSVZFLgotLS0KIGdjYy9jcC9wYXJzZXIuYyB8IDQyNSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEgZmls ZSBjaGFuZ2VkLCA0MTcgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9nY2MvY3AvcGFyc2VyLmMgYi9nY2MvY3AvcGFyc2VyLmMKaW5kZXggNmYyNzNiZmUy MWYuLmFmYmZlMTQ4OTQ5IDEwMDY0NAotLS0gYS9nY2MvY3AvcGFyc2VyLmMKKysrIGIvZ2Nj L2NwL3BhcnNlci5jCkBAIC0zOTA3LDYgKzM5MDcsMTcgQEAgY3BfcGFyc2VyX3NraXBfdG9f ZW5kX29mX3N0YXRlbWVudCAoY3BfcGFyc2VyKiBwYXJzZXIpCiAJICArK25lc3RpbmdfZGVw dGg7CiAJICBicmVhazsKIAorCWNhc2UgQ1BQX09QRU5fUEFSRU46CisJICAvKiBUcmFjayBw YXJlbnRoZXNlcyBpbiBjYXNlIHRoZSBzdGF0ZW1lbnQgaXMgYSBzdGFuZGFsb25lICdmb3In CisJICAgICBzdGF0ZW1lbnQgLSB3ZSB3YW50IHRvIHNraXAgb3ZlciB0aGUgc2VtaWNvbG9u cyBzZXBhcmF0aW5nIHRoZQorCSAgICAgb3BlcmFuZHMuICAqLworCSAgKytuZXN0aW5nX2Rl cHRoOworCSAgYnJlYWs7CisKKwljYXNlIENQUF9DTE9TRV9QQVJFTjoKKwkgIC0tbmVzdGlu Z19kZXB0aDsKKwkgIGJyZWFrOworCiAJY2FzZSBDUFBfS0VZV09SRDoKIAkgIGlmICh0b2tl bi0+a2V5d29yZCAhPSBSSURfX0VYUE9SVAogCSAgICAgICYmIHRva2VuLT5rZXl3b3JkICE9 IFJJRF9fTU9EVUxFCkBAIC0zOTk2LDYgKzQwMDcsMTcgQEAgY3BfcGFyc2VyX3NraXBfdG9f ZW5kX29mX2Jsb2NrX29yX3N0YXRlbWVudCAoY3BfcGFyc2VyKiBwYXJzZXIpCiAJICBuZXN0 aW5nX2RlcHRoKys7CiAJICBicmVhazsKIAorCWNhc2UgQ1BQX09QRU5fUEFSRU46CisJICAv KiBUcmFjayBwYXJlbnRoZXNlcyBpbiBjYXNlIHRoZSBzdGF0ZW1lbnQgaXMgYSBzdGFuZGFs b25lICdmb3InCisJICAgICBzdGF0ZW1lbnQgLSB3ZSB3YW50IHRvIHNraXAgb3ZlciB0aGUg c2VtaWNvbG9ucyBzZXBhcmF0aW5nIHRoZQorCSAgICAgb3BlcmFuZHMuICAqLworCSAgbmVz dGluZ19kZXB0aCsrOworCSAgYnJlYWs7CisKKwljYXNlIENQUF9DTE9TRV9QQVJFTjoKKwkg IG5lc3RpbmdfZGVwdGgtLTsKKwkgIGJyZWFrOworCiAJY2FzZSBDUFBfS0VZV09SRDoKIAkg IGlmICh0b2tlbi0+a2V5d29yZCAhPSBSSURfX0VYUE9SVAogCSAgICAgICYmIHRva2VuLT5r ZXl3b3JkICE9IFJJRF9fTU9EVUxFCkBAIC00NDk3Miw3ICs0NDk5NCw4IEBAIHN0YXRpYyBj b25zdCBjaGFyICpjb25zdCBvbXBfdXNlcl9zZWxlY3RvcnNbXSA9IHsKICAgICAgc2NvcmUo c2NvcmUtZXhwcmVzc2lvbikgICovCiAKIHN0YXRpYyB0cmVlCi1jcF9wYXJzZXJfb21wX2Nv bnRleHRfc2VsZWN0b3IgKGNwX3BhcnNlciAqcGFyc2VyLCB0cmVlIHNldCwgYm9vbCBoYXNf cGFybXNfcCkKK2NwX3BhcnNlcl9vbXBfY29udGV4dF9zZWxlY3RvciAoY3BfcGFyc2VyICpw YXJzZXIsIHRyZWUgc2V0LCBib29sIGhhc19wYXJtc19wLAorCQkJCWJvb2wgbWV0YWRpcmVj dGl2ZV9wKQogewogICB0cmVlIHJldCA9IE5VTExfVFJFRTsKICAgZG8KQEAgLTQ1MTg4LDE1 ICs0NTIxMSwyMSBAQCBjcF9wYXJzZXJfb21wX2NvbnRleHRfc2VsZWN0b3IgKGNwX3BhcnNl ciAqcGFyc2VyLCB0cmVlIHNldCwgYm9vbCBoYXNfcGFybXNfcCkKIAkgICAgICB3aGlsZSAo MSk7CiAJICAgICAgYnJlYWs7CiAJICAgIGNhc2UgQ1RYX1BST1BFUlRZX0VYUFI6Ci0JICAg ICAgdCA9IGNwX3BhcnNlcl9jb25zdGFudF9leHByZXNzaW9uIChwYXJzZXIpOworCSAgICAg IC8qIEFsbG93IG5vbi1jb25zdGFudCBleHByZXNzaW9ucyBpbiBtZXRhZGlyZWN0aXZlcy4g ICovCisJICAgICAgdCA9IG1ldGFkaXJlY3RpdmVfcAorCQkgID8gY3BfcGFyc2VyX2V4cHJl c3Npb24gKHBhcnNlcikKKwkJICA6IGNwX3BhcnNlcl9jb25zdGFudF9leHByZXNzaW9uIChw YXJzZXIpOwogCSAgICAgIGlmICh0ICE9IGVycm9yX21hcmtfbm9kZSkKIAkJewogCQkgIHQg PSBmb2xkX25vbl9kZXBlbmRlbnRfZXhwciAodCk7Ci0JCSAgaWYgKCF2YWx1ZV9kZXBlbmRl bnRfZXhwcmVzc2lvbl9wICh0KQotCQkgICAgICAmJiAoIUlOVEVHUkFMX1RZUEVfUCAoVFJF RV9UWVBFICh0KSkKLQkJCSAgfHwgIXRyZWVfZml0c19zaHdpX3AgKHQpKSkKKwkJICBpZiAo bWV0YWRpcmVjdGl2ZV9wICYmICFJTlRFR1JBTF9UWVBFX1AgKFRSRUVfVFlQRSAodCkpKQog CQkgICAgZXJyb3JfYXQgKHRva2VuLT5sb2NhdGlvbiwgInByb3BlcnR5IG11c3QgYmUgIgot CQkJICAgICAgImNvbnN0YW50IGludGVnZXIgZXhwcmVzc2lvbiIpOworCQkJCQkgICAgICAg ImludGVnZXIgZXhwcmVzc2lvbiIpOworCQkgIGVsc2UgaWYgKCFtZXRhZGlyZWN0aXZlX3Ag JiYgIXZhbHVlX2RlcGVuZGVudF9leHByZXNzaW9uX3AgKHQpCisJCQkgICAgJiYgKCFJTlRF R1JBTF9UWVBFX1AgKFRSRUVfVFlQRSAodCkpCisJCQkJfHwgIXRyZWVfZml0c19zaHdpX3Ag KHQpKSkKKwkJICAgIGVycm9yX2F0ICh0b2tlbi0+bG9jYXRpb24sICJwcm9wZXJ0eSBtdXN0 IGJlIGNvbnN0YW50ICIKKwkJCQkJICAgICAgICJpbnRlZ2VyIGV4cHJlc3Npb24iKTsKIAkJ ICBlbHNlCiAJCSAgICBwcm9wZXJ0aWVzID0gdHJlZV9jb25zIChOVUxMX1RSRUUsIHQsIHBy b3BlcnRpZXMpOwogCQl9CkBAIC00NTI2MCw3ICs0NTI4OSw4IEBAIGNwX3BhcnNlcl9vbXBf Y29udGV4dF9zZWxlY3RvciAoY3BfcGFyc2VyICpwYXJzZXIsIHRyZWUgc2V0LCBib29sIGhh c19wYXJtc19wKQogCiBzdGF0aWMgdHJlZQogY3BfcGFyc2VyX29tcF9jb250ZXh0X3NlbGVj dG9yX3NwZWNpZmljYXRpb24gKGNwX3BhcnNlciAqcGFyc2VyLAotCQkJCQkgICAgICBib29s IGhhc19wYXJtc19wKQorCQkJCQkgICAgICBib29sIGhhc19wYXJtc19wLAorCQkJCQkgICAg ICBib29sIG1ldGFkaXJlY3RpdmVfcCA9IGZhbHNlKQogewogICB0cmVlIHJldCA9IE5VTExf VFJFRTsKICAgZG8KQEAgLTQ1MzA4LDcgKzQ1MzM4LDggQEAgY3BfcGFyc2VyX29tcF9jb250 ZXh0X3NlbGVjdG9yX3NwZWNpZmljYXRpb24gKGNwX3BhcnNlciAqcGFyc2VyLAogCXJldHVy biBlcnJvcl9tYXJrX25vZGU7CiAKICAgICAgIHRyZWUgc2VsZWN0b3JzCi0JPSBjcF9wYXJz ZXJfb21wX2NvbnRleHRfc2VsZWN0b3IgKHBhcnNlciwgc2V0LCBoYXNfcGFybXNfcCk7CisJ PSBjcF9wYXJzZXJfb21wX2NvbnRleHRfc2VsZWN0b3IgKHBhcnNlciwgc2V0LCBoYXNfcGFy bXNfcCwKKwkJCQkJICBtZXRhZGlyZWN0aXZlX3ApOwogICAgICAgaWYgKHNlbGVjdG9ycyA9 PSBlcnJvcl9tYXJrX25vZGUpCiAJewogCSAgY3BfcGFyc2VyX3NraXBfdG9fY2xvc2luZ19i cmFjZSAocGFyc2VyKTsKQEAgLTQ1ODMxLDYgKzQ1ODYyLDM3OCBAQCBjcF9wYXJzZXJfb21w X2VuZF9kZWNsYXJlX3RhcmdldCAoY3BfcGFyc2VyICpwYXJzZXIsIGNwX3Rva2VuICpwcmFn bWFfdG9rKQogICAgIH0KIH0KIAorCisvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGNfcGFyc2Vy X29tcF9tZXRhZGlyZWN0aXZlLiAgKi8KKworc3RhdGljIHZvaWQKK2FuYWx5emVfbWV0YWRp cmVjdGl2ZV9ib2R5IChjcF9wYXJzZXIgKnBhcnNlciwKKwkJCSAgICB2ZWM8Y3BfdG9rZW4+ ICZ0b2tlbnMsCisJCQkgICAgdmVjPHRyZWU+ICZsYWJlbHMpCit7CisgIGludCBuZXN0aW5n X2RlcHRoID0gMDsKKyAgaW50IGJyYWNrZXRfZGVwdGggPSAwOworICBib29sIGluX2Nhc2Ug PSBmYWxzZTsKKyAgYm9vbCBpbl9sYWJlbF9kZWNsID0gZmFsc2U7CisKKyAgd2hpbGUgKDEp CisgICAgeworICAgICAgY3BfdG9rZW4gKnRva2VuID0gY3BfbGV4ZXJfcGVla190b2tlbiAo cGFyc2VyLT5sZXhlcik7CisgICAgICBib29sIHN0b3AgPSBmYWxzZTsKKworICAgICAgaWYg KGNwX2xleGVyX25leHRfdG9rZW5faXNfa2V5d29yZCAocGFyc2VyLT5sZXhlciwgUklEX0NB U0UpKQorCWluX2Nhc2UgPSB0cnVlOworICAgICAgZWxzZSBpZiAoY3BfbGV4ZXJfbmV4dF90 b2tlbl9pc19rZXl3b3JkIChwYXJzZXItPmxleGVyLCBSSURfTEFCRUwpKQorCWluX2xhYmVs X2RlY2wgPSB0cnVlOworCisgICAgICBzd2l0Y2ggKHRva2VuLT50eXBlKQorCXsKKwljYXNl IENQUF9FT0Y6CisJICBicmVhazsKKwljYXNlIENQUF9OQU1FOgorCSAgaWYgKCghaW5fY2Fz ZQorCSAgICAgICAmJiBjcF9sZXhlcl9udGhfdG9rZW5faXMgKHBhcnNlci0+bGV4ZXIsIDIs IENQUF9DT0xPTikpCisJICAgICAgfHwgaW5fbGFiZWxfZGVjbCkKKwkgICAgbGFiZWxzLnNh ZmVfcHVzaCAodG9rZW4tPnUudmFsdWUpOworCSAgZ290byBhZGQ7CisJY2FzZSBDUFBfT1BF Tl9CUkFDRToKKwkgICsrbmVzdGluZ19kZXB0aDsKKwkgIGdvdG8gYWRkOworCWNhc2UgQ1BQ X0NMT1NFX0JSQUNFOgorCSAgaWYgKC0tbmVzdGluZ19kZXB0aCA9PSAwKQorCSAgICBzdG9w ID0gdHJ1ZTsKKwkgIGdvdG8gYWRkOworCWNhc2UgQ1BQX09QRU5fUEFSRU46CisJICArK2Jy YWNrZXRfZGVwdGg7CisJICBnb3RvIGFkZDsKKwljYXNlIENQUF9DTE9TRV9QQVJFTjoKKwkg IC0tYnJhY2tldF9kZXB0aDsKKwkgIGdvdG8gYWRkOworCWNhc2UgQ1BQX0NPTE9OOgorCSAg aW5fY2FzZSA9IGZhbHNlOworCSAgZ290byBhZGQ7CisJY2FzZSBDUFBfU0VNSUNPTE9OOgor CSAgaWYgKG5lc3RpbmdfZGVwdGggPT0gMCAmJiBicmFja2V0X2RlcHRoID09IDApCisJICAg IHN0b3AgPSB0cnVlOworCSAgLyogTG9jYWwgbGFiZWwgZGVjbGFyYXRpb25zIGFyZSB0ZXJt aW5hdGVkIGJ5IGEgc2VtaWNvbG9uLiAgKi8KKwkgIGluX2xhYmVsX2RlY2wgPSBmYWxzZTsK KwkgIGdvdG8gYWRkOworCWRlZmF1bHQ6CisJYWRkOgorCSAgdG9rZW5zLnNhZmVfcHVzaCAo KnRva2VuKTsKKwkgIGNwX2xleGVyX2NvbnN1bWVfdG9rZW4gKHBhcnNlci0+bGV4ZXIpOwor CSAgaWYgKHN0b3ApCisJICAgIGJyZWFrOworCSAgY29udGludWU7CisJfQorICAgICAgYnJl YWs7CisgICAgfQorfQorCisvKiBPcGVuTVAgNS4wOgorCisgICMgcHJhZ21hIG9tcCBtZXRh ZGlyZWN0aXZlIFtjbGF1c2VbLCBjbGF1c2VdXQorKi8KKworc3RhdGljIHRyZWUKK2NwX3Bh cnNlcl9vbXBfbWV0YWRpcmVjdGl2ZSAoY3BfcGFyc2VyICpwYXJzZXIsIGNwX3Rva2VuICpw cmFnbWFfdG9rLAorCQkJICAgICBjaGFyICpwX25hbWUsIG9tcF9jbGF1c2VfbWFzaywgdHJl ZSAqLAorCQkJICAgICBib29sICppZl9wKQoreworICB0cmVlIHJldDsKKyAgYXV0b192ZWM8 Y3BfdG9rZW4+IGRpcmVjdGl2ZV90b2tlbnM7CisgIGF1dG9fdmVjPGNwX3Rva2VuPiBib2R5 X3Rva2VuczsKKyAgYXV0b192ZWM8dHJlZT4gYm9keV9sYWJlbHM7CisgIGF1dG9fdmVjPGNv bnN0IHN0cnVjdCBjX29tcF9kaXJlY3RpdmUgKj4gZGlyZWN0aXZlczsKKyAgYXV0b192ZWM8 dHJlZT4gY3R4czsKKyAgYm9vbCBkZWZhdWx0X3NlZW4gPSBmYWxzZTsKKyAgaW50IGRpcmVj dGl2ZV90b2tlbl9pZHggPSAwOworICBsb2NhdGlvbl90IGxvYyA9IGNwX2xleGVyX3BlZWtf dG9rZW4gKHBhcnNlci0+bGV4ZXIpLT5sb2NhdGlvbjsKKyAgdHJlZSBzdGFuZGFsb25lX2Jv ZHkgPSBOVUxMX1RSRUU7CisgIHZlYzxzdHJ1Y3Qgb21wX21ldGFkaXJlY3RpdmVfdmFyaWFu dD4gY2FuZGlkYXRlczsKKworICByZXQgPSBtYWtlX25vZGUgKE9NUF9NRVRBRElSRUNUSVZF KTsKKyAgU0VUX0VYUFJfTE9DQVRJT04gKHJldCwgbG9jKTsKKyAgVFJFRV9UWVBFIChyZXQp ID0gdm9pZF90eXBlX25vZGU7CisgIE9NUF9NRVRBRElSRUNUSVZFX0NMQVVTRVMgKHJldCkg PSBOVUxMX1RSRUU7CisgIHN0cmNhdCAocF9uYW1lLCAiIG1ldGFkaXJlY3RpdmUiKTsKKwor ICB3aGlsZSAoY3BfbGV4ZXJfbmV4dF90b2tlbl9pc19ub3QgKHBhcnNlci0+bGV4ZXIsIENQ UF9QUkFHTUFfRU9MKSkKKyAgICB7CisgICAgICBpZiAoY3BfbGV4ZXJfbmV4dF90b2tlbl9p c19ub3QgKHBhcnNlci0+bGV4ZXIsIENQUF9OQU1FKQorCSAgJiYgY3BfbGV4ZXJfbmV4dF90 b2tlbl9pc19ub3QgKHBhcnNlci0+bGV4ZXIsIENQUF9LRVlXT1JEKSkKKwl7CisJICBjcF9w YXJzZXJfZXJyb3IgKHBhcnNlciwgImV4cGVjdGVkICU8d2hlbiU+IG9yICU8ZGVmYXVsdCU+ Iik7CisJICBnb3RvIGZhaWw7CisJfQorCisgICAgICBsb2NhdGlvbl90IG1hdGNoX2xvYyA9 IGNwX2xleGVyX3BlZWtfdG9rZW4gKHBhcnNlci0+bGV4ZXIpLT5sb2NhdGlvbjsKKyAgICAg IGNvbnN0IGNoYXIgKnAKKwk9IElERU5USUZJRVJfUE9JTlRFUiAoY3BfbGV4ZXJfcGVla190 b2tlbiAocGFyc2VyLT5sZXhlciktPnUudmFsdWUpOworICAgICAgY3BfbGV4ZXJfY29uc3Vt ZV90b2tlbiAocGFyc2VyLT5sZXhlcik7CisgICAgICBib29sIGRlZmF1bHRfcCA9IHN0cmNt cCAocCwgImRlZmF1bHQiKSA9PSAwOworICAgICAgaWYgKGRlZmF1bHRfcCkKKwl7CisJICBp ZiAoZGVmYXVsdF9zZWVuKQorCSAgICB7CisJICAgICAgY3BfcGFyc2VyX2Vycm9yIChwYXJz ZXIsICJ0aGVyZSBjYW4gb25seSBiZSBvbmUgZGVmYXVsdCBjbGF1c2UgIgorCQkJCSAgICAg ICAiaW4gYSBtZXRhZGlyZWN0aXZlIik7CisJICAgICAgZ290byBmYWlsOworCSAgICB9CisJ ICBlbHNlCisJICAgIGRlZmF1bHRfc2VlbiA9IHRydWU7CisJfQorICAgICAgaWYgKCFzdHJj bXAgKHAsICJ3aGVuIikgPT0gMCAmJiAhZGVmYXVsdF9wKQorCXsKKwkgIGNwX3BhcnNlcl9l cnJvciAocGFyc2VyLCAiZXhwZWN0ZWQgJTx3aGVuJT4gb3IgJTxkZWZhdWx0JT4iKTsKKwkg IGdvdG8gZmFpbDsKKwl9CisKKyAgICAgIG1hdGNoaW5nX3BhcmVucyBwYXJlbnM7CisgICAg ICB0cmVlIGN0eCA9IE5VTExfVFJFRTsKKyAgICAgIGJvb2wgc2tpcCA9IGZhbHNlOworCisg ICAgICBpZiAoIXBhcmVucy5yZXF1aXJlX29wZW4gKHBhcnNlcikpCisJZ290byBmYWlsOwor CisgICAgICBpZiAoIWRlZmF1bHRfcCkKKwl7CisJICBjdHggPSBjcF9wYXJzZXJfb21wX2Nv bnRleHRfc2VsZWN0b3Jfc3BlY2lmaWNhdGlvbiAocGFyc2VyLCBmYWxzZSwKKwkJCQkJCQkg ICAgICB0cnVlKTsKKwkgIGlmIChjdHggPT0gZXJyb3JfbWFya19ub2RlKQorCSAgICBnb3Rv IGZhaWw7CisJICBjdHggPSBvbXBfY2hlY2tfY29udGV4dF9zZWxlY3RvciAobWF0Y2hfbG9j LCBjdHgpOworCSAgaWYgKGN0eCA9PSBlcnJvcl9tYXJrX25vZGUpCisJICAgIGdvdG8gZmFp bDsKKworCSAgLyogUmVtb3ZlIHRoZSBzZWxlY3RvciBmcm9tIGZ1cnRoZXIgY29uc2lkZXJh dGlvbiBpZiBjYW4gYmUKKwkgICAgIGV2YWx1YXRlZCBhcyBhIG5vbi1tYXRjaCBhdCB0aGlz IHBvaW50LiAgKi8KKwkgIHNraXAgPSAob21wX2NvbnRleHRfc2VsZWN0b3JfbWF0Y2hlcyAo Y3R4LCB0cnVlKSA9PSAwKTsKKworCSAgaWYgKGNwX2xleGVyX25leHRfdG9rZW5faXNfbm90 IChwYXJzZXItPmxleGVyLCBDUFBfQ09MT04pKQorCSAgICB7CisJICAgICAgY3BfcGFyc2Vy X2Vycm9yIChwYXJzZXIsICJleHBlY3RlZCBjb2xvbiIpOworCSAgICAgIGdvdG8gZmFpbDsK KwkgICAgfQorCSAgY3BfbGV4ZXJfY29uc3VtZV90b2tlbiAocGFyc2VyLT5sZXhlcik7CisJ fQorCisgICAgICAvKiBSZWFkIGluIHRoZSBkaXJlY3RpdmUgdHlwZSBhbmQgY3JlYXRlIGEg ZHVtbXkgcHJhZ21hIHRva2VuIGZvcgorCSBpdC4gICovCisgICAgICBsb2NhdGlvbl90IGxv YyA9IGNwX2xleGVyX3BlZWtfdG9rZW4gKHBhcnNlci0+bGV4ZXIpLT5sb2NhdGlvbjsKKwor ICAgICAgcCA9IE5VTEw7CisgICAgICBpZiAoY3BfbGV4ZXJfbmV4dF90b2tlbl9pcyAocGFy c2VyLT5sZXhlciwgQ1BQX0NMT1NFX1BBUkVOKSkKKwlwID0gIm5vdGhpbmciOworICAgICAg ZWxzZSBpZiAoY3BfbGV4ZXJfbmV4dF90b2tlbl9pc19rZXl3b3JkIChwYXJzZXItPmxleGVy LCBSSURfRk9SKSkKKwl7CisJICBwID0gImZvciI7CisJICBjcF9sZXhlcl9jb25zdW1lX3Rv a2VuIChwYXJzZXItPmxleGVyKTsKKwl9CisgICAgICBlbHNlIGlmIChjcF9sZXhlcl9uZXh0 X3Rva2VuX2lzIChwYXJzZXItPmxleGVyLCBDUFBfTkFNRSkpCisJeworCSAgY3BfdG9rZW4g KnRva2VuID0gY3BfbGV4ZXJfY29uc3VtZV90b2tlbiAocGFyc2VyLT5sZXhlcik7CisJICBw ID0gSURFTlRJRklFUl9QT0lOVEVSICh0b2tlbi0+dS52YWx1ZSk7CisJfQorCisgICAgICBp ZiAocCA9PSBOVUxMKQorCXsKKwkgIGNwX3BhcnNlcl9lcnJvciAocGFyc2VyLCAiZXhwZWN0 ZWQgZGlyZWN0aXZlIG5hbWUiKTsKKwkgIGdvdG8gZmFpbDsKKwl9CisKKyAgICAgIGNvbnN0 IHN0cnVjdCBjX29tcF9kaXJlY3RpdmUgKm9tcF9kaXJlY3RpdmUKKwk9IGNfb21wX2NhdGVn b3JpemVfZGlyZWN0aXZlIChwLCBOVUxMLCBOVUxMKTsKKworICAgICAgaWYgKG9tcF9kaXJl Y3RpdmUgPT0gTlVMTCkKKwl7CisJICBjcF9wYXJzZXJfZXJyb3IgKHBhcnNlciwgInVua25v d24gZGlyZWN0aXZlIG5hbWUiKTsKKwkgIGdvdG8gZmFpbDsKKwl9CisgICAgICBpZiAob21w X2RpcmVjdGl2ZS0+aWQgPT0gUFJBR01BX09NUF9NRVRBRElSRUNUSVZFKQorCXsKKwkgIGNw X3BhcnNlcl9lcnJvciAocGFyc2VyLAorCQkJICAgIm1ldGFkaXJlY3RpdmVzIGNhbm5vdCBi ZSB1c2VkIGFzIGRpcmVjdGl2ZSAiCisJCQkgICAidmFyaWFudHMiKTsKKwkgIGdvdG8gZmFp bDsKKwl9CisgICAgICBpZiAob21wX2RpcmVjdGl2ZS0+a2luZCA9PSBDX09NUF9ESVJfREVD TEFSQVRJVkUpCisJeworCSAgc29ycnlfYXQgKGxvYywgImRlY2xhcmF0aXZlIGRpcmVjdGl2 ZSB2YXJpYW50cyBhcmUgbm90IHN1cHBvcnRlZCIpOworCSAgZ290byBmYWlsOworCX0KKwor ICAgICAgaWYgKCFza2lwKQorCXsKKwkgIGNwX3Rva2VuIHByYWdtYV90b2tlbjsKKwkgIHBy YWdtYV90b2tlbi50eXBlID0gQ1BQX1BSQUdNQTsKKwkgIHByYWdtYV90b2tlbi5sb2NhdGlv biA9IGxvYzsKKwkgIHByYWdtYV90b2tlbi51LnZhbHVlID0gYnVpbGRfaW50X2NzdCAoTlVM TCwgb21wX2RpcmVjdGl2ZS0+aWQpOworCisJICBkaXJlY3RpdmVzLnNhZmVfcHVzaCAob21w X2RpcmVjdGl2ZSk7CisJICBkaXJlY3RpdmVfdG9rZW5zLnNhZmVfcHVzaCAocHJhZ21hX3Rv a2VuKTsKKwkgIGN0eHMuc2FmZV9wdXNoIChjdHgpOworCX0KKworICAgICAgLyogUmVhZCBp biB0b2tlbnMgZm9yIHRoZSBkaXJlY3RpdmUgY2xhdXNlcy4gICovCisgICAgICBpbnQgbmVz dGluZ19kZXB0aCA9IDA7CisgICAgICB3aGlsZSAoMSkKKwl7CisJICBjcF90b2tlbiAqdG9r ZW4gPSBjcF9sZXhlcl9wZWVrX3Rva2VuIChwYXJzZXItPmxleGVyKTsKKwkgIHN3aXRjaCAo dG9rZW4tPnR5cGUpCisJICAgIHsKKwkgICAgY2FzZSBDUFBfRU9GOgorCSAgICBjYXNlIENQ UF9QUkFHTUFfRU9MOgorCSAgICAgIGJyZWFrOworCSAgICBjYXNlIENQUF9PUEVOX1BBUkVO OgorCSAgICAgICsrbmVzdGluZ19kZXB0aDsKKwkgICAgICBnb3RvIGFkZDsKKwkgICAgY2Fz ZSBDUFBfQ0xPU0VfUEFSRU46CisJICAgICAgaWYgKG5lc3RpbmdfZGVwdGgtLSA9PSAwKQor CQlicmVhazsKKwkgICAgICBnb3RvIGFkZDsKKwkgICAgZGVmYXVsdDoKKwkgICAgYWRkOgor CSAgICAgIGlmICghc2tpcCkKKwkJZGlyZWN0aXZlX3Rva2Vucy5zYWZlX3B1c2ggKCp0b2tl bik7CisJICAgICAgY3BfbGV4ZXJfY29uc3VtZV90b2tlbiAocGFyc2VyLT5sZXhlcik7CisJ ICAgICAgY29udGludWU7CisJICAgIH0KKwkgIGJyZWFrOworCX0KKworICAgICAgY3BfbGV4 ZXJfY29uc3VtZV90b2tlbiAocGFyc2VyLT5sZXhlcik7CisKKyAgICAgIGlmICghc2tpcCkK Kwl7CisJICBjcF90b2tlbiBlb2xfdG9rZW4gPSB7fTsKKwkgIGVvbF90b2tlbi50eXBlID0g Q1BQX1BSQUdNQV9FT0w7CisJICBlb2xfdG9rZW4ua2V5d29yZCA9IFJJRF9NQVg7CisJICBk aXJlY3RpdmVfdG9rZW5zLnNhZmVfcHVzaCAoZW9sX3Rva2VuKTsKKwl9CisgICAgfQorICBj cF9wYXJzZXJfc2tpcF90b19wcmFnbWFfZW9sIChwYXJzZXIsIHByYWdtYV90b2spOworCisg IGlmICghZGVmYXVsdF9zZWVuKQorICAgIHsKKyAgICAgIC8qIEFkZCBhIGRlZmF1bHQgY2xh dXNlIHRoYXQgZXZhbHVhdGVzIHRvICdvbXAgbm90aGluZycuICAqLworICAgICAgY29uc3Qg c3RydWN0IGNfb21wX2RpcmVjdGl2ZSAqb21wX2RpcmVjdGl2ZQorCT0gY19vbXBfY2F0ZWdv cml6ZV9kaXJlY3RpdmUgKCJub3RoaW5nIiwgTlVMTCwgTlVMTCk7CisKKyAgICAgIGNwX3Rv a2VuIHByYWdtYV90b2tlbiA9IHt9OworICAgICAgcHJhZ21hX3Rva2VuLnR5cGUgPSBDUFBf UFJBR01BOworICAgICAgcHJhZ21hX3Rva2VuLmtleXdvcmQgPSBSSURfTUFYOworICAgICAg cHJhZ21hX3Rva2VuLmxvY2F0aW9uID0gVU5LTk9XTl9MT0NBVElPTjsKKyAgICAgIHByYWdt YV90b2tlbi51LnZhbHVlID0gYnVpbGRfaW50X2NzdCAoTlVMTCwgUFJBR01BX09NUF9OT1RI SU5HKTsKKworICAgICAgZGlyZWN0aXZlcy5zYWZlX3B1c2ggKG9tcF9kaXJlY3RpdmUpOwor ICAgICAgZGlyZWN0aXZlX3Rva2Vucy5zYWZlX3B1c2ggKHByYWdtYV90b2tlbik7CisgICAg ICBjdHhzLnNhZmVfcHVzaCAoTlVMTF9UUkVFKTsKKworICAgICAgY3BfdG9rZW4gZW9sX3Rv a2VuID0ge307CisgICAgICBlb2xfdG9rZW4udHlwZSA9IENQUF9QUkFHTUFfRU9MOworICAg ICAgZW9sX3Rva2VuLmtleXdvcmQgPSBSSURfTUFYOworICAgICAgZGlyZWN0aXZlX3Rva2Vu cy5zYWZlX3B1c2ggKGVvbF90b2tlbik7CisgICAgfQorCisgIGFuYWx5emVfbWV0YWRpcmVj dGl2ZV9ib2R5IChwYXJzZXIsIGJvZHlfdG9rZW5zLCBib2R5X2xhYmVscyk7CisKKyAgLyog UHJvY2VzcyBlYWNoIGNhbmRpZGF0ZSBkaXJlY3RpdmUuICAqLworICB1bnNpZ25lZCBpOwor ICB0cmVlIGN0eDsKKyAgY3BfbGV4ZXIgKmxleGVyOworCisgIGxleGVyID0gY3BfbGV4ZXJf YWxsb2MgKCk7CisgIGxleGVyLT5kZWJ1Z2dpbmdfcCA9IHBhcnNlci0+bGV4ZXItPmRlYnVn Z2luZ19wOworICB2ZWNfc2FmZV9yZXNlcnZlIChsZXhlci0+YnVmZmVyLAorCQkgICAgZGly ZWN0aXZlX3Rva2Vucy5sZW5ndGggKCkgKyBib2R5X3Rva2Vucy5sZW5ndGggKCkgKyAyKTsK KworICBGT1JfRUFDSF9WRUNfRUxUIChjdHhzLCBpLCBjdHgpCisgICAgeworICAgICAgbGV4 ZXItPmJ1ZmZlci0+dHJ1bmNhdGUgKDApOworCisgICAgICAvKiBBZGQgdGhlIGRpcmVjdGl2 ZSB0b2tlbnMuICAqLworICAgICAgZG8KKwlsZXhlci0+YnVmZmVyLT5xdWlja19wdXNoIChk aXJlY3RpdmVfdG9rZW5zIFtkaXJlY3RpdmVfdG9rZW5faWR4KytdKTsKKyAgICAgIHdoaWxl IChsZXhlci0+YnVmZmVyLT5sYXN0ICgpLnR5cGUgIT0gQ1BQX1BSQUdNQV9FT0wpOworCisg ICAgICAvKiBBZGQgdGhlIGJvZHkgdG9rZW5zLiAgKi8KKyAgICAgIGZvciAodW5zaWduZWQg aiA9IDA7IGogPCBib2R5X3Rva2Vucy5sZW5ndGggKCk7IGorKykKKwlsZXhlci0+YnVmZmVy LT5xdWlja19wdXNoIChib2R5X3Rva2Vuc1tqXSk7CisKKyAgICAgIC8qIE1ha2Ugc3VyZSBu b3RoaW5nIHRyaWVzIHRvIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSB0b2tlbnMuICAqLwor ICAgICAgY3BfdG9rZW4gZW9mX3Rva2VuID0ge307CisgICAgICBlb2ZfdG9rZW4udHlwZSA9 IENQUF9FT0Y7CisgICAgICBlb2ZfdG9rZW4ua2V5d29yZCA9IFJJRF9NQVg7CisgICAgICBs ZXhlci0+YnVmZmVyLT5xdWlja19wdXNoIChlb2ZfdG9rZW4pOworICAgICAgbGV4ZXItPmJ1 ZmZlci0+cXVpY2tfcHVzaCAoZW9mX3Rva2VuKTsKKworICAgICAgbGV4ZXItPm5leHRfdG9r ZW4gPSBsZXhlci0+YnVmZmVyLT5hZGRyZXNzKCk7CisgICAgICBsZXhlci0+bGFzdF90b2tl biA9IGxleGVyLT5uZXh0X3Rva2VuICsgbGV4ZXItPmJ1ZmZlci0+bGVuZ3RoICgpIC0gMTsK KworICAgICAgY3BfbGV4ZXIgKm9sZF9sZXhlciA9IHBhcnNlci0+bGV4ZXI7CisgICAgICBw YXJzZXItPmxleGVyID0gbGV4ZXI7CisgICAgICBjcF9sZXhlcl9zZXRfc291cmNlX3Bvc2l0 aW9uX2Zyb21fdG9rZW4gKGxleGVyLT5uZXh0X3Rva2VuKTsKKworICAgICAgdHJlZSBkaXJl Y3RpdmUgPSBwdXNoX3N0bXRfbGlzdCAoKTsKKyAgICAgIHRyZWUgZGlyZWN0aXZlX3N0bXQg PSBiZWdpbl9jb21wb3VuZF9zdG10ICgwKTsKKworICAgICAgLyogRGVjbGFyZSBhbGwgbGFi ZWxzIHRoYXQgb2NjdXIgd2l0aGluIHRoZSBkaXJlY3RpdmUgYm9keSBhcworCSBsb2NhbC4g ICovCisgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYm9keV9sYWJlbHMubGVuZ3Ro ICgpOyBqKyspCisJZmluaXNoX2xhYmVsX2RlY2wgKGJvZHlfbGFiZWxzW2pdKTsKKyAgICAg IGNwX3BhcnNlcl9wcmFnbWEgKHBhcnNlciwgcHJhZ21hX2NvbXBvdW5kLCBpZl9wKTsKKwor ICAgICAgZmluaXNoX2NvbXBvdW5kX3N0bXQgKGRpcmVjdGl2ZV9zdG10KTsKKyAgICAgIGRp cmVjdGl2ZSA9IHBvcF9zdG10X2xpc3QgKGRpcmVjdGl2ZSk7CisKKyAgICAgIGJvb2wgc3Rh bmRhbG9uZV9wCisJPSBkaXJlY3RpdmVzW2ldLT5raW5kID09IENfT01QX0RJUl9TVEFOREFM T05FCisJICB8fCBkaXJlY3RpdmVzW2ldLT5raW5kID09IENfT01QX0RJUl9VVElMSVRZOwor ICAgICAgaWYgKHN0YW5kYWxvbmVfcCkKKwl7CisJICAvKiBQYXJzaW5nIHN0YW5kYWxvbmUg ZGlyZWN0aXZlcyB3aWxsIG5vdCBjb25zdW1lIHRoZSBib2R5CisJICAgICB0b2tlbnMsIHNv IGRvIHRoYXQgaGVyZS4gICovCisJICBpZiAoc3RhbmRhbG9uZV9ib2R5ID09IE5VTExfVFJF RSkKKwkgICAgeworCSAgICAgIHN0YW5kYWxvbmVfYm9keSA9IHB1c2hfc3RtdF9saXN0ICgp OworCSAgICAgIGNwX3BhcnNlcl9zdGF0ZW1lbnQgKHBhcnNlciwgTlVMTF9UUkVFLCBmYWxz ZSwgaWZfcCk7CisJICAgICAgc3RhbmRhbG9uZV9ib2R5ID0gcG9wX3N0bXRfbGlzdCAoc3Rh bmRhbG9uZV9ib2R5KTsKKwkgICAgfQorCSAgZWxzZQorCSAgICBjcF9wYXJzZXJfc2tpcF90 b19lbmRfb2ZfYmxvY2tfb3Jfc3RhdGVtZW50IChwYXJzZXIpOworCX0KKworICAgICAgdHJl ZSBib2R5ID0gc3RhbmRhbG9uZV9wID8gc3RhbmRhbG9uZV9ib2R5IDogTlVMTF9UUkVFOwor ICAgICAgdHJlZSB2YXJpYW50ID0gYnVpbGRfdHJlZV9saXN0IChjdHgsIGJ1aWxkX3RyZWVf bGlzdCAoZGlyZWN0aXZlLCBib2R5KSk7CisgICAgICBPTVBfTUVUQURJUkVDVElWRV9DTEFV U0VTIChyZXQpCisJPSBjaGFpbm9uIChPTVBfTUVUQURJUkVDVElWRV9DTEFVU0VTIChyZXQp LCB2YXJpYW50KTsKKworICAgICAgLyogQ2hlY2sgdGhhdCBhbGwgdmFsaWQgdG9rZW5zIGhh dmUgYmVlbiBjb25zdW1lZC4gICovCisgICAgICBnY2NfYXNzZXJ0IChjcF9sZXhlcl9uZXh0 X3Rva2VuX2lzIChwYXJzZXItPmxleGVyLCBDUFBfRU9GKSk7CisKKyAgICAgIHBhcnNlci0+ bGV4ZXIgPSBvbGRfbGV4ZXI7CisgICAgICBjcF9sZXhlcl9zZXRfc291cmNlX3Bvc2l0aW9u X2Zyb21fdG9rZW4gKG9sZF9sZXhlci0+bmV4dF90b2tlbik7CisgICAgfQorCisgIC8qIFRy eSB0byByZXNvbHZlIHRoZSBtZXRhZGlyZWN0aXZlIGVhcmx5LiAgKi8KKyAgY2FuZGlkYXRl cyA9IG9tcF9yZXNvbHZlX21ldGFkaXJlY3RpdmUgKHJldCk7CisgIGlmICghY2FuZGlkYXRl cy5pc19lbXB0eSAoKSkKKyAgICByZXQgPSBjX29tcF9leHBhbmRfbWV0YWRpcmVjdGl2ZSAo Y2FuZGlkYXRlcyk7CisKKyAgYWRkX3N0bXQgKHJldCk7CisKKyAgcmV0dXJuIHJldDsKKwor ZmFpbDoKKyAgLyogU2tpcCB0aGUgbWV0YWRpcmVjdGl2ZSBwcmFnbWEuICAqLworICBjcF9w YXJzZXJfc2tpcF90b19wcmFnbWFfZW9sIChwYXJzZXIsIHByYWdtYV90b2spOworCisgIC8q IFNraXAgdGhlIG1ldGFkaXJlY3RpdmUgYm9keS4gICovCisgIGNwX3BhcnNlcl9za2lwX3Rv X2VuZF9vZl9ibG9ja19vcl9zdGF0ZW1lbnQgKHBhcnNlcik7CisgIHJldHVybiBlcnJvcl9t YXJrX25vZGU7Cit9CisKKwogLyogSGVscGVyIGZ1bmN0aW9uIG9mIGNwX3BhcnNlcl9vbXBf ZGVjbGFyZV9yZWR1Y3Rpb24uICBQYXJzZSB0aGUgY29tYmluZXIKICAgIGV4cHJlc3Npb24g YW5kIG9wdGlvbmFsIGluaXRpYWxpemVyIGNsYXVzZSBvZgogICAgI3ByYWdtYSBvbXAgZGVj bGFyZSByZWR1Y3Rpb24uICBXZSBzdG9yZSB0aGUgZXhwcmVzc2lvbihzKSBhcwpAQCAtNDcw NzcsNiArNDc0ODAsMTEgQEAgY3BfcGFyc2VyX29tcF9jb25zdHJ1Y3QgKGNwX3BhcnNlciAq cGFyc2VyLCBjcF90b2tlbiAqcHJhZ21hX3RvaywgYm9vbCAqaWZfcCkKICAgICAgIHN0bXQg PSBjcF9wYXJzZXJfb21wX21hc3RlciAocGFyc2VyLCBwcmFnbWFfdG9rLCBwX25hbWUsIG1h c2ssIE5VTEwsCiAJCQkJICAgaWZfcCk7CiAgICAgICBicmVhazsKKyAgICBjYXNlIFBSQUdN QV9PTVBfTUVUQURJUkVDVElWRToKKyAgICAgIHN0cmNweSAocF9uYW1lLCAiI3ByYWdtYSBv bXAiKTsKKyAgICAgIHN0bXQgPSBjcF9wYXJzZXJfb21wX21ldGFkaXJlY3RpdmUgKHBhcnNl ciwgcHJhZ21hX3RvaywgcF9uYW1lLCBtYXNrLAorCQkJCQkgIE5VTEwsIGlmX3ApOworICAg ICAgYnJlYWs7CiAgICAgY2FzZSBQUkFHTUFfT01QX1BBUkFMTEVMOgogICAgICAgc3RyY3B5 IChwX25hbWUsICIjcHJhZ21hIG9tcCIpOwogICAgICAgc3RtdCA9IGNwX3BhcnNlcl9vbXBf cGFyYWxsZWwgKHBhcnNlciwgcHJhZ21hX3RvaywgcF9uYW1lLCBtYXNrLCBOVUxMLApAQCAt NDc3MjcsNiArNDgxMzUsNyBAQCBjcF9wYXJzZXJfcHJhZ21hIChjcF9wYXJzZXIgKnBhcnNl ciwgZW51bSBwcmFnbWFfY29udGV4dCBjb250ZXh0LCBib29sICppZl9wKQogICAgIGNhc2Ug UFJBR01BX09NUF9MT09QOgogICAgIGNhc2UgUFJBR01BX09NUF9NQVNLRUQ6CiAgICAgY2Fz ZSBQUkFHTUFfT01QX01BU1RFUjoKKyAgICBjYXNlIFBSQUdNQV9PTVBfTUVUQURJUkVDVElW RToKICAgICBjYXNlIFBSQUdNQV9PTVBfUEFSQUxMRUw6CiAgICAgY2FzZSBQUkFHTUFfT01Q X1NDT1BFOgogICAgIGNhc2UgUFJBR01BX09NUF9TRUNUSU9OUzoKLS0gCjIuMjUuMQoK --------------Dr0d8D2wTyBmuwEft3o7RrBd--