From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 33707 invoked by alias); 9 Jul 2015 19:22:36 -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 33692 invoked by uid 89); 9 Jul 2015 19:22:35 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.3 required=5.0 tests=AWL,BAYES_50,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=no version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Thu, 09 Jul 2015 19:22:33 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (Postfix) with ESMTPS id 9CB8B36B1A3 for ; Thu, 9 Jul 2015 19:22:31 +0000 (UTC) Received: from reynosa.quesejoda.com (vpn-49-187.rdu2.redhat.com [10.10.49.187]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t69IOj19032405; Thu, 9 Jul 2015 14:24:46 -0400 Message-ID: <559EBC6C.70109@redhat.com> Date: Thu, 09 Jul 2015 19:22:00 -0000 From: Aldy Hernandez User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Jakub Jelinek , gcc-patches Subject: [gomp4.1] depend(sink) and depend(source) parsing for C Content-Type: multipart/mixed; boundary="------------050708070006020907030402" X-SW-Source: 2015-07/txt/msg00810.txt.bz2 This is a multi-part message in MIME format. --------------050708070006020907030402 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 359 The following patch goes along with Jakub's parsing of ordered(n) loops. With it, we can now parse his testcase, along with a variety of other tests with appropriate diagnostics. The lowering to gimple is still not done, as we should agree on what needs to be emitted first. I'll follow up with the C++ version once we agree on C. How does this look? --------------050708070006020907030402 Content-Type: text/plain; charset=UTF-8; name="curr" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="curr" Content-length: 28207 ZGlmZiAtLWdpdCBhL2djYy9jL2MtcGFyc2VyLmMgYi9nY2MvYy9jLXBhcnNl ci5jCmluZGV4IGNkM2JkNWEuLjk4YTZiMDIgMTAwNjQ0Ci0tLSBhL2djYy9j L2MtcGFyc2VyLmMKKysrIGIvZ2NjL2MvYy1wYXJzZXIuYwpAQCAtMTE3MDEs NiArMTE3MDEsOTIgQEAgY19wYXJzZXJfb21wX2NsYXVzZV9zaW1kbGVuIChj X3BhcnNlciAqcGFyc2VyLCB0cmVlIGxpc3QpCiAgIHJldHVybiBjOwogfQog CisvKiBPcGVuTVAgNC4xOgorICAgdmVjOgorICAgICBpZGVudGlmaWVyIFsr Ly0gaW50ZWdlcl0KKyAgICAgdmVjICwgaWRlbnRpZmllciBbKy8tIGludGVn ZXJdCisqLworCitzdGF0aWMgdHJlZQorY19wYXJzZXJfb21wX2NsYXVzZV9k ZXBlbmRfc2luayAoY19wYXJzZXIgKnBhcnNlciwgbG9jYXRpb25fdCBjbGF1 c2VfbG9jLAorCQkJCSB0cmVlIGxpc3QpCit7CisgIHRyZWUgdmVjID0gTlVM TDsKKyAgaWYgKGNfcGFyc2VyX25leHRfdG9rZW5faXNfbm90IChwYXJzZXIs IENQUF9OQU1FKQorICAgICAgfHwgY19wYXJzZXJfcGVla190b2tlbiAocGFy c2VyKS0+aWRfa2luZCAhPSBDX0lEX0lEKQorICAgIGNfcGFyc2VyX2Vycm9y IChwYXJzZXIsICJleHBlY3RlZCBpZGVudGlmaWVyIik7CisKKyAgd2hpbGUg KGNfcGFyc2VyX25leHRfdG9rZW5faXMgKHBhcnNlciwgQ1BQX05BTUUpCisJ ICYmIGNfcGFyc2VyX3BlZWtfdG9rZW4gKHBhcnNlciktPmlkX2tpbmQgPT0g Q19JRF9JRCkKKyAgICB7CisgICAgICB0cmVlIHQgPSBsb29rdXBfbmFtZSAo Y19wYXJzZXJfcGVla190b2tlbiAocGFyc2VyKS0+dmFsdWUpOworICAgICAg dHJlZSBhZGRlbmQgPSBOVUxMOworCisgICAgICBpZiAodCA9PSBOVUxMX1RS RUUpCisJeworCSAgdW5kZWNsYXJlZF92YXJpYWJsZSAoY19wYXJzZXJfcGVl a190b2tlbiAocGFyc2VyKS0+bG9jYXRpb24sCisJCQkgICAgICAgY19wYXJz ZXJfcGVla190b2tlbiAocGFyc2VyKS0+dmFsdWUpOworCSAgdCA9IGVycm9y X21hcmtfbm9kZTsKKwl9CisKKyAgICAgIGNfcGFyc2VyX2NvbnN1bWVfdG9r ZW4gKHBhcnNlcik7CisKKyAgICAgIGlmICh0ICE9IGVycm9yX21hcmtfbm9k ZSkKKwl7CisJICBib29sIG5lZzsKKworCSAgaWYgKGNfcGFyc2VyX25leHRf dG9rZW5faXMgKHBhcnNlciwgQ1BQX01JTlVTKSkKKwkgICAgbmVnID0gdHJ1 ZTsKKwkgIGVsc2UgaWYgKGNfcGFyc2VyX25leHRfdG9rZW5faXMgKHBhcnNl ciwgQ1BQX1BMVVMpKQorCSAgICBuZWcgPSBmYWxzZTsKKwkgIGVsc2UKKwkg ICAgeworCSAgICAgIGFkZGVuZCA9IGludGVnZXJfemVyb19ub2RlOworCSAg ICAgIGdvdG8gYWRkX3RvX3ZlY3RvcjsKKwkgICAgfQorCSAgY19wYXJzZXJf Y29uc3VtZV90b2tlbiAocGFyc2VyKTsKKworCSAgaWYgKGNfcGFyc2VyX25l eHRfdG9rZW5faXNfbm90IChwYXJzZXIsIENQUF9OVU1CRVIpKQorCSAgICB7 CisJICAgICAgY19wYXJzZXJfZXJyb3IgKHBhcnNlciwgImV4cGVjdGVkICU8 aW50ZWdlciU+Iik7CisJICAgICAgcmV0dXJuIGxpc3Q7CisJICAgIH0KKwor CSAgYWRkZW5kID0gY19wYXJzZXJfcGVla190b2tlbiAocGFyc2VyKS0+dmFs dWU7CisJICBpZiAoVFJFRV9DT0RFIChhZGRlbmQpICE9IElOVEVHRVJfQ1NU KQorCSAgICB7CisJICAgICAgY19wYXJzZXJfZXJyb3IgKHBhcnNlciwgImV4 cGVjdGVkICU8aW50ZWdlciU+Iik7CisJICAgICAgcmV0dXJuIGxpc3Q7CisJ ICAgIH0KKwkgIGlmIChuZWcpCisJICAgIHsKKwkgICAgICBib29sIG92ZXJm bG93OworCSAgICAgIHdpZGVfaW50IG9mZnNldCA9IHdpOjpuZWcgKGFkZGVu ZCwgJm92ZXJmbG93KTsKKwkgICAgICBhZGRlbmQgPSB3aWRlX2ludF90b190 cmVlIChUUkVFX1RZUEUgKGFkZGVuZCksIG9mZnNldCk7CisJICAgICAgaWYg KG92ZXJmbG93KQorCQl3YXJuaW5nX2F0IChjX3BhcnNlcl9wZWVrX3Rva2Vu IChwYXJzZXIpLT5sb2NhdGlvbiwKKwkJCSAgICBPUFRfV292ZXJmbG93LAor CQkJICAgICJwb3NzaWJsZSBvdmVyZmxvdyBpbiAlPGRlcGVuZChzaW5rKSU+ IG9mZnNldCIpOworCSAgICB9CisJICBjX3BhcnNlcl9jb25zdW1lX3Rva2Vu IChwYXJzZXIpOworCisJYWRkX3RvX3ZlY3RvcjoKKwkgIHZlYyA9IHRyZWVf Y29ucyAodCwgYWRkZW5kLCB2ZWMpOworCisJICBpZiAoY19wYXJzZXJfbmV4 dF90b2tlbl9pc19ub3QgKHBhcnNlciwgQ1BQX0NPTU1BKSkKKwkgICAgYnJl YWs7CisKKwkgIGNfcGFyc2VyX2NvbnN1bWVfdG9rZW4gKHBhcnNlcik7CisJ fQorICAgIH0KKworICB0cmVlIHUgPSBidWlsZF9vbXBfY2xhdXNlIChjbGF1 c2VfbG9jLCBPTVBfQ0xBVVNFX0RFUEVORCk7CisgIE9NUF9DTEFVU0VfREVQ RU5EX0tJTkQgKHUpID0gT01QX0NMQVVTRV9ERVBFTkRfU0lOSzsKKyAgT01Q X0NMQVVTRV9ERUNMICh1KSA9IG5yZXZlcnNlICh2ZWMpOworICBPTVBfQ0xB VVNFX0NIQUlOICh1KSA9IGxpc3Q7CisgIHJldHVybiB1OworfQorCiAvKiBP cGVuTVAgNC4wOgogICAgZGVwZW5kICggZGVwZW5kLWtpbmQ6IHZhcmlhYmxl LWxpc3QgKQogCkBAIC0xMTcwOCwxMCArMTE3OTQsOSBAQCBjX3BhcnNlcl9v bXBfY2xhdXNlX3NpbWRsZW4gKGNfcGFyc2VyICpwYXJzZXIsIHRyZWUgbGlz dCkKICAgICAgaW4gfCBvdXQgfCBpbm91dAogCiAgICBPcGVuTVAgNC4xOgot ICAgZGVwZW5kICggZGVwZW5kLWxvb3Ata2luZCBbIDogdmVjIF0gKQorICAg ZGVwZW5kICggc291cmNlICkKIAotICAgZGVwZW5kLWxvb3Ata2luZDoKLSAg ICAgc291cmNlIHwgc2luayAgKi8KKyAgIGRlcGVuZCAoIHNpbmsgIDogdmVj ICkgICovCiAKIHN0YXRpYyB0cmVlCiBjX3BhcnNlcl9vbXBfY2xhdXNlX2Rl cGVuZCAoY19wYXJzZXIgKnBhcnNlciwgdHJlZSBsaXN0KQpAQCAtMTE3NTQs MTYgKzExODM5LDE5IEBAIGNfcGFyc2VyX29tcF9jbGF1c2VfZGVwZW5kIChj X3BhcnNlciAqcGFyc2VyLCB0cmVlIGxpc3QpCiAgICAgICByZXR1cm4gYzsK ICAgICB9CiAKLSAgLyogRklYTUU6IEhhbmRsZSBPTVBfQ0xBVVNFX0RFUEVO RF9TSU5LLiAgKi8KLQogICBpZiAoIWNfcGFyc2VyX3JlcXVpcmUgKHBhcnNl ciwgQ1BQX0NPTE9OLCAiZXhwZWN0ZWQgJTw6JT4iKSkKICAgICBnb3RvIHJl c3luY19mYWlsOwogCi0gIG5sID0gY19wYXJzZXJfb21wX3ZhcmlhYmxlX2xp c3QgKHBhcnNlciwgY2xhdXNlX2xvYywKLQkJCQkgICBPTVBfQ0xBVVNFX0RF UEVORCwgbGlzdCk7CisgIGlmIChraW5kID09IE9NUF9DTEFVU0VfREVQRU5E X1NJTkspCisgICAgbmwgPSBjX3BhcnNlcl9vbXBfY2xhdXNlX2RlcGVuZF9z aW5rIChwYXJzZXIsIGNsYXVzZV9sb2MsIGxpc3QpOworICBlbHNlCisgICAg eworICAgICAgbmwgPSBjX3BhcnNlcl9vbXBfdmFyaWFibGVfbGlzdCAocGFy c2VyLCBjbGF1c2VfbG9jLAorCQkJCSAgICAgICBPTVBfQ0xBVVNFX0RFUEVO RCwgbGlzdCk7CiAKLSAgZm9yIChjID0gbmw7IGMgIT0gbGlzdDsgYyA9IE9N UF9DTEFVU0VfQ0hBSU4gKGMpKQotICAgIE9NUF9DTEFVU0VfREVQRU5EX0tJ TkQgKGMpID0ga2luZDsKKyAgICAgIGZvciAoYyA9IG5sOyBjICE9IGxpc3Q7 IGMgPSBPTVBfQ0xBVVNFX0NIQUlOIChjKSkKKwlPTVBfQ0xBVVNFX0RFUEVO RF9LSU5EIChjKSA9IGtpbmQ7CisgICAgfQogCiAgIGNfcGFyc2VyX3NraXBf dW50aWxfZm91bmQgKHBhcnNlciwgQ1BQX0NMT1NFX1BBUkVOLCAiZXhwZWN0 ZWQgJTwpJT4iKTsKICAgcmV0dXJuIG5sOwpkaWZmIC0tZ2l0IGEvZ2NjL2Mv Yy10eXBlY2suYyBiL2djYy9jL2MtdHlwZWNrLmMKaW5kZXggNDY5Y2Q4OC4u MGIzMzJlOCAxMDA2NDQKLS0tIGEvZ2NjL2MvYy10eXBlY2suYworKysgYi9n Y2MvYy9jLXR5cGVjay5jCkBAIC0xMjQ4OSw2ICsxMjQ4OSwxMSBAQCBjX2Zp bmlzaF9vbXBfY2xhdXNlcyAodHJlZSBjbGF1c2VzLCBib29sIGRlY2xhcmVf c2ltZCkKIAkJCSAgPT0gT01QX0NMQVVTRV9ERVBFTkRfU09VUkNFKTsKIAkg ICAgICBicmVhazsKIAkgICAgfQorCSAgaWYgKE9NUF9DTEFVU0VfREVQRU5E X0tJTkQgKGMpID09IE9NUF9DTEFVU0VfREVQRU5EX1NJTkspCisJICAgIHsK KwkgICAgICBnY2NfYXNzZXJ0IChUUkVFX0NPREUgKHQpID09IFRSRUVfTElT VCk7CisJICAgICAgYnJlYWs7CisJICAgIH0KIAkgIGlmIChUUkVFX0NPREUg KHQpID09IFRSRUVfTElTVCkKIAkgICAgewogCSAgICAgIGlmIChoYW5kbGVf b21wX2FycmF5X3NlY3Rpb25zIChjKSkKZGlmZiAtLWdpdCBhL2djYy9jb3Jl dHlwZXMuaCBiL2djYy9jb3JldHlwZXMuaAppbmRleCBlM2NlYzAxLi5hNzA4 ODk2IDEwMDY0NAotLS0gYS9nY2MvY29yZXR5cGVzLmgKKysrIGIvZ2NjL2Nv cmV0eXBlcy5oCkBAIC0xMTMsNiArMTEzLDcgQEAgc3RydWN0IGdvbXBfYXRv bWljX2xvYWQ7CiBzdHJ1Y3QgZ29tcF9hdG9taWNfc3RvcmU7CiBzdHJ1Y3Qg Z29tcF9jb250aW51ZTsKIHN0cnVjdCBnb21wX2NyaXRpY2FsOworc3RydWN0 IGdvbXBfb3JkZXJlZDsKIHN0cnVjdCBnb21wX2ZvcjsKIHN0cnVjdCBnb21w X3BhcmFsbGVsOwogc3RydWN0IGdvbXBfdGFzazsKZGlmZiAtLWdpdCBhL2dj Yy9naW1wbGUtcHJldHR5LXByaW50LmMgYi9nY2MvZ2ltcGxlLXByZXR0eS1w cmludC5jCmluZGV4IGNhZTg4ODMuLjgzY2UzZWMgMTAwNjQ0Ci0tLSBhL2dj Yy9naW1wbGUtcHJldHR5LXByaW50LmMKKysrIGIvZ2NjL2dpbXBsZS1wcmV0 dHktcHJpbnQuYwpAQCAtMTQ4OCw5ICsxNDg4LDYgQEAgZHVtcF9naW1wbGVf b21wX2Jsb2NrIChwcmV0dHlfcHJpbnRlciAqYnVmZmVyLCBnaW1wbGUgZ3Ms IGludCBzcGMsIGludCBmbGFncykKIAljYXNlIEdJTVBMRV9PTVBfVEFTS0dS T1VQOgogCSAgcHBfc3RyaW5nIChidWZmZXIsICIjcHJhZ21hIG9tcCB0YXNr Z3JvdXAiKTsKIAkgIGJyZWFrOwotCWNhc2UgR0lNUExFX09NUF9PUkRFUkVE OgotCSAgcHBfc3RyaW5nIChidWZmZXIsICIjcHJhZ21hIG9tcCBvcmRlcmVk Iik7Ci0JICBicmVhazsKIAljYXNlIEdJTVBMRV9PTVBfU0VDVElPTjoKIAkg IHBwX3N0cmluZyAoYnVmZmVyLCAiI3ByYWdtYSBvbXAgc2VjdGlvbiIpOwog CSAgYnJlYWs7CkBAIC0xNTQxLDYgKzE1MzgsMzEgQEAgZHVtcF9naW1wbGVf b21wX2NyaXRpY2FsIChwcmV0dHlfcHJpbnRlciAqYnVmZmVyLCBnb21wX2Ny aXRpY2FsICpncywKICAgICB9CiB9CiAKKy8qIER1bXAgYSBHSU1QTEVfT01Q X09SREVSRUQgdHVwbGUgb24gdGhlIHByZXR0eV9wcmludGVyIEJVRkZFUi4g ICovCisKK3N0YXRpYyB2b2lkCitkdW1wX2dpbXBsZV9vbXBfb3JkZXJlZCAo cHJldHR5X3ByaW50ZXIgKmJ1ZmZlciwgZ29tcF9vcmRlcmVkICpncywKKwkJ CSBpbnQgc3BjLCBpbnQgZmxhZ3MpCit7CisgIGlmIChmbGFncyAmIFRERl9S QVcpCisgICAgZHVtcF9naW1wbGVfZm10IChidWZmZXIsIHNwYywgZmxhZ3Ms ICIlRyA8JStCT0RZIDwlUz4gPiIsIGdzLAorCQkgICAgIGdpbXBsZV9vbXBf Ym9keSAoZ3MpKTsKKyAgZWxzZQorICAgIHsKKyAgICAgIHBwX3N0cmluZyAo YnVmZmVyLCAiI3ByYWdtYSBvbXAgb3JkZXJlZCIpOworICAgICAgZHVtcF9v bXBfY2xhdXNlcyAoYnVmZmVyLCBnaW1wbGVfb21wX29yZGVyZWRfY2xhdXNl cyAoZ3MpLCBzcGMsIGZsYWdzKTsKKyAgICAgIGlmICghZ2ltcGxlX3NlcV9l bXB0eV9wIChnaW1wbGVfb21wX2JvZHkgKGdzKSkpCisJeworCSAgbmV3bGlu ZV9hbmRfaW5kZW50IChidWZmZXIsIHNwYyArIDIpOworCSAgcHBfbGVmdF9i cmFjZSAoYnVmZmVyKTsKKwkgIHBwX25ld2xpbmUgKGJ1ZmZlcik7CisJICBk dW1wX2dpbXBsZV9zZXEgKGJ1ZmZlciwgZ2ltcGxlX29tcF9ib2R5IChncyks IHNwYyArIDQsIGZsYWdzKTsKKwkgIG5ld2xpbmVfYW5kX2luZGVudCAoYnVm ZmVyLCBzcGMgKyAyKTsKKwkgIHBwX3JpZ2h0X2JyYWNlIChidWZmZXIpOwor CX0KKyAgICB9Cit9CisKIC8qIER1bXAgYSBHSU1QTEVfT01QX1JFVFVSTiB0 dXBsZSBvbiB0aGUgcHJldHR5X3ByaW50ZXIgQlVGRkVSLiAgKi8KIAogc3Rh dGljIHZvaWQKQEAgLTIyNTAsMTEgKzIyNzIsMTUgQEAgcHBfZ2ltcGxlX3N0 bXRfMSAocHJldHR5X3ByaW50ZXIgKmJ1ZmZlciwgZ2ltcGxlIGdzLCBpbnQg c3BjLCBpbnQgZmxhZ3MpCiAKICAgICBjYXNlIEdJTVBMRV9PTVBfTUFTVEVS OgogICAgIGNhc2UgR0lNUExFX09NUF9UQVNLR1JPVVA6Ci0gICAgY2FzZSBH SU1QTEVfT01QX09SREVSRUQ6CiAgICAgY2FzZSBHSU1QTEVfT01QX1NFQ1RJ T046CiAgICAgICBkdW1wX2dpbXBsZV9vbXBfYmxvY2sgKGJ1ZmZlciwgZ3Ms IHNwYywgZmxhZ3MpOwogICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEdJTVBM RV9PTVBfT1JERVJFRDoKKyAgICAgIGR1bXBfZ2ltcGxlX29tcF9vcmRlcmVk IChidWZmZXIsIGFzX2EgPGdvbXBfb3JkZXJlZCAqPiAoZ3MpLCBzcGMsCisJ CQkgICAgICAgZmxhZ3MpOworICAgICAgYnJlYWs7CisKICAgICBjYXNlIEdJ TVBMRV9PTVBfQ1JJVElDQUw6CiAgICAgICBkdW1wX2dpbXBsZV9vbXBfY3Jp dGljYWwgKGJ1ZmZlciwgYXNfYSA8Z29tcF9jcml0aWNhbCAqPiAoZ3MpLCBz cGMsCiAJCQkJZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS13YWxr LmMgYi9nY2MvZ2ltcGxlLXdhbGsuYwppbmRleCBmMGUyYzY3Li5iYTc5OTc3 IDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxlLXdhbGsuYworKysgYi9nY2MvZ2lt cGxlLXdhbGsuYwpAQCAtMzI3LDYgKzMyNywxMCBAQCB3YWxrX2dpbXBsZV9v cCAoZ2ltcGxlIHN0bXQsIHdhbGtfdHJlZV9mbiBjYWxsYmFja19vcCwKICAg ICAgIH0KICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHSU1QTEVfT01QX09S REVSRUQ6CisgICAgICAvKiBJZ25vcmUgY2xhdXNlcy4gICovCisgICAgICBi cmVhazsKKwogICAgIGNhc2UgR0lNUExFX09NUF9GT1I6CiAgICAgICByZXQg PSB3YWxrX3RyZWUgKGdpbXBsZV9vbXBfZm9yX2NsYXVzZXNfcHRyIChzdG10 KSwgY2FsbGJhY2tfb3AsIHdpLAogCQkgICAgICAgcHNldCk7CmRpZmYgLS1n aXQgYS9nY2MvZ2ltcGxlLmMgYi9nY2MvZ2ltcGxlLmMKaW5kZXggZDhlYjc3 YS4uYjg3ZDQ0ZCAxMDA2NDQKLS0tIGEvZ2NjL2dpbXBsZS5jCisrKyBiL2dj Yy9naW1wbGUuYwpAQCAtOTkxLDEyICs5OTEsMTUgQEAgZ2ltcGxlX2J1aWxk X29tcF9jb250aW51ZSAodHJlZSBjb250cm9sX2RlZiwgdHJlZSBjb250cm9s X3VzZSkKIC8qIEJ1aWxkIGEgR0lNUExFX09NUF9PUkRFUkVEIHN0YXRlbWVu dC4KIAogICAgQk9EWSBpcyB0aGUgc2VxdWVuY2Ugb2Ygc3RhdGVtZW50cyBp bnNpZGUgYSBsb29wIHRoYXQgd2lsbCBleGVjdXRlZCBpbgotICAgc2VxdWVu Y2UuICAqLworICAgc2VxdWVuY2UuCisgICBDTEFVU0VTIGFyZSBjbGF1c2Vz IGZvciB0aGlzIHN0YXRlbWVudC4gICovCiAKLWdpbXBsZQotZ2ltcGxlX2J1 aWxkX29tcF9vcmRlcmVkIChnaW1wbGVfc2VxIGJvZHkpCitnb21wX29yZGVy ZWQgKgorZ2ltcGxlX2J1aWxkX29tcF9vcmRlcmVkIChnaW1wbGVfc2VxIGJv ZHksIHRyZWUgY2xhdXNlcykKIHsKLSAgZ2ltcGxlIHAgPSBnaW1wbGVfYWxs b2MgKEdJTVBMRV9PTVBfT1JERVJFRCwgMCk7CisgIGdvbXBfb3JkZXJlZCAq cAorICAgID0gYXNfYSA8Z29tcF9vcmRlcmVkICo+IChnaW1wbGVfYWxsb2Mg KEdJTVBMRV9PTVBfT1JERVJFRCwgMCkpOworICBnaW1wbGVfb21wX29yZGVy ZWRfc2V0X2NsYXVzZXMgKHAsIGNsYXVzZXMpOwogICBpZiAoYm9keSkKICAg ICBnaW1wbGVfb21wX3NldF9ib2R5IChwLCBib2R5KTsKIApkaWZmIC0tZ2l0 IGEvZ2NjL2dpbXBsZS5kZWYgYi9nY2MvZ2ltcGxlLmRlZgppbmRleCA5NjYw MmRmLi44MjdmNmEzIDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxlLmRlZgorKysg Yi9nY2MvZ2ltcGxlLmRlZgpAQCAtMjg1LDcgKzI4NSw3IEBAIERFRkdTQ09E RShHSU1QTEVfT01QX1RBU0tHUk9VUCwgImdpbXBsZV9vbXBfdGFza2dyb3Vw IiwgR1NTX09NUCkKIAogLyogR0lNUExFX09NUF9PUkRFUkVEIDxCT0RZPiBy ZXByZXNlbnRzICNwcmFnbWEgb21wIG9yZGVyZWQuCiAgICBCT0RZIGlzIHRo ZSBzZXF1ZW5jZSBvZiBzdGF0ZW1lbnRzIHRvIGV4ZWN1dGUgaW4gdGhlIG9y ZGVyZWQgc2VjdGlvbi4gICovCi1ERUZHU0NPREUoR0lNUExFX09NUF9PUkRF UkVELCAiZ2ltcGxlX29tcF9vcmRlcmVkIiwgR1NTX09NUCkKK0RFRkdTQ09E RShHSU1QTEVfT01QX09SREVSRUQsICJnaW1wbGVfb21wX29yZGVyZWQiLCBH U1NfT01QX09SREVSRUQpCiAKIC8qIEdJTVBMRV9PTVBfUEFSQUxMRUwgPEJP RFksIENMQVVTRVMsIENISUxEX0ZOLCBEQVRBX0FSRz4gcmVwcmVzZW50cwog CmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxlLmggYi9nY2MvZ2ltcGxlLmgKaW5k ZXggNjA1N2VhMC4uZTMzZmUxZSAxMDA2NDQKLS0tIGEvZ2NjL2dpbXBsZS5o CisrKyBiL2djYy9naW1wbGUuaApAQCAtNTI3LDYgKzUyNywxNyBAQCBzdHJ1 Y3QgR1RZKCh0YWcoIkdTU19PTVBfQ1JJVElDQUwiKSkpCiAgIHRyZWUgbmFt ZTsKIH07CiAKKy8qIEdJTVBMRV9PTVBfT1JERVJFRCAqLworCitzdHJ1Y3Qg R1RZKCh0YWcoIkdTU19PTVBfT1JERVJFRCIpKSkKKyAgZ29tcF9vcmRlcmVk IDogcHVibGljIGdpbXBsZV9zdGF0ZW1lbnRfb21wCit7CisgIC8qIFsgV09S RCAxLTcgXSA6IGJhc2UgY2xhc3MgKi8KKworICAvKiBbIFdPUkQgOCBdICAq LworICB0cmVlIGNsYXVzZXM7Cit9OworCiAKIHN0cnVjdCBHVFkoKCkpIGdp bXBsZV9vbXBfZm9yX2l0ZXIgewogICAvKiBDb25kaXRpb24gY29kZS4gICov CkBAIC0xMDA3LDYgKzEwMTgsMTQgQEAgaXNfYV9oZWxwZXIgPGdvbXBfY3Jp dGljYWwgKj46OnRlc3QgKGdpbXBsZSBncykKIHRlbXBsYXRlIDw+CiB0ZW1w bGF0ZSA8PgogaW5saW5lIGJvb2wKK2lzX2FfaGVscGVyIDxnb21wX29yZGVy ZWQgKj46OnRlc3QgKGdpbXBsZSBncykKK3sKKyAgcmV0dXJuIGdzLT5jb2Rl ID09IEdJTVBMRV9PTVBfT1JERVJFRDsKK30KKwordGVtcGxhdGUgPD4KK3Rl bXBsYXRlIDw+CitpbmxpbmUgYm9vbAogaXNfYV9oZWxwZXIgPGdvbXBfZm9y ICo+Ojp0ZXN0IChnaW1wbGUgZ3MpCiB7CiAgIHJldHVybiBncy0+Y29kZSA9 PSBHSU1QTEVfT01QX0ZPUjsKQEAgLTEyMTUsNiArMTIzNCwxNCBAQCBpc19h X2hlbHBlciA8Y29uc3QgZ29tcF9jcml0aWNhbCAqPjo6dGVzdCAoY29uc3Rf Z2ltcGxlIGdzKQogdGVtcGxhdGUgPD4KIHRlbXBsYXRlIDw+CiBpbmxpbmUg Ym9vbAoraXNfYV9oZWxwZXIgPGNvbnN0IGdvbXBfb3JkZXJlZCAqPjo6dGVz dCAoY29uc3RfZ2ltcGxlIGdzKQoreworICByZXR1cm4gZ3MtPmNvZGUgPT0g R0lNUExFX09NUF9PUkRFUkVEOworfQorCit0ZW1wbGF0ZSA8PgordGVtcGxh dGUgPD4KK2lubGluZSBib29sCiBpc19hX2hlbHBlciA8Y29uc3QgZ29tcF9m b3IgKj46OnRlc3QgKGNvbnN0X2dpbXBsZSBncykKIHsKICAgcmV0dXJuIGdz LT5jb2RlID09IEdJTVBMRV9PTVBfRk9SOwpAQCAtMTM1NSw3ICsxMzgyLDcg QEAgZ2ltcGxlIGdpbXBsZV9idWlsZF9vbXBfc2VjdGlvbiAoZ2ltcGxlX3Nl cSk7CiBnaW1wbGUgZ2ltcGxlX2J1aWxkX29tcF9tYXN0ZXIgKGdpbXBsZV9z ZXEpOwogZ2ltcGxlIGdpbXBsZV9idWlsZF9vbXBfdGFza2dyb3VwIChnaW1w bGVfc2VxKTsKIGdvbXBfY29udGludWUgKmdpbXBsZV9idWlsZF9vbXBfY29u dGludWUgKHRyZWUsIHRyZWUpOwotZ2ltcGxlIGdpbXBsZV9idWlsZF9vbXBf b3JkZXJlZCAoZ2ltcGxlX3NlcSk7Citnb21wX29yZGVyZWQgKmdpbXBsZV9i dWlsZF9vbXBfb3JkZXJlZCAoZ2ltcGxlX3NlcSwgdHJlZSk7CiBnaW1wbGUg Z2ltcGxlX2J1aWxkX29tcF9yZXR1cm4gKGJvb2wpOwogZ29tcF9zZWN0aW9u cyAqZ2ltcGxlX2J1aWxkX29tcF9zZWN0aW9ucyAoZ2ltcGxlX3NlcSwgdHJl ZSk7CiBnaW1wbGUgZ2ltcGxlX2J1aWxkX29tcF9zZWN0aW9uc19zd2l0Y2gg KHZvaWQpOwpAQCAtNDQ2MCw2ICs0NDg3LDM1IEBAIGdpbXBsZV9vbXBfY3Jp dGljYWxfc2V0X2NsYXVzZXMgKGdvbXBfY3JpdGljYWwgKmNyaXRfc3RtdCwg dHJlZSBjbGF1c2VzKQogfQogCiAKKy8qIFJldHVybiB0aGUgY2xhdXNlcyBh c3NvY2lhdGVkIHdpdGggT01QX09SREVSRUQgc3RhdGVtZW50IE9SRF9TVE1U LiAgKi8KKworc3RhdGljIGlubGluZSB0cmVlCitnaW1wbGVfb21wX29yZGVy ZWRfY2xhdXNlcyAoY29uc3QgZ29tcF9vcmRlcmVkICpvcmRfc3RtdCkKK3sK KyAgcmV0dXJuIG9yZF9zdG10LT5jbGF1c2VzOworfQorCisKKy8qIFJldHVy biBhIHBvaW50ZXIgdG8gdGhlIGNsYXVzZXMgYXNzb2NpYXRlZCB3aXRoIE9N UCBvcmRlcmVkIHN0YXRlbWVudAorICAgT1JEX1NUTVQuICAqLworCitzdGF0 aWMgaW5saW5lIHRyZWUgKgorZ2ltcGxlX29tcF9vcmRlcmVkX2NsYXVzZXNf cHRyIChnb21wX29yZGVyZWQgKm9yZF9zdG10KQoreworICByZXR1cm4gJm9y ZF9zdG10LT5jbGF1c2VzOworfQorCisKKy8qIFNldCBDTEFVU0VTIHRvIGJl IHRoZSBjbGF1c2VzIGFzc29jaWF0ZWQgd2l0aCBPTVAgb3JkZXJlZCBzdGF0 ZW1lbnQKKyAgIE9SRF9TVE1ULiAgKi8KKworc3RhdGljIGlubGluZSB2b2lk CitnaW1wbGVfb21wX29yZGVyZWRfc2V0X2NsYXVzZXMgKGdvbXBfb3JkZXJl ZCAqb3JkX3N0bXQsIHRyZWUgY2xhdXNlcykKK3sKKyAgb3JkX3N0bXQtPmNs YXVzZXMgPSBjbGF1c2VzOworfQorCisKIC8qIFJldHVybiB0aGUga2luZCBv ZiB0aGUgT01QX0ZPUiBzdGF0ZW1lbWVudCBHLiAgKi8KIAogc3RhdGljIGlu bGluZSBpbnQKZGlmZiAtLWdpdCBhL2djYy9naW1wbGlmeS5jIGIvZ2NjL2dp bXBsaWZ5LmMKaW5kZXggMjFmODIyMy4uMjU0YzM3ZSAxMDA2NDQKLS0tIGEv Z2NjL2dpbXBsaWZ5LmMKKysrIGIvZ2NjL2dpbXBsaWZ5LmMKQEAgLTE0OSw2 ICsxNDksOSBAQCBzdHJ1Y3QgZ2ltcGxpZnlfb21wX2N0eAogICBzdHJ1Y3Qg Z2ltcGxpZnlfb21wX2N0eCAqb3V0ZXJfY29udGV4dDsKICAgc3BsYXlfdHJl ZSB2YXJpYWJsZXM7CiAgIGhhc2hfc2V0PHRyZWU+ICpwcml2YXRpemVkX3R5 cGVzOworICAvKiBJdGVyYXRpb24gdmFyaWFibGVzIGluIGFuIE9NUF9GT1Iu ICAqLworICB0cmVlICppdGVyX3ZhcnM7CisgIGludCBuaXRlcl92YXJzOwog ICBsb2NhdGlvbl90IGxvY2F0aW9uOwogICBlbnVtIG9tcF9jbGF1c2VfZGVm YXVsdF9raW5kIGRlZmF1bHRfa2luZDsKICAgZW51bSBvbXBfcmVnaW9uX3R5 cGUgcmVnaW9uX3R5cGU7CkBAIC0zODQsNiArMzg3LDggQEAgZGVsZXRlX29t cF9jb250ZXh0IChzdHJ1Y3QgZ2ltcGxpZnlfb21wX2N0eCAqYykKIHsKICAg c3BsYXlfdHJlZV9kZWxldGUgKGMtPnZhcmlhYmxlcyk7CiAgIGRlbGV0ZSBj LT5wcml2YXRpemVkX3R5cGVzOworICBpZiAoYy0+aXRlcl92YXJzKQorICAg IGRlbGV0ZSBjLT5pdGVyX3ZhcnM7CiAgIFhERUxFVEUgKGMpOwogfQogCkBA IC02MzQzLDYgKzYzNDgsMTMgQEAgZ2ltcGxpZnlfc2Nhbl9vbXBfY2xhdXNl cyAodHJlZSAqbGlzdF9wLCBnaW1wbGVfc2VxICpwcmVfcCwKIAkgIGdvdG8g ZG9fYWRkOwogCiAJY2FzZSBPTVBfQ0xBVVNFX0RFUEVORDoKKwkgIGlmIChP TVBfQ0xBVVNFX0RFUEVORF9LSU5EIChjKSA9PSBPTVBfQ0xBVVNFX0RFUEVO RF9TSU5LCisJICAgICAgfHwgT01QX0NMQVVTRV9ERVBFTkRfS0lORCAoYykg PT0gT01QX0NMQVVTRV9ERVBFTkRfU09VUkNFKQorCSAgICB7CisJICAgICAg LyogTm90aGluZyB0byBkby4gIE9NUF9DTEFVU0VfREVDTCB3aWxsIGJlIGxv d2VyZWQgaW4KKwkJIG9tcC1sb3cuYy4gICovCisJICAgICAgYnJlYWs7CisJ ICAgIH0KIAkgIGlmIChUUkVFX0NPREUgKE9NUF9DTEFVU0VfREVDTCAoYykp ID09IENPTVBPVU5EX0VYUFIpCiAJICAgIHsKIAkgICAgICBnaW1wbGlmeV9l eHByICgmVFJFRV9PUEVSQU5EIChPTVBfQ0xBVVNFX0RFQ0wgKGMpLCAwKSwg cHJlX3AsCkBAIC03MjgyLDYgKzcyOTQsOSBAQCBnaW1wbGlmeV9vbXBfZm9y ICh0cmVlICpleHByX3AsIGdpbXBsZV9zZXEgKnByZV9wKQogCSAgICAgID09 IFRSRUVfVkVDX0xFTkdUSCAoT01QX0ZPUl9DT05EIChmb3Jfc3RtdCkpKTsK ICAgZ2NjX2Fzc2VydCAoVFJFRV9WRUNfTEVOR1RIIChPTVBfRk9SX0lOSVQg KGZvcl9zdG10KSkKIAkgICAgICA9PSBUUkVFX1ZFQ19MRU5HVEggKE9NUF9G T1JfSU5DUiAoZm9yX3N0bXQpKSk7CisgIGdpbXBsaWZ5X29tcF9jdHhwLT5u aXRlcl92YXJzID0gVFJFRV9WRUNfTEVOR1RIIChPTVBfRk9SX0lOSVQgKGZv cl9zdG10KSk7CisgIGdpbXBsaWZ5X29tcF9jdHhwLT5pdGVyX3ZhcnMKKyAg ICA9IG5ldyB0cmVlW1RSRUVfVkVDX0xFTkdUSCAoT01QX0ZPUl9JTklUIChm b3Jfc3RtdCkpXTsKICAgZm9yIChpID0gMDsgaSA8IFRSRUVfVkVDX0xFTkdU SCAoT01QX0ZPUl9JTklUIChmb3Jfc3RtdCkpOyBpKyspCiAgICAgewogICAg ICAgdCA9IFRSRUVfVkVDX0VMVCAoT01QX0ZPUl9JTklUIChmb3Jfc3RtdCks IGkpOwpAQCAtNzI5MCw2ICs3MzA1LDcgQEAgZ2ltcGxpZnlfb21wX2ZvciAo dHJlZSAqZXhwcl9wLCBnaW1wbGVfc2VxICpwcmVfcCkKICAgICAgIGdjY19h c3NlcnQgKERFQ0xfUCAoZGVjbCkpOwogICAgICAgZ2NjX2Fzc2VydCAoSU5U RUdSQUxfVFlQRV9QIChUUkVFX1RZUEUgKGRlY2wpKQogCQkgIHx8IFBPSU5U RVJfVFlQRV9QIChUUkVFX1RZUEUgKGRlY2wpKSk7CisgICAgICBnaW1wbGlm eV9vbXBfY3R4cC0+aXRlcl92YXJzW2ldID0gZGVjbDsKIAogICAgICAgLyog TWFrZSBzdXJlIHRoZSBpdGVyYXRpb24gdmFyaWFibGUgaXMgcHJpdmF0ZS4g ICovCiAgICAgICB0cmVlIGMgPSBOVUxMX1RSRUU7CkBAIC04MTY5LDYgKzgx ODUsMTkgQEAgZ2ltcGxpZnlfdHJhbnNhY3Rpb24gKHRyZWUgKmV4cHJfcCwg Z2ltcGxlX3NlcSAqcHJlX3ApCiAgIHJldHVybiBHU19BTExfRE9ORTsKIH0K IAorLyogVmVyaWZ5IHRoZSB2YWxpZGl0eSBvZiB0aGUgZGVwZW5kKHNpbms6 Li4uKSB2YXJpYWJsZSBWQVIuCisgICBSZXR1cm4gVFJVRSBpZiBldmVyeXRo aW5nIGlzIE9LLCBvdGhlcndpc2UgcmV0dXJuIEZBTFNFLiAgKi8KKworc3Rh dGljIGJvb2wKK3ZlcmlmeV9zaW5rX3ZhciAobG9jYXRpb25fdCBsb2MsIHRy ZWUgdmFyKQoreworICBmb3IgKGludCBpID0gMDsgaSA8IGdpbXBsaWZ5X29t cF9jdHhwLT5uaXRlcl92YXJzOyArK2kpCisgICAgaWYgKHZhciA9PSBnaW1w bGlmeV9vbXBfY3R4cC0+aXRlcl92YXJzW2ldKQorICAgICAgcmV0dXJuIHRy dWU7CisgIGVycm9yX2F0IChsb2MsICJ2YXJpYWJsZSAlcUUgaXMgbm90IGFu IGl0ZXJhdGlvbiB2YXJpYWJsZSIsIHZhcik7CisgIHJldHVybiBmYWxzZTsK K30KKwogLyogQ29udmVydCB0aGUgR0VORVJJQyBleHByZXNzaW9uIHRyZWUg KkVYUFJfUCB0byBHSU1QTEUuICBJZiB0aGUKICAgIGV4cHJlc3Npb24gcHJv ZHVjZXMgYSB2YWx1ZSB0byBiZSB1c2VkIGFzIGFuIG9wZXJhbmQgaW5zaWRl IGEgR0lNUExFCiAgICBzdGF0ZW1lbnQsIHRoZSB2YWx1ZSB3aWxsIGJlIHN0 b3JlZCBiYWNrIGluICpFWFBSX1AuICBUaGlzIHZhbHVlIHdpbGwKQEAgLTg5 ODIsNyArOTAxMSwzMiBAQCBnaW1wbGlmeV9leHByICh0cmVlICpleHByX3As IGdpbXBsZV9zZXEgKnByZV9wLCBnaW1wbGVfc2VxICpwb3N0X3AsCiAJCX0K IAkJYnJlYWs7CiAJICAgICAgY2FzZSBPTVBfT1JERVJFRDoKLQkJZyA9IGdp bXBsZV9idWlsZF9vbXBfb3JkZXJlZCAoYm9keSk7CisJCWlmIChnaW1wbGlm eV9vbXBfY3R4cCkKKwkJICBmb3IgKHRyZWUgYyA9IE9NUF9PUkRFUkVEX0NM QVVTRVMgKCpleHByX3ApOworCQkgICAgICAgYzsgYyA9IE9NUF9DTEFVU0Vf Q0hBSU4gKGMpKQorCQkgICAgaWYgKE9NUF9DTEFVU0VfQ09ERSAoYykgPT0g T01QX0NMQVVTRV9ERVBFTkQKKwkJCSYmIE9NUF9DTEFVU0VfREVQRU5EX0tJ TkQgKGMpID09IE9NUF9DTEFVU0VfREVQRU5EX1NJTkspCisJCSAgICAgIHsK KwkJCWludCBuID0gMDsKKwkJCWJvb2wgZmFpbCA9IGZhbHNlOworCQkJZm9y ICh0cmVlIGRlY2xzID0gT01QX0NMQVVTRV9ERUNMIChjKTsKKwkJCSAgICAg ZGVjbHMgJiYgVFJFRV9DT0RFIChkZWNscykgPT0gVFJFRV9MSVNUOworCQkJ ICAgICBkZWNscyA9IFRSRUVfQ0hBSU4gKGRlY2xzKSkKKwkJCSAgeworCQkJ ICAgIGlmICghdmVyaWZ5X3NpbmtfdmFyIChPTVBfQ0xBVVNFX0xPQ0FUSU9O IChjKSwKKwkJCQkJCSAgVFJFRV9QVVJQT1NFIChkZWNscykpKQorCQkJICAg ICAgZmFpbCA9IHRydWU7CisJCQkgICAgKytuOworCQkJICB9CisJCQkvKiBB dm9pZCBiZWluZyB0b28gcmVkdW5kYW50LiAgKi8KKwkJCWlmICghZmFpbCAm JiBuICE9IGdpbXBsaWZ5X29tcF9jdHhwLT5uaXRlcl92YXJzKQorCQkJICBl cnJvcl9hdCAoT01QX0NMQVVTRV9MT0NBVElPTiAoYyksCisJCQkgICAgICJu dW1iZXIgb2YgdmFyaWFibGVzIGluIGRlcGVuZChzaW5rKSBjbGF1c2UgIgor CQkJICAgICAiZG9lcyBub3QgbWF0Y2ggbnVtYmVyIG9mIGl0ZXJhdGlvbiB2 YXJpYWJsZXMiKTsKKwkJICAgICAgfQorCisJCWcgPSBnaW1wbGVfYnVpbGRf b21wX29yZGVyZWQgKGJvZHksCisJCQkJCSAgICAgIE9NUF9PUkRFUkVEX0NM QVVTRVMgKCpleHByX3ApKTsKIAkJYnJlYWs7CiAJICAgICAgY2FzZSBPTVBf Q1JJVElDQUw6CiAJCWdpbXBsaWZ5X3NjYW5fb21wX2NsYXVzZXMgKCZPTVBf Q1JJVElDQUxfQ0xBVVNFUyAoKmV4cHJfcCksCmRpZmYgLS1naXQgYS9nY2Mv Z3NzdHJ1Y3QuZGVmIGIvZ2NjL2dzc3RydWN0LmRlZgppbmRleCAxOGNmNDAz Li4wMGMwN2YyIDEwMDY0NAotLS0gYS9nY2MvZ3NzdHJ1Y3QuZGVmCisrKyBi L2djYy9nc3N0cnVjdC5kZWYKQEAgLTQyLDYgKzQyLDcgQEAgREVGR1NTVFJV Q1QoR1NTX0VIX0VMU0UsIGdlaF9lbHNlLCBmYWxzZSkKIERFRkdTU1RSVUNU KEdTU19XQ0UsIGdpbXBsZV9zdGF0ZW1lbnRfd2NlLCBmYWxzZSkKIERFRkdT U1RSVUNUKEdTU19PTVAsIGdpbXBsZV9zdGF0ZW1lbnRfb21wLCBmYWxzZSkK IERFRkdTU1RSVUNUKEdTU19PTVBfQ1JJVElDQUwsIGdvbXBfY3JpdGljYWws IGZhbHNlKQorREVGR1NTVFJVQ1QoR1NTX09NUF9PUkRFUkVELCBnb21wX29y ZGVyZWQsIGZhbHNlKQogREVGR1NTVFJVQ1QoR1NTX09NUF9GT1IsIGdvbXBf Zm9yLCBmYWxzZSkKIERFRkdTU1RSVUNUKEdTU19PTVBfUEFSQUxMRUxfTEFZ T1VULCBnaW1wbGVfc3RhdGVtZW50X29tcF9wYXJhbGxlbF9sYXlvdXQsIGZh bHNlKQogREVGR1NTVFJVQ1QoR1NTX09NUF9UQVNLLCBnb21wX3Rhc2ssIGZh bHNlKQpkaWZmIC0tZ2l0IGEvZ2NjL29tcC1sb3cuYyBiL2djYy9vbXAtbG93 LmMKaW5kZXggODM2NzdlYS4uMWYyMmIxYiAxMDA2NDQKLS0tIGEvZ2NjL29t cC1sb3cuYworKysgYi9nY2Mvb21wLWxvdy5jCkBAIC0yOTk2LDYgKzI5OTYs OCBAQCBzY2FuX29tcF90ZWFtcyAoZ29tcF90ZWFtcyAqc3RtdCwgb21wX2Nv bnRleHQgKm91dGVyX2N0eCkKIHN0YXRpYyBib29sCiBjaGVja19vbXBfbmVz dGluZ19yZXN0cmljdGlvbnMgKGdpbXBsZSBzdG10LCBvbXBfY29udGV4dCAq Y3R4KQogeworICB0cmVlIGM7CisKICAgLyogTm8gbmVzdGluZyBvZiBub24t T3BlbkFDQyBTVE1UICh0aGF0IGlzLCBhbiBPcGVuTVAgb25lLCBvciBhIEdP TVAgYnVpbHRpbikKICAgICAgaW5zaWRlIGFuIE9wZW5BQ0MgQ1RYLiAgKi8K ICAgaWYgKCEoaXNfZ2ltcGxlX29tcCAoc3RtdCkKQEAgLTMyMTYsNyArMzIx OCw1MSBAQCBjaGVja19vbXBfbmVzdGluZ19yZXN0cmljdGlvbnMgKGdpbXBs ZSBzdG10LCBvbXBfY29udGV4dCAqY3R4KQogCSAgICBicmVhazsKIAkgIH0K ICAgICAgIGJyZWFrOworICAgIGNhc2UgR0lNUExFX09NUF9UQVNLOgorICAg ICAgZm9yIChjID0gZ2ltcGxlX29tcF90YXNrX2NsYXVzZXMgKHN0bXQpOyBj OyBjID0gT01QX0NMQVVTRV9DSEFJTiAoYykpCisJaWYgKE9NUF9DTEFVU0Vf Q09ERSAoYykgPT0gT01QX0NMQVVTRV9ERVBFTkQKKwkgICAgJiYgKE9NUF9D TEFVU0VfREVQRU5EX0tJTkQgKGMpID09IE9NUF9DTEFVU0VfREVQRU5EX1NP VVJDRQorCQl8fCBPTVBfQ0xBVVNFX0RFUEVORF9LSU5EIChjKSA9PSBPTVBf Q0xBVVNFX0RFUEVORF9TSU5LKSkKKwkgIHsKKwkgICAgZXJyb3JfYXQgKE9N UF9DTEFVU0VfTE9DQVRJT04gKGMpLAorCQkgICAgICAiZGVwZW5kKCVzKSBp cyBvbmx5IGF2YWlsYWJsZSBpbiAnb21wIG9yZGVyZWQnIiwKKwkJICAgICAg T01QX0NMQVVTRV9ERVBFTkRfS0lORCAoYykgPT0gT01QX0NMQVVTRV9ERVBF TkRfU09VUkNFCisJCSAgICAgID8gInNvdXJjZSIgOiAic2luayIpOworCSAg ICByZXR1cm4gZmFsc2U7CisJICB9CisgICAgICBicmVhazsKICAgICBjYXNl IEdJTVBMRV9PTVBfT1JERVJFRDoKKyAgICAgIGZvciAoYyA9IGdpbXBsZV9v bXBfb3JkZXJlZF9jbGF1c2VzIChhc19hIDxnb21wX29yZGVyZWQgKj4gKHN0 bXQpKTsKKwkgICBjOyBjID0gT01QX0NMQVVTRV9DSEFJTiAoYykpCisJewor CSAgZW51bSBvbXBfY2xhdXNlX2RlcGVuZF9raW5kIGtpbmQgPSBPTVBfQ0xB VVNFX0RFUEVORF9LSU5EIChjKTsKKwkgIGlmIChraW5kID09IE9NUF9DTEFV U0VfREVQRU5EX1NPVVJDRQorCSAgICAgIHx8IGtpbmQgPT0gT01QX0NMQVVT RV9ERVBFTkRfU0lOSykKKwkgICAgeworCSAgICAgIGJvb2wgaGF2ZV9vcmRl cmVkID0gZmFsc2U7CisJICAgICAgLyogTG9vayBmb3IgY29udGFpbmluZyBv cmRlcmVkKE4pIGxvb3AuICAqLworCSAgICAgIGZvciAob21wX2NvbnRleHQg KmN0eF8gPSBjdHg7IGN0eF87IGN0eF8gPSBjdHhfLT5vdXRlcikKKwkJaWYg KGdpbXBsZV9jb2RlIChjdHhfLT5zdG10KSA9PSBHSU1QTEVfT01QX0ZPUgor CQkgICAgJiYgZmluZF9vbXBfY2xhdXNlIChnaW1wbGVfb21wX2Zvcl9jbGF1 c2VzIChjdHhfLT5zdG10KSwKKwkJCQkJT01QX0NMQVVTRV9PUkRFUkVEKSkK KwkJICB7CisJCSAgICBoYXZlX29yZGVyZWQgPSB0cnVlOworCQkgICAgYnJl YWs7CisJCSAgfQorCSAgICAgIGlmICghaGF2ZV9vcmRlcmVkKQorCQl7CisJ CSAgZXJyb3JfYXQgKE9NUF9DTEFVU0VfTE9DQVRJT04gKGMpLAorCQkJICAg ICJkZXBlbmQgY2xhdXNlIGlzIG5vdCB3aXRoaW4gYW4gb3JkZXJlZCBsb29w Iik7CisJCSAgcmV0dXJuIGZhbHNlOworCQl9CisJICAgIH0KKwkgIGVsc2UK KwkgICAgeworCSAgICAgIGVycm9yX2F0IChPTVBfQ0xBVVNFX0xPQ0FUSU9O IChjKSwKKwkJCSJpbnZhbGlkIGRlcGVuZCBraW5kIGluIG9tcCBvcmRlcmVk IGRlcGVuZCIpOworCSAgICAgIHJldHVybiBmYWxzZTsKKwkgICAgfQorCX0K ICAgICAgIGZvciAoOyBjdHggIT0gTlVMTDsgY3R4ID0gY3R4LT5vdXRlcikK IAlzd2l0Y2ggKGdpbXBsZV9jb2RlIChjdHgtPnN0bXQpKQogCSAgewpAQCAt MTI1NjIsNiArMTI2MDgsMTAgQEAgbG93ZXJfZGVwZW5kX2NsYXVzZXMgKGdp bXBsZSBzdG10LCBnaW1wbGVfc2VxICppc2VxLCBnaW1wbGVfc2VxICpvc2Vx KQogCWNhc2UgT01QX0NMQVVTRV9ERVBFTkRfSU5PVVQ6CiAJICBuX291dCsr OwogCSAgYnJlYWs7CisJY2FzZSBPTVBfQ0xBVVNFX0RFUEVORF9TT1VSQ0U6 CisJY2FzZSBPTVBfQ0xBVVNFX0RFUEVORF9TSU5LOgorCSAgLyogRklYTUU6 ICAqLworCSAgYnJlYWs7CiAJZGVmYXVsdDoKIAkgIGdjY191bnJlYWNoYWJs ZSAoKTsKIAl9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9nb21wL3NpbmstMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vZ29tcC9zaW5rLTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4zNTMzMzlmCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vZ29tcC9zaW5rLTEuYwpAQCAtMCwwICsxLDg4 IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25z ICItZm9wZW5tcCAtV3Vua25vd24tcHJhZ21hcyAtV2Vycm9yIiB9ICovCisK K2V4dGVybiB2b2lkIGJhcmsgKHZvaWQpOworaW50IGksaixrOworaW50IGFy cmF5WzU1NV07CisKK2ludAorbWFpbigpCit7CisjcHJhZ21hIG9tcCBwYXJh bGxlbCBmb3Igb3JkZXJlZCgyKQorICBmb3IgKGk9MDsgaSA8IDEwMDsgKytp KQorICAgIGZvciAoaj0wOyBqIDwgMTAwOyArK2opCisgICAgICB7CisvKiBP VVQgdmFyaWFudCBkb2VzIG5vdCBhcHBseSB0byBPUkRFUkVEIGNvbnN0cnVj dC4gICovCisjcHJhZ21hIG9tcCBvcmRlcmVkIGRlcGVuZChvdXQ6aSkgLyog eyBkZy1lcnJvciAiaW52YWxpZCBkZXBlbmQga2luZCIgfSAqLworCisvKiBk ZXBlbmQoc2luay4uLikgaXMgYWxsb3dlZCB3aXRob3V0IGFuIG9mZnNldC4g ICovCisjcHJhZ21hIG9tcCBvcmRlcmVkIGRlcGVuZChzaW5rOmksaisxKQor CisjcHJhZ21hIG9tcCBvcmRlcmVkIGRlcGVuZChzaW5rOmktMSxqKzIpCisg ICAgICBiYXJrICgpOworICAgICAgfQorCisvKiBkZXBlbmQoc2luay4uLikg ZG9lcyBub3QgYXBwbHkgdG8gYG9tcCB0YXNrJy4gICovCisjcHJhZ21hIG9t cCB0YXNrIGRlcGVuZChzaW5rOmkrMykgLyogeyBkZy1lcnJvciAib25seSBh dmFpbGFibGUgaW4gJ29tcCBvcmRlcmVkJyIgfSAqLworICBiYXJrKCk7CisK KyNwcmFnbWEgb21wIG9yZGVyZWQgZGVwZW5kKHNvdXJjZSkgLyogeyBkZy1l cnJvciAiZGVwZW5kIGNsYXVzZSBpcyBub3Qgd2l0aGluIGFuIG9yZGVyZWQg bG9vcCIgfSAqLworCisjcHJhZ21hIG9tcCBwYXJhbGxlbCBmb3Igb3JkZXJl ZCgyKQorICBmb3IgKGk9MDsgaSA8IDEwMDsgKytpKQorICAgIGZvciAoaj0w OyBqIDwgMTAwOyArK2opCisgICAgICB7CisvKiBNdWx0aXBsZSBkZXBlbmQo c291cmNlKSBhbGxvd2VkLiAgKi8KKyNwcmFnbWEgb21wIG9yZGVyZWQgZGVw ZW5kKHNvdXJjZSkKKyNwcmFnbWEgb21wIG9yZGVyZWQgZGVwZW5kKHNvdXJj ZSkKKyAgICAgIH0KKworI3ByYWdtYSBvbXAgcGFyYWxsZWwgZm9yIG9yZGVy ZWQoMikKKyAgZm9yIChpPTA7IGkgPCAxMDA7ICsraSkKKyAgICBmb3IgKGo9 MDsgaiA8IDEwMDsgKytqKQorICAgICAgeworI3ByYWdtYSBvbXAgb3JkZXJl ZCBkZXBlbmQoc2luazppKzIsai0yLGsrMikgLyogeyBkZy1lcnJvciAiaXMg bm90IGFuIGl0ZXJhdGlvbiB2YXIiIH0gKi8KKwliYXJrKCk7CisgICAgICB9 CisKKyNwcmFnbWEgb21wIHBhcmFsbGVsIGZvciBvcmRlcmVkKDIpCisgIGZv ciAoaT0wOyBpIDwgMTAwOyArK2kpCisgICAgZm9yIChqPTA7IGogPCAxMDA7 ICsraikKKyAgICAgIHsKKyNwcmFnbWEgb21wIG9yZGVyZWQgZGVwZW5kKHNp bms6aSsyKSAvKiB7IGRnLWVycm9yICJkb2VzIG5vdCBtYXRjaCBudW1iZXIg b2YgaXRlcmF0aW9uIHZhcmlhYmxlcyIgfSAqLworCWJhcmsoKTsKKyAgICAg IH0KK30KKwordm9pZCBiYXIgKGludCwgaW50LCBpbnQpOworCit2b2lkCitm b28gKGludCBuLCBpbnQgbSwgaW50IG8pCit7CisgIGludCBpLCBqLCBrOwor ICAjcHJhZ21hIG9tcCBmb3IgY29sbGFwc2UoMikgb3JkZXJlZCgyKQorICBm b3IgKGkgPSAwOyBpIDwgbTsgaSsrKQorICAgIHsKKyAgICAgIGZvciAoaiA9 IDA7IGogPCBuOyBqKyspCisgICAgICAgIGZvciAoayA9IDA7IGsgPCBvOyBr KyspCisgICAgICAgICAgeworI3ByYWdtYSBvbXAgb3JkZXJlZCBkZXBlbmQo c2luazogaS0xLGosaykgZGVwZW5kKHNpbms6IGksai0xLGstMSkgZGVwZW5k KHNpbms6IGktMSxqLTEsaysxKQorCSAgICBiYXIgKGksIGosIGspOworI3By YWdtYSBvbXAgb3JkZXJlZCBkZXBlbmQoc291cmNlKQorCSAgfQorICAgIH0K K30KKworaW50CitiYXogKCkKK3sKKyAgaW50IGksIGo7CisjcHJhZ21hIG9t cCBwYXJhbGxlbCBmb3Igb3JkZXJlZCgyKQorICBmb3IgKGk9MDsgaSA8IDEw MDsgKytpKQorICAgIGZvciAoaj0wOyBqIDwgMTAwOyArK2opCisgICAgICB7 CisjcHJhZ21hIG9tcCBvcmRlcmVkIGRlcGVuZChzaW5rOmktMSxqLTMpCisg ICAgICAgIGJhciAoaSwgaiwgMCk7CisjcHJhZ21hIG9tcCBvcmRlcmVkIGRl cGVuZChzb3VyY2UpCisgICAgICB9Cit9CmRpZmYgLS1naXQgYS9nY2MvdHJl ZS1pbmxpbmUuYyBiL2djYy90cmVlLWlubGluZS5jCmluZGV4IDA2YjQwNzcu LjJhYzQyMjEgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLWlubGluZS5jCisrKyBi L2djYy90cmVlLWlubGluZS5jCkBAIC0xNDc5LDcgKzE0NzksNyBAQCByZW1h cF9naW1wbGVfc3RtdCAoZ2ltcGxlIHN0bXQsIGNvcHlfYm9keV9kYXRhICpp ZCkKIAogCWNhc2UgR0lNUExFX09NUF9PUkRFUkVEOgogCSAgczEgPSByZW1h cF9naW1wbGVfc2VxIChnaW1wbGVfb21wX2JvZHkgKHN0bXQpLCBpZCk7Ci0J ICBjb3B5ID0gZ2ltcGxlX2J1aWxkX29tcF9vcmRlcmVkIChzMSk7CisJICBj b3B5ID0gZ2ltcGxlX2J1aWxkX29tcF9vcmRlcmVkIChzMSwgTlVMTCk7CiAJ ICBicmVhazsKIAogCWNhc2UgR0lNUExFX09NUF9TRUNUSU9OOgpkaWZmIC0t Z2l0IGEvZ2NjL3RyZWUtcHJldHR5LXByaW50LmMgYi9nY2MvdHJlZS1wcmV0 dHktcHJpbnQuYwppbmRleCA3ZjhlMGZlLi4yN2MzOTgxIDEwMDY0NAotLS0g YS9nY2MvdHJlZS1wcmV0dHktcHJpbnQuYworKysgYi9nY2MvdHJlZS1wcmV0 dHktcHJpbnQuYwpAQCAtNTMzLDYgKzUzMyw5IEBAIGR1bXBfb21wX2NsYXVz ZSAocHJldHR5X3ByaW50ZXIgKnBwLCB0cmVlIGNsYXVzZSwgaW50IHNwYywg aW50IGZsYWdzKQogCWNhc2UgT01QX0NMQVVTRV9ERVBFTkRfU09VUkNFOgog CSAgcHBfc3RyaW5nIChwcCwgInNvdXJjZSkiKTsKIAkgIHJldHVybjsKKwlj YXNlIE9NUF9DTEFVU0VfREVQRU5EX1NJTks6CisJICBwcF9zdHJpbmcgKHBw LCAic2luayIpOworCSAgYnJlYWs7CiAJZGVmYXVsdDoKIAkgIGdjY191bnJl YWNoYWJsZSAoKTsKIAl9Cg== --------------050708070006020907030402--