From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Matt Wette Newsgroups: gmane.lisp.guile.bugs Subject: bug#27782: mman patch for v3.0.9 Date: Tue, 14 Feb 2023 06:50:39 -0800 Message-ID: <31426cbf-dec2-9764-bbe4-99322d02de66@gmail.com> References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------kCCVVbCEOfj8TolyIBF8uY0E" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="29389"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 To: 27782@debbugs.gnu.org Original-X-From: bug-guile-bounces+guile-bugs=m.gmane-mx.org@gnu.org Tue Feb 14 15:51:30 2023 Return-path: Envelope-to: guile-bugs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pRweX-0007Mz-Uu for guile-bugs@m.gmane-mx.org; Tue, 14 Feb 2023 15:51:30 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pRwe8-0008W7-UT; Tue, 14 Feb 2023 09:51:04 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pRwe6-0008VU-QT for bug-guile@gnu.org; Tue, 14 Feb 2023 09:51:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pRwe6-0000ir-I0 for bug-guile@gnu.org; Tue, 14 Feb 2023 09:51:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pRwe6-000311-Cf for bug-guile@gnu.org; Tue, 14 Feb 2023 09:51:02 -0500 X-Loop: help-debbugs@gnu.org In-Reply-To: Resent-From: Matt Wette Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Tue, 14 Feb 2023 14:51:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 27782 X-GNU-PR-Package: guile Original-Received: via spool by 27782-submit@debbugs.gnu.org id=B27782.167638625011557 (code B ref 27782); Tue, 14 Feb 2023 14:51:02 +0000 Original-Received: (at 27782) by debbugs.gnu.org; 14 Feb 2023 14:50:50 +0000 Original-Received: from localhost ([127.0.0.1]:53054 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pRwdt-00030K-KY for submit@debbugs.gnu.org; Tue, 14 Feb 2023 09:50:50 -0500 Original-Received: from mail-pl1-f180.google.com ([209.85.214.180]:46658) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pRwdr-000304-Gi for 27782@debbugs.gnu.org; Tue, 14 Feb 2023 09:50:48 -0500 Original-Received: by mail-pl1-f180.google.com with SMTP id ja21so9693348plb.13 for <27782@debbugs.gnu.org>; Tue, 14 Feb 2023 06:50:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=07rGQFxw3LsRb3lx6ZL0+2pov5pTL5czrgrBDBrvab4=; b=jUJvqA3O7OxceKuEDQcTc6Q5VY6Ja9bGEWMbM7Z5IlhYj++hrPoBOrNRw04nA44NYT o1QV5VU9lIyCx1oFx/V7ubHZ2A7GHRmwnoCAWdmx8SyCrWT9lCblCavRxGx1DXu83npg 687eONasKabItxaNwsNnDfo9sxmGqQSm73EiN/rspRFYRMmpuZCf0zDpFbN0XKJmsY/9 CV9L2tiBWbaOGjhtpqxAlWwVsY9p3BznycRb8aNrGHUMnrwho+2XvOW8g5Le5YmIA+mM kABcNS+e1Lq+A1V7DrYMGB9U+Co5f5eiyRFOfNJOZTdtetpcBayUoGQmGIf9AlwYJaS/ FuXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=07rGQFxw3LsRb3lx6ZL0+2pov5pTL5czrgrBDBrvab4=; b=VwhU2BbSsLhS+wFBQeH73zjHZxn6ltJc4vN5vbGkwz9s3xpfEvuKml/Qp5UA6gF/2Q oX48yRfF0bRSlMUODEskI/mdHkI6mj9wYGjB+D1wj2rOrzZRwUj+hgjkwwp4EkP8I0md Nw6E2iKCxG/rUjcUeHJmFnWH2BDMNXdyskxwZMYtIzHN/g5ciVvI22IjgFVr3FDpMhmd 5L3t+J9Ga+llFdZoJ7FxEHhl2efX540sMdh3S16z7fWGtUxabbeotSOR0GxoZiPrZ3yK 5QrewU77kKZCzjbw30/Siof+HVXb3QYiqz9PLN+Dmbu1tfjIwN9jBwMOZ6SxcapGedlH DS7A== X-Gm-Message-State: AO0yUKUB9al+O8BX6TOIHqEz+ndzjszzBkShrsIvyODid6aoL+BUimUG moHTKEy1g6yghKLSiGpMzLEXNUvuskE= X-Google-Smtp-Source: AK7set8mH4WSuHxYHsIlyjrt7IGS/GD5Xdce4795UZdrM5J2gAoQGfrmBI2o1dTwaFf4rHhdSeMI9A== X-Received: by 2002:a05:6a21:9718:b0:bc:c456:9621 with SMTP id ub24-20020a056a21971800b000bcc4569621mr1949627pzb.8.1676386241032; Tue, 14 Feb 2023 06:50:41 -0800 (PST) Original-Received: from [192.168.2.157] (64-52-138-37.championbroadband.com. [64.52.138.37]) by smtp.gmail.com with ESMTPSA id g6-20020a62e306000000b005a8e9e2f1c5sm455319pfh.187.2023.02.14.06.50.40 for <27782@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 14 Feb 2023 06:50:40 -0800 (PST) Content-Language: en-US X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane-mx.org@gnu.org Original-Sender: bug-guile-bounces+guile-bugs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.lisp.guile.bugs:10546 Archived-At: This is a multi-part message in MIME format. --------------kCCVVbCEOfj8TolyIBF8uY0E Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Note.  I have made more changes based on feedback from the mailing list. 1) removed use of scm_c_take_typed_bytevector 2) changed code to generate PAGE_SIZE I think the mmap finalizer still needs review from the Guile experts. I'm attaching a patch to the v3.0.9 release (commit 9b20ca). Sorry about not using format-patch, but diff. Matt --------------kCCVVbCEOfj8TolyIBF8uY0E Content-Type: text/x-patch; charset=UTF-8; name="v3.0.9-mman.patch" Content-Disposition: attachment; filename="v3.0.9-mman.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBkNWNlMWM0 YWMuLmMzYzMzZThiMyAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3Vy ZS5hYwpAQCAtMTAxOCw2ICsxMDE4LDggQEAgQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHRt LnRtX2dtdG9mZl0sLCwKIF0pCiBHVUlMRV9TVFJVQ1RfVVRJTUJVRgogCitBQ19DSEVDS19G VU5DUyhbbXN5bmNdKQorCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIwpkaWZmIC0tZ2l0IGEvZG9j L3JlZi9wb3NpeC50ZXhpIGIvZG9jL3JlZi9wb3NpeC50ZXhpCmluZGV4IDU2NTNkMzc1OC4u MTZmM2JiYzQ5IDEwMDY0NAotLS0gYS9kb2MvcmVmL3Bvc2l4LnRleGkKKysrIGIvZG9jL3Jl Zi9wb3NpeC50ZXhpCkBAIC0xMjE2LDYgKzEyMTYsNTEgQEAgdmFsaWQgc2VwYXJhdG9ycy4g IFRodXMsIHByb2dyYW1zIHNob3VsZCBub3QgYXNzdW1lIHRoYXQKIHNlcGFyYXRvci0tLWUu Zy4sIHdoZW4gZXh0cmFjdGluZyB0aGUgY29tcG9uZW50cyBvZiBhIGZpbGUgbmFtZS4KIEBl bmQgZGVmdnIKIAorQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBtbWFwIGFkZHIgbGVuIFtw cm90IFtmbGFncyBbZmQgW29mZnNldF1dXV0KK0BkZWZmbngge1NjaGVtZSBQcm9jZWR1cmV9 IG1tYXAvc2VhcmNoIGFkZHIgbGVuIFtwcm90IFtmbGFncyBbZmQgW29mZnNldF1dXV0KK0Ny ZWF0ZSBhIG1lbW9yeSBtYXBwaW5nLCByZXR1cm5pbmcgYSBieXRldmVjdG9yLiAgQHZhcnth ZGRyfSwgaWYKK25vbi16ZXJvLCBpcyB0aGUgc3RhcmluZyBhZGRyZXNzOyBvciwgaWYgemVy bywgaXMgYXNzaWduZWQgYnkgdGhlCitzeXN0ZW0uICBAdmFye3Byb3R9LCBpZiBwcm92aWRl ZCwgYXNzaWducyBwcm90ZWN0aW9uLiAgQHZhcntmZH0sCitpZiBwcm92aWRlZCBhc3NvY2lh dGVzIHRoZSBtZW1vcnkgcmVnaW9uIHdpdGggYSBmaWxlLCBzdGFydGluZworYXQgQHZhcntv ZmZzZXR9LCBpZiBwcm92aWRlZC4KK1RoZSByZWdpb24gcmV0dXJuZWQgYnkgbW1hcCB3aWxs IE5PVCBiZSBzZWFyY2hlZCBieSB0aGUgZ2FyYmFnZQorIGNvbGxlY3RvciBmb3IgcG9pbnRl cnMsIHdoaWxlIHRoYXQgcmV0dXJuZWQgYnkgbW1hcC9zZWFyY2ggd2lsbC4KK05vdGUgdGhh dCB0aGUgZmluYWxpemVyIGZvciB0aGUgcmV0dXJuZWQgYnl0ZXZlY3RvciB3aWxsIGNhbGwg bXVubWFwLgorRGVmYXVsdHMgZm9yIG9wdGlvbmFsIGFyZ3VtZW50cyBhcmUKK0B0YWJsZSBA YXNpcworQGl0ZW0gcHJvdAorKGxvZ2lvciBQUk9UX1JFQUQgUFJPVF9XUklURSkKK0BpdGVt IGZsYWdzCisobG9naW9yIE1BUF9BTk9OWU1PVVMgTUFQX1BSSVZBVEUpCitAaXRlbSBmZAor LTEKK0BpdGVtIG9mZnNldAorMAorQGVuZCB0YWJsZQorQGVuZCBkZWZmbgorCitAZGVmZm4g e1NjaGVtZSBQcm9jZWR1cmV9IG11bm1hcCBidmVjCitHaXZlbiBieXRldmVjdG9yIGdlbmVy YXRlZCBieSBtbWFwIG9yIG1tYXAvc2VhcmNoLCB1bm1hcCB0aGUKK3RoZSBhc3NvY2lhdGVk IG1lbW9yeS4gIFRoZSBhcmd1bWVudCB3aWxsIGJlIG1vZGlmaWVkIHRvCityZWZsZWN0IGEg emVybyBsZW5ndGggYnYuICBUaGUgcmV0dXJuIHZhbHVlIGlzIHVuc3BlY2lmaWVkLgorTm90 ZSB0aGF0IG11bm1hcCBpcyBjYWxsZWQgYnkgZmluYWxpemVyIGFzc29jaWF0ZWQgd2l0aAor Ynl0ZXZlY3RvcnMgcmV0dXJuZWQgZnJvbSBtbWFwIGFuZCBtbWFwL3NlYXJjaC4KK0BlbmQg ZGVmZm4KKworQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBtc3luYyBhZGRyIGxlbmd0aCBm bGFnCitGbHVzaCBjaGFuZ2VzIG1hZGUgdG8gdGhlIGluLWNvcmUgY29weSBvZiBhIGZpbGUg bWFwcGVkIHVzaW5nCittbWFwIG9yIG1tYXAvc2VhcmNoLiAgVGhpcyBzaG91bGQgYmUgZXhl Y3V0ZWQgb24gbW9kaWZpZWQgbWVtb3J5CitiZWZvcmUgY2FsbGluZyBtdW5tYXAuICBUaGUg QHZhcntmbGFnc30gYXJndW1lbnQgbXVzdCBiZSBleGFjdGx5IG9uZQorb2YgdGhlIGZvbGxv d2luZzoKK0B0YWJsZSBAY29kZQorQGl0ZW0gTVNfQVNZTkMKK0luaXRpYXRlIHVwZGF0ZSwg cmV0dXJuIGltbWVkaWF0ZWx5LgorQGl0ZW0gTVNfU1lOQworSW5pdGlhdGUgdXBkYXRlLCBi bG9jayB1bnRpbCBjb21wbGV0ZS4KK0BpdGVtIE1TX0lOVkFMSURBVEUKK0ludmFsaWRhdGUg b3RoZXIgbWFwcGluZ3Mgb2YgdGhlIHNhbWUgZmlsZS4KK0BlbmQgdGFibGUKK0BlbmQgZGVm Zm4KIAogQG5vZGUgVXNlciBJbmZvcm1hdGlvbgogQHN1YnNlY3Rpb24gVXNlciBJbmZvcm1h dGlvbgpkaWZmIC0tZ2l0IGEvbGliZ3VpbGUvZmlsZXN5cy5jIGIvbGliZ3VpbGUvZmlsZXN5 cy5jCmluZGV4IDFmMGJiYTU1Ni4uMWY0YzVjNzkzIDEwMDY0NAotLS0gYS9saWJndWlsZS9m aWxlc3lzLmMKKysrIGIvbGliZ3VpbGUvZmlsZXN5cy5jCkBAIC02NywxMyArNjcsMjEgQEAK ICMgaW5jbHVkZSA8c3lzL3NlbmRmaWxlLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU1lT X01NQU5fSAorIyBpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2VuZGlmCisKICNpbmNsdWRlICJh c3luYy5oIgorI2luY2x1ZGUgImF0b21pY3MtaW50ZXJuYWwuaCIgICAgICAgICAgIC8qIG1t YXAgKi8KICNpbmNsdWRlICJib29sZWFuLmgiCiAjaW5jbHVkZSAiZHlud2luZC5oIgogI2lu Y2x1ZGUgImZkZXMtZmluYWxpemVycy5oIgogI2luY2x1ZGUgImZlYXR1cmUuaCIKKyNpbmNs dWRlICJmaW5hbGl6ZXJzLmgiICAgICAgICAgICAgICAgICAvKiBtbWFwICovCisjaW5jbHVk ZSAiZm9yZWlnbi5oIiAgICAgICAgICAgICAgICAgICAgLyogbW1hcCAqLwogI2luY2x1ZGUg ImZwb3J0cy5oIgogI2luY2x1ZGUgImdzdWJyLmgiCisjaW5jbHVkZSAiaW9leHQuaCIgICAg ICAgICAgICAgICAgICAgICAgLyogbW1hcCAqLwogI2luY2x1ZGUgImlzZWxlY3QuaCIKICNp bmNsdWRlICJsaXN0LmgiCiAjaW5jbHVkZSAibG9hZC5oIgkvKiBmb3Igc2NtX2lfbWlycm9y X2JhY2tzbGFzaGVzICovCkBAIC0yMjYzLDYgKzIyNzEsMzExIEBAIHNjbV9kaXJfZnJlZSAo U0NNIHApCiAKIAwKIAorI2lmZGVmIEhBVkVfU1lTX01NQU5fSAorLyogc2VlIGh0dHBzOi8v cHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS9mdW5jdGlvbnMvbW1h cC5odG1sICovCisKK3N0YXRpYyB2b2lkCittbWFwX2ZpbmFsaXplciAodm9pZCAqcHRyLCB2 b2lkICpkYXRhKQoreworICBTQ00gYnZlYzsKKyAgdm9pZCAqY19hZGRyOworICBzaXplX3Qg Y19sZW47CisgIGludCBydjsKKworICBidmVjID0gU0NNX1BBQ0tfUE9JTlRFUiAocHRyKTsK KyAgaWYgKCFTQ01fQllURVZFQ1RPUl9QIChidmVjKSkKKyAgICBzY21fbWlzY19lcnJvciAo Im1tYXAiLCAiZXhwZWN0aW5nIGJ5dGV2ZWN0b3IiLCBTQ01fRU9MKTsKKworICBjX2FkZHIg PSBTQ01fQllURVZFQ1RPUl9DT05URU5UUyAoYnZlYyk7CisgIGNfbGVuID0gU0NNX0JZVEVW RUNUT1JfTEVOR1RIIChidmVjKTsKKyAgU0NNX1NZU0NBTEwgKHJ2ID0gbXVubWFwKGNfYWRk ciwgY19sZW4pKTsKKyAgaWYgKHJ2ICE9IDApCisgICAgc2NtX21pc2NfZXJyb3IgKCJtbWFw IiwgImZhaWxlZCB0byBtdW5tYXAgbWVtb3J5IiwgU0NNX0VPTCk7Cit9CisKKy8qIENvZGUg Zm9yIHNjbV9keW53aW5kX2FjcXVpcmVfcG9ydCBhbmQgcmVsZWFzZV9wb3J0IHNvdXJjZWQg ZnJvbSBwb3J0cy5jLiAqLworCitzdGF0aWMgdm9pZAorcmVsZWFzZV9wb3J0IChTQ00gcG9y dCkKK3sKKyAgc2NtX3RfcG9ydCAqcHQgPSBTQ01fUE9SVCAocG9ydCk7CisgIHVpbnQzMl90 IGN1ciA9IDEsIG5leHQgPSAwOworICB3aGlsZSAoIXNjbV9hdG9taWNfY29tcGFyZV9hbmRf c3dhcF91aW50MzIgKCZwdC0+cmVmY291bnQsICZjdXIsIG5leHQpKQorICAgIHsKKyAgICAg IGlmIChjdXIgPT0gMCkKKyAgICAgICAgcmV0dXJuOworICAgICAgbmV4dCA9IGN1ciAtIDE7 CisgICAgfQorIGlmIChjdXIgPiAxKQorICAgIHJldHVybjsKKworICBpZiAoU0NNX1BPUlRf VFlQRSAocG9ydCktPmNsb3NlKQorICAgIFNDTV9QT1JUX1RZUEUgKHBvcnQpLT5jbG9zZSAo cG9ydCk7CisKKyAgLyogU2tpcCBlbmNvZGluZyBjb2RlIGZyb20gcG9ydHMuYyEgKi8KK30K Kworc3RhdGljIHZvaWQKK3NjbV9keW53aW5kX2FjcXVpcmVfcG9ydCAoU0NNIHBvcnQpCit7 CisgIHNjbV90X3BvcnQgKnB0ID0gU0NNX1BPUlQgKHBvcnQpOworICB1aW50MzJfdCBjdXIg PSAxLCBuZXh0ID0gMjsKKyAgd2hpbGUgKCFzY21fYXRvbWljX2NvbXBhcmVfYW5kX3N3YXBf dWludDMyICgmcHQtPnJlZmNvdW50LCAmY3VyLCBuZXh0KSkKKyAgICB7CisgICAgICBpZiAo Y3VyID09IDApCisgICAgICAgIHNjbV93cm9uZ190eXBlX2FyZ19tc2cgKE5VTEwsIDAsIHBv cnQsICJvcGVuIHBvcnQiKTsKKyAgICAgIG5leHQgPSBjdXIgKyAxOworICAgIH0KKyAgc2Nt X2R5bndpbmRfdW53aW5kX2hhbmRsZXJfd2l0aF9zY20gKHJlbGVhc2VfcG9ydCwgcG9ydCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDTV9GX1dJTkRfRVhQ TElDSVRMWSk7Cit9CisKK1NDTV9ERUZJTkUgKHNjbV9tbWFwX3NlYXJjaCwgIm1tYXAvc2Vh cmNoIiwgMiwgNCwgMCwKKyAgICAgICAgICAgIChTQ00gYWRkciwgU0NNIGxlbiwgU0NNIHBy b3QsIFNDTSBmbGFncywgU0NNIGZpbGUsIFNDTSBvZmZzZXQpLAorCSAgICAiQ3JlYXRlIGEg bWVtb3J5IG1hcHBpbmcsIHJldHVybmluZyBhIGJ5dGV2ZWN0b3IuLiAgQHZhcnthZGRyfSxc biIKKwkgICAgImlmIG5vbi16ZXJvLCBpcyB0aGUgc3RhcmluZyBhZGRyZXNzOyBvciwgaWYg emVybywgaXMgYXNzaWduZWQgYnlcbiIKKwkgICAgInRoZSBzeXN0ZW0uICBAdmFye3Byb3R9 LCBpZiBwcm92aWRlZCwgYXNzaWducyBwcm90ZWN0aW9uLlxuIgorCSAgICAiQHZhcntmaWxl fSwgYSBwb3J0IG9yIGZkLCBpZiBwcm92aWRlZCBhc3NvY2lhdGVzIHRoZSBtZW1vcnlcbiIK KyAgICAgICAgICAgICJyZWdpb24gd2l0aCBhIGZpbGUgc3RhcnRpbmcgYXQgQHZhcntvZmZz ZXR9LCBpZiBwcm92aWRlZC5cbiIKKwkgICAgIlRoZSByZWdpb24gcmV0dXJuZWQgYnkgbW1h cCBXSUxMIGJlIHNlYXJjaGVkIGJ5IHRoZSBnYXJiYWdlXG4iCisJICAgICJjb2xsZWN0b3Ig Zm9yIHBvaW50ZXJzLiAgU2VlIGFsc28gbW1hcC4gIE5vdGUgdGhhdCB0aGVcbiIKKyAgICAg ICAgICAgICJmaW5hbGl6ZXIgZm9yIHRoZSByZXR1cm5lZCBieXRldmVjdG9yIHdpbGwgY2Fs bCBtdW5tYXAuXG4iCisJICAgICJEZWZhdWx0cyBmb3Igb3B0aW9uYWwgYXJndW1lbnRzIGFy ZVxuIgorCSAgICAiQHRhYmxlIEBhc2lzXG4iCisJICAgICJAaXRlbSBwcm90XG4obG9naW9y IFBST1RfUkVBRCBQUk9UX1dSSVRFKVxuIgorCSAgICAiQGl0ZW0gZmxhZ3Ncbihsb2dpb3Ig TUFQX0FOT05ZTU9VUyBNQVBfUFJJVkFURSlcbiIKKwkgICAgIkBpdGVtIGZkXG4tMVxuIgor CSAgICAiQGl0ZW0gb2Zmc2V0XG4wXG4iCisJICAgICJAZW5kIHRhYmxlIikKKyNkZWZpbmUg RlVOQ19OQU1FIHNfc2NtX21tYXBfc2VhcmNoCit7CisgIHZvaWQgKmNfbWVtLCAqY19hZGRy OworICBzaXplX3QgY19sZW47CisgIGludCBjX3Byb3QsIGNfZmxhZ3MsIGNfZmQ7CisgIHNj bV90X29mZiBjX29mZnNldDsKKyAgU0NNIHBvaW50ZXIsIGJ2ZWM7CisKKyAgaWYgKFNDTV9Q T0lOVEVSX1AgKGFkZHIpKQorICAgIGNfYWRkciA9IFNDTV9QT0lOVEVSX1ZBTFVFIChhZGRy KTsKKyAgZWxzZSBpZiAoc2NtX2lzX2ludGVnZXIgKGFkZHIpKQorICAgIGNfYWRkciA9ICh2 b2lkKikgc2NtX3RvX3VpbnRwdHJfdCAoYWRkcik7CisgIGVsc2UKKyAgICBzY21fbWlzY19l cnJvciAoIm1tYXAiLCAiYmFkIGFkZHIiLCBhZGRyKTsKKworICBjX2xlbiA9IHNjbV90b19z aXplX3QgKGxlbik7CisKKyAgaWYgKFNDTV9VTkJORFAgKHByb3QpKQorICAgIGNfcHJvdCA9 IFBST1RfUkVBRCB8IFBST1RfV1JJVEU7CisgIGVsc2UKKyAgICBjX3Byb3QgPSBzY21fdG9f aW50IChwcm90KTsKKworICBpZiAoU0NNX1VOQk5EUCAoZmxhZ3MpKQorICAgIGNfZmxhZ3Mg PSBNQVBfQU5PTllNT1VTIHwgTUFQX1BSSVZBVEU7CisgIGVsc2UKKyAgICBjX2ZsYWdzID0g c2NtX3RvX2ludCAoZmxhZ3MpOworCisgIHNjbV9keW53aW5kX2JlZ2luICgwKTsKKyAgCisg IGlmIChTQ01fVU5CTkRQIChmaWxlKSkKKyAgICBjX2ZkID0gLTE7CisgIGVsc2UgaWYgKHNj bV9pc19pbnRlZ2VyIChmaWxlKSkKKyAgICBjX2ZkID0gc2NtX3RvX2ludCAoZmlsZSk7Cisg IGVsc2UKKyAgICB7CisgICAgICAvKiBVc2UgdGhlIGZkIG9mIHRoZSBwb3J0IHVuZGVyIGNs b2JiZXIgcHJvdGVjdGlvbiBmcm9tIGNvbmN1cnJlbmN5LgorICAgICAgICAgQXMgc2NtX2R5 bndpbmRfYWNxdWlyZV9wb3J0IGFzc3VtZXMgdGhhdCBGSUxFIGlzIGEgcG9ydCwgY2hlY2sg CisgICAgICAgICB0aGF0IGZpcnN0LiAqLworICAgICAgU0NNX1ZBTElEQVRFX1BPUlQgKFND TV9BUkc1LCBmaWxlKTsKKyAgICAgIHNjbV9keW53aW5kX2FjcXVpcmVfcG9ydCAoZmlsZSk7 CisgICAgICBjX2ZkID0gc2NtX3RvX2ludCAoc2NtX2ZpbGVubyAoZmlsZSkpOworICAgIH0K KyAgCisgIGlmIChTQ01fVU5CTkRQIChvZmZzZXQpKQorICAgIGNfb2Zmc2V0ID0gMDsKKyAg ZWxzZQorICAgIGNfb2Zmc2V0ID0gc2NtX3RvX29mZl90IChvZmZzZXQpOworCisgIGlmICgo Y19hZGRyID09IE5VTEwpICYmIChjX2ZsYWdzICYgTUFQX0ZJWEVEKSkKKyAgICBzY21fbWlz Y19lcnJvciAoIm1tYXAiLCAiY2Fubm90IGhhdmUgTlVMTCBhZGRyIHcvIE1BUF9GSVhFRCIs IFNDTV9FT0wpOworCisgIFNDTV9TWVNDQUxMIChjX21lbSA9IG1tYXAoY19hZGRyLCBjX2xl biwgY19wcm90LCBjX2ZsYWdzLCBjX2ZkLCBjX29mZnNldCkpOworICBpZiAoY19tZW0gPT0g TUFQX0ZBSUxFRCkKKyAgICBzY21fc3lzZXJyb3IgKCJtbWFwIik7ICAgICAgICAgICAgICAv KiBlcnJubyBzZXQgKi8KKworICAvKiBUaGUgZmQgaXMgZnJlZSB0byBnbyBub3cuICovCisg IHNjbV9keW53aW5kX2VuZCAoKTsKKworICBwb2ludGVyID0gc2NtX2Zyb21fcG9pbnRlciAo KHNpZ25lZCBjaGFyICopIGNfbWVtLCBtbWFwX2ZpbmFsaXplcik7CisgIGJ2ZWMgPSBzY21f cG9pbnRlcl90b19ieXRldmVjdG9yIChwb2ludGVyLCBjX2xlbiwgY19vZmZzZXQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQ01fQVJSQVlfRUxFTUVOVF9UWVBF X1ZVOCk7CisKKyAgcmV0dXJuIGJ2ZWM7Cit9CisjdW5kZWYgRlVOQ19OQU1FCisKK1NDTV9E RUZJTkUgKHNjbV9tbWFwLCAibW1hcCIsIDIsIDQsIDAsCisgICAgICAgICAgICAoU0NNIGFk ZHIsIFNDTSBsZW4sIFNDTSBwcm90LCBTQ00gZmxhZ3MsIFNDTSBmaWxlLCBTQ00gb2Zmc2V0 KSwKKwkgICAgIkNyZWF0ZSBhIG1lbW9yeSBtYXBwaW5nLCByZXR1cm5pbmcgYSBieXRldmVj dG9yLiAgQHZhcnthZGRyfSwgaWZcbiIKKwkgICAgIm5vbi16ZXJvLCBpcyB0aGUgc3Rhcmlu ZyBhZGRyZXNzOyBvciwgaWYgemVybywgaXMgYXNzaWduZWQgYnkgdGhlXG4iCisJICAgICJz eXN0ZW0uICBAdmFye3Byb3R9LCBpZiBwcm92aWRlZCwgYXNzaWducyBwcm90ZWN0aW9uLlxu IgorICAgICAgICAgICAgIkB2YXJ7ZmlsZX0sIGEgcG9ydCBvciBmZCwgaWYgcHJvdmlkZWQg YXNzb2NpYXRlcyB0aGUgbWVtb3J5XG4iCisgICAgICAgICAgICAicmVnaW9uIHdpdGggYSBm aWxlLCBzdGFydGluZyBhdCBAdmFye29mZnNldH0sIGlmIHByb3ZpZGVkLlxuIgorCSAgICAi VGhlIHJlZ2lvbiByZXR1cm5lZCBieSBtbWFwIHdpbGwgTk9UIGJlIHNlYXJjaGVkIGJ5IHRo ZSBnYXJiYWdlXG4iCisJICAgICJjb2xsZWN0b3IgZm9yIHBvaW50ZXJzLiBTZWUgYWxzbyBt bWFwL3NlYXJjaC4gIE5vdGUgdGhhdCB0aGVcbiIKKyAgICAgICAgICAgICJmaW5hbGl6ZXIg Zm9yIHRoZSByZXR1cm5lZCBieXRldmVjdG9yIHdpbGwgY2FsbCBtdW5tYXAuXG4iCisJICAg ICJEZWZhdWx0cyBmb3IgYXJndW1lbnRzIGFyZTpcbiIKKwkgICAgIkB0YWJsZSBAYXNpc1xu IgorCSAgICAiQGl0ZW0gcHJvdFxuKGxvZ2lvciBQUk9UX1JFQUQgUFJPVF9XUklURSlcbiIK KwkgICAgIkBpdGVtIGZsYWdzXG4obG9naW9yIE1BUF9BTk9OWU1PVVMgTUFQX1BSSVZBVEUp XG4iCisJICAgICJAaXRlbSBmZFxuLTFcbiIKKwkgICAgIkBpdGVtIG9mZnNldFxuMFxuIgor CSAgICAiQGVuZCB0YWJsZSIpCisjZGVmaW5lIEZVTkNfTkFNRSBzX3NjbV9tbWFwCit7Cisg IHZvaWQgKmNfbWVtOworICBzaXplX3QgY19sZW47CisgIFNDTSBidmVjOworCisgIGJ2ZWMg PSBzY21fbW1hcF9zZWFyY2goYWRkciwgbGVuLCBwcm90LCBmbGFncywgZmlsZSwgb2Zmc2V0 KTsKKyAgY19tZW0gPSBTQ01fQllURVZFQ1RPUl9DT05URU5UUyhidmVjKTsKKyAgY19sZW4g PSBTQ01fQllURVZFQ1RPUl9MRU5HVEgoYnZlYyk7CisKKyAgLyogVGVsbCBHQyBub3QgdG8g c2NhbiBmb3IgcG9pbnRlcnMuICovCisgIEdDX2V4Y2x1ZGVfc3RhdGljX3Jvb3RzKGNfbWVt LCAoY2hhciopIGNfbWVtICsgY19sZW4pOworCisgIHJldHVybiBidmVjOworfQorI3VuZGVm IEZVTkNfTkFNRQorCisvKiBUaGUgZm9sbG93aW5nIGNvcGllZCBmcm9tIGJ5dGV2ZWN0b3Jz LmMuIEtsdWRnZT8gKi8KKyNkZWZpbmUgU0NNX0JZVEVWRUNUT1JfU0VUX0xFTkdUSChfYnYs IF9sZW4pICAgICAgICAgICAgXAorICBTQ01fU0VUX0NFTExfV09SRF8xICgoX2J2KSwgKHNj bV90X2JpdHMpIChfbGVuKSkKKyNkZWZpbmUgU0NNX0JZVEVWRUNUT1JfU0VUX0NPTlRFTlRT KF9idiwgX2NvbnRlbnRzKQlcCisgIFNDTV9TRVRfQ0VMTF9XT1JEXzIgKChfYnYpLCAoc2Nt X3RfYml0cykgKF9jb250ZW50cykpCisKK1NDTV9ERUZJTkUgKHNjbV9tdW5tYXAsICJtdW5t YXAiLCAxLCAwLCAwLAorICAgICAgICAgICAgKFNDTSBidmVjKSwKKwkgICAgIkdpdmVuIGJ5 dGV2ZWN0b3IgZ2VuZXJhdGVkIGJ5IG1tYXAgb3IgbW1hcC9zZWFyY2gsIHVubWFwIHRoZVxu IgorICAgICAgICAgICAgInRoZSBhc3NvY2lhdGVkIG1lbW9yeS4gIFRoZSBhcmd1bWVudCB3 aWxsIGJlIG1vZGlmaWVkIHRvIFxuIgorICAgICAgICAgICAgInJlZmxlY3QgYSB6ZXJvIGxl bmd0aCBidi4gVGhlIHJldHVybiB2YWx1ZSBpcyB1bnNwZWNpZmllZC5cbiIKKyAgICAgICAg ICAgICJOb3RlIHRoYXQgbXVubWFwIGlzIGNhbGxlZCBieSBmaW5hbGl6ZXIgYXNzb2NpYXRl ZCB3aXRoXG4iCisgICAgICAgICAgICAiYnl0ZXZlY3RvcnMgcmV0dXJuZWQgZnJvbSBtbWFw IGFuZCBtbWFwL3NlYXJjaC5cbiIpCisjZGVmaW5lIEZVTkNfTkFNRSBzX3NjbV9tdW5tYXAK K3sKKyAgdm9pZCAqYWRkcjsKKyAgc2l6ZV90IGxlbjsKKyAgaW50IHJ2OworCisgIFNDTV9W QUxJREFURV9CWVRFVkVDVE9SICgxLCBidmVjKTsKKworICBhZGRyID0gKHZvaWQgKikgU0NN X0JZVEVWRUNUT1JfQ09OVEVOVFMgKGJ2ZWMpOworICBsZW4gPSBTQ01fQllURVZFQ1RPUl9M RU5HVEggKGJ2ZWMpOworCisgIC8qIEludmFsaWRhdGUgZnVydGhlciB3b3JrIG9uIHRoaXMg Ynl0ZXZlY3Rvci4gKi8KKyAgU0NNX0JZVEVWRUNUT1JfU0VUX0xFTkdUSCAoYnZlYywgMCk7 CisgIFNDTV9CWVRFVkVDVE9SX1NFVF9DT05URU5UUyAoYnZlYywgTlVMTCk7CisKKyAgU0NN X1NZU0NBTEwgKHJ2ID0gbXVubWFwKGFkZHIsIGxlbikpOworICBpZiAocnYgPT0gLTEpCisg ICAgU0NNX1NZU0VSUk9SOwkJCS8qIGVycm5vIHNldCAqLworCisgIHJldHVybiBTQ01fVU5T UEVDSUZJRUQ7Cit9CisjdW5kZWYgRlVOQ19OQU1FCisKKyNpZmRlZiBIQVZFX01TWU5DCitT Q01fREVGSU5FIChzY21fbXN5bmMsICJtc3luYyIsIDIsIDAsIDAsCisgICAgICAgICAgICAo U0NNIGJ2ZWMsIFNDTSBmbGFncyksCisJICAgICJGbHVzaCBjaGFuZ2VzIG1hZGUgdG8gdGhl IGluLWNvcmUgY29weSBvZiBhIGZpbGUgbWFwcGVkIHVzaW5nXG4iCisgICAgICAgICAgICAi bW1hcCBvciBtbWFwL3NlYXJjaC4gIFRoaXMgc2hvdWxkIGJlIGV4ZWN1dGVkIG9uIG1vZGlm aWVkIG1lbW9yeVxuIgorICAgICAgICAgICAgImJlZm9yZSBjYWxsaW5nIG11bm1hcC4gIFRo ZSBAdmFye2ZsYWdzfSBhcmd1bWVudCBtdXN0IGJlIGV4YWN0bHlcbiIKKyAgICAgICAgICAg ICJvbmUgb2YgdGhlIGZvbGxvd2luZzpcbiIKKyAgICAgICAgICAgICJAdGFibGUgQGNvZGVc biIKKyAgICAgICAgICAgICJAaXRlbSBNU19BU1lOQ1xuIgorICAgICAgICAgICAgIkluaXRp YXRlIHVwZGF0ZSwgcmV0dXJuIGltbWVkaWF0ZWx5LlxuIgorICAgICAgICAgICAgIkBpdGVt IE1TX1NZTkNcbiIKKyAgICAgICAgICAgICJJbml0aWF0ZSB1cGRhdGUsIGJsb2NrIHVudGls IGNvbXBsZXRlLlxuIgorICAgICAgICAgICAgIkBpdGVtIE1TX0lOVkFMSURBVEVcbiIKKyAg ICAgICAgICAgICJJbnZhbGlkYXRlIG90aGVyIG1hcHBpbmdzIG9mIHRoZSBzYW1lIGZpbGUu XG4iCisgICAgICAgICAgICAiQGVuZCB0YWJsZVxuIgorICAgICAgICAgICAgIlRoZSByZXR1 cm4gdmFsdWUgaXMgdW5zcGVjaWZpZWQuIikKKyNkZWZpbmUgRlVOQ19OQU1FIHNfc2NtX21z eW5jCit7CisgIHZvaWQgKmFkZHI7CisgIHNpemVfdCBsZW47CisgIGludCBjX2ZsYWdzLCBy djsKKworICBTQ01fVkFMSURBVEVfQllURVZFQ1RPUiAoMSwgYnZlYyk7CisgIGFkZHIgPSAo dm9pZCAqKSBTQ01fQllURVZFQ1RPUl9DT05URU5UUyAoYnZlYyk7CisgIGxlbiA9IFNDTV9C WVRFVkVDVE9SX0xFTkdUSCAoYnZlYyk7CisKKyAgY19mbGFncyA9IHNjbV90b19pbnQgKGZs YWdzKTsKKworICBTQ01fU1lTQ0FMTCAocnYgPSBtc3luYyhhZGRyLCBsZW4sIGNfZmxhZ3Mp KTsKKyAgaWYgKHJ2ID09IC0xKQorICAgIFNDTV9TWVNFUlJPUjsJCQkvKiBlcnJubyBzZXQg Ki8KKworICByZXR1cm4gU0NNX1VOU1BFQ0lGSUVEOworfQorI3VuZGVmIEZVTkNfTkFNRQor I2VuZGlmIC8qIEhBVkVfTVNZTkMgKi8KKworc3RhdGljIHZvaWQgaW5pdF9tbWFuKHZvaWQp IHsKKyAgc2NtX2FkZF9mZWF0dXJlKCJtbWFuIik7CisKKyNpZmRlZiBQUk9UX05PTkUKKyAg c2NtX2NfZGVmaW5lICgiUFJPVF9OT05FIiwgc2NtX2Zyb21faW50IChQUk9UX05PTkUpKTsK KyNlbmRpZgorI2lmZGVmIFBST1RfUkVBRAorICBzY21fY19kZWZpbmUgKCJQUk9UX1JFQUQi LCBzY21fZnJvbV9pbnQgKFBST1RfUkVBRCkpOworI2VuZGlmCisjaWZkZWYgUFJPVF9XUklU RQorICBzY21fY19kZWZpbmUgKCJQUk9UX1dSSVRFIiwgc2NtX2Zyb21faW50IChQUk9UX1dS SVRFKSk7CisjZW5kaWYKKyNpZmRlZiBQUk9UX0VYRUMKKyAgc2NtX2NfZGVmaW5lICgiUFJP VF9FWEVDIiwgc2NtX2Zyb21faW50IChQUk9UX0VYRUMpKTsKKyNlbmRpZgorCisjaWZkZWYg TUFQX0FOT05ZTU9VUworICBzY21fY19kZWZpbmUgKCJNQVBfQU5PTllNT1VTIiwgc2NtX2Zy b21faW50IChNQVBfQU5PTllNT1VTKSk7CisjZW5kaWYKKyNpZmRlZiBNQVBfQU5PTgorICBz Y21fY19kZWZpbmUgKCJNQVBfQU5PTiIsIHNjbV9mcm9tX2ludCAoTUFQX0FOT04pKTsKKyNl bmRpZgorI2lmZGVmIE1BUF9GSUxFCisgIHNjbV9jX2RlZmluZSAoIk1BUF9GSUxFIiwgc2Nt X2Zyb21faW50IChNQVBfRklMRSkpOworI2VuZGlmCisjaWZkZWYgTUFQX0ZJWEVECisgIHNj bV9jX2RlZmluZSAoIk1BUF9GSVhFRCIsIHNjbV9mcm9tX2ludCAoTUFQX0ZJWEVEKSk7Cisj ZW5kaWYKKyNpZmRlZiBNQVBfSEFTU0VNQVBIT1JFCisgIHNjbV9jX2RlZmluZSAoIk1BUF9I QVNTRU1BUEhPUkUiLCBzY21fZnJvbV9pbnQgKE1BUF9IQVNTRU1BUEhPUkUpKTsKKyNlbmRp ZgorI2lmZGVmIE1BUF9QUklWQVRFCisgIHNjbV9jX2RlZmluZSAoIk1BUF9QUklWQVRFIiwg c2NtX2Zyb21faW50IChNQVBfUFJJVkFURSkpOworI2VuZGlmCisjaWZkZWYgTUFQX1NIQVJF RAorICBzY21fY19kZWZpbmUgKCJNQVBfU0hBUkVEIiwgc2NtX2Zyb21faW50IChNQVBfU0hB UkVEKSk7CisjZW5kaWYKKyNpZmRlZiBNQVBfTk9DQUNIRQorICBzY21fY19kZWZpbmUgKCJN QVBfTk9DQUNIRSIsIHNjbV9mcm9tX2ludCAoTUFQX05PQ0FDSEUpKTsKKyNlbmRpZgorICBz Y21fY19kZWZpbmUgKCJQQUdFX1NJWkUiLCBzY21fZnJvbV9pbnQgKHN5c2NvbmYgKF9TQ19Q QUdFU0laRSkpKTsKKyNpZmRlZiBNU19BU1lOQworICBzY21fY19kZWZpbmUgKCJNU19BU1lO QyIsIHNjbV9mcm9tX2ludCAoTVNfQVNZTkMpKTsKKyNlbmRpZgorI2lmZGVmIE1TX1NZTkMK KyAgc2NtX2NfZGVmaW5lICgiTVNfU1lOQyIsIHNjbV9mcm9tX2ludCAoTVNfU1lOQykpOwor I2VuZGlmCisjaWZkZWYgTVNfSU5WQUxJREFURQorICBzY21fY19kZWZpbmUgKCJNU19JTlZB TElEQVRFIiwgc2NtX2Zyb21faW50IChNU19JTlZBTElEQVRFKSk7CisjZW5kaWYKK30KKwor I2VuZGlmIC8qIEhBVkVfU1lTX01NQU5fSCAqLworCisMCisKIHZvaWQKIHNjbV9pbml0X2Zp bGVzeXMgKCkKIHsKQEAgLTIzODcsNiArMjcwMCw5IEBAIHNjbV9pbml0X2ZpbGVzeXMgKCkK ICNpZmRlZiBIQVZFX1JFQURMSU5LQVQKICAgc2NtX2FkZF9mZWF0dXJlKCJyZWFkbGluay1w b3J0Iik7CiAjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX01NQU5fSCkKKyAgaW5pdF9t bWFuKCk7CisjZW5kaWYKIAogI2luY2x1ZGUgImZpbGVzeXMueCIKIH0KZGlmZiAtLWdpdCBh L2xpYmd1aWxlL2ZpbGVzeXMuaCBiL2xpYmd1aWxlL2ZpbGVzeXMuaAppbmRleCAxY2U1MGQz MGUuLmZhNDBiNDg0ZiAxMDA2NDQKLS0tIGEvbGliZ3VpbGUvZmlsZXN5cy5oCisrKyBiL2xp Ymd1aWxlL2ZpbGVzeXMuaApAQCAtODAsNiArODAsMTAgQEAgU0NNX0FQSSBTQ00gc2NtX2Rp cm5hbWUgKFNDTSBmaWxlbmFtZSk7CiBTQ01fQVBJIFNDTSBzY21fYmFzZW5hbWUgKFNDTSBm aWxlbmFtZSwgU0NNIHN1ZmZpeCk7CiBTQ01fQVBJIFNDTSBzY21fY2Fub25pY2FsaXplX3Bh dGggKFNDTSBwYXRoKTsKIFNDTV9BUEkgU0NNIHNjbV9zZW5kZmlsZSAoU0NNIG91dCwgU0NN IGluLCBTQ00gY291bnQsIFNDTSBvZmZzZXQpOworU0NNX0FQSSBTQ00gc2NtX21tYXBfc2Vh cmNoKFNDTSBhZGRyLCBTQ00gbGVuLCBTQ00gcHJvdCwgU0NNIGZsYWdzLCBTQ00gZmQsIFND TSBvZmZzZXQpOworU0NNX0FQSSBTQ00gc2NtX21tYXAoU0NNIGFkZHIsIFNDTSBsZW4sIFND TSBwcm90LCBTQ00gZmxhZ3MsIFNDTSBmZCwgU0NNIG9mZnNldCk7CitTQ01fQVBJIFNDTSBz Y21fbXN5bmMoU0NNIGJ2ZWMsIFNDTSBmbGFncyk7CitTQ01fQVBJIFNDTSBzY21fbXVubWFw KFNDTSBidmVjKTsKIFNDTV9JTlRFUk5BTCBTQ00gc2NtX2lfcmVsYXRpdml6ZV9wYXRoIChT Q00gcGF0aCwgU0NNIGluX3BhdGgpOwogCiBTQ01fSU5URVJOQUwgdm9pZCBzY21faW5pdF9m aWxlc3lzICh2b2lkKTsKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0gYi90 ZXN0LXN1aXRlL01ha2VmaWxlLmFtCmluZGV4IDE2ZmEyZTk1Mi4uMzc4NWUyZjg1IDEwMDY0 NAotLS0gYS90ZXN0LXN1aXRlL01ha2VmaWxlLmFtCisrKyBiL3Rlc3Qtc3VpdGUvTWFrZWZp bGUuYW0KQEAgLTc3LDYgKzc3LDcgQEAgU0NNX1RFU1RTID0gdGVzdHMvMDAtaW5pdGlhbC1l bnYudGVzdAkJXAogCSAgICB0ZXN0cy9sb2FkLnRlc3QJCQlcCiAJICAgIHRlc3RzL21hdGNo LnRlc3QJCQlcCiAJICAgIHRlc3RzL21hdGNoLnRlc3QudXBzdHJlYW0JCVwKKwkgICAgdGVz dHMvbW1hbi50ZXN0CQkJXAogCSAgICB0ZXN0cy9tb2R1bGVzLnRlc3QJCQlcCiAJICAgIHRl c3RzL211bHRpbGluZ3VhbC5ub3R0ZXN0CQlcCiAJICAgIHRlc3RzL25ldC1kYi50ZXN0CQkJ XApkaWZmIC0tZ2l0IGEvdGVzdC1zdWl0ZS90ZXN0cy9tbWFuLnRlc3QgYi90ZXN0LXN1aXRl L3Rlc3RzL21tYW4udGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAu LjU5MmE4MDBmOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qtc3VpdGUvdGVzdHMvbW1hbi50 ZXN0CkBAIC0wLDAgKzEsNDggQEAKKzs7OzsgbW1hbi50ZXN0IC0tLSBUZXN0cyBmb3IgbW1h cCBBUEkuICAgIC0qLSBzY2hlbWUgLSotCis7Ozs7Cis7Ozs7IENvcHlyaWdodCAyMDIyIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorOzs7OworOzs7OyBUaGlzIGxpYnJhcnkg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCis7Ozs7 IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMKKzs7OzsgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyCis7Ozs7IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3Ig KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7OzsKKzs7OzsgVGhpcyBs aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCis7Ozs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCis7Ozs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCis7Ozs7IExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7Ozs7Cis7Ozs7IFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMKKzs7OzsgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorOzs7OyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNB CisKKyhkZWZpbmUtbW9kdWxlICh0ZXN0LW1tYW4pCisgICM6dXNlLW1vZHVsZSAodGVzdC1z dWl0ZSBsaWIpCisgICM6dXNlLW1vZHVsZSAodGVzdC1zdWl0ZSBndWlsZS10ZXN0KQorICAj OnVzZS1tb2R1bGUgKHJucnMgYnl0ZXZlY3RvcnMpCisgICM6ZGVjbGFyYXRpdmU/ICNmCisg ICkKKworKGRlZmluZSAobW1hcC10ZXN0LWZpbGUpCisgIChkYXRhLWZpbGUtbmFtZSAiZm9v LnR4dCIpKQorCisoZGVmaW5lIG1tYXAtdGVzdC1zdHJpbmcgImhlbGxvLCB3b3JsZCIpCisK KyhkZWZpbmUgKGdlbi1tbWFwLXRlc3QtZmlsZSkKKyAgKHdpdGgtb3V0cHV0LXRvLWZpbGUg KG1tYXAtdGVzdC1maWxlKQorICAgIChsYW1iZGEgKCkgKGRpc3BsYXkgbW1hcC10ZXN0LXN0 cmluZykpKSkKKworKHdoZW4gKHByb3ZpZGVkPyAnbW1hbikKKworICAoZ2VuLW1tYXAtdGVz dC1maWxlKQorCisgICh3aXRoLXRlc3QtcHJlZml4ICJtbWFuIgorCisgICAgKHBhc3MtaWYg Im1tYW4gMSIKKyAgICAgIChsZXQgKChidiAobW1hcCAwICN4MTAwKSkpCisgICAgICAgIChi eXRldmVjdG9yLXU4LXNldCEgYnYgMCAzNCkKKyAgICAgICAgKD0gKGJ5dGV2ZWN0b3ItdTgt cmVmIGJ2IDApIDM0KSkpCisKKyAgICApKQorCis7OyAtLS0gbGFzdCBsaW5lIC0tLQo= --------------kCCVVbCEOfj8TolyIBF8uY0E--