From MAILER-DAEMON Wed Sep 01 08:36:36 2021 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1mLPTo-00005k-8W for mharc-bug-findutils@gnu.org; Wed, 01 Sep 2021 08:36:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37400) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mLPTm-0008Qy-6y for bug-findutils@gnu.org; Wed, 01 Sep 2021 08:36:34 -0400 Received: from mail-ej1-x62f.google.com ([2a00:1450:4864:20::62f]:42996) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mLPTk-0008UG-P3 for bug-findutils@gnu.org; Wed, 01 Sep 2021 08:36:33 -0400 Received: by mail-ej1-x62f.google.com with SMTP id mf2so6260207ejb.9 for ; Wed, 01 Sep 2021 05:36:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=/oFvAJmS++EkOQCYaCkj614pUJbmT1JpkO14oo4rvm8=; b=QaQUVgr2alnY9hSreQiTB5tcOy1Pv26GyQEyvhRnxdRgZTEgzri7Ia/UFHXVk4YFTz ZVP08NnRqoABBxOZrTtiM7Zrta3OG3PhAum5UHYnHBVNnru5ZvXjfzE5uAemYnAbND99 KGUbNDXo6mUMNi/g2Fxx/K4OygNBI20b9KGp+vSz1o/dctbQvtYDOqdwnP4PcGW74mIN K7zh5zs/BPqVR+I/PmdI1b3o10kbYE15PxNQ9ftG302njqGW4QEw+rP4JgQq0hOP5AP8 rC8vIMAcnZ5GJ4HMRHAn2UDt9FJo8JfKHervuOLOzSh+CzcGPsqMh0AYxEmjdgVwK0Xd FUvw== 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=/oFvAJmS++EkOQCYaCkj614pUJbmT1JpkO14oo4rvm8=; b=Bm7ixVfxsx3lf33Lv8s/iYio+OSaoAteMFC2FKtCtonc0WjrwSgaXRaFfLdNHf/90I VTe40a1A6Fp0wP10I8A9o2Ywy8GaCW2V3GGX3rwegays3/fh2V62Jz4lJZM4fU1BtLo7 0dzaFLxfcbSQgp70zXl2eLfj6BiizpmUyqEnBtm/DJEJoqQwHGwC1uzP68SRKsc3hmpG 5D5FNUfXPOssV/DyOQRK7qxZpahZbYkqmjT7Z0WUN+QNeaGg404HmcRP+OCh6Na6aVdr QufI9uzPDatlg2jq55lDeRf49aHBkF8TnlEBQ5L267uaZ6NFjSoZv7z2VhoF5gcjDfVt eloQ== X-Gm-Message-State: AOAM531xXB8HzyDYNDp/YnqkK5et6bhjpWGBxo1j6W5Kgyt7GdcZTJ/0 ho07BJ5BnVHFXNPTFEjDMEooxLRAIH/7w5+F8WM0BQmz X-Google-Smtp-Source: ABdhPJzvwgZcah5IF69RhhusuUvOya2PYj98TzRcO35CsRNj8SA+tGRXsZbsGoci45NVY0QF31oxYJJP1mgAPX/ov9g= X-Received: by 2002:a17:906:cc81:: with SMTP id oq1mr30991873ejb.25.1630499789631; Wed, 01 Sep 2021 05:36:29 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a50:7ecc:0:0:0:0:0 with HTTP; Wed, 1 Sep 2021 05:36:28 -0700 (PDT) From: Budi Date: Wed, 1 Sep 2021 12:36:28 +0000 Message-ID: Subject: find utility to start search directory listed in a file To: bug-findutils@gnu.org Content-Type: text/plain; charset="UTF-8" Received-SPF: pass client-ip=2a00:1450:4864:20::62f; envelope-from=budikusasi@gmail.com; helo=mail-ej1-x62f.google.com X-Spam_score_int: 13 X-Spam_score: 1.3 X-Spam_bar: + X-Spam_report: (1.3 / 5.0 requ) BAYES_60=1.5, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: bug-findutils@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports for the GNU find utilities List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Sep 2021 12:36:34 -0000 How do have find utility to start search directory listed in a file ? find "`cat a.txt`" can't go right Please Help From MAILER-DAEMON Thu Sep 02 17:30:59 2021 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1mLuIS-0004UX-04 for mharc-bug-findutils@gnu.org; Thu, 02 Sep 2021 17:30:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55120) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mLuIQ-0004UN-FA for bug-findutils@gnu.org; Thu, 02 Sep 2021 17:30:54 -0400 Received: from mout.kundenserver.de ([217.72.192.75]:38705) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mLuIM-0000oo-Jk for bug-findutils@gnu.org; Thu, 02 Sep 2021 17:30:54 -0400 Received: from [192.168.101.10] ([91.12.164.105]) by mrelayeu.kundenserver.de (mreue109 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M2OEq-1mPle416jO-003yNE; Thu, 02 Sep 2021 23:30:46 +0200 Message-ID: Date: Thu, 2 Sep 2021 23:30:45 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.0.1 Subject: Re: find utility to start search directory listed in a file Content-Language: en-US To: Budi , bug-findutils@gnu.org References: From: Bernhard Voelker In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:HaJ9bd27YOS5DHVRFN76IQbQ4y4WVfu/Mk8j3tLUxo3yu8ALP+M nTPpembfoSH2KRfJuVFQVUMaZ5uEQKghfLTBw0PJ+BOHBkJpUcOVODBATdbb9jomG+nLMqD WC2/N3d4iyTl68n1os2T515rvbJitaaaaP5yGs7hl+JLL51Su28Cw0mOwhkpcKDEy90RP6t z/7p0bxSjpV4O8SaqVfzQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:jHe0d0os3as=:gO4kXI+Qzc0znKRab0jrhn cFaEuoujO90WsbEvif6yW2D/sZsT24kDY61pxa/o3sWX2dxcbjGXBtqI1V18CK+CrpkVlBmtH L5Ry0JLQYnSmyAgna/6fFzJgkIMdOCvWLIe/yQfZ0mDMoJET/0T9+3/jFexFO+eOFMl8Wcwkx +WGkQT6+rlcI1lkYXrUioM1yCRVWManHjPUUDM/+Cf18t+EmkfEI9FiayFU0Xw8D7d+unnvc6 jALmVsT6p3ZMWXEwFmYPTvav0meJ450CddbIpC7VEa2+VYAOr/6cLOxYdsDoJENG4hbR3vt2D Ob0NIPPrShgx/Z7aqOc/KBGP4c9JBBwJAS8JtXuGuwhVdRX0TOV3shLpa8dxAQmIOZ2KdLDF4 VUZIT3PqpviNfT+Z5DxnzccZr/Zf9oI1NhugpMbDOrDkuF1W4gLDFmG3gMl7Uq6nRoC2u/7jq qlXChXINnreM5f75Nuvm0fVTPL9bChoMkcVaqpdtpzCc3tlrU6pngzd4nHoaQZSXwML1Ve7Y4 pPJTGuIPWzOqUOMsMfa/wRHsi97iD/H37ra7jPEgkAr5L6V5COkwrRi0Onf9khqjcggsULS/n JPrzQvIv3i5/WJpd8UqwVrhR614zy8PF4Vl5ScTlpKON2tS2zXIHKOW6ygm6P10Zt3yYNfroo WDar+dfoN+7pac7wpWcNwSWCQjRoa+e+CLMKQZR9zYMDSMXSlPB+rTtlJ7hG7qRmlBH9TjTfR UGkP614ylA0UnKg4e+FHmgZRK6GbnI0mJyw9b0YNNHuToFq2M6FT+XbFoEk= Received-SPF: none client-ip=217.72.192.75; envelope-from=mail@bernhard-voelker.de; helo=mout.kundenserver.de X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, NICE_REPLY_A=-2.225, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: bug-findutils@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports for the GNU find utilities List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Sep 2021 21:30:54 -0000 On 9/1/21 14:36, Budi wrote: > How do have find utility to start search directory listed in a file ? > > find "`cat a.txt`" > can't go right no, all the file names in 'a.txt' would be passed as one string to the find utility due to the "..." quoting around. $ cat a.txt hello world $ find "`cat a.txt`" find: 'hello\nworld': No such file or directory Without the quoting, it would work (given the 2 files exist): $ find `cat a.txt` -exec ls -logd '{}' + -rw-r--r-- 1 0 Sep 2 22:59 hello -rw-r--r-- 1 0 Sep 2 22:59 world BUT: this will not work, if the file names in 'a.txt': - contain white-spaces or other special characters (like a newline), - begin with a '-' minus (because find would treat this as an option, - are too many to fit in one command line. The next version of the GNU findutils will introduce a new option to safely handle starting points from a file: -files0-from. It is a GNU extension, but it allows an arbitrary number of files with arbitrary file names to be passed. The separator is the ASCII NUL character '\0'. See description here: https://git.sv.gnu.org/cgit/findutils.git/tree/doc/find.texi?id=a5659a42fa#n385 The above example would look like: $ printf '%s\0' 'hello' 'world' | find -files0-from - -exec ls -logd '{}' + -rw-r--r-- 1 0 Sep 2 22:59 hello -rw-r--r-- 1 0 Sep 2 22:59 world The code is already in our Git repo, so if you may want to try, then you're encouraged to build your own find from there and test. With that new option, one could even feed another 'find' process with the NUL-separated output from a previous one via pipes; here's an extreme example where the 1st find selects regular files, the 2nd filter empty ones, and the 3rd and last one filters files not owned by 'root': $ find /tmp -xdev -type f -print0 \ | find -files0-from - -maxdepth 0 -empty -print0 \ | find -files0-from - -maxdepth 0 -not -user root -exec ls -ld '{}' + The -maxdepth 0 is not necessary here as the 1st find ensures that only regular files are given, but it illustrates that the 2nd/3rd 'find' processes shouldn't descend into directories. Have a nice day, Berny From MAILER-DAEMON Sun Sep 12 12:43:05 2021 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1mPSZN-0004B0-DM for mharc-bug-findutils@gnu.org; Sun, 12 Sep 2021 12:43:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45934) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mPSZL-00048I-Uy for bug-findutils@gnu.org; Sun, 12 Sep 2021 12:43:03 -0400 Received: from frontend1.savannah.gnu.org ([209.51.188.72]:47718) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mPSZL-0008JB-N5; Sun, 12 Sep 2021 12:43:03 -0400 Received: by frontend1.savannah.gnu.org (Postfix, from userid 33) id 6760020803; Sun, 12 Sep 2021 12:43:03 -0400 (EDT) To: Bernhard Voelker , Andreas Metzler , Kevin Ernst , Thorsten Glaser , James Youngman , Dale Worley , bug-findutils@gnu.org Subject: [bug #51151] [wishlist] xargs -o support for interactive commands X-PHP-Originating-Script: 1001:sendmail.php From: Kevin Ernst X-Savane-Server: savannah.gnu.org:443 [209.51.188.72] MIME-Version: 1.0 Content-Type: text/plain;charset=UTF-8 X-Savane-Project: findutils X-Savane-Tracker: bugs X-Savane-Item-ID: 51151 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Firefox/91.0 X-Apparently-From: 174.102.11.74 (Savane authenticated user ernstki) Message-Id: <20210912-164303.sv245769.60794@savannah.gnu.org> References: <20170531-193717.sv20807.62499@savannah.gnu.org> <20170601-190841.sv89737.82641@savannah.gnu.org> <20170601-202006.sv20807.68180@savannah.gnu.org> <20170602-000615.sv94104.92604@savannah.gnu.org> <20170603-013121.sv94104.84377@savannah.gnu.org> <20170603-225222.sv76434.17123@savannah.gnu.org> <20170604-210216.sv89737.88995@savannah.gnu.org> <20170605-152013.sv20807.77162@savannah.gnu.org> <20170606-114002.sv76434.33859@savannah.gnu.org> <20170606-192033.sv20807.44434@savannah.gnu.org> <20170606-223525.sv89737.12294@savannah.gnu.org> <20170609-004931.sv89737.10326@savannah.gnu.org> <20170723-204251.sv8931.7329@savannah.gnu.org> <20170723-215553.sv76434.9580@savannah.gnu.org> <20190829-205207.sv8931.24786@savannah.gnu.org> <20190829-210225.sv76434.73364@savannah.gnu.org> In-Reply-To: <20190829-210225.sv76434.73364@savannah.gnu.org> Date: Sun, 12 Sep 2021 12:43:03 -0400 (EDT) X-BeenThere: bug-findutils@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports for the GNU find utilities List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Sep 2021 16:43:04 -0000 Follow-up Comment #15, bug #51151 (project findutils): Happened upon a mention of the '-o' option in a Unix & Linux Stack Exchange comment (specifically in reference to the macOS/BSD 'xargs'), and I was thrilled to see this already implemented here. While there is much to be said for the very nuts-and-bolts 'sh -c […] _______________________________________________ Message sent via Savannah https://savannah.gnu.org/ From MAILER-DAEMON Sun Sep 19 18:07:27 2021 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1mS4y7-0007sl-40 for mharc-bug-findutils@gnu.org; Sun, 19 Sep 2021 18:07:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59894) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mS4y5-0007sY-QN; Sun, 19 Sep 2021 18:07:25 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:49255) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mS4y4-00069A-5O; Sun, 19 Sep 2021 18:07:25 -0400 Received: from tweedy.camline.com ([51.37.167.197]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MgeXk-1n6cqR2smq-00h5gw; Mon, 20 Sep 2021 00:07:19 +0200 From: Bernhard Voelker To: bug-findutils@gnu.org Cc: findutils-patches@gnu.org Subject: [PATCH 0/4] minor maintenance patches Date: Mon, 20 Sep 2021 00:07:06 +0200 Message-Id: <20210919220710.5261-1-mail@bernhard-voelker.de> X-Mailer: git-send-email 2.33.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K1:xLzXt6ZVCAJ8IdJZqzG3pbUqBwL3tAD64uXgV4oDMLuG2x6xIvt XOjjav6H/Op+IoUHLPpC326XXvbx1C2/h0QcaYDIexh91aR7oXsm1dbJlC0Ongal8MqgYQQ NWS4vuD9WZ1uAw6uojFlBbwRi3QexO5G/oXK6j8hVgWesWAEG/K6O3/SogHPSEU694plWv5 ftu/BBgMHCi44vnS8MICA== X-UI-Out-Filterresults: notjunk:1;V03:K0:pRzMP6bx4sU=:oUc9sZb9hs7bo/LYgk8XxI F7eUBjdY6zGwRso2GTfd3fUNnlKGW120aUbleni9pnQbO3ed2ICxCEmsUZL97y1vJwj005Qwd cYpMn40etLxwW3AtYCKtki709C0CQ2W6c+eAZH4b0DgBMB4ffj7k5ENfxr7zIfhMoBgaxHuts k0kL+z2to5EV/T67RzG9KqSsVIGHitXQvaFr34g6jEdubNxfIo8Efsr+aX7i4kH/uQos3Pj6w 5HATFzPXZHmuk6eSm36soNQS0u4UuTAGcVDe0skuZ1nk1mMpcC8pCjAEsayQw1DZwkM34nIyn yCIwshdlVNzeSqusbTC6S0v4qHOivVNFHEwyly76+t1zUHo+LgJMpd4u/ppII2WLRjbxjl2iq XzMCO72R0yai/Qcil+f193uZu23oyGOGc6vbWJwcJkpKRG8BATcIMbQT8MPgqjxUGUoxo+7qy 6FkrOs/HuAOZGN02887+7KQ+m9TJvV7xXhWps2Nmv2acLhCxNClg4z5rdd09RbFvd/4krw1/t v6Y7AjU5cqQetAim9Dz81EMlzYCOoR4oKn/5qd0El5BkxGj67FsyvMcbxDcxJzRNrzl1xXbS5 q5qzqr896w1NGj2sZodp7ZBw8HYmgYn2ApdmKd06eyEF2PMr3k6PuvHZPVJYcGHLS/uQFCmMX Kh3b2O7wvGv/QVKhgci5oY3b0cCqq9XGFIYl19E+UtyJGkX9FGzM9QrZlcR7HPks3K43XssiS jGP2/PxRwEe6uKqGlxJOJQ3ov7/XcL8MP6NCpbdS5uvCD4//G//T5bJCuvI= Received-SPF: none client-ip=212.227.126.131; envelope-from=mail@bernhard-voelker.de; helo=mout.kundenserver.de X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_05=-0.5, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: bug-findutils@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports for the GNU find utilities List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Sep 2021 22:07:26 -0000 Only the last one of the following patch series is user-visible, and improves the readability of `find --help`: [PATCH 1/4] maint: fix typos in comments [PATCH 2/4] find: remove redundant function error_severity and avoid [PATCH 3/4] maint: generate ChangeLog with --no-cluster [PATCH 4/4] find: improve readability of --help output From MAILER-DAEMON Sun Sep 19 18:07:29 2021 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1mS4y8-0007vs-Qw for mharc-bug-findutils@gnu.org; Sun, 19 Sep 2021 18:07:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59906) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mS4y7-0007sp-7w; Sun, 19 Sep 2021 18:07:27 -0400 Received: from mout.kundenserver.de ([212.227.126.133]:52283) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mS4y5-0006Bg-M9; Sun, 19 Sep 2021 18:07:27 -0400 Received: from tweedy.camline.com ([51.37.167.197]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MkHhB-1nBq3G2QLx-00kbnL; Mon, 20 Sep 2021 00:07:23 +0200 From: Bernhard Voelker To: bug-findutils@gnu.org Cc: findutils-patches@gnu.org, Bernhard Voelker Subject: [PATCH 1/4] maint: fix typos in comments Date: Mon, 20 Sep 2021 00:07:07 +0200 Message-Id: <20210919220710.5261-2-mail@bernhard-voelker.de> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210919220710.5261-1-mail@bernhard-voelker.de> References: <20210919220710.5261-1-mail@bernhard-voelker.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K1:CdtiBiOnQW/kyzIzwPljUA/ZYpF8Tr2cYgd9L4kEam2hd44EfC0 6I/CPVVDK+IFeH4U79VXwDb0twxEQLAKlGNAwqP5VIxBrOKo+qtEaU5dNd3kNorHfES4rGc C4CsbefZe8RjbbhNV8HwRGb1M50diqFgKia/KHg1d4XdM8QLefN9VIuIC+9M6xtEYxcopSr yExdrFlRhTeavjEOKEJ3Q== X-UI-Out-Filterresults: notjunk:1;V03:K0:inyh05GZeCA=:4IbOzm1X5Yh2FL0eLPxk7b w5Bupv2qKGITdVbVVTrRoX7JRsUVHDLCjFH66ma1srmIUWLq4Q4/2QdzVdN1ngJ4lUXCFfGl6 BnA4u9nbZrI6yBAaMTgXcJuSnrM08N+5lndjguFbxPOO7J3vuenFO0NVCyNpIIoYBXZQrM8Yf cof5wZ+ZEgNXMTwKYY2rHF9TjiYXVADRArR3Vctd9DVtpfCFPM30pJUR0PbcqwWWKjfGU6ceI E+No66u1xVWbvfAGTr3u2o7b03UGbhVI9nmc1WI9aNm4SC54MsAofBVXXA5XAzyb5SMLEvZsp eTVaPUl1x0qRBHaif2f5Z1BPaoqlTP4l0MN3YahUtEQHQR01/n21aE+oOo4wXMF78JQdwDnww PMxxBzsHZn1EUiQd4VE6eRO7eOhR3W7l9SMy1uskl0AkOAEU7d9QQfEB75gDc6GW1BtpRtBs/ dKY91P/rJOLJ5CtNUbvpWUp7BTeX3TCOrnzC+oSedcu6Y3D7b0qyTHWPuBm/3luGtWnH+3Frq YBEb3McB1C3U7uchvkQw0cJK0cX35fjXthl8b7UrGepMXOsOX+ePbRSbzKoOx6cAjyW5I6N0t k4n9l3ne2UuG1LKQFk34IYrmH3KSefglHX5hl4ytA9ByPUa7Yotasz8z3V8WysBG9xm+qDBJW PaYrRVq+pOMoZkcffR2C2c9NiPtkeGsOjbYt6IntBJGOoabKPgMfYZpBe+lZXu3zoucGCxKWW daQir+d5jRZPfCrpQXF5fvpK/xADGcZuVR/fToi/c9F8/ztpBKN8nSVcpVU= Received-SPF: none client-ip=212.227.126.133; envelope-from=mail@bernhard-voelker.de; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: bug-findutils@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports for the GNU find utilities List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Sep 2021 22:07:27 -0000 * find/tree.c (get_expr): Add missing closing paren. * find/util.c (insert_primary): s/insure/ensure/ (fatal_nontarget_file_error): s/isssue/issue/ * xargs/xargs.c (XargsStatusValues): s/exites/exited/ --- find/tree.c | 2 +- find/util.c | 4 ++-- xargs/xargs.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/find/tree.c b/find/tree.c index 39c1a4ce..9307821d 100644 --- a/find/tree.c +++ b/find/tree.c @@ -140,7 +140,7 @@ get_expr (struct predicate **input, || BI_OP == prev_pred->p_type) && !this_pred->artificial) { - /* e.g. "find \( -not \)" or "find \( -true -a \" */ + /* e.g. "find \( -not \)" or "find \( -true -a \)" */ die (EXIT_FAILURE, 0, _("expected an expression between '%s' and ')'"), prev_pred->p_name); diff --git a/find/util.c b/find/util.c index 73a0cef2..63de5cce 100644 --- a/find/util.c +++ b/find/util.c @@ -114,7 +114,7 @@ insert_primary_withpred (const struct parser_table *entry, p_prec NO_PREC Other cells that need to be filled in are defaulted by - get_new_pred_chk_op, which is used to insure that the prior node is + get_new_pred_chk_op, which is used to ensure that the prior node is either not there at all (we are the very first node) or is an operator. */ struct predicate * @@ -1195,7 +1195,7 @@ nonfatal_nontarget_file_error (int errno_value, const char *name) void fatal_nontarget_file_error(int errno_value, const char *name) { - /* We're going to exit fatally, so make sure we always isssue the error + /* We're going to exit fatally, so make sure we always issue the error * message, even if it will be duplicate. Motivation: otherwise it may * not be clear what went wrong. */ diff --git a/xargs/xargs.c b/xargs/xargs.c index 7e3db67a..272189c3 100644 --- a/xargs/xargs.c +++ b/xargs/xargs.c @@ -200,7 +200,7 @@ static struct option const longopts[] = */ enum XargsStatusValues { XARGS_EXIT_CLIENT_EXIT_NONZERO = 123, /* utility exited with nonzero status */ - XARGS_EXIT_CLIENT_EXIT_255 = 124, /* utility exites with status 255 */ + XARGS_EXIT_CLIENT_EXIT_255 = 124, /* utility exited with status 255 */ XARGS_EXIT_CLIENT_FATAL_SIG = 125, /* utility died from a fatal signal */ XARGS_EXIT_COMMAND_CANNOT_BE_RUN = 126, /* canot run the command */ XARGS_EXIT_COMMAND_NOT_FOUND = 127, /* cannot find the command */ -- 2.33.0 From MAILER-DAEMON Sun Sep 19 18:07:35 2021 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1mS4yF-00086s-LO for mharc-bug-findutils@gnu.org; Sun, 19 Sep 2021 18:07:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59968) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mS4yB-00083h-P5; Sun, 19 Sep 2021 18:07:32 -0400 Received: from mout.kundenserver.de ([212.227.126.133]:47675) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mS4y9-0006EA-Mv; Sun, 19 Sep 2021 18:07:31 -0400 Received: from tweedy.camline.com ([51.37.167.197]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1M4ahC-1mQQXZ3htW-001hTE; Mon, 20 Sep 2021 00:07:28 +0200 From: Bernhard Voelker To: bug-findutils@gnu.org Cc: findutils-patches@gnu.org, Bernhard Voelker Subject: [PATCH 2/4] find: remove redundant function error_severity and avoid magic numbers Date: Mon, 20 Sep 2021 00:07:08 +0200 Message-Id: <20210919220710.5261-3-mail@bernhard-voelker.de> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210919220710.5261-1-mail@bernhard-voelker.de> References: <20210919220710.5261-1-mail@bernhard-voelker.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K1:aq35umFJ0gJbwtImu51b8aL7oxyptId+9hqozaoDHlO9w9e0otl sG+Yj/XiAfM9v3wnaGOhfo6mmVakip7Hy4x8S5zzVR1fn2Bj+wXQIoK8WE62h7vvKM/UNO1 XhgCx7TAYkO56PPtEcKgV4RYl0brFm5rgKFUVIViYsKPilv7KrJv0AAxGUqFe42m5jQ9z1I YPBmGkASOf6ZiyZtdvsuA== X-UI-Out-Filterresults: notjunk:1;V03:K0:dwVKAqo8t+0=:trTnxSWqfP3gAL3FK6PxYJ NTg2wM9IGpmYXJZ7fwIm41car0r27UFsFIrVZt17UyUfKA1U58Ht7WZJZBa0daLFjWLHajWW9 Xv8FilrozPFGKBvyMZXWuD/aJ6BE8EuuAGNIuF5latePwjeaRYUJqQIYQcfETATeMx9uirPw5 WC843WWGZR2pqFiavthoUSQGsp+tNE5oSnLB2Qxmhz01/bFoMOAnJofwOrZ7067dnnEGA5P4T AWC7GnWy2IHTbNFDVcJLNpGFh+mZWI7/LPzE0gKy7af5c+wWFJp4I3eQxSQN7yuY3U8XohW1j gIpFI31WxAyV3JUKbr3lIgZkMHX/XA0rWDCqo4Buc6g4rviLFJdXqFkP10ig/0a/FNyv3kZ/A QXbkfdT+OslUCJvOvgGJJgdh4wmx3bek+t+aLx0Q9yT1RyfwkKl9fK63T/t9AljUlpT+CImV2 DCA5GBJUW9iISKGMcLLAcdtKTPrbZg+MMG1q5Xg1TLK21azJf7Ob3ca7rcbWlTrzQPUHRt2Fy aRxjJrGUnq+oTFzKnlAQaP2tX5+8GOnNXig7Ahbw48DCgMd3ThExFow+qkmqgyFBTZ3rVGSY5 FDsx4/U7sD05AWW2SjgmrFlOl8D99Qvryvqc+ED1f4SbtN+0NW/1LM4jBRPlfVXAUQGb9qsks PQLC90RqCAYErljS5HVZq2lut2wF+pEE01Vc7SbWjO1Toz1YWD1IXBGj/9Uk2tNAM+wCYrkrL j/4F1UUtmzodC/odhw5OQQsIN2ziKWynJ1ApG/F8pkAqENwptZxtvH3z4pg= Received-SPF: none client-ip=212.227.126.133; envelope-from=mail@bernhard-voelker.de; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: bug-findutils@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports for the GNU find utilities List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Sep 2021 22:07:32 -0000 The struct state field exit_status is only set to 0 (EXIT_SUCCESS) or to 1 (EXIT_FAILURE) throughout the code. Therefore, remove the more complicated wrapper function error_severity which was only used in very few cases anyway. While at it, replace the above magic numbers by EXIT_OKAY/EXIT_SUCCESS. * find/defs.h (error_severity): Remove. * find/util.c (error_severity): Remove, and update all callers by replacing it by the direct assignment to state.exit_status. (get_statinfo): Use the above better names. (report_file_err): Likewise. * find/exec.c (launch): Likewise. * find/ftsfind.c (consider_visiting): Likewise. (find): Likewise. (process_all_startpoints): Likewise. (main): Likewise. * find/pred.c (pred_delete): Likewise. (pred_empty): Likewise. (match_lname): Likewise. (pred_xtype): Likewise. * find/print.c (do_fprintf): Likewise. --- find/defs.h | 1 - find/exec.c | 6 +++--- find/ftsfind.c | 14 +++++++------- find/pred.c | 14 +++++++------- find/print.c | 6 +++--- find/util.c | 17 ++--------------- 6 files changed, 22 insertions(+), 36 deletions(-) diff --git a/find/defs.h b/find/defs.h index 27b00a0e..1b02457d 100644 --- a/find/defs.h +++ b/find/defs.h @@ -517,7 +517,6 @@ void nonfatal_nontarget_file_error (int errno_value, const char *name); int process_leading_options (int argc, char *argv[]); void set_option_defaults (struct options *p); -void error_severity (int level); # if 0 # define apply_predicate(pathname, stat_buf_ptr, node) \ diff --git a/find/exec.c b/find/exec.c index ab63d60e..7267c2de 100644 --- a/find/exec.c +++ b/find/exec.c @@ -347,7 +347,7 @@ launch (struct buildcmd_control *ctl, void *usercontext, int argc, char **argv) { error (0, errno, _("error waiting for %s"), safely_quote_err_filename (0, argv[0])); - state.exit_status = 1; + state.exit_status = EXIT_FAILURE; return 0; /* FAIL */ } } @@ -364,7 +364,7 @@ launch (struct buildcmd_control *ctl, void *usercontext, int argc, char **argv) * -exec {} + returns true if the invoked command fails, but * sets the program exit status. */ - state.exit_status = 1; + state.exit_status = EXIT_FAILURE; } return 1; /* OK */ @@ -392,7 +392,7 @@ launch (struct buildcmd_control *ctl, void *usercontext, int argc, char **argv) * -exec {} + returns true if the invoked command fails, but * sets the program exit status. */ - state.exit_status = 1; + state.exit_status = EXIT_FAILURE; } /* The child failed, but this is the exec callback. We * don't want to run the child again in this case anwyay. diff --git a/find/ftsfind.c b/find/ftsfind.c index 75da0707..bd3b8ee8 100644 --- a/find/ftsfind.c +++ b/find/ftsfind.c @@ -319,7 +319,7 @@ consider_visiting (FTS *p, FTSENT *ent) else if (ent->fts_info == FTS_DC) { issue_loop_warning (ent); - error_severity (EXIT_FAILURE); + state.exit_status = EXIT_FAILURE; return; } else if (ent->fts_info == FTS_SLNONE) @@ -508,7 +508,7 @@ find (char *arg) { error (0, errno, _("cannot search %s"), safely_quote_err_filename (0, arg)); - error_severity (EXIT_FAILURE); + state.exit_status = EXIT_FAILURE; } else { @@ -541,7 +541,7 @@ find (char *arg) error (0, errno, "failed to read file names from file system at or below %s", safely_quote_err_filename (0, arg)); - error_severity (EXIT_FAILURE); + state.exit_status = EXIT_FAILURE; return false; } @@ -554,7 +554,7 @@ find (char *arg) error (0, errno, _("failed to restore working directory after searching %s"), arg); - error_severity (EXIT_FAILURE); + state.exit_status = EXIT_FAILURE; return false; } p = NULL; @@ -666,7 +666,7 @@ process_all_startpoints (int argc, char *argv[]) goto argv_iter_done; case AI_ERR_READ: /* may only happen with -files0-from */ error (0, errno, _("%s: read error"), files0_filename_quoted); - state.exit_status = 1; + state.exit_status = EXIT_FAILURE; ok = false; goto argv_iter_done; case AI_ERR_MEM: @@ -694,7 +694,7 @@ process_all_startpoints (int argc, char *argv[]) error (0, 0, "%s:%lu: %s", files0_filename_quoted, file_number, _("invalid zero-length file name")); } - state.exit_status = 1; + state.exit_status = EXIT_FAILURE; ok = false; continue; } @@ -742,7 +742,7 @@ main (int argc, char **argv) record_initial_cwd (); state.already_issued_stat_error_msg = false; - state.exit_status = 0; + state.exit_status = EXIT_SUCCESS; state.execdirs_outstanding = false; state.cwd_dir_fd = AT_FDCWD; diff --git a/find/pred.c b/find/pred.c index 07572608..bf995723 100644 --- a/find/pred.c +++ b/find/pred.c @@ -269,7 +269,7 @@ pred_delete (const char *pathname, struct stat *stat_buf, struct predicate *pred * seems somewhat arbitrary and confusing. So, as of * findutils-4.3.11, we also set the exit status in this case. */ - state.exit_status = 1; + state.exit_status = EXIT_FAILURE; return false; } else @@ -300,14 +300,14 @@ pred_empty (const char *pathname, struct stat *stat_buf, struct predicate *pred_ | O_CLOEXEC | O_DIRECTORY | O_NOCTTY | O_NONBLOCK)) < 0) { error (0, errno, "%s", safely_quote_err_filename (0, pathname)); - state.exit_status = 1; + state.exit_status = EXIT_FAILURE; return false; } d = fdopendir (fd); if (d == NULL) { error (0, errno, "%s", safely_quote_err_filename (0, pathname)); - state.exit_status = 1; + state.exit_status = EXIT_FAILURE; close (fd); return false; } @@ -328,14 +328,14 @@ pred_empty (const char *pathname, struct stat *stat_buf, struct predicate *pred_ { /* Handle errors from readdir(3). */ error (0, errno, "%s", safely_quote_err_filename (0, pathname)); - state.exit_status = 1; + state.exit_status = EXIT_FAILURE; CLOSEDIR (d); return false; } if (CLOSEDIR (d)) { error (0, errno, "%s", safely_quote_err_filename (0, pathname)); - state.exit_status = 1; + state.exit_status = EXIT_FAILURE; return false; } return (empty); @@ -574,7 +574,7 @@ match_lname (const char *pathname, struct stat *stat_buf, struct predicate *pred else { nonfatal_target_file_error (errno, pathname); - state.exit_status = 1; + state.exit_status = EXIT_FAILURE; } free (linkname); } @@ -1150,7 +1150,7 @@ pred_xtype (const char *pathname, struct stat *stat_buf, struct predicate *pred_ else { error (0, errno, "%s", safely_quote_err_filename (0, pathname)); - state.exit_status = 1; + state.exit_status = EXIT_FAILURE; } return false; } diff --git a/find/print.c b/find/print.c index 716eb819..598f4a20 100644 --- a/find/print.c +++ b/find/print.c @@ -1029,7 +1029,7 @@ do_fprintf (struct format_val *dest, if (linkname == NULL) { nonfatal_target_file_error (errno, pathname); - state.exit_status = 1; + state.exit_status = EXIT_FAILURE; } } if (linkname) @@ -1198,7 +1198,7 @@ do_fprintf (struct format_val *dest, checked_fprintf (dest, segment->text, "?"); error (0, errno, "%s", safely_quote_err_filename (0, pathname)); - /* exit_status = 1; + /* exit_status = EXIT_FAILURE; return ; */ break; } @@ -1237,7 +1237,7 @@ do_fprintf (struct format_val *dest, error (0, errno, _("getfilecon failed: %s"), safely_quote_err_filename (0, pathname)); - state.exit_status = 1; + state.exit_status = EXIT_FAILURE; } else { diff --git a/find/util.c b/find/util.c index 63de5cce..4446f89b 100644 --- a/find/util.c +++ b/find/util.c @@ -254,7 +254,7 @@ get_statinfo (const char *pathname, const char *name, struct stat *p) /* Savannah bug #16378. */ error (0, 0, _("WARNING: file %s appears to have mode 0000"), quotearg_n_style (0, options.err_quoting_style, name)); - error_severity (1); + state.exit_status = EXIT_FAILURE; } } else @@ -1124,19 +1124,6 @@ safely_quote_err_filename (int n, char const *arg) return quotearg_n_style (n, options.err_quoting_style, arg); } -/* We have encountered an error which should affect the exit status. - * This is normally used to change the exit status from 0 to 1. - * However, if the exit status is already 2 for example, we don't want to - * reduce it to 1. - */ -void -error_severity (int level) -{ - if (state.exit_status < level) - state.exit_status = level; -} - - /* report_file_err */ static void @@ -1150,7 +1137,7 @@ report_file_err(int exitval, int errno_value, if (!is_target_file || !state.already_issued_stat_error_msg) { error (exitval, errno_value, "%s", safely_quote_err_filename (0, name)); - error_severity (1); + state.exit_status = EXIT_FAILURE; } if (is_target_file) { -- 2.33.0 From MAILER-DAEMON Sun Sep 19 18:07:38 2021 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1mS4yH-00089O-00 for mharc-bug-findutils@gnu.org; Sun, 19 Sep 2021 18:07:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59984) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mS4yD-00085r-6v; Sun, 19 Sep 2021 18:07:34 -0400 Received: from mout.kundenserver.de ([212.227.126.135]:44007) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mS4yB-0006Eu-CN; Sun, 19 Sep 2021 18:07:32 -0400 Received: from tweedy.camline.com ([51.37.167.197]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MPGFZ-1mFlK124cf-00PhKd; Mon, 20 Sep 2021 00:07:28 +0200 From: Bernhard Voelker To: bug-findutils@gnu.org Cc: findutils-patches@gnu.org, Bernhard Voelker Subject: [PATCH 4/4] find: improve readability of --help output Date: Mon, 20 Sep 2021 00:07:10 +0200 Message-Id: <20210919220710.5261-5-mail@bernhard-voelker.de> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210919220710.5261-1-mail@bernhard-voelker.de> References: <20210919220710.5261-1-mail@bernhard-voelker.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K1:k17ooON8g5pNwnzTyXLhh8YMCMinDB98mzennbFTWws26iqEg1Z cKBpz+9Fa1pWs2GADB44wtHpJjESmbItgkOi3ienFWfcn7e4F0EXqq+rhk4WN9MjkUms3ro bzRdSvKD8aj3S3hZ4AgWTHQUcWzinM8XLvvGZ0kBVQ7L0K8/b8O4deyuztwTRSid1nACdC3 hDGHBO9xKXEAklBrdGfCQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:YoHEbxI+O6A=:WP17QIYvqqnBH1SD0Ce3Ev jqU81o1H5K6YolzXp5UmzR11lJrP+GHJIwHS8TY/I8wzOANRICR2cEvIBJFuIf7EQGFoPAvGM hXcigaLOvtWu2W7bIL7al6sakIUQaFiK8xQ7hiyuM86/QmJ7ap8YTeJuODDNfd+fknYD8dUyu ec6Vg4pdz7CCJK+qyKsxjqBaPrLSuhN28F9nk/R/bupWoxt8W7d8e+myijPl7gKfxc8A6O+fW SjmB8Robo1O3lDvQ2aqzgeqG8KXIb1XCHw5F6RBp3lc5sX9u4q3Sckxc3MCBG4b+Q+GziSztG pAgLBun5n5VqUkk92sucxsECeNKh5W1UqGns33Es5Sepjd/LiffqnTRJEDMgVBfgq3dHFf++6 C2VSSmJCEI+Df0JgHOXSx+N0MNNh4UzUle0bdFPaIV2poHr+9es4B1/2Z1TB1h9XB47j3Jo9n 5hnc1VoMwLcnyVQZkNHCTKKlbQHok9iCnikOxstBDazZWHVnpnd2YC3JjW2s+bfT+1QQAiLsN yB4+16dr0mssmeElQDan2xo5ZUiOlXdq3ydeFxeaZvCfJJ4anTQ4oPtjYcsdx1QMMTRPCIdSS jGQYGHO6i7og0X/ymaTaF5sUSLLrRMiqwYFia73KYhBvAfwfnJT5lwu+n2sot0O3cukH9YdNT ghajxIA/QRuF24xeJSYa0Xy/DNXJQ6a+H+lFtIyTka+5ncTKbFs7O5IG5VDSpbong9vXNXF4i TsJWWqMRWvk2kWIjBbmrPHuFLmGqC7+a73H3OAIElSp96ov33uRnZ09StX0= Received-SPF: none client-ip=212.227.126.135; envelope-from=mail@bernhard-voelker.de; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: bug-findutils@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports for the GNU find utilities List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Sep 2021 22:07:35 -0000 * find/util.c (usage): Start sentences with upper case. Add extra newlines to put each section (operators, options, tests, and actions) on its own line. Move the typical generic options --help and --version to the end. * NEWS (Documentation Changes): Mention the change. --- NEWS | 3 +++ find/util.c | 46 +++++++++++++++++++++++++--------------------- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/NEWS b/NEWS index 98d36323..17b08d4a 100644 --- a/NEWS +++ b/NEWS @@ -19,6 +19,9 @@ GNU findutils NEWS - User visible changes. -*- outline -*- (allout) The find.1 man page and the Texinfo manual now show environment variables in a consistent style. [#59963] + The output of 'find --help' now reads better. + + * Noteworthy changes in release 4.8.0 (2020-01-09) [stable] ** Changes in xargs diff --git a/find/util.c b/find/util.c index 4446f89b..afd9880e 100644 --- a/find/util.c +++ b/find/util.c @@ -171,36 +171,40 @@ Usage: %s [-H] [-L] [-P] [-Olevel] [-D debugopts] [path...] [expression]\n"), program_name); HTL (_("\n\ -default path is the current directory; default expression is -print\n\ -expression may consist of: operators, options, tests, and actions:\n")); - HTL (_("\ -operators (decreasing precedence; -and is implicit where no others are given):\n\ +Default path is the current directory; default expression is -print.\n\ +Expression may consist of: operators, options, tests, and actions.\n")); + HTL (_("\n\ +Operators (decreasing precedence; -and is implicit where no others are given):\n\ ( EXPR ) ! EXPR -not EXPR EXPR1 -a EXPR2 EXPR1 -and EXPR2\n\ EXPR1 -o EXPR2 EXPR1 -or EXPR2 EXPR1 , EXPR2\n")); - HTL (_("\ -positional options (always true): -daystart -follow -regextype\n\n\ -normal options (always true, specified before other expressions):\n\ - -depth --help -files0-from FILE -maxdepth LEVELS -mindepth LEVELS\n\ - -mount -noleaf --version -xdev -ignore_readdir_race\n\ - -noignore_readdir_race\n")); - HTL (_("\ -tests (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N\n\ - -cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME\n\ - -ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN\n\ - -links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE")); HTL (_("\n\ +Positional options (always true):\n\ + -daystart -follow -nowarn -regextype -warn\n")); + HTL (_("\n\ +Normal options (always true, specified before other expressions):\n\ + -depth -files0-from FILE -maxdepth LEVELS -mindepth LEVELS\n\ + -mount -noleaf -xdev -ignore_readdir_race -noignore_readdir_race\n")); + HTL (_("\n\ +Tests (N can be +N or -N or N):\n\ + -amin N -anewer FILE -atime N -cmin N -cnewer FILE -context CONTEXT\n\ + -ctime N -empty -false -fstype TYPE -gid N -group NAME -ilname PATTERN\n\ + -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN\n\ + -links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE\n\ -nouser -nogroup -path PATTERN -perm [-/]MODE -regex PATTERN\n\ -readable -writable -executable\n\ -wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N\n\ - -used N -user NAME -xtype [bcdpfls]")); - HTL (_("\ - -context CONTEXT\n")); + -used N -user NAME -xtype [bcdpfls]\n")); HTL (_("\n\ -actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print \n\ +Actions:\n\ + -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print \n\ -fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit\n\ -exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;\n\ - -execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;\n\ -\n")); + -execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;\n")); + + HTL (_("\n\ +Other common options:\n")); + HTL (_(" --help display this help and exit\n")); + HTL (_(" --version output version information and exit\n\n")); show_valid_debug_options (0); HTL (_("\n\ -- 2.33.0 From MAILER-DAEMON Sun Sep 19 18:07:40 2021 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1mS4yJ-0008Bd-A9 for mharc-bug-findutils@gnu.org; Sun, 19 Sep 2021 18:07:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59988) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mS4yD-00085u-8b; Sun, 19 Sep 2021 18:07:34 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:51171) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mS4yA-0006EX-2t; Sun, 19 Sep 2021 18:07:33 -0400 Received: from tweedy.camline.com ([51.37.167.197]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MS43X-1mKhWV0syB-00TUgP; Mon, 20 Sep 2021 00:07:28 +0200 From: Bernhard Voelker To: bug-findutils@gnu.org Cc: findutils-patches@gnu.org, Bernhard Voelker Subject: [PATCH 3/4] maint: generate ChangeLog with --no-cluster Date: Mon, 20 Sep 2021 00:07:09 +0200 Message-Id: <20210919220710.5261-4-mail@bernhard-voelker.de> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210919220710.5261-1-mail@bernhard-voelker.de> References: <20210919220710.5261-1-mail@bernhard-voelker.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K1:RxXX0wO6BQjvX1biWIdRl8feUzUyaMv+2ZpdkaTDZDeIPkls4gV To8mIJcKlUkvsLUaY6CpKGKMkGzB4Do4IFmYNbigjZCtGWcPlRtc4p8SqY87noxO1zTuNMm UR2DTWig7SOVr9lOJUl54YDx1gxUCA8O1en/F1i9smrtD4TmJFvvkLbLEmobNOAfd1KD+2s IKYvxwytCOLwWU7jVX1tQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:2jlzPZ0XIuE=:MCQlPGIKsDBYYdIj3HNE/7 SpGpBVQXCT/M4YwppN+WXmfLyCwuOWV9tvE7Z7GzBuHGYvbYIRP0DgXKUREKWJ4heySkgaQYN TsewlA6TBY6sD1ZoSDmi7PHL/gXOsU+ykpN8IswvSuH8Ym3HybuD6DceBcQAnkJURebiDeaYl OyipEaj1kZ4+FRsvYaXwLt5WlbjU+eBAZSOkV8CSWf58soTnboCdti0HddJmxLzPNeWEqd9hs nuRU/c+Hht9JIJs2ASrDdfrD0sEbt97YtfmtaZMbDvEXvmHx+sfPG0IQEaN2kOmu1/VplkY1n ekqbJ/gTQAByhUx4zTAUiiV3ydqs4N4HWJndfokOCXomhsU0g4cPTpdBzTR1lprSpWe479gJ3 vLrQftydSj7fGMgabCEUnxe+N26hgxB7fBDZ0ZUZMXBGCpBvi/hRqX+Z0jJ1kGF+8DXtXZ9iJ LPpNn0ehn1NSEChFlYUoHERM4KOQt7vYBYueVk4kx0KFGEwx9R6A4g5G5ZnFwuii3K3EQJ8gR iRC/KH4AfVXz2jg1w8kmlJQIj+kEHRBCsiRM+U8lEJqeYota2aY3Kh+rQgu6xW1k6RauqYrmn DEmd7re6w7ZmzwSWSteGhT3tVXVIiv9q/E0iK2aE0nWuRGJ84YUG9eKtz1UHhRrdm0qDYHgpe KJQi2aJkB/TgYVF4riD8KkXtKxwuty+H1mWUZ5DFFRY2/JFDJLAgZCKGDY6Z5QF93WfHoS16c bCNMk5JBzwxdrctUgQSqPt2YlCY7jcap11SxfCo69BpHWPAY3RV98Quz4K4= Received-SPF: none client-ip=212.227.126.131; envelope-from=mail@bernhard-voelker.de; helo=mout.kundenserver.de X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_05=-0.5, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: bug-findutils@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports for the GNU find utilities List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Sep 2021 22:07:34 -0000 * build-aux/gen-changelog.sh: Call gitlog-to-changelog with the --no-cluster option. The resulting ChangeLog reads better, because each commit get its own date/author line. --- build-aux/gen-changelog.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/build-aux/gen-changelog.sh b/build-aux/gen-changelog.sh index 388fd541..73ec7c11 100755 --- a/build-aux/gen-changelog.sh +++ b/build-aux/gen-changelog.sh @@ -24,6 +24,7 @@ top_srcdir="$1" --srcdir="${top_srcdir}" \ --amend="${top_srcdir}/build-aux/git-log-fix" \ --ignore-matching='IGNORE_THIS' \ + --no-cluster \ --since='2014-01-01' \ --strip-cherry-pick \ && cat "${top_srcdir}/ChangeLog-2013" -- 2.33.0 From MAILER-DAEMON Sun Sep 19 19:33:21 2021 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1mS6JF-0008TB-Ie for mharc-bug-findutils@gnu.org; Sun, 19 Sep 2021 19:33:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42078) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mS6JC-0008Pe-BI; Sun, 19 Sep 2021 19:33:19 -0400 Received: from mout.kundenserver.de ([217.72.192.74]:41095) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mS6J5-0005Nx-LU; Sun, 19 Sep 2021 19:33:18 -0400 Received: from [10.0.2.16] ([51.37.167.197]) by mrelayeu.kundenserver.de (mreue109 [213.165.67.113]) with ESMTPSA (Nemesis) id 1N3Kc8-1mrmMA3ZtS-010JeU; Mon, 20 Sep 2021 01:33:09 +0200 Content-Type: multipart/mixed; boundary="------------0fmKUWCT07Te08ZgHF3W5Zpn" Message-ID: <6703062e-bb71-d293-60ce-88661a965fae@bernhard-voelker.de> Date: Mon, 20 Sep 2021 01:33:07 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.0 Content-Language: en-US To: "bug-findutils@gnu.org" , James Youngman Cc: findutils-patches From: Bernhard Voelker Subject: RFC: remove 'oldfind'? X-Provags-ID: V03:K1:coUZKfvIEepT/6p0g3R9TZCnLGFFU52ZCReFa59l9HBtzkqE1cr vSyEA7MXXO8bVeGyI+6tCbiHl8plhiFTo80NR4EB1Ev6g53Vjxk4C2Fw0hpN24D+r2fTzQs +X9EBQzxCBO1a9MWNAt72w4IpktGrKteFyTD3Wv5IwAYCWp1I3z3KqsORbmhTqOH6K4cWIW 9r6NzouSlFoNfnZn23CXA== X-UI-Out-Filterresults: notjunk:1;V03:K0:L9mi0Qd6HkQ=:4evZn2rFWz3AB4ClJurqJ3 tW6GMhPT2GqvzIM3F7GhpZBG1N0mSg6KPBWvUlvI8bG9klEdeFhxM3QQiTBJJEcLzbBx3XO4j z3AxbvlN5YSXwb0HjkOINbwv7V5CJJFFcJDNC3oBnZJ0KMGG/tPHvQ6J41dii89TfXwm3cjRg +DprLfhIGuX/PeOQh/Xq46X7/xMXuT5rRlyomsMeN7XI4yjz5tA/5T9DFcUKmd9Lgjh+u3Abh aGd1eOyPwRCqu7iuKzTO6ecYa6SP+reugUgUHhoNRbrPc1WGIsbAnZs/SB2UpOqVyBSvYWp18 Pme94hUKrqrfRpKIRULiDYa1KRBSjOcRS0mi+JPCAscbbbSa9WonIlssQMKLG2wF5oqdz5NuG k0DB0jOJxKA9NtaZ+R5nf6Su49btTQvWvqd2s616weXveSf4QThg9cRFV0C2/vyRYzuiGd0tw UkepoTwGRXGBPqKb1WBj4KOiNx5J+KyzaSUWEeddlUCZceSEtepkN8nxB6Em8ehl1xJp+LEqw +XviREByFCeF1lZCmFHNyGavtYdFvGrBU8/enN7x0CONHrN1PjZOWnJpf914l22jAHcpsXNjF VtIFlukuioo6+o4ZKLbReqbwRHvHBo3SLykjf2JmEEdJIG116A+52WVzdWeR4+LZQv9W7KgVt IIRdb0iG1KC59rtPjT53vqfKT5kvU5w1SA4518lgcuOCkC4bWfE0+wTuqh9TmEWcaEsSpI+ty mukYlePNc7+fpi6bAlzGfahb4TfAzt/PeaRz8GSzpXCq6zQOCZoICtmnVqI= Received-SPF: none client-ip=217.72.192.74; envelope-from=mail@bernhard-voelker.de; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_FILL_THIS_FORM_SHORT=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: bug-findutils@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports for the GNU find utilities List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Sep 2021 23:33:19 -0000 This is a multi-part message in MIME format. --------------0fmKUWCT07Te08ZgHF3W5Zpn Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit The FTS-based find is the default for a long time; oldfind has not been installed since 4.5.18 (2015), and was only just used in tests. Any objection to remove 'oldfind'? Have a nice day, Berny --------------0fmKUWCT07Te08ZgHF3W5Zpn Content-Type: text/x-patch; charset=UTF-8; name="0001-oldfind-remove.patch" Content-Disposition: attachment; filename="0001-oldfind-remove.patch" Content-Transfer-Encoding: base64 RnJvbSA1NzY4YTAzZGRmYjVlMThiMTY4MmUzMzlkNmNkZDI0ZmY3MjFjNTEwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJuaGFyZCBWb2Vsa2VyIDxtYWlsQGJlcm5oYXJk LXZvZWxrZXIuZGU+CkRhdGU6IFN1biwgMjIgQXVnIDIwMjEgMTg6NDE6MTcgKzAyMDAKU3Vi amVjdDogW1BBVENIXSBvbGRmaW5kOiByZW1vdmUKClRoZSBGVFMtYmFzZWQgZmluZCBpcyB0 aGUgZGVmYXVsdCBmb3IgYSBsb25nIHRpbWU7IG9sZGZpbmQgaGFzIG5vdCBiZWVuCmluc3Rh bGxlZCBzaW5jZSA0LjUuMTggKDIwMTUpLCBhbmQgd2FzIG9ubHkganVzdCB1c2VkIGluIHRl c3RzLgoKKiBORVdTOiBEb2N1bWVudCB0aGUgY2hhbmdlLgoqIGRvYy9maW5kLW1haW50LnRl eGkgKEZhY3RvciBPdXQgUmVwZWF0ZWQgQ29kZSk6IFJlbW92ZSBtZW50aW9uaW5nIG9mCm9s ZGZpbmQuCiogZmluZC8uZ2l0aWdub3JlICgvb2xkZmluZCk6IFJlbW92ZSBlbnRyeS4KKiBm aW5kL01ha2VmaWxlLmFtIChjaGVja19QUk9HUkFNUyk6IFJlbW92ZS4KKG9sZGZpbmRfU09V UkNFUyk6IFJlbW92ZS4KKiBmaW5kL2RlZnMuaCAoc3RydWN0IGRpcl9pZCk6IFJlbW92ZSwg aXQgd2FzIG9ubHkgdXNlZCBpbiBvbGRmaW5kLmMuCihzeW1saW5rX2hhbmRsaW5nKTogTGlr ZXdpc2UuCkFkanVzdCBjb21tZW50cyB3cnQgb2xkZmluZCBvdGhlcndpc2UuCiogZmluZC9v bGRmaW5kLmM6IFJlbW92ZS4KKiBmaW5kL3Rlc3RzdWl0ZS9jb25maWcvdW5peC5leHA6IFJl bW92ZSB0aGUgY29kZSB0byBzZWFyY2ggZm9yIGFuZAp0byBydW4gdGVzdHMgd2l0aCBvbGRm aW5kLgoqIGZpbmQvdGVzdHN1aXRlL2ZpbmQucG9zaXgvZG90ZG90ZmlsZXMuZXhwOiBBZGp1 c3QgY29tbWVudC4KKiBwby9QT1RGSUxFUy5pbiAoZmluZC9vbGRmaW5kLmMpOiBSZW1vdmUg ZW50cnkuCiogdGVzdHMvZmluZC9kZWJ1Zy1taXNzaW5nLWFyZy5zaDogUmVtb3ZlIHJ1biB3 aXRoIG9sZGZpbmQuCiogdGVzdHMvZmluZC9leGVjLXBsdXMtbGFzdC1maWxlLnNoOiBMaWtl d2lzZS4KKiB0ZXN0cy9maW5kL2V4ZWNkaXItZmQtbGVhay5zaDogTGlrZXdpc2UuCiogdGVz dHMvZmluZC9tYW55LWRpci1lbnRyaWVzLXZzLU9PTS5zaDogTGlrZXdpc2UuCiogdGVzdHMv ZmluZC9uYW1lLWxicmFja2V0LWxpdGVyYWwuc2g6IExpa2V3aXNlLgoqIHRlc3RzL2ZpbmQv cHJpbnRmX2VzY2FwZV9jLnNoOiBMaWtld2lzZS4KKiB0ZXN0cy9maW5kL3ByaW50Zl9lc2Nh cGVjaGFycy5zaDogTGlrZXdpc2UuCiogdGVzdHMvZmluZC9wcmludGZfaW5vZGUuc2g6IExp a2V3aXNlLgoqIHRlc3RzL2ZpbmQvcmVmdXNlLW5vb3Auc2g6IExpa2V3aXNlLgoqIHRlc3Rz L2ZpbmQvdHlwZV9saXN0LnNoOiBMaWtld2lzZS4KKiB0ZXN0cy9sb2NhbC5tayAoYnVpbHRf cHJvZ3JhbXMpOiBSZW1vdmUgb2xkZmluZCBmcm9tIGxpc3QuCi0tLQogTkVXUyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICsKIGRvYy9maW5kLW1haW50 LnRleGkgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSArLQogZmluZC8uZ2l0aWdub3Jl ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxIC0KIGZpbmQvTWFrZWZpbGUuYW0g ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNyArLQogZmluZC9kZWZzLmggICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE0ICstCiBmaW5kL29sZGZpbmQuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDE1NTYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBm aW5kL3Rlc3RzdWl0ZS9jb25maWcvdW5peC5leHAgICAgICAgICAgICB8ICAgMjkgKy0KIGZp bmQvdGVzdHN1aXRlL2ZpbmQucG9zaXgvZG90ZG90ZmlsZXMuZXhwIHwgICAgMiArLQogcG8v UE9URklMRVMuaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxIC0KIHRlc3Rz L2ZpbmQvZGVidWctbWlzc2luZy1hcmcuc2ggICAgICAgICAgIHwgICAxMiArLQogdGVzdHMv ZmluZC9leGVjLXBsdXMtbGFzdC1maWxlLnNoICAgICAgICAgfCAgIDEwICstCiB0ZXN0cy9m aW5kL2V4ZWNkaXItZmQtbGVhay5zaCAgICAgICAgICAgICB8ICAgMTIgKy0KIHRlc3RzL2Zp bmQvbWFueS1kaXItZW50cmllcy12cy1PT00uc2ggICAgIHwgICAyMiArLQogdGVzdHMvZmlu ZC9uYW1lLWxicmFja2V0LWxpdGVyYWwuc2ggICAgICAgfCAgICA1ICstCiB0ZXN0cy9maW5k L3ByaW50Zl9lc2NhcGVfYy5zaCAgICAgICAgICAgICB8ICAgMTcgKy0KIHRlc3RzL2ZpbmQv cHJpbnRmX2VzY2FwZWNoYXJzLnNoICAgICAgICAgIHwgICA1MCArLQogdGVzdHMvZmluZC9w cmludGZfaW5vZGUuc2ggICAgICAgICAgICAgICAgfCAgIDEyICstCiB0ZXN0cy9maW5kL3Jl ZnVzZS1ub29wLnNoICAgICAgICAgICAgICAgICB8ICAgMTggKy0KIHRlc3RzL2ZpbmQvdHlw ZV9saXN0LnNoICAgICAgICAgICAgICAgICAgIHwgIDI5MCArKy0tCiB0ZXN0cy9sb2NhbC5t ayAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIDIwIGZpbGVzIGNoYW5n ZWQsIDIyMyBpbnNlcnRpb25zKCspLCAxODQ2IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUg MTAwNjQ0IGZpbmQvb2xkZmluZC5jCgpkaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKaW5kZXgg MTdiMDhkNGEuLjc3YmYzNjVjIDEwMDY0NAotLS0gYS9ORVdTCisrKyBiL05FV1MKQEAgLTIx LDYgKzIxLDEwIEBAIEdOVSBmaW5kdXRpbHMgTkVXUyAtIFVzZXIgdmlzaWJsZSBjaGFuZ2Vz LiAgICAgIC0qLSBvdXRsaW5lIC0qLSAoYWxsb3V0KQogCiAgIFRoZSBvdXRwdXQgb2YgJ2Zp bmQgLS1oZWxwJyBub3cgcmVhZHMgYmV0dGVyLgogCisqKiBDaGFuZ2VzIHRvIHRoZSBidWls ZCBwcm9jZXNzCisKKyAgVGhlIGZpbmQgdmVyc2lvbiB3aXRob3V0IEZUUywgb2xkZmluZCwg aGFzIGJlZW4gY29tcGxldGVseSByZW1vdmVkLiAgSXQgaGFzCisgIG5vdCBiZWVuIGluc3Rh bGxlZCBzaW5jZSA0LjUuMTggKDIwMTUpLCBhbmQgd2FzIG9ubHkgc3RpbGwgdXNlZCBpbiB0 ZXN0cy4KIAogKiBOb3Rld29ydGh5IGNoYW5nZXMgaW4gcmVsZWFzZSA0LjguMCAoMjAyMC0w MS0wOSkgW3N0YWJsZV0KIApkaWZmIC0tZ2l0IGEvZG9jL2ZpbmQtbWFpbnQudGV4aSBiL2Rv Yy9maW5kLW1haW50LnRleGkKaW5kZXggNjQ3ZTZmNWQuLmYwMzNkYzcyIDEwMDY0NAotLS0g YS9kb2MvZmluZC1tYWludC50ZXhpCisrKyBiL2RvYy9maW5kLW1haW50LnRleGkKQEAgLTM2 MywxMCArMzYzLDcgQEAgdGhlIG5hdHVyZSBvZiB0aGUgaW5wdXQgYXJndW1lbnRzIHdoaWNo IGlzIGluIGZhY3Qgbm90IHRydWUgZm9yIHRoZQogY29udGV4dCBvZiB0aGUgbm93IGR1cGxp Y2F0ZWQgY29kZS4KIAogQSBnb29kIGV4YW1wbGUgb2YgdGhlIHVzZSBvZiByZWZhY3Rvcmlu ZyBpbiBmaW5kdXRpbHMgaXMgdGhlCi1AY29kZXtjb2xsZWN0X2FyZ30gZnVuY3Rpb24gaW4g QGZpbGV7ZmluZC9wYXJzZXIuY30uICBBIGxlc3MgY2xlYXItY3V0Ci1idXQgbGFyZ2VyIGV4 YW1wbGUgaXMgdGhlIGZhY3RvcmluZyBvdXQgb2YgY29kZSB3aGljaCB3b3VsZCBvdGhlcndp c2UKLWhhdmUgYmVlbiBkdXBsaWNhdGVkIGJldHdlZW4gQGZpbGV7ZmluZC9vbGRmaW5kLmN9 IGFuZAotQGNvZGV7ZmluZC9mdHNmaW5kLmN9LgorQGNvZGV7Y29sbGVjdF9hcmd9IGZ1bmN0 aW9uIGluIEBmaWxle2ZpbmQvcGFyc2VyLmN9LgogCiBUaGUgZmluZHV0aWxzIHRlc3Qgc3Vp dGUgaXMgY29tcHJlaGVuc2l2ZSBlbm91Z2ggdGhhdCByZWZhY3RvcmluZyBjb2RlCiBzaG91 bGQgbm90IGdlbmVyYWxseSBiZSBhIGRhdW50aW5nIHByb3NwZWN0IGZyb20gYSB0ZXN0aW5n IHBvaW50IG9mCmRpZmYgLS1naXQgYS9maW5kLy5naXRpZ25vcmUgYi9maW5kLy5naXRpZ25v cmUKaW5kZXggMmVhNTU3MmQuLmQzNDUzNmNhIDEwMDY0NAotLS0gYS9maW5kLy5naXRpZ25v cmUKKysrIGIvZmluZC8uZ2l0aWdub3JlCkBAIC00LDQgKzQsMyBAQAogL01ha2VmaWxlLmlu CiAvZmluZAogL2xpYmZpbmR0b29scy5hCi0vb2xkZmluZApkaWZmIC0tZ2l0IGEvZmluZC9N YWtlZmlsZS5hbSBiL2ZpbmQvTWFrZWZpbGUuYW0KaW5kZXggZjhkM2JkOTUuLmMwNzc5YTBm IDEwMDY0NAotLS0gYS9maW5kL01ha2VmaWxlLmFtCisrKyBiL2ZpbmQvTWFrZWZpbGUuYW0K QEAgLTIwLDEzICsyMCwxMCBAQCBsb2NhbGVkaXIgPSAkKGRhdGFkaXIpL2xvY2FsZQogbm9p bnN0X0xJQlJBUklFUyA9IGxpYmZpbmR0b29scy5hCiBsaWJmaW5kdG9vbHNfYV9TT1VSQ0VT ID0gZmluZGRhdGEuYyBmc3R5cGUuYyBwYXJzZXIuYyBwcmVkLmMgZXhlYy5jIHRyZWUuYyB1 dGlsLmMgc2hhcmVmaWxlLmMgcHJpbnQuYwogCi0jIFdlIGFsd2F5cyBidWlsZCB0d28gdmVy c2lvbnMgb2YgZmluZCwgb25lIHdpdGggZnRzIChjYWxsZWQgImZpbmQiKSwKLSMgb25lIHdp dGhvdXQgKGNhbGxlZCAib2xkZmluZCIpLiAgVGhlIG9sZGZpbmQgYmluYXJ5IGlzIG5vIGxv bmdlcgotIyBpbnN0YWxsZWQuCisjIFdlIG9ubHkgYnVpbGQgdGhlIHZlcnNpb24gb2YgZmlu ZCB3aXRoIGZ0cyAoY2FsbGVkICJmaW5kIiksCisjIGkuZS4sIG5vIGxvbmdlciB0aGUgb25l IGNhbGxlZCAib2xkZmluZCIuCiBiaW5fUFJPR1JBTVMgICAgID0gZmluZAotY2hlY2tfUFJP R1JBTVMgICA9IG9sZGZpbmQKIGZpbmRfU09VUkNFUyAgICAgPSBmdHNmaW5kLmMKLW9sZGZp bmRfU09VUkNFUyAgPSBvbGRmaW5kLmMKIG1hbl9NQU5TICAgICAgICAgPSBmaW5kLjEKIAog RVhUUkFfRElTVCA9IGRlZnMuaCBzaGFyZWZpbGUuaCBwcmludC5oICQobWFuX01BTlMpCmRp ZmYgLS1naXQgYS9maW5kL2RlZnMuaCBiL2ZpbmQvZGVmcy5oCmluZGV4IDFiMDI0NTdkLi5j YjUxOTEzNiAxMDA2NDQKLS0tIGEvZmluZC9kZWZzLmgKKysrIGIvZmluZC9kZWZzLmgKQEAg LTEzOCwxNCArMTM4LDYgQEAgc3RydWN0IHBlcm1fdmFsCiAgIG1vZGVfdCB2YWxbMl07CiB9 OwogCi0vKiBkaXJfaWQgaXMgdXNlZCB0byBzdXBwb3J0IGxvb3AgZGV0ZWN0aW9uIGluIG9s ZGZpbmQuYwotICovCi1zdHJ1Y3QgZGlyX2lkCi17Ci0gIGlub190IGlubzsKLSAgZGV2X3Qg ZGV2OwotfTsKLQogLyogc2FtZWZpbGVfZmlsZV9pZCBpcyB1c2VkIHRvIHN1cHBvcnQgdGhl IC1zYW1lZmlsZSB0ZXN0LgogICovCiBzdHJ1Y3Qgc2FtZWZpbGVfZmlsZV9pZApAQCAtMzQ2 LDE0ICszMzgsMTMgQEAgc3RydWN0IHByZWRpY2F0ZQogICBjb25zdCBzdHJ1Y3QgcGFyc2Vy X3RhYmxlKiBwYXJzZXJfZW50cnk7CiB9OwogCi0vKiBvbGRmaW5kLmMsIGZ0c2ZpbmQuYyAq LworLyogZnRzZmluZC5jICovCiBib29sIGlzX2Z0c19lbmFibGVkKGludCAqZnRzb3B0aW9u cyk7CiAKIC8qIGZpbmQgbGlicmFyeSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuICAqLwogCiAv KiBmaW5kIGdsb2JhbCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuICAqLwogCi0vKiBvbGRmaW5k LmMgKi8KIC8qIFN5bWxpbmtPcHRpb24gcmVwcmVzZW50cyB0aGUgY2hvaWNlIG9mCiAgKiAt UCwgLUwgb3IgLVAgKGRlZmF1bHQpIG9uIHRoZSBjb21tYW5kIGxpbmUuCiAgKi8KQEAgLTM2 Myw3ICszNTQsNiBAQCBlbnVtIFN5bWxpbmtPcHRpb24KICAgICBTWU1MSU5LX0FMV0FZU19E RVJFRiwJLyogT3B0aW9uIC1MICovCiAgICAgU1lNTElOS19ERVJFRl9BUkdTT05MWQkvKiBP cHRpb24gLUggKi8KICAgfTsKLWV4dGVybiBlbnVtIFN5bWxpbmtPcHRpb24gc3ltbGlua19o YW5kbGluZzsgLyogZGVmaW5lZCBpbiBvbGRmaW5kLmMuICovCiAKIHZvaWQgc2V0X2ZvbGxv d19zdGF0ZSAoZW51bSBTeW1saW5rT3B0aW9uIG9wdCk7CiB2b2lkIGNsZWFudXAodm9pZCk7 CkBAIC01MjgsNyArNTE4LDcgQEAgYm9vbCBhcHBseV9wcmVkaWNhdGUoY29uc3QgY2hhciAq cGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdGF0X2J1Ziwgc3RydWN0IHByZWRpY2EKICMgZGVm aW5lIHByZWRfaXMobm9kZSwgZm4pICggKChub2RlKS0+cHJlZF9mdW5jKSA9PSAoZm4pICkK IAogCi0vKiBvbGRmaW5kLmMuICovCisvKiB1dGlsLmMuICovCiBpbnQgZ2V0X2luZm8gKGNv bnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqcCwgc3RydWN0IHByZWRpY2F0ZSAq cHJlZF9wdHIpOwogYm9vbCBmb2xsb3dpbmdfbGlua3MgKHZvaWQpOwogYm9vbCBkaWdlc3Rf bW9kZSAobW9kZV90ICptb2RlLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3QgY2hhciAq bmFtZSwgc3RydWN0IHN0YXQgKnBzdGF0LCBib29sIGxlYWYpOwpkaWZmIC0tZ2l0IGEvZmlu ZC9vbGRmaW5kLmMgYi9maW5kL29sZGZpbmQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggODQ1NmRiNTkuLjAwMDAwMDAwCi0tLSBhL2ZpbmQvb2xkZmluZC5jCisrKyAvZGV2 L251bGwKQEAgLTEsMTU1NiArMCwwIEBACi0vKiBmaW5kIC0tIHNlYXJjaCBmb3IgZmlsZXMg aW4gYSBkaXJlY3RvcnkgaGllcmFyY2h5Ci0gICBDb3B5cmlnaHQgKEMpIDE5OTAtMjAyMSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLQotICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Ci0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LQotICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSovCi0vKiBHTlUgZmlu ZCB3YXMgd3JpdHRlbiBieSBFcmljIERlY2tlciA8Y2lyZUBzb2UudWNzYy5lZHU+LAotICAg d2l0aCBlbmhhbmNlbWVudHMgYnkgRGF2aWQgTWFjS2VuemllIDxkam1AZ251Lm9yZz4sCi0g ICBKYXkgUGxldHQgPGpheUBzaWxlbmNlLnByaW5jZXRvbi5uai51cz4sCi0gICBhbmQgVGlt IFdvb2QgPGF4b2xvdGwhdGltQHRvYWQuY29tPi4KLSAgIFRoZSBpZGVhIGZvciAtcHJpbnQw IGFuZCB4YXJncyAtMCBjYW1lIGZyb20KLSAgIERhbiBCZXJuc3RlaW4gPGJybnN0bmRAa3Jh bWRlbi5hY2Yubnl1LmVkdT4uCi0gICBJbXByb3ZlbWVudHMgaGF2ZSBiZWVuIG1hZGUgYnkg SmFtZXMgWW91bmdtYW4gPGpheUBnbnUub3JnPi4KLSovCi0KLS8qIGNvbmZpZy5oIG11c3Qg YmUgaW5jbHVkZWQgZmlyc3QuICovCi0jaW5jbHVkZSA8Y29uZmlnLmg+Ci0KLS8qIHN5c3Rl bSBoZWFkZXJzLiAqLwotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPGVycm5vLmg+ Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotCi0vKiBnbnVs aWIgaGVhZGVycy4gKi8KLSNpbmNsdWRlICJjYW5vbmljYWxpemUuaCIKLSNpbmNsdWRlICJj bG9zZWluLmgiCi0jaW5jbHVkZSAiZGlyZW50LS0uaCIKLSNpbmNsdWRlICJkaXJuYW1lLmgi Ci0jaW5jbHVkZSAiZXJyb3IuaCIKLSNpbmNsdWRlICJmY250bC0tLmgiCi0jaW5jbHVkZSAi aHVtYW4uaCIKLSNpbmNsdWRlICJwcm9nbmFtZS5oIgotI2luY2x1ZGUgInNhdmUtY3dkLmgi Ci0jaW5jbHVkZSAieGFsbG9jLmgiCi0jaW5jbHVkZSAieGdldGN3ZC5oIgotCi0KLS8qIGZp bmQgaGVhZGVycy4gKi8KLSNpbmNsdWRlICJidWlsZGNtZC5oIgotI2luY2x1ZGUgImRlZnMu aCIKLSNpbmNsdWRlICJkaWUuaCIKLSNpbmNsdWRlICJmZGxlYWsuaCIKLSNpbmNsdWRlICJz eXN0ZW0uaCIKLQotI3VuZGVmICBTVEFUX01PVU5UUE9JTlRTCi0KLSNpZmRlZiBDTE9TRURJ Ul9WT0lECi0vKiBGYWtlIGEgcmV0dXJuIHZhbHVlLiAqLwotIyBkZWZpbmUgQ0xPU0VESVIo ZCkgKGNsb3NlZGlyIChkKSwgMCkKLSNlbHNlCi0jIGRlZmluZSBDTE9TRURJUihkKSBjbG9z ZWRpciAoZCkKLSNlbmRpZgotCi1lbnVtCi17Ci0gIE5PVF9BTl9JTk9ERV9OVU1CRVIgPSAw Ci19OwotCi0jaWZkZWYgRF9JTk9fSU5fRElSRU5UCi0jIGRlZmluZSBEX0lOTyhkcCkgKGRw KS0+ZF9pbm8KLSNlbHNlCi0vKiBTb21lIHN5c3RlbXMgZG9uJ3QgaGF2ZSBpbm9kZXMsIHNv IGZha2UgdGhlbSB0byBhdm9pZCBsb3RzIG9mIGlmZGVmcy4gICovCi0jIGRlZmluZSBEX0lO TyhkcCkgTk9UX0FOX0lOT0RFX05VTUJFUgotI2VuZGlmCi0KLSNpZmRlZiBTVEFUX01PVU5U UE9JTlRTCi1zdGF0aWMgdm9pZCBpbml0X21vdW50ZWRfZGV2X2xpc3QgKGludCBtYW5kYXRv cnkpOwotI2VuZGlmCi0KLXN0YXRpYyB2b2lkIHByb2Nlc3NfdG9wX3BhdGggKGNvbnN0IGNo YXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSwgaW5vX3QgaW51bSk7Ci1zdGF0aWMgaW50IHBy b2Nlc3NfcGF0aCAoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IGNoYXIgKm5hbWUsIGJv b2wgbGVhZiwgY29uc3QgY2hhciAqcGFyZW50LCBtb2RlX3QgdHlwZSwgaW5vX3QgaW51bSk7 Ci1zdGF0aWMgdm9pZCBwcm9jZXNzX2RpciAoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0 IGNoYXIgKm5hbWUsIGludCBwYXRobGVuLCBjb25zdCBzdHJ1Y3Qgc3RhdCAqc3RhdHAsIGNv bnN0IGNoYXIgKnBhcmVudCk7Ci0KLS8qIEEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gdGhl IGluaXRpYWwgd29ya2luZyBkaXJlY3RvcnkuCi0gICBEb2luZyBpdCB0aGlzIHdheSBhbGxv d3MgdXMgdG8gd29yayB3aGVuIHRoZSBpLncuZC4gaGFzCi0gICB1bnJlYWRhYmxlIHBhcmVu dHMuICAqLwotZXh0ZXJuIGludCBzdGFydGluZ19kZXNjOwotCi0vKiBUaGUgc3RhdCBidWZm ZXIgb2YgdGhlIGluaXRpYWwgd29ya2luZyBkaXJlY3RvcnkuICovCi1zdGF0aWMgc3RydWN0 IHN0YXQgc3RhcnRpbmdfc3RhdF9idWY7Ci0KLWVudW0gQ2hkaXJTeW1saW5rSGFuZGxpbmcK LSAgewotICAgIFN5bWxpbmtIYW5kbGVEZWZhdWx0LAkvKiBOb3JtYWxseSB0aGUgcmlnaHQg Y2hvaWNlICovCi0gICAgU3ltbGlua0ZvbGxvd09rCQkvKiBzZWUgY29tbWVudCBpbiBwcm9j ZXNzX3RvcF9wYXRoKCkgKi8KLSAgfTsKLQotCi1lbnVtIFRyYXZlcnNhbERpcmVjdGlvbgot ICB7Ci0gICAgVHJhdmVyc2luZ1VwLAotICAgIFRyYXZlcnNpbmdEb3duCi0gIH07Ci0KLWVu dW0gV2RTYW5pdHlDaGVja0ZhdGFsaXR5Ci0gIHsKLSAgICBGQVRBTF9JRl9TQU5JVFlfQ0hF Q0tfRkFJTFMsCi0gICAgUkVUUllfSUZfU0FOSVRZX0NIRUNLX0ZBSUxTLAotICAgIE5PTl9G QVRBTF9JRl9TQU5JVFlfQ0hFQ0tfRkFJTFMKLSAgfTsKLQotI2lmIGRlZmluZWQgSEFWRV9T VFJVQ1RfRElSRU5UX0RfVFlQRQotLyogQ29udmVydCB0aGUgdmFsdWUgb2Ygc3RydWN0IGRp cmVudC5kX3R5cGUgaW50byBhIHZhbHVlIGZvcgotICogc3RydWN0IHN0YXQuc3RfbW9kZSAo YXQgbGVhc3QgdGhlIGZpbGUgdHlwZSBiaXRzKSwgb3IgemVybwotICogaWYgdGhlIHR5cGUg aXMgRFRfVU5LTk9XTiBvciBpcyBhIHZhbHVlIHdlIGRvbid0IGtub3cgYWJvdXQuCi0gKi8K LXN0YXRpYyBtb2RlX3QKLXR5cGVfdG9fbW9kZSAodW5zaWduZWQgdHlwZSkKLXsKLSAgc3dp dGNoICh0eXBlKQotICAgIHsKLSMgaWZkZWYgRFRfRklGTwotICAgIGNhc2UgRFRfRklGTzog cmV0dXJuIFNfSUZJRk87Ci0jIGVuZGlmCi0jIGlmZGVmIERUX0NIUgotICAgIGNhc2UgRFRf Q0hSOiAgcmV0dXJuIFNfSUZDSFI7Ci0jIGVuZGlmCi0jIGlmZGVmIERUX0RJUgotICAgIGNh c2UgRFRfRElSOiAgcmV0dXJuIFNfSUZESVI7Ci0jIGVuZGlmCi0jIGlmZGVmIERUX0JMSwot ICAgIGNhc2UgRFRfQkxLOiAgcmV0dXJuIFNfSUZCTEs7Ci0jIGVuZGlmCi0jIGlmZGVmIERU X1JFRwotICAgIGNhc2UgRFRfUkVHOiAgcmV0dXJuIFNfSUZSRUc7Ci0jIGVuZGlmCi0jIGlm ZGVmIERUX0xOSwotICAgIGNhc2UgRFRfTE5LOiAgcmV0dXJuIFNfSUZMTks7Ci0jIGVuZGlm Ci0jIGlmZGVmIERUX1NPQ0sKLSAgICBjYXNlIERUX1NPQ0s6IHJldHVybiBTX0lGU09DSzsK LSMgZW5kaWYKLSAgICBkZWZhdWx0OgotICAgICAgcmV0dXJuIDA7CQkJLyogVW5rbm93bi4g Ki8KLSAgICB9Ci19Ci0jZW5kaWYKLQotCi0vKiBDQVVUSU9OOiB0aGlzIGlzIHRoZSBlbnRy eSBwb2ludCBmb3IgdGhlIG9sZGZpbmQgZXhlY3V0YWJsZSwgd2hpY2ggaXMgbm90IHRoZSBi aW5hcnkgdGhhdAotICogd2lsbCBhY3R1YWxseSBnZXQgaW5zdGFsbGVkLiAgIFNlZSBmdHNm aW5kLmMuICovCi1pbnQKLW1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLXsKLSAgaW50 IGk7Ci0gIGludCBlbmRfb2ZfbGVhZGluZ19vcHRpb25zID0gMDsgLyogRmlyc3QgYXJnIGFm dGVyIGFueSAtSC8tTCBldGMuICovCi0gIHN0cnVjdCBwcmVkaWNhdGUgKmV2YWxfdHJlZTsK LQotICBpZiAoYXJndlswXSkKLSAgICBzZXRfcHJvZ3JhbV9uYW1lIChhcmd2WzBdKTsKLSAg ZWxzZQotICAgIHNldF9wcm9ncmFtX25hbWUgKCJmaW5kIik7Ci0KLSAgc3RhdGUuZXhpdF9z dGF0dXMgPSAwOwotCi0gIGlmIChmZF9sZWFrX2NoZWNrX2lzX2VuYWJsZWQgKCkpCi0gICAg ewotICAgICAgcmVtZW1iZXJfbm9uX2Nsb2V4ZWNfZmRzICgpOwotICAgIH0KLQotICByZWNv cmRfaW5pdGlhbF9jd2QgKCk7Ci0KLSAgc3RhdGUuYWxyZWFkeV9pc3N1ZWRfc3RhdF9lcnJv cl9tc2cgPSBmYWxzZTsKLSAgc3RhdGUuc2hhcmVkX2ZpbGVzID0gc2hhcmVmaWxlX2luaXQg KCJ3Iik7Ci0gIGlmIChOVUxMID09IHN0YXRlLnNoYXJlZF9maWxlcykKLSAgICB7Ci0gICAg ICBkaWUgKEVYSVRfRkFJTFVSRSwgZXJybm8sCi0JICAgXygiRmFpbGVkIHRvIGluaXRpYWxp emUgc2hhcmVkLWZpbGUgaGFzaCB0YWJsZSIpKTsKLSAgICB9Ci0KLSAgLyogU2V0IHRoZSBv cHRpb24gZGVmYXVsdHMgYmVmb3JlIHdlIGRvIHRoZSBsb2NhbGUKLSAgICogaW5pdGlhbGlz YXRpb24gYXMgY2hlY2tfbm9mb2xsb3cgKCkgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgaW4gdGhl Ci0gICAqIFBPU0lYIGxvY2FsZS4KLSAgICovCi0gIHNldF9vcHRpb25fZGVmYXVsdHMgKCZv cHRpb25zKTsKLQotI2lmZGVmIEhBVkVfU0VUTE9DQUxFCi0gIHNldGxvY2FsZSAoTENfQUxM LCAiIik7Ci0jZW5kaWYKLSAgYmluZHRleHRkb21haW4gKFBBQ0tBR0UsIExPQ0FMRURJUik7 Ci0gIHRleHRkb21haW4gKFBBQ0tBR0UpOwotICBpZiAoYXRleGl0IChjbG9zZV9zdGRpbikp Ci0gICAgewotICAgICAgZGllIChFWElUX0ZBSUxVUkUsIGVycm5vLCBfKCJUaGUgYXRleGl0 IGxpYnJhcnkgZnVuY3Rpb24gZmFpbGVkIikpOwotICAgIH0KLQotICAvKiBDaGVjayBmb3Ig LVAsIC1IIG9yIC1MIG9wdGlvbnMuICovCi0gIGVuZF9vZl9sZWFkaW5nX29wdGlvbnMgPSBw cm9jZXNzX2xlYWRpbmdfb3B0aW9ucyAoYXJnYywgYXJndik7Ci0KLSAgaWYgKG9wdGlvbnMu ZGVidWdfb3B0aW9ucyAmIERlYnVnU3RhdCkKLSAgICBvcHRpb25zLnhzdGF0ID0gZGVidWdf c3RhdDsKLQotICBpZiAob3B0aW9ucy5kZWJ1Z19vcHRpb25zICYgRGVidWdUaW1lKQotICAg IGZwcmludGYgKHN0ZGVyciwgImN1cl9kYXlfc3RhcnQgPSAlcyIsIGN0aW1lICgmb3B0aW9u cy5jdXJfZGF5X3N0YXJ0LnR2X3NlYykpOwotCi0gIC8qIHN0YXRlLmN3ZF9kaXJfZmQgaGFz IHRvIGJlIGluaXRpYWxpemVkIGJlZm9yZSB3ZSBjYWxsIGJ1aWxkX2V4cHJlc3Npb25fdHJl ZSAoKQotICAgKiBiZWNhdXNlIGNvbW1hbmQtbGluZSBwYXJzaW5nIG1heSBsZWFkIHVzIHRv IHN0YXQgc29tZSBmaWxlcy4KLSAgICovCi0gIHN0YXRlLmN3ZF9kaXJfZmQgPSBBVF9GRENX RDsKLQotICAvKiBXZSBhcmUgbm93IHByb2Nlc3NpbmcgdGhlIHBhcnQgb2YgdGhlICJmaW5k IiBjb21tYW5kIGxpbmUKLSAgICogYWZ0ZXIgdGhlIC1ILy1MIG9wdGlvbnMgKGlmIGFueSku Ci0gICAqLwotICBldmFsX3RyZWUgPSBidWlsZF9leHByZXNzaW9uX3RyZWUgKGFyZ2MsIGFy Z3YsIGVuZF9vZl9sZWFkaW5nX29wdGlvbnMpOwotCi0KLSAgLyogc2FmZWx5X2NoZGlyICgp IG5lZWRzIHRvIGNoZWNrIHRoYXQgaXQgaGFzIGVuZGVkIHVwIGluIHRoZSByaWdodCBwbGFj ZS4KLSAgICogVG8gYXZvaWQgYmFpbGluZyBvdXQgd2hlbiBzb21ldGhpbmcgZ2V0cyBhdXRv bW91bnRlZCwgaXQgY2hlY2tzIGlmCi0gICAqIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGFwcGVh cnMgdG8gaGF2ZSBoYWQgYSBkaXJlY3RvcnkgbW91bnRlZCBvbiBpdCBhcwotICAgKiB3ZSBj aGRpciAoKWVkLiAgVGhlIHByb2JsZW0gd2l0aCB0aGlzIGlzIHRoYXQgaW4gb3JkZXIgdG8g bm90aWNlIHRoYXQKLSAgICogYSBmaWxlIHN5c3RlbSB3YXMgbW91bnRlZCwgd2Ugd291bGQg bmVlZCB0byBsc3RhdCAoKSBhbGwgdGhlIG1vdW50IHBvaW50cy4KLSAgICogVGhhdCBzdHJh dGVneSBsb3NlcyBpZiBvdXIgbWFjaGluZSBpcyBhIGNsaWVudCBvZiBhIGRlYWQgTkZTIHNl cnZlci4KLSAgICoKLSAgICogSGVuY2UgaWYgc2FmZWx5X2NoZGlyICgpIGFuZCB3ZF9zYW5p dHlfY2hlY2sgKCkgY2FuIG1hbmFnZSB3aXRob3V0IG5lZWRpbmcKLSAgICogdG8ga25vdyB0 aGUgbW91bnRlZCBkZXZpY2UgbGlzdCwgd2UgZG8gdGhhdC4KLSAgICovCi0gIGlmICghb3B0 aW9ucy5vcGVuX25vZm9sbG93X2F2YWlsYWJsZSkKLSAgICB7Ci0jaWZkZWYgU1RBVF9NT1VO VFBPSU5UUwotICAgICAgaW5pdF9tb3VudGVkX2Rldl9saXN0ICgwKTsKLSNlbmRpZgotICAg IH0KLQotCi0gIHNldF9zdGF0X3BsYWNlaG9sZGVycyAoJnN0YXJ0aW5nX3N0YXRfYnVmKTsK LSAgaWYgKCgqb3B0aW9ucy54c3RhdCkgKCIuIiwgJnN0YXJ0aW5nX3N0YXRfYnVmKSAhPSAw KQotICAgIGRpZSAoRVhJVF9GQUlMVVJFLCBlcnJubywgXygiY2Fubm90IHN0YXQgY3VycmVu dCBkaXJlY3RvcnkiKSk7Ci0KLSAgLyogSWYgbm8gcGF0aHMgYXJlIGdpdmVuLCBkZWZhdWx0 IHRvICIuIi4gICovCi0gIGZvciAoaSA9IGVuZF9vZl9sZWFkaW5nX29wdGlvbnM7IGkgPCBh cmdjICYmICFsb29rc19saWtlX2V4cHJlc3Npb24gKGFyZ3ZbaV0sIHRydWUpOyBpKyspCi0g ICAgewotICAgICAgcHJvY2Vzc190b3BfcGF0aCAoYXJndltpXSwgMCwgc3RhcnRpbmdfc3Rh dF9idWYuc3RfaW5vKTsKLSAgICB9Ci0KLSAgLyogSWYgdGhlcmUgd2VyZSBubyBwYXRoIGFy Z3VtZW50cywgZGVmYXVsdCB0byAiLiIuICovCi0gIGlmIChpID09IGVuZF9vZl9sZWFkaW5n X29wdGlvbnMpCi0gICAgewotICAgICAgLyoKLSAgICAgICAqIFdlIHVzZSBhIHRlbXBvcmFy eSB2YXJpYWJsZSBoZXJlIGJlY2F1c2Ugc29tZSBhY3Rpb25zIG1vZGlmeQotICAgICAgICog dGhlIHBhdGggdGVtcG9yYXJpbHkuICBIZW5jZSBpZiB3ZSB1c2UgYSBzdHJpbmcgY29uc3Rh bnQsCi0gICAgICAgKiB3ZSBnZXQgYSBjb3JlZHVtcC4gIFRoZSBiZXN0IGV4YW1wbGUgb2Yg dGhpcyBpcyBpZiB3ZSBzYXkKLSAgICAgICAqICJmaW5kIC1wcmludGYgJUgiIChub3RlLCBu b3QgImZpbmQgLiAtcHJpbnRmICVIIikuCi0gICAgICAgKi8KLSAgICAgIGNoYXIgZGVmYXVs dHBhdGhbMl0gPSAiLiI7Ci0gICAgICBwcm9jZXNzX3RvcF9wYXRoIChkZWZhdWx0cGF0aCwg MCwgc3RhcnRpbmdfc3RhdF9idWYuc3RfaW5vKTsKLSAgICB9Ci0KLSAgLyogSWYgIi1leGVj IC4uLiB7fSArIiBoYXMgYmVlbiB1c2VkLCB0aGVyZSBtYXkgYmUgc29tZQotICAgKiBwYXJ0 aWFsbHktZnVsbCBjb21tYW5kIGxpbmVzIHdoaWNoIGhhdmUgYmVlbiBidWlsdCwKLSAgICog YnV0IHdoaWNoIGFyZSBub3QgeWV0IGNvbXBsZXRlLiAgIEV4ZWN1dGUgdGhvc2Ugbm93Lgot ICAgKi8KLSAgc2hvd19zdWNjZXNzX3JhdGVzIChldmFsX3RyZWUpOwotICBjbGVhbnVwICgp OwotICByZXR1cm4gc3RhdGUuZXhpdF9zdGF0dXM7Ci19Ci0KLWJvb2wgaXNfZnRzX2VuYWJs ZWQgKGludCAqZnRzb3B0aW9ucykKLXsKLSAgLyogdGhpcyB2ZXJzaW9uIG9mIGZpbmQgKGku ZS4gdGhpcyBtYWluICgpKSBkb2VzIG5vdCB1c2UgZnRzLiAqLwotICAqZnRzb3B0aW9ucyA9 IDA7Ci0gIHJldHVybiBmYWxzZTsKLX0KLQotCi1zdGF0aWMgY2hhciAqCi1zcGVjaWZpY19k aXJuYW1lIChjb25zdCBjaGFyICpkaXIpIF9HTF9BVFRSSUJVVEVfTUFMTE9DOwotc3RhdGlj IGNoYXIgKgotc3BlY2lmaWNfZGlybmFtZSAoY29uc3QgY2hhciAqZGlyKQotewotICBjaGFy IGRpcmJ1ZlsxMDI0XTsKLQotICBpZiAoMCA9PSBzdHJjbXAgKCIuIiwgZGlyKSkKLSAgICB7 Ci0gICAgICAvKiBPSywgd2hhdCdzICcuJz8gKi8KLSAgICAgIGlmIChOVUxMICE9IGdldGN3 ZCAoZGlyYnVmLCBzaXplb2YgKGRpcmJ1ZikpKQotCXsKLQkgIHJldHVybiBzdHJkdXAgKGRp cmJ1Zik7Ci0JfQotICAgICAgZWxzZQotCXsKLQkgIHJldHVybiBzdHJkdXAgKGRpcik7Ci0J fQotICAgIH0KLSAgZWxzZQotICAgIHsKLSAgICAgIGNoYXIgKnJlc3VsdCA9IGNhbm9uaWNh bGl6ZV9maWxlbmFtZV9tb2RlIChkaXIsIENBTl9FWElTVElORyk7Ci0gICAgICBpZiAoTlVM TCA9PSByZXN1bHQpCi0JcmV0dXJuIHN0cmR1cCAoZGlyKTsKLSAgICAgIGVsc2UKLQlyZXR1 cm4gcmVzdWx0OwotICAgIH0KLX0KLQotCi0KLS8qIFJldHVybiBub24temVybyBpZiBGUyBp cyB0aGUgbmFtZSBvZiBhIGZpbGUgc3lzdGVtIHRoYXQgaXMgbGlrZWx5IHRvCi0gKiBiZSBh dXRvbW91bnRlZAotICovCi1zdGF0aWMgaW50Ci1mc19saWtlbHlfdG9fYmVfYXV0b21vdW50 ZWQgKGNvbnN0IGNoYXIgKmZzKQotewotICByZXR1cm4gKCAoMD09c3RyY21wIChmcywgIm5m cyIpKSB8fCAoMD09c3RyY21wIChmcywgImF1dG9mcyIpKSB8fCAoMD09c3RyY21wIChmcywg InN1YmZzIikpKTsKLX0KLQotCi0KLSNpZmRlZiBTVEFUX01PVU5UUE9JTlRTCi1zdGF0aWMg ZGV2X3QgKm1vdW50ZWRfZGV2aWNlcyA9IE5VTEw7Ci1zdGF0aWMgc2l6ZV90IG51bV9tb3Vu dGVkX2RldmljZXMgPSAwdTsKLQotCi1zdGF0aWMgdm9pZAotaW5pdF9tb3VudGVkX2Rldl9s aXN0IChpbnQgbWFuZGF0b3J5KQotewotICBhc3NlcnQgKE5VTEwgPT0gbW91bnRlZF9kZXZp Y2VzKTsKLSAgYXNzZXJ0ICgwID09IG51bV9tb3VudGVkX2RldmljZXMpOwotICBtb3VudGVk X2RldmljZXMgPSBnZXRfbW91bnRlZF9kZXZpY2VzICgmbnVtX21vdW50ZWRfZGV2aWNlcyk7 Ci0gIGlmIChtYW5kYXRvcnkgJiYgKE5VTEwgPT0gbW91bnRlZF9kZXZpY2VzKSkKLSAgICB7 Ci0gICAgICBkaWUgKEVYSVRfRkFJTFVSRSwgMCwgXygiQ2Fubm90IHJlYWQgbGlzdCBvZiBt b3VudGVkIGRldmljZXMuIikpOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQKLXJlZnJlc2hf bW91bnRlZF9kZXZfbGlzdCAodm9pZCkKLXsKLSAgaWYgKG1vdW50ZWRfZGV2aWNlcykKLSAg ICB7Ci0gICAgICBmcmVlIChtb3VudGVkX2RldmljZXMpOwotICAgICAgbW91bnRlZF9kZXZp Y2VzID0gMDsKLSAgICB9Ci0gIG51bV9tb3VudGVkX2RldmljZXMgPSAwdTsKLSAgaW5pdF9t b3VudGVkX2Rldl9saXN0ICgxKTsKLX0KLQotCi0vKiBTZWFyY2ggZm9yIGRldmljZSBERVYg aW4gdGhlIGFycmF5IExJU1QsIHdoaWNoIGlzIG9mIHNpemUgTi4gKi8KLXN0YXRpYyBpbnQK LWRldl9wcmVzZW50IChkZXZfdCBkZXYsIGNvbnN0IGRldl90ICpsaXN0LCBzaXplX3QgbikK LXsKLSAgaWYgKGxpc3QpCi0gICAgewotICAgICAgd2hpbGUgKG4tLSA+IDB1KQotCXsKLQkg IGlmICggKCpsaXN0KyspID09IGRldiApCi0JICAgIHJldHVybiAxOwotCX0KLSAgICB9Ci0g IHJldHVybiAwOwotfQotCi1lbnVtIE1vdW50UG9pbnRTdGF0ZUNoYW5nZQotICB7Ci0gICAg TW91bnRQb2ludFJlY2VudGx5TW91bnRlZCwKLSAgICBNb3VudFBvaW50UmVjZW50bHlVbm1v dW50ZWQsCi0gICAgTW91bnRQb2ludFN0YXRlVW5jaGFuZ2VkCi0gIH07Ci0KLQotCi1zdGF0 aWMgZW51bSBNb3VudFBvaW50U3RhdGVDaGFuZ2UKLWdldF9tb3VudF9zdGF0ZSAoZGV2X3Qg bmV3ZGV2KQotewotICBpbnQgbmV3X2lzX3ByZXNlbnQsIG5ld193YXNfcHJlc2VudDsKLQot ICBuZXdfd2FzX3ByZXNlbnQgPSBkZXZfcHJlc2VudCAobmV3ZGV2LCBtb3VudGVkX2Rldmlj ZXMsIG51bV9tb3VudGVkX2RldmljZXMpOwotICByZWZyZXNoX21vdW50ZWRfZGV2X2xpc3Qg KCk7Ci0gIG5ld19pc19wcmVzZW50ICA9IGRldl9wcmVzZW50IChuZXdkZXYsIG1vdW50ZWRf ZGV2aWNlcywgbnVtX21vdW50ZWRfZGV2aWNlcyk7Ci0KLSAgaWYgKG5ld193YXNfcHJlc2Vu dCA9PSBuZXdfaXNfcHJlc2VudCkKLSAgICByZXR1cm4gTW91bnRQb2ludFN0YXRlVW5jaGFu Z2VkOwotICBlbHNlIGlmIChuZXdfaXNfcHJlc2VudCkKLSAgICByZXR1cm4gTW91bnRQb2lu dFJlY2VudGx5TW91bnRlZDsKLSAgZWxzZQotICAgIHJldHVybiBNb3VudFBvaW50UmVjZW50 bHlVbm1vdW50ZWQ7Ci19Ci0KLQotCi0vKiBXZSBzdGF0KCllZCBhIGRpcmVjdG9yeSwgY2hk aXIoKWVkIGludG8gaXQgKHdlIGtub3cgdGhpcwotICogc2luY2UgZGlyZWN0aW9uIGlzIFRy YXZlcnNpbmdEb3duKSwgc3RhdCgpZWQgaXQgYWdhaW4sCi0gKiBhbmQgbm90aWNlZCB0aGF0 IHRoZSBkZXZpY2UgbnVtYmVycyBhcmUgZGlmZmVyZW50LiAgQ2hlY2sKLSAqIGlmIHRoZSBm aWxlIHN5c3RlbSB3YXMgcmVjZW50bHkgbW91bnRlZC4KLSAqCi0gKiBJZiBpdCB3YXMsIGl0 IGxvb2tzIGxpa2UgY2hkaXIoKWluZyBpbnRvIHRoZSBkaXJlY3RvcnkKLSAqIGNhdXNlZCBh IGZpbGUgc3lzdGVtIHRvIGJlIG1vdW50ZWQuICBNYXliZSBhdXRvbW91bnQgaXMKLSAqIHJ1 bm5pbmcuICBBbnl3YXksIHRoYXQncyBwcm9iYWJseSBPSyAtIGJ1dCBpdCBoYXBwZW5zCi0g KiBvbmx5IHdoZW4gd2UgYXJlIG1vdmluZyBkb3dud2FyZC4KLSAqCi0gKiBXZSBhbHNvIGFs bG93IGZvciB0aGUgcG9zc2liaWxpdHkgdGhhdCBhIHNpbWlsYXIgdGhpbmcKLSAqIGhhcyBo YXBwZW5lZCB3aXRoIHRoZSB1bm1vdW50aW5nIG9mIGEgZmlsZSBzeXN0ZW0uICBUaGlzCi0g KiBpcyBtdWNoIHJhcmVyLCBhcyBpdCByZWxpZXMgb24gYW4gYXV0b21vdW50ZXIgdGltZW91 dAotICogb2NjdXJyaW5nIGF0IGV4YWN0bHkgdGhlIHdyb25nIG1vbWVudC4KLSAqLwotc3Rh dGljIGVudW0gV2RTYW5pdHlDaGVja0ZhdGFsaXR5Ci1kaXJjaGFuZ2VfaXNfZmF0YWwgKGNv bnN0IGNoYXIgKnNwZWNpZmljX3doYXQsCi0JCSAgICBlbnVtIFdkU2FuaXR5Q2hlY2tGYXRh bGl0eSBpc2ZhdGFsLAotCQkgICAgaW50IHNpbGVudCwKLQkJICAgIHN0cnVjdCBzdGF0ICpu ZXdpbmZvKQotewotICBlbnVtIE1vdW50UG9pbnRTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uID0g Z2V0X21vdW50X3N0YXRlIChuZXdpbmZvLT5zdF9kZXYpOwotICBzd2l0Y2ggKHRyYW5zaXRp b24pCi0gICAgewotICAgIGNhc2UgTW91bnRQb2ludFJlY2VudGx5VW5tb3VudGVkOgotICAg ICAgaXNmYXRhbCA9IE5PTl9GQVRBTF9JRl9TQU5JVFlfQ0hFQ0tfRkFJTFM7Ci0gICAgICBp ZiAoIXNpbGVudCkKLQl7Ci0JICBlcnJvciAoMCwgMCwKLQkJIF8oIldBUk5JTkc6IGZpbGUg c3lzdGVtICVzIGhhcyByZWNlbnRseSBiZWVuIHVubW91bnRlZC4iKSwKLQkJIHNhZmVseV9x dW90ZV9lcnJfZmlsZW5hbWUgKDAsIHNwZWNpZmljX3doYXQpKTsKLQl9Ci0gICAgICBicmVh azsKLQotICAgIGNhc2UgTW91bnRQb2ludFJlY2VudGx5TW91bnRlZDoKLSAgICAgIGlzZmF0 YWwgPSBOT05fRkFUQUxfSUZfU0FOSVRZX0NIRUNLX0ZBSUxTOwotICAgICAgaWYgKCFzaWxl bnQpCi0JewotCSAgZXJyb3IgKDAsIDAsCi0JCSBfKCJXQVJOSU5HOiBmaWxlIHN5c3RlbSAl cyBoYXMgcmVjZW50bHkgYmVlbiBtb3VudGVkLiIpLAotCQkgc2FmZWx5X3F1b3RlX2Vycl9m aWxlbmFtZSAoMCwgc3BlY2lmaWNfd2hhdCkpOwotCX0KLSAgICAgIGJyZWFrOwotCi0gICAg Y2FzZSBNb3VudFBvaW50U3RhdGVVbmNoYW5nZWQ6Ci0gICAgICAvKiBsZWF2ZSBpc2ZhdGFs IGFzIGl0IGlzICovCi0gICAgICBicmVhazsKLSAgICB9Ci0KLSAgcmV0dXJuIGlzZmF0YWw7 Ci19Ci0KLQotI2VuZGlmCi0KLQotCi0vKiBFeGFtaW5lIHRoZSByZXN1bHRzIG9mIHRoZSBz dGF0KCkgb2YgYSBkaXJlY3RvcnkgZnJvbSBiZWZvcmUgd2UKLSAqIGVudGVyZWQgb3IgbGVm dCBpdCwgd2l0aCB0aGUgcmVzdWx0cyBvZiBzdGF0KClpbmcgaXQgYWZ0ZXJ3YXJkLiAgSWYK LSAqIHRoZXNlIGFyZSBkaWZmZXJlbnQsIHRoZSBmaWxlIHN5c3RlbSB0cmVlIGhhcyBiZWVu IG1vZGlmaWVkIHdoaWxlIHdlCi0gKiB3ZXJlIHRyYXZlcnNpbmcgaXQuICBUaGF0IG1pZ2h0 IGJlIGFuIGF0dGVtcHQgdG8gdXNlIGEgcmFjZQotICogY29uZGl0aW9uIHRvIHBlcnN1YWRl IGZpbmQgdG8gZG8gc29tZXRoaW5nIGl0IGRpZG4ndCBpbnRlbmQKLSAqIChlLmcuIGFuIGF0 dGVtcHQgYnkgYW4gb3JkaW5hcnkgdXNlciB0byBleHBsb2l0IHRoZSBmYWN0IHRoYXQgcm9v dAotICogc29tZXRpbWVzIHJ1bnMgZmluZCBvbiB0aGUgd2hvbGUgZmlsZSBzeXN0ZW0pLiAg SG93ZXZlciwgdGhpcyBjYW4KLSAqIGFsc28gaGFwcGVuIGlmIGF1dG9tb3VudCBpcyBydW5u aW5nIChjZXJ0YWlubHkgb24gU29sYXJpcykuICBXaXRoCi0gKiBhdXRvbW91bnQsIG1vdmlu ZyBpbnRvIGEgZGlyZWN0b3J5IGNhbiBjYXVzZSBhIGZpbGUgc3lzdGVtIHRvIGJlCi0gKiBt b3VudGVkIHRoZXJlLgotICoKLSAqIFRvIGNvcGUgc2Vuc2libHkgd2l0aCB0aGlzLCB3ZSB3 aWxsIHJhaXNlIGFuIGVycm9yIGlmIHdlIHNlZSB0aGUKLSAqIGRldmljZSBudW1iZXIgY2hh bmdlIHVubGVzcyB3ZSBhcmUgY2hkaXIoKWluZyBpbnRvIGEgc3ViZGlyZWN0b3J5LAotICog YW5kIHRoZSBkaXJlY3Rvcnkgd2UgbW92ZWQgaW50byBoYXMgYmVlbiBtb3VudGVkIG9yIHVu bW91bnRlZCAicmVjZW50bHkiLgotICogSGVyZSAicmVjZW50bHkiIG1lYW5zIHNpbmNlIHdl IHN0YXJ0ZWQgImZpbmQiIG9yIHdlIGxhc3QgcmUtcmVhZAotICogdGhlIC9ldGMvbW50dGFi IGZpbGUuCi0gKgotICogSWYgdGhlIGRldmljZSBudW1iZXIgZG9lcyBub3QgY2hhbmdlIGJ1 dCB0aGUgaW5vZGUgZG9lcywgdGhhdCBpcyBhCi0gKiBwcm9ibGVtLgotICoKLSAqIElmIHRo ZSBkZXZpY2UgbnVtYmVyIGFuZCBpbm9kZSBhcmUgYm90aCB0aGUgc2FtZSwgd2UgYXJlIGhh cHB5LgotICoKLSAqIElmIGEgZmlsZSBzeXN0ZW0gaXMgKHVuKW1vdW50ZWQgYXMgd2UgY2hk aXIoKSBpbnRvIHRoZSBkaXJlY3RvcnksIHRoYXQKLSAqIG1heSBtZWFuIHRoYXQgd2UncmUg bm93IGV4YW1pbmluZyBhIHNlY3Rpb24gb2YgdGhlIGZpbGUgc3lzdGVtIHRoYXQgbWlnaHQK LSAqIGhhdmUgYmVlbiBleGNsdWRlZCBmcm9tIGNvbnNpZGVyYXRpb24gKHZpYSAtcHJ1bmUg b3IgLXF1aXQgZm9yIGV4YW1wbGUpLgotICogSGVuY2Ugd2UgcHJpbnQgYSB3YXJuaW5nIG1l c3NhZ2UgdG8gaW5kaWNhdGUgdGhhdCB0aGUgb3V0cHV0IG9mIGZpbmQKLSAqIG1pZ2h0IGJl IGluY29uc2lzdGVudCBkdWUgdG8gdGhlIGNoYW5nZSBpbiB0aGUgZmlsZSBzeXN0ZW0uCi0g Ki8KLXN0YXRpYyBib29sCi13ZF9zYW5pdHlfY2hlY2sgKGNvbnN0IGNoYXIgKnRoaW5nX3Rv X3N0YXQsCi0JCWNvbnN0IGNoYXIgKnByb2duYW1lLAotCQljb25zdCBjaGFyICp3aGF0LAot CQlkZXZfdCBvbGRfZGV2LAotCQlpbm9fdCBvbGRfaW5vLAotCQlzdHJ1Y3Qgc3RhdCAqbmV3 aW5mbywKLQkJaW50IHBhcmVudCwKLQkJaW50IGxpbmVfbm8sCi0JCWVudW0gVHJhdmVyc2Fs RGlyZWN0aW9uIGRpcmVjdGlvbiwKLQkJZW51bSBXZFNhbml0eUNoZWNrRmF0YWxpdHkgaXNm YXRhbCwKLQkJYm9vbCAqY2hhbmdlZCkgLyogb3V0cHV0IHBhcmFtZXRlciAqLwotewotICBj b25zdCBjaGFyICpmc3R5cGU7Ci0gIGNoYXIgKnNwZWNpZmljX3doYXQgPSBOVUxMOwotICBp bnQgc2lsZW50ID0gMDsKLSAgY29uc3QgY2hhciAqY3VycmVudF9kaXIgPSAiLiI7Ci0KLSAg KmNoYW5nZWQgPSBmYWxzZTsKLQotICBzZXRfc3RhdF9wbGFjZWhvbGRlcnMgKG5ld2luZm8p OwotICBpZiAoKCpvcHRpb25zLnhzdGF0KSAoY3VycmVudF9kaXIsIG5ld2luZm8pICE9IDAp Ci0gICAgZmF0YWxfdGFyZ2V0X2ZpbGVfZXJyb3IgKGVycm5vLCB0aGluZ190b19zdGF0KTsK LQotICBpZiAob2xkX2RldiAhPSBuZXdpbmZvLT5zdF9kZXYpCi0gICAgewotICAgICAgKmNo YW5nZWQgPSB0cnVlOwotICAgICAgc3BlY2lmaWNfd2hhdCA9IHNwZWNpZmljX2Rpcm5hbWUg KHdoYXQpOwotICAgICAgZnN0eXBlID0gZmlsZXN5c3RlbV90eXBlIChuZXdpbmZvLCBjdXJy ZW50X2Rpcik7Ci0gICAgICBzaWxlbnQgPSBmc19saWtlbHlfdG9fYmVfYXV0b21vdW50ZWQg KGZzdHlwZSk7Ci0KLSAgICAgIC8qIFRoaXMgY29uZGl0aW9uIGlzIHJhcmUsIHNvIG9uY2Ug d2UgYXJlIGhlcmUgaXQgaXMKLSAgICAgICAqIHJlYXNvbmFibGUgdG8gcGVyZm9ybSBhbiBl eHBlbnNpdmUgY29tcHV0YXRpb24gdG8KLSAgICAgICAqIGRldGVybWluZSBpZiB3ZSBzaG91 bGQgY29udGludWUgb3IgZmFpbC4KLSAgICAgICAqLwotICAgICAgaWYgKFRyYXZlcnNpbmdE b3duID09IGRpcmVjdGlvbikKLQl7Ci0jaWZkZWYgU1RBVF9NT1VOVFBPSU5UUwotCSAgaXNm YXRhbCA9IGRpcmNoYW5nZV9pc19mYXRhbCAoc3BlY2lmaWNfd2hhdCxpc2ZhdGFsLHNpbGVu dCxuZXdpbmZvKTsKLSNlbHNlCi0JICAodm9pZCkgc2lsZW50OwotCSAgaXNmYXRhbCA9IFJF VFJZX0lGX1NBTklUWV9DSEVDS19GQUlMUzsKLSNlbmRpZgotCX0KLQotICAgICAgc3dpdGNo IChpc2ZhdGFsKQotCXsKLQljYXNlIEZBVEFMX0lGX1NBTklUWV9DSEVDS19GQUlMUzoKLQkg IHsKLQkgICAgZnN0eXBlID0gZmlsZXN5c3RlbV90eXBlIChuZXdpbmZvLCBjdXJyZW50X2Rp cik7Ci0JICAgIGRpZSAoRVhJVF9GQUlMVVJFLCAwLAotCQkgXygiJXMlcyBjaGFuZ2VkIGR1 cmluZyBleGVjdXRpb24gb2YgJXMgKG9sZCBkZXZpY2UgbnVtYmVyICVsZCwgbmV3IGRldmlj ZSBudW1iZXIgJWxkLCBmaWxlIHN5c3RlbSB0eXBlIGlzICVzKSBbcmVmICVsZF0iKSwKLQkJ IHNhZmVseV9xdW90ZV9lcnJfZmlsZW5hbWUgKDAsIHNwZWNpZmljX3doYXQpLAotCQkgcGFy ZW50ID8gIi8uLiIgOiAiIiwKLQkJIHNhZmVseV9xdW90ZV9lcnJfZmlsZW5hbWUgKDEsIHBy b2duYW1lKSwKLQkJIChsb25nKSBvbGRfZGV2LAotCQkgKGxvbmcpIG5ld2luZm8tPnN0X2Rl diwKLQkJIGZzdHlwZSwKLQkJIChsb25nKWxpbmVfbm8pOwotCSAgICAvKk5PVFJFQUNIRUQq LwotCSAgICByZXR1cm4gZmFsc2U7Ci0JICB9Ci0KLQljYXNlIE5PTl9GQVRBTF9JRl9TQU5J VFlfQ0hFQ0tfRkFJTFM6Ci0JICB7Ci0JICAgIC8qIFNpbmNlIHRoZSBkZXZpY2UgaGFzIGNo YW5nZWQgdW5kZXIgdXMsIHRoZSBpbm9kZSBudW1iZXIKLQkgICAgICogd2lsbCBhbG1vc3Qg Y2VydGFpbmx5IGFsc28gYmUgZGlmZmVyZW50LiBIb3dldmVyLCB3ZSBoYXZlCi0JICAgICAq IGFscmVhZHkgZGVjaWRlZCB0aGF0IHRoaXMgaXMgbm90IGEgcHJvYmxlbS4gIEhlbmNlIHdl IHJldHVybgotCSAgICAgKiB3aXRob3V0IGNoZWNraW5nIHRoZSBpbm9kZSBudW1iZXIuCi0J ICAgICAqLwotCSAgICBmcmVlIChzcGVjaWZpY193aGF0KTsKLQkgICAgcmV0dXJuIHRydWU7 Ci0JICB9Ci0KLQljYXNlIFJFVFJZX0lGX1NBTklUWV9DSEVDS19GQUlMUzoKLQkgIHJldHVy biBmYWxzZTsKLQl9Ci0gICAgfQotCi0gIC8qIERldmljZSBudW1iZXIgd2FzIHRoZSBzYW1l LCBjaGVjayBpZiB0aGUgaW5vZGUgaGFzIGNoYW5nZWQuICovCi0gIGlmIChvbGRfaW5vICE9 IG5ld2luZm8tPnN0X2lubykKLSAgICB7Ci0gICAgICAqY2hhbmdlZCA9IHRydWU7Ci0gICAg ICBzcGVjaWZpY193aGF0ID0gc3BlY2lmaWNfZGlybmFtZSAod2hhdCk7Ci0gICAgICBmc3R5 cGUgPSBmaWxlc3lzdGVtX3R5cGUgKG5ld2luZm8sIGN1cnJlbnRfZGlyKTsKLQotICAgICAg ZXJyb3IgKChpc2ZhdGFsID09IEZBVEFMX0lGX1NBTklUWV9DSEVDS19GQUlMUykgPyAxIDog MCwKLQkgICAgIDAsCQkJLyogbm8gcmVsZXZhbnQgZXJybm8gdmFsdWUgKi8KLQkgICAgIF8o IiVzJXMgY2hhbmdlZCBkdXJpbmcgZXhlY3V0aW9uIG9mICVzICIKLQkgICAgICAgIihvbGQg aW5vZGUgbnVtYmVyICUiIFBSSXVNQVggIiwgbmV3IGlub2RlIG51bWJlciAlIiBQUkl1TUFY Ci0JICAgICAgICIsIGZpbGUgc3lzdGVtIHR5cGUgaXMgJXMpIFtyZWYgJWxkXSIpLAotCSAg ICAgc2FmZWx5X3F1b3RlX2Vycl9maWxlbmFtZSAoMCwgc3BlY2lmaWNfd2hhdCksCi0JICAg ICBwYXJlbnQgPyAiLy4uIiA6ICIiLAotCSAgICAgc2FmZWx5X3F1b3RlX2Vycl9maWxlbmFt ZSAoMSwgcHJvZ25hbWUpLAotCSAgICAgKHVpbnRtYXhfdCkgb2xkX2lubywKLQkgICAgICh1 aW50bWF4X3QpIG5ld2luZm8tPnN0X2lubywKLQkgICAgIGZzdHlwZSwKLQkgICAgIChsb25n KWxpbmVfbm8pOwotICAgICAgZnJlZSAoc3BlY2lmaWNfd2hhdCk7Ci0gICAgICByZXR1cm4g ZmFsc2U7Ci0gICAgfQotCi0gIHJldHVybiB0cnVlOwotfQotCi1lbnVtIFNhZmVDaGRpclN0 YXR1cwotICB7Ci0gICAgU2FmZUNoZGlyT0ssCi0gICAgU2FmZUNoZGlyRmFpbFN5bWxpbmss Ci0gICAgU2FmZUNoZGlyRmFpbE5vdERpciwKLSAgICBTYWZlQ2hkaXJGYWlsU3RhdCwKLSAg ICBTYWZlQ2hkaXJGYWlsV291bGRCZVVuYWJsZVRvUmV0dXJuLAotICAgIFNhZmVDaGRpckZh aWxDaGRpckZhaWxlZCwKLSAgICBTYWZlQ2hkaXJGYWlsTm9uZXhpc3RlbnQsCi0gICAgU2Fm ZUNoZGlyRmFpbERlc3RVbnJlYWRhYmxlCi0gIH07Ci0KLS8qIFNhZmVseSBwZXJmb3JtIGEg Y2hhbmdlIGluIGRpcmVjdG9yeS4gIFdlIGRvIHRoaXMgYnkgY2FsbGluZwotICogbHN0YXQo KSBvbiB0aGUgc3ViZGlyZWN0b3J5LCB1c2luZyBjaGRpcigpIHRvIG1vdmUgaW50byBpdCwg YW5kCi0gKiB0aGVuIGxzdGF0KClpbmcgIi4iLiAgV2UgY29tcGFyZSB0aGUgcmVzdWx0cyBv ZiB0aGUgdHdvIHN0YXQgY2FsbHMKLSAqIHRvIHNlZSBpZiB0aGV5IGFyZSBjb25zaXN0ZW50 LiAgSWYgbm90LCB3ZSBzb3VuZCB0aGUgYWxhcm0uCi0gKgotICogSWYgZm9sbG93aW5nX2xp bmtzKCkgaXMgdHJ1ZSwgd2UgZG8gZm9sbG93IHN5bWJvbGljIGxpbmtzLgotICovCi1zdGF0 aWMgZW51bSBTYWZlQ2hkaXJTdGF0dXMKLXNhZmVseV9jaGRpcl9sc3RhdCAoY29uc3QgY2hh ciAqZGVzdCwKLQkJICAgIGVudW0gVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbiwKLQkJ ICAgIHN0cnVjdCBzdGF0ICpzdGF0YnVmX2Rlc3QsCi0JCSAgICBlbnVtIENoZGlyU3ltbGlu a0hhbmRsaW5nIHN5bWxpbmtfZm9sbG93X29wdGlvbiwKLQkJICAgIGJvb2wgKmRpZF9zdGF0 KQotewotICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmX2Fycml2ZWQ7Ci0gIGludCBydiwgZG90ZmQ9 LTE7Ci0gIGludCBzYXZlZF9lcnJubzsJCS8qIHNwZWNpZmljX2Rpcm5hbWUoKSBjaGFuZ2Vz IGVycm5vLiAqLwotICBib29sIHJ2X3NldCA9IGZhbHNlOwotICBib29sIHN0YXRmbGFnID0g ZmFsc2U7Ci0gIGludCB0cmllcyA9IDA7Ci0gIGVudW0gV2RTYW5pdHlDaGVja0ZhdGFsaXR5 IGlzZmF0YWwgPSBSRVRSWV9JRl9TQU5JVFlfQ0hFQ0tfRkFJTFM7Ci0KLSAgc2F2ZWRfZXJy bm8gPSBlcnJubyA9IDA7Ci0KLSAgZG90ZmQgPSBvcGVuX2Nsb2V4ZWMgKCIuIiwgT19SRE9O TFkKLSNpZiBkZWZpbmVkIE9fTEFSR0VGSUxFCi0JCQl8T19MQVJHRUZJTEUKLSNlbmRpZgot CQkJKTsKLQotICAvKiBXZSBqdW1wIGJhY2sgdG8gaGVyZSBpZiB3ZF9zYW5pdHlfY2hlY2so KQotICAgKiByZWNvdmVyYWJseSB0cmlnZ2VycyBhbiBhbGVydC4KLSAgICovCi0gcmV0cnk6 Ci0gICsrdHJpZXM7Ci0KLSAgaWYgKGRvdGZkID49IDApCi0gICAgewotICAgICAgLyogU3Rh dCB0aGUgZGlyZWN0b3J5IHdlJ3JlIGdvaW5nIHRvLiAqLwotICAgICAgc2V0X3N0YXRfcGxh Y2Vob2xkZXJzIChzdGF0YnVmX2Rlc3QpOwotICAgICAgaWYgKDAgPT0gb3B0aW9ucy54c3Rh dCAoZGVzdCwgc3RhdGJ1Zl9kZXN0KSkKLQl7Ci0JICBzdGF0ZmxhZyA9IHRydWU7Ci0KLSNp ZmRlZiBTX0lTTE5LCi0JICAvKiBzeW1saW5rX2ZvbGxvd19vcHRpb24gbWlnaHQgYmUgc2V0 IHRvIFN5bWxpbmtGb2xsb3dPaywgd2hpY2gKLQkgICAqIHdvdWxkIGFsbG93IHVzIHRvIGNo ZGlyKCkgaW50byBhIHN5bWJvbGljIGxpbmsuICBUaGlzIGlzCi0JICAgKiBvbmx5IHVzZWZ1 bCBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIGRpcmVjdG9yeSB3ZSdyZQotCSAgICogY2hkaXIo KWluZyBpbnRvIGlzIHRoZSBiYXNlbmFtZSBvZiBhIGNvbW1hbmQgbGluZQotCSAgICogYXJn dW1lbnQsIGZvciBleGFtcGxlIHdoZXJlICJmb28vYmFyL2JheiIgaXMgc3BlY2lmaWVkIG9u Ci0JICAgKiB0aGUgY29tbWFuZCBsaW5lLiAgV2hlbiAtUCBpcyBpbiBlZmZlY3QgKHRoZSBk ZWZhdWx0KSwKLQkgICAqIGJheiB3aWxsIG5vdCBiZSBmb2xsb3dlZCBpZiBpdCBpcyBhIHN5 bWxpbmssIGJ1dCBpZiBiYXIKLQkgICAqIGlzIGEgc3ltbGluaywgaXQgX3Nob3VsZF8gYmUg Zm9sbG93ZWQuICBIZW5jZSB3ZSBuZWVkIHRoZQotCSAgICogYWJpbGl0eSB0byBvdmVycmlk ZSB0aGUgcG9saWN5IHNldCBieSBmb2xsb3dpbmdfbGlua3MoKS4KLQkgICAqLwotCSAgaWYg KCFmb2xsb3dpbmdfbGlua3MgKCkgJiYgU19JU0xOSyhzdGF0YnVmX2Rlc3QtPnN0X21vZGUp KQotCSAgICB7Ci0JICAgICAgLyogV2UncmUgbm90IHN1cHBvc2VkIHRvIGJlIGZvbGxvd2lu ZyBsaW5rcywgYnV0IHRoaXMgaXMKLQkgICAgICAgKiBhIGxpbmsuICBDaGVjayBzeW1saW5r X2ZvbGxvd19vcHRpb24gdG8gc2VlIGlmIHdlIHNob3VsZAotCSAgICAgICAqIG1ha2UgYSBz cGVjaWFsIGV4Y2VwdGlvbi4KLQkgICAgICAgKi8KLQkgICAgICBpZiAoc3ltbGlua19mb2xs b3dfb3B0aW9uID09IFN5bWxpbmtGb2xsb3dPaykKLQkJewotCQkgIC8qIFdlIG5lZWQgdG8g cmUtc3RhdCgpIHRoZSBmaWxlIHNvIHRoYXQgdGhlCi0JCSAgICogc2FuaXR5IGNoZWNrIGNh biBwYXNzLgotCQkgICAqLwotCQkgIGlmICgwICE9IHN0YXQgKGRlc3QsIHN0YXRidWZfZGVz dCkpCi0JCSAgICB7Ci0JCSAgICAgIHJ2ID0gU2FmZUNoZGlyRmFpbE5vbmV4aXN0ZW50Owot CQkgICAgICBydl9zZXQgPSB0cnVlOwotCQkgICAgICBzYXZlZF9lcnJubyA9IGVycm5vOwot CQkgICAgICBnb3RvIGZhaWw7Ci0JCSAgICB9Ci0JCSAgc3RhdGZsYWcgPSB0cnVlOwotCQl9 Ci0JICAgICAgZWxzZQotCQl7Ci0JCSAgLyogTm90IGZvbGxvd2luZyBzeW1saW5rcywgc28g dGhlIGF0dGVtcHQgdG8KLQkJICAgKiBjaGRpcigpIGludG8gYSBzeW1saW5rIHNob3VsZCBi ZSBwcmV2ZW50ZWQuCi0JCSAgICovCi0JCSAgcnYgPSBTYWZlQ2hkaXJGYWlsU3ltbGluazsK LQkJICBydl9zZXQgPSB0cnVlOwotCQkgIHNhdmVkX2Vycm5vID0gMDsJLyogc2lsZW5jZSB0 aGUgZXJyb3IgbWVzc2FnZSAqLwotCQkgIGdvdG8gZmFpbDsKLQkJfQotCSAgICB9Ci0jZW5k aWYKLSNpZmRlZiBTX0lTRElSCi0JICAvKiBBbHRob3VnaCB0aGUgaW1tZWRpYXRlbHkgZm9s bG93aW5nIGNoZGlyKCkgd291bGQgZGV0ZWN0Ci0JICAgKiB0aGUgZmFjdCB0aGF0IHRoaXMg aXMgbm90IGEgZGlyZWN0b3J5IGZvciB1cywgdGhpcyB3b3VsZAotCSAgICogcmVzdWx0IGlu IGFuIGV4dHJhIHN5c3RlbSBjYWxsIHRoYXQgZmFpbHMuICBBbnlib2R5Ci0JICAgKiBleGFt aW5pbmcgdGhlIHN5c3RlbS1jYWxsIHRyYWNlIHNob3VsZCBpZGVhbGx5IG5vdCBiZQotCSAg ICogY29uY2VybmVkIHRoYXQgc29tZXRoaW5nIGlzIGFjdHVhbGx5IGZhaWxpbmcuCi0JICAg Ki8KLQkgIGlmICghU19JU0RJUihzdGF0YnVmX2Rlc3QtPnN0X21vZGUpKQotCSAgICB7Ci0J ICAgICAgcnYgPSBTYWZlQ2hkaXJGYWlsTm90RGlyOwotCSAgICAgIHJ2X3NldCA9IHRydWU7 Ci0JICAgICAgc2F2ZWRfZXJybm8gPSAwOwkvKiBzaWxlbmNlIHRoZSBlcnJvciBtZXNzYWdl ICovCi0JICAgICAgZ290byBmYWlsOwotCSAgICB9Ci0jZW5kaWYKLQotCSAgaWYgKG9wdGlv bnMuZGVidWdfb3B0aW9ucyAmIERlYnVnU2VhcmNoKQotCSAgICBmcHJpbnRmIChzdGRlcnIs ICJzYWZlbHlfY2hkaXIoKTogY2hkaXIoXCIlc1wiKVxuIiwgZGVzdCk7Ci0KLQkgIGlmICgw ID09IGNoZGlyIChkZXN0KSkKLQkgICAgewotCSAgICAgIC8qIGNoZWNrIHdlIGVuZGVkIHVw IHdoZXJlIHdlIHdhbnRlZCB0byBnbyAqLwotCSAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNl OwotCSAgICAgIGlmICghd2Rfc2FuaXR5X2NoZWNrICgiLiIsIHByb2dyYW1fbmFtZSwgIi4i LAotCQkJCSAgICBzdGF0YnVmX2Rlc3QtPnN0X2RldiwKLQkJCQkgICAgc3RhdGJ1Zl9kZXN0 LT5zdF9pbm8sCi0JCQkJICAgICZzdGF0YnVmX2Fycml2ZWQsCi0JCQkJICAgIDAsIF9fTElO RV9fLCBkaXJlY3Rpb24sCi0JCQkJICAgIGlzZmF0YWwsCi0JCQkJICAgICZjaGFuZ2VkKSkK LQkJewotCQkgIC8qIE9ubHkgYWxsb3cgb25lIGZhaWx1cmUuICovCi0JCSAgaWYgKFJFVFJZ X0lGX1NBTklUWV9DSEVDS19GQUlMUyA9PSBpc2ZhdGFsKQotCQkgICAgewotCQkgICAgICBp ZiAoMCA9PSBmY2hkaXIgKGRvdGZkKSkKLQkJCXsKLQkJCSAgaXNmYXRhbCA9IEZBVEFMX0lG X1NBTklUWV9DSEVDS19GQUlMUzsKLQkJCSAgZ290byByZXRyeTsKLQkJCX0KLQkJICAgICAg ZWxzZQotCQkJewotCQkJICAvKiBGYWlsZWQgdG8gcmV0dXJuIHRvIG9yaWdpbmFsIGRpcmVj dG9yeSwKLQkJCSAgICogYnV0IHdlIGtub3cgdGhhdCB0aGUgY3VycmVudCB3b3JraW5nCi0J CQkgICAqIGRpcmVjdG9yeSBpcyBub3QgdGhlIG9uZSB0aGF0IHdlIGludGVuZAotCQkJICAg KiB0byBiZSBpbi4gIFNpbmNlIGZjaGRpcigpIGZhaWxlZCwgd2UKLQkJCSAgICogY2FuJ3Qg cmVjb3ZlciBmcm9tIHRoaXMgYW5kIHNvIHRoaXMgZXJyb3IKLQkJCSAgICogaXMgZmF0YWwu Ci0JCQkgICAqLwotCQkJICBkaWUgKEVYSVRfRkFJTFVSRSwgZXJybm8sCi0JCQkgICAgICAg XygiZmFpbGVkIHRvIHJldHVybiB0byBwYXJlbnQgZGlyZWN0b3J5IikpOwotCQkJfQotCQkg ICAgfQotCQkgIGVsc2UKLQkJICAgIHsKLQkJICAgICAgLyogWFhYOiBub3Qgc3VyZSB3aGF0 IHRvIHVzZSBhcyBhbiBleGN1c2UgaGVyZS4gKi8KLQkJICAgICAgcnYgPSBTYWZlQ2hkaXJG YWlsTm9uZXhpc3RlbnQ7Ci0JCSAgICAgIHJ2X3NldCA9IHRydWU7Ci0JCSAgICAgIHNhdmVk X2Vycm5vID0gMDsKLQkJICAgICAgZ290byBmYWlsOwotCQkgICAgfQotCQl9Ci0KLQkgICAg ICBjbG9zZSAoZG90ZmQpOwotCSAgICAgIHJldHVybiBTYWZlQ2hkaXJPSzsKLQkgICAgfQot CSAgZWxzZQotCSAgICB7Ci0JICAgICAgc2F2ZWRfZXJybm8gPSBlcnJubzsKLQkgICAgICBp ZiAoRU5PRU5UID09IHNhdmVkX2Vycm5vKQotCQl7Ci0JCSAgcnYgPSBTYWZlQ2hkaXJGYWls Tm9uZXhpc3RlbnQ7Ci0JCSAgcnZfc2V0ID0gdHJ1ZTsKLQkJICBpZiAob3B0aW9ucy5pZ25v cmVfcmVhZGRpcl9yYWNlKQotCQkgICAgZXJybm8gPSAwOwkvKiBkb24ndCBpc3N1ZSBlcnIg bXNnICovCi0JCX0KLQkgICAgICBlbHNlIGlmIChFTk9URElSID09IHNhdmVkX2Vycm5vKQot CQl7Ci0JCSAgLyogVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSB3ZSBzdGF0IGEgZGlyZWN0b3J5 LAotCQkgICAqIGFuZCB0aGVuIGZpbGUgc3lzdGVtIGFjdGl2aXR5IGNoYW5nZXMgaXQgaW50 bwotCQkgICAqIGEgbm9uLWRpcmVjdG9yeS4KLQkJICAgKi8KLQkJICBzYXZlZF9lcnJubyA9 IDA7CS8qIGRvbid0IGlzc3VlIGVyciBtc2cgKi8KLQkJICBydiA9IFNhZmVDaGRpckZhaWxO b3REaXI7Ci0JCSAgcnZfc2V0ID0gdHJ1ZTsKLQkJfQotCSAgICAgIGVsc2UKLQkJewotCQkg IHJ2ID0gU2FmZUNoZGlyRmFpbENoZGlyRmFpbGVkOwotCQkgIHJ2X3NldCA9IHRydWU7Ci0J CX0KLQkgICAgICBnb3RvIGZhaWw7Ci0JICAgIH0KLQl9Ci0gICAgICBlbHNlCi0JewotCSAg c2F2ZWRfZXJybm8gPSBlcnJubzsKLQkgIHJ2ID0gU2FmZUNoZGlyRmFpbFN0YXQ7Ci0JICBy dl9zZXQgPSB0cnVlOwotCi0JICBpZiAoIChFTk9FTlQgPT0gc2F2ZWRfZXJybm8pIHx8ICgw ID09IHN0YXRlLmN1cmRlcHRoKSkKLQkgICAgc2F2ZWRfZXJybm8gPSAwOwkvKiBkb24ndCBp c3N1ZSBlcnIgbXNnICovCi0JICBnb3RvIGZhaWw7Ci0JfQotICAgIH0KLSAgZWxzZQotICAg IHsKLSAgICAgIC8qIFdlIGRvIG5vdCBoYXZlIHJlYWQgcGVybWlzc2lvbnMgb24gIi4iICov Ci0gICAgICBydiA9IFNhZmVDaGRpckZhaWxXb3VsZEJlVW5hYmxlVG9SZXR1cm47Ci0gICAg ICBydl9zZXQgPSB0cnVlOwotICAgICAgZ290byBmYWlsOwotICAgIH0KLQotICAvKiBUaGlz IGlzIHRoZSBzdWNjZXNzIHBhdGgsIHNvIHdlIGNsZWFyIGVycm5vLiAgVGhlIGNhbGxlciBw cm9iYWJseQotICAgKiB3b24ndCBiZSBjYWxsaW5nIGVycm9yKCkgYW55d2F5LgotICAgKi8K LSAgc2F2ZWRfZXJybm8gPSAwOwotCi0gIC8qIFdlIHVzZSB0aGUgc2FtZSBleGl0IHBhdGgg Zm9yIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4KLSAgICogd2hpY2ggaGFzIG9jY3VycmVkIGlzIHJl Y29yZGVkIGluIFJWLgotICAgKi8KLSBmYWlsOgotICAvKiBXZSBkbyBub3QgY2FsbCBlcnJv cigpIGFzIHRoaXMgd291bGQgcmVzdWx0IGluIGEgZHVwbGljYXRlIGVycm9yCi0gICAqIG1l c3NhZ2Ugd2hlbiB0aGUgY2FsbGVyIGRvZXMgdGhlIHNhbWUgdGhpbmcuCi0gICAqLwotICBp ZiAoc2F2ZWRfZXJybm8pCi0gICAgZXJybm8gPSBzYXZlZF9lcnJubzsKLQotICBpZiAoZG90 ZmQgPj0gMCkKLSAgICB7Ci0gICAgICBjbG9zZSAoZG90ZmQpOwotICAgICAgZG90ZmQgPSAt MTsKLSAgICB9Ci0KLSAgKmRpZF9zdGF0ID0gc3RhdGZsYWc7Ci0gIGFzc2VydCAocnZfc2V0 KTsKLSAgcmV0dXJuIHJ2OwotfQotCi0vKiBTYWZlbHkgY2hhbmdlIHdvcmtpbmcgZGlyZWN0 b3J5IHRvIHRoZSBzcGVjaWZpZWQgc3ViZGlyZWN0b3J5LiAgSWYKLSAqIHdlIGFyZSBub3Qg YWxsb3dlZCB0byBmb2xsb3cgc3ltYm9saWMgbGlua3MsIHdlIHVzZSBvcGVuKCkgd2l0aAot ICogT19OT0ZPTExPVywgZm9sbG93ZWQgYnkgZmNoZGlyKCkuICBUaGlzIGVuc3VyZXMgdGhh dCB3ZSBkb24ndAotICogZm9sbG93IHN5bWJvbGljIGxpbmtzIChvZiBjb3Vyc2UsIHdlIGRv IGZvbGxvdyB0aGVtIGlmIHRoZSAtTAotICogb3B0aW9uIGlzIGluIGVmZmVjdCkuCi0gKi8K LXN0YXRpYyBlbnVtIFNhZmVDaGRpclN0YXR1cwotc2FmZWx5X2NoZGlyX25vZm9sbG93IChj b25zdCBjaGFyICpkZXN0LAotCQkgICAgICAgZW51bSBUcmF2ZXJzYWxEaXJlY3Rpb24gZGly ZWN0aW9uLAotCQkgICAgICAgc3RydWN0IHN0YXQgKnN0YXRidWZfZGVzdCwKLQkJICAgICAg IGVudW0gQ2hkaXJTeW1saW5rSGFuZGxpbmcgc3ltbGlua19mb2xsb3dfb3B0aW9uLAotCQkg ICAgICAgYm9vbCAqZGlkX3N0YXQpCi17Ci0gIGludCBleHRyYWZsYWdzLCBmZDsKLQotICAo dm9pZCkgZGlyZWN0aW9uOwotICAodm9pZCkgc3RhdGJ1Zl9kZXN0OwotCi0gIGV4dHJhZmxh Z3MgPSAwOwotICAqZGlkX3N0YXQgPSBmYWxzZTsKLQotICBzd2l0Y2ggKHN5bWxpbmtfZm9s bG93X29wdGlvbikKLSAgICB7Ci0gICAgY2FzZSBTeW1saW5rRm9sbG93T2s6Ci0gICAgICBl eHRyYWZsYWdzID0gMDsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTeW1saW5rSGFuZGxl RGVmYXVsdDoKLSAgICAgIGlmIChmb2xsb3dpbmdfbGlua3MgKCkpCi0JZXh0cmFmbGFncyA9 IDA7Ci0gICAgICBlbHNlCi0JZXh0cmFmbGFncyA9IE9fTk9GT0xMT1c7IC8qIC4uLiB3aGlj aCBtYXkgc3RpbGwgYmUgMC4gKi8KLSAgICAgIGJyZWFrOwotICAgIH0KLQotICBlcnJubyA9 IDA7Ci0gIGZkID0gb3BlbiAoZGVzdCwgT19SRE9OTFkKLSNpZiBkZWZpbmVkIE9fTEFSR0VG SUxFCi0JICAgIHxPX0xBUkdFRklMRQotI2VuZGlmCi0jaWYgZGVmaW5lZCBPX0NMT0VYRUMK LQkgICAgfE9fQ0xPRVhFQwotI2VuZGlmCi0JICAgIHxleHRyYWZsYWdzKTsKLSAgaWYgKGZk IDwgMCkKLSAgICB7Ci0gICAgICBzd2l0Y2ggKGVycm5vKQotCXsKLQljYXNlIEVMT09QOgot CSAgcmV0dXJuIFNhZmVDaGRpckZhaWxTeW1saW5rOyAvKiBUaGlzIGlzIHdoeSB3ZSB1c2Ug T19OT0ZPTExPVyAqLwotCWNhc2UgRU5PRU5UOgotCSAgcmV0dXJuIFNhZmVDaGRpckZhaWxO b25leGlzdGVudDsKLQlkZWZhdWx0OgotCSAgcmV0dXJuIFNhZmVDaGRpckZhaWxEZXN0VW5y ZWFkYWJsZTsKLQl9Ci0gICAgfQotCi0gIGVycm5vID0gMDsKLSAgaWYgKDAgPT0gZmNoZGly IChmZCkpCi0gICAgewotICAgICAgY2xvc2UgKGZkKTsKLSAgICAgIHJldHVybiBTYWZlQ2hk aXJPSzsKLSAgICB9Ci0gIGVsc2UKLSAgICB7Ci0gICAgICBpbnQgc2F2ZWRfZXJybm8gPSBl cnJubzsKLSAgICAgIGNsb3NlIChmZCk7Ci0gICAgICBlcnJubyA9IHNhdmVkX2Vycm5vOwot Ci0gICAgICBzd2l0Y2ggKGVycm5vKQotCXsKLQljYXNlIEVOT1RESVI6Ci0JICByZXR1cm4g U2FmZUNoZGlyRmFpbE5vdERpcjsKLQotCWNhc2UgRUFDQ0VTOgotCWNhc2UgRUJBREY6CQkv KiBTaG91bGRuJ3QgaGFwcGVuICovCi0JY2FzZSBFSU5UUjoKLQljYXNlIEVJTzoKLQlkZWZh dWx0OgotCSAgcmV0dXJuIFNhZmVDaGRpckZhaWxDaGRpckZhaWxlZDsKLQl9Ci0gICAgfQot fQotCi1zdGF0aWMgZW51bSBTYWZlQ2hkaXJTdGF0dXMKLXNhZmVseV9jaGRpciAoY29uc3Qg Y2hhciAqZGVzdCwKLQkgICAgICBlbnVtIFRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24s Ci0JICAgICAgc3RydWN0IHN0YXQgKnN0YXRidWZfZGVzdCwKLQkgICAgICBlbnVtIENoZGly U3ltbGlua0hhbmRsaW5nIHN5bWxpbmtfZm9sbG93X29wdGlvbiwKLQkgICAgICBib29sICpk aWRfc3RhdCkKLXsKLSAgZW51bSBTYWZlQ2hkaXJTdGF0dXMgcmVzdWx0OwotCi0gIC8qIFdl J3JlIGFib3V0IHRvIGxlYXZlIGEgZGlyZWN0b3J5LiAgSWYgdGhlcmUgYXJlIGFueSAtZXhl Y2RpcgotICAgKiBhcmd1bWVudCBsaXN0cyB3aGljaCBoYXZlIGJlZW4gYnVpbHQgYnV0IGhh dmUgbm90IHlldCBiZWVuCi0gICAqIHByb2Nlc3NlZCwgZG8gdGhlbSBub3cgYmVjYXVzZSB0 aGV5IG11c3QgYmUgZG9uZSBpbiB0aGUgc2FtZQotICAgKiBkaXJlY3RvcnkuCi0gICAqLwot ICBjb21wbGV0ZV9wZW5kaW5nX2V4ZWNkaXJzICgpOwotCi0gIC8qIGdudWxpYiBkZWZpbmVz IE9fTk9GT0xMT1cgdG8gMCBpZiB0aGUgT1MgZG9lc24ndCBoYXZlIGl0LiAqLwotICBvcHRp b25zLm9wZW5fbm9mb2xsb3dfYXZhaWxhYmxlID0gISFPX05PRk9MTE9XOwotICBpZiAob3B0 aW9ucy5vcGVuX25vZm9sbG93X2F2YWlsYWJsZSkKLSAgICB7Ci0gICAgICByZXN1bHQgPSBz YWZlbHlfY2hkaXJfbm9mb2xsb3cgKGRlc3QsIGRpcmVjdGlvbiwgc3RhdGJ1Zl9kZXN0LAot CQkJCSAgICAgc3ltbGlua19mb2xsb3dfb3B0aW9uLCBkaWRfc3RhdCk7Ci0gICAgICBpZiAo U2FmZUNoZGlyRmFpbERlc3RVbnJlYWRhYmxlICE9IHJlc3VsdCkKLQl7Ci0JICByZXR1cm4g cmVzdWx0OwotCX0KLSAgICAgIGVsc2UKLQl7Ci0JICAvKiBTYXZhbm5haCBidWcgIzE1Mzg0 OiBmYWxsIHRocm91Z2ggdG8gdXNlIHNhZmVseV9jaGRpcl9sc3RhdAotCSAgICogaWYgdGhl IGRpcmVjdG9yeSBpcyBub3QgcmVhZGFibGUuCi0JICAgKi8KLQkgIC8qIERvIG5vdGhpbmcu ICovCi0JfQotICAgIH0KLSAgLyogRXZlbiBpZiBPX05PRk9MTE9XIGlzIGF2YWlsYWJsZSwg d2UgbWF5IG5lZWQgdG8gdXNlIHRoZSBhbHRlcm5hdGl2ZQotICAgKiBtZXRob2QsIHNpbmNl IHBhcmVudCBvZiB0aGUgc3RhcnQgcG9pbnQgbWF5IGJlIGV4ZWN1dGFibGUgYnV0IG5vdAot ICAgKiByZWFkYWJsZS4KLSAgICovCi0gIHJldHVybiBzYWZlbHlfY2hkaXJfbHN0YXQgKGRl c3QsIGRpcmVjdGlvbiwgc3RhdGJ1Zl9kZXN0LAotCQkJICAgICBzeW1saW5rX2ZvbGxvd19v cHRpb24sIGRpZF9zdGF0KTsKLX0KLQotCi0KLS8qIFNhZmVseSBnbyBiYWNrIHRvIHRoZSBz dGFydGluZyBkaXJlY3RvcnkuICovCi1zdGF0aWMgdm9pZAotY2hkaXJfYmFjayAodm9pZCkK LXsKLSAgaWYgKG9wdGlvbnMuZGVidWdfb3B0aW9ucyAmIERlYnVnU2VhcmNoKQotICAgIGZw cmludGYgKHN0ZGVyciwgImNoZGlyX2JhY2soKTogY2hkaXIgdG8gc3RhcnQgcG9pbnRcbiIp OwotCi0gIHJlc3RvcmVfY3dkIChpbml0aWFsX3dkKTsKLX0KLQotLyogTW92ZSB0byB0aGUg cGFyZW50IG9mIGEgZ2l2ZW4gZGlyZWN0b3J5IGFuZCB0aGVuIGNhbGwgYSBmdW5jdGlvbiwK LSAqIHJlc3RvcmluZyB0aGUgY3dkLiAgRG9uJ3QgYm90aGVyIGNoYW5naW5nIGRpcmVjdG9y eSBpZiB0aGUKLSAqIHNwZWNpZmllZCBkaXJlY3RvcnkgaXMgYSBjaGlsZCBvZiAiLiIgb3Ig aXMgdGhlIHJvb3QgZGlyZWN0b3J5LgotICovCi1zdGF0aWMgdm9pZAotYXRfdG9wIChjb25z dCBjaGFyICpwYXRobmFtZSwKLQltb2RlX3QgbW9kZSwKLQlpbm9fdCBpbnVtLAotCXN0cnVj dCBzdGF0ICpwc3RhdCwKLQl2b2lkICgqYWN0aW9uKShjb25zdCBjaGFyICpwYXRobmFtZSwK LQkJICAgICAgIGNvbnN0IGNoYXIgKmJhc2VuYW1lLAotCQkgICAgICAgaW50IG1vZGUsCi0J CSAgICAgICBpbm9fdCBpbnVtLAotCQkgICAgICAgc3RydWN0IHN0YXQgKnBzdGF0KSkKLXsK LSAgaW50IGRpcmNoYW5nZTsKLSAgY2hhciAqcGFyZW50X2RpciA9IGRpcl9uYW1lIChwYXRo bmFtZSk7Ci0gIGNvbnN0IGNoYXIgKmJhc2UgPSBsYXN0X2NvbXBvbmVudCAocGF0aG5hbWUp OwotCi0gIHN0YXRlLmN1cmRlcHRoID0gMDsKLSAgc3RhdGUuc3RhcnRpbmdfcGF0aF9sZW5n dGggPSBzdHJsZW4gKHBhdGhuYW1lKTsKLQotICBpZiAoMCA9PSAqYmFzZQotICAgICAgfHwg MCA9PSBzdHJjbXAgKHBhcmVudF9kaXIsICIuIikpCi0gICAgewotICAgICAgZGlyY2hhbmdl ID0gMDsKLSAgICAgIGJhc2UgPSBwYXRobmFtZTsKLSAgICB9Ci0gIGVsc2UKLSAgICB7Ci0g ICAgICBlbnVtIFRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb247Ci0gICAgICBlbnVtIFNh ZmVDaGRpclN0YXR1cyBjaGRpcl9zdGF0dXM7Ci0gICAgICBzdHJ1Y3Qgc3RhdCBzdDsKLSAg ICAgIGJvb2wgZGlkX3N0YXQgPSBmYWxzZTsKLQotICAgICAgZGlyY2hhbmdlID0gMTsKLSAg ICAgIGlmICgwID09IHN0cmNtcCAoYmFzZSwgIi4uIikpCi0JZGlyZWN0aW9uID0gVHJhdmVy c2luZ1VwOwotICAgICAgZWxzZQotCWRpcmVjdGlvbiA9IFRyYXZlcnNpbmdEb3duOwotCi0g ICAgICAvKiBXZSBwYXNzIFN5bWxpbmtGb2xsb3dPayB0byBzYWZlbHlfY2hkaXIoKSwgd2hp Y2ggYWxsb3dzIGl0IHRvCi0gICAgICAgKiBjaGRpcigpIGludG8gYSBzeW1ib2xpYyBsaW5r LiAgVGhpcyBpcyBvbmx5IHVzZWZ1bCBmb3IgdGhlCi0gICAgICAgKiBjYXNlIHdoZXJlIHRo ZSBkaXJlY3Rvcnkgd2UncmUgY2hkaXIoKWluZyBpbnRvIGlzIHRoZQotICAgICAgICogYmFz ZW5hbWUgb2YgYSBjb21tYW5kIGxpbmUgYXJndW1lbnQsIGZvciBleGFtcGxlIHdoZXJlCi0g ICAgICAgKiAiZm9vL2Jhci9iYXoiIGlzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5l LiAgV2hlbiAtUCBpcwotICAgICAgICogaW4gZWZmZWN0ICh0aGUgZGVmYXVsdCksIGJheiB3 aWxsIG5vdCBiZSBmb2xsb3dlZCBpZiBpdCBpcyBhCi0gICAgICAgKiBzeW1saW5rLCBidXQg aWYgYmFyIGlzIGEgc3ltbGluaywgaXQgX3Nob3VsZF8gYmUgZm9sbG93ZWQuCi0gICAgICAg KiBIZW5jZSB3ZSBuZWVkIHRoZSBhYmlsaXR5IHRvIG92ZXJyaWRlIHRoZSBwb2xpY3kgc2V0 IGJ5Ci0gICAgICAgKiBmb2xsb3dpbmdfbGlua3MoKS4KLSAgICAgICAqLwotICAgICAgY2hk aXJfc3RhdHVzID0gc2FmZWx5X2NoZGlyIChwYXJlbnRfZGlyLCBkaXJlY3Rpb24sICZzdCwg U3ltbGlua0ZvbGxvd09rLCAmZGlkX3N0YXQpOwotICAgICAgaWYgKFNhZmVDaGRpck9LICE9 IGNoZGlyX3N0YXR1cykKLQl7Ci0JICBjb25zdCBjaGFyICp3aGF0ID0gKFNhZmVDaGRpckZh aWxXb3VsZEJlVW5hYmxlVG9SZXR1cm4gPT0gY2hkaXJfc3RhdHVzKSA/ICIuIiA6IHBhcmVu dF9kaXI7Ci0JICBpZiAoZXJybm8pCi0JICAgIGVycm9yICgwLCBlcnJubywgIiVzIiwKLQkJ ICAgc2FmZWx5X3F1b3RlX2Vycl9maWxlbmFtZSAoMCwgd2hhdCkpOwotCSAgZWxzZQotCSAg ICBlcnJvciAoMCwgMCwgXygiRmFpbGVkIHRvIHNhZmVseSBjaGFuZ2UgZGlyZWN0b3J5IGlu dG8gJXMiKSwKLQkJICAgc2FmZWx5X3F1b3RlX2Vycl9maWxlbmFtZSAoMCwgcGFyZW50X2Rp cikpOwotCi0JICAvKiBXZSBjYW4ndCBwcm9jZXNzIHRoaXMgY29tbWFuZC1saW5lIGFyZ3Vt ZW50LiAqLwotCSAgc3RhdGUuZXhpdF9zdGF0dXMgPSAxOwotCSAgcmV0dXJuOwotCX0KLSAg ICB9Ci0KLSAgZnJlZSAocGFyZW50X2Rpcik7Ci0gIHBhcmVudF9kaXIgPSBOVUxMOwotCi0g IGFjdGlvbiAocGF0aG5hbWUsIGJhc2UsIG1vZGUsIGludW0sIHBzdGF0KTsKLQotICBpZiAo ZGlyY2hhbmdlKQotICAgIHsKLSAgICAgIGNoZGlyX2JhY2sgKCk7Ci0gICAgfQotfQotCi0K LXN0YXRpYyB2b2lkIGRvX3Byb2Nlc3NfdG9wX2RpciAoY29uc3QgY2hhciAqcGF0aG5hbWUs Ci0JCQkJY29uc3QgY2hhciAqYmFzZSwKLQkJCQlpbnQgbW9kZSwKLQkJCQlpbm9fdCBpbnVt LAotCQkJCXN0cnVjdCBzdGF0ICpwc3RhdCkKLXsKLSAgKHZvaWQpIHBzdGF0OwotCi0gIHBy b2Nlc3NfcGF0aCAocGF0aG5hbWUsIGJhc2UsIGZhbHNlLCAiLiIsIG1vZGUsIGludW0pOwot ICBjb21wbGV0ZV9wZW5kaW5nX2V4ZWNkaXJzICgpOwotfQotCi1zdGF0aWMgdm9pZAotZG9f cHJvY2Vzc19wcmVkaWNhdGUgKGNvbnN0IGNoYXIgKnBhdGhuYW1lLAotCQkgICAgICBjb25z dCBjaGFyICpiYXNlLAotCQkgICAgICBpbnQgbW9kZSwKLQkJICAgICAgaW5vX3QgaW51bSwK LQkJICAgICAgc3RydWN0IHN0YXQgKnBzdGF0KQotewotICAodm9pZCkgbW9kZTsKLSAgKHZv aWQpIGludW07Ci0gIHN0YXRlLnJlbF9wYXRobmFtZSA9IGJhc2U7CS8qIGN3ZF9kaXJfZmQg d2FzIGFscmVhZHkgc2V0IGJ5IHNhZmVseV9jaGRpciAqLwotICBhcHBseV9wcmVkaWNhdGUg KHBhdGhuYW1lLCBwc3RhdCwgZ2V0X2V2YWxfdHJlZSAoKSk7Ci19Ci0KLQotCi0KLS8qIERl c2NlbmQgUEFUSE5BTUUsIHdoaWNoIGlzIGEgY29tbWFuZC1saW5lIGFyZ3VtZW50LgotCi0g ICBBY3Rpb25zIGxpa2UgLWV4ZWNkaXIgYXNzdW1lIHRoYXQgd2UgYXJlIGluIHRoZQotICAg cGFyZW50IGRpcmVjdG9yeSBvZiB0aGUgZmlsZSB3ZSdyZSBleGFtaW5pbmcsCi0gICBhbmQg b24gZW50cnkgdG8gdGhpcyBmdW5jdGlvbiBvdXIgd29ya2luZyBkaXJlY3RvcnkKLSAgIGlz IHdoYXRldmVyIGl0IHdhcyB3aGVuIGZpbmQgd2FzIGludm9rZWQuICBUaGVyZWZvcmUKLSAg IElmIFBBVEhOQU1FIGlzICIuIiB3ZSBqdXN0IGxlYXZlIHRoaW5ncyBhcyB0aGV5IGFyZS4K LSAgIE90aGVyd2lzZSwgd2UgZmlndXJlIG91dCB3aGF0IHRoZSBwYXJlbnQgZGlyZWN0b3J5 IGlzLAotICAgYW5kIG1vdmUgdG8gdGhhdC4KLSovCi1zdGF0aWMgdm9pZAotcHJvY2Vzc190 b3BfcGF0aCAoY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlLCBpbm9fdCBpbnVt KQotewotICBhdF90b3AgKHBhdGhuYW1lLCBtb2RlLCBpbnVtLCBOVUxMLCBkb19wcm9jZXNz X3RvcF9kaXIpOwotfQotCi0KLS8qIEluZm8gb24gZWFjaCBkaXJlY3RvcnkgaW4gdGhlIGN1 cnJlbnQgdHJlZSBicmFuY2gsIHRvIGF2b2lkCi0gICBnZXR0aW5nIHN0dWNrIGluIHN5bWJv bGljIGxpbmsgbG9vcHMuICAqLwotc3RhdGljIHN0cnVjdCBkaXJfaWQgKmRpcl9pZHMgPSBO VUxMOwotLyogRW50cmllcyBhbGxvY2F0ZWQgaW4gYGRpcl9pZHMnLiAgKi8KLXN0YXRpYyBp bnQgZGlyX2FsbG9jID0gMDsKLS8qIEluZGV4IGluIGBkaXJfaWRzJyBvZiBkaXJlY3Rvcnkg Y3VycmVudGx5IGJlaW5nIHNlYXJjaGVkLgotICAgVGhpcyBpcyBhbHdheXMgdGhlIGxhc3Qg dmFsaWQgZW50cnkuICAqLwotc3RhdGljIGludCBkaXJfY3VyciA9IC0xOwotLyogKEFyYml0 cmFyeSkgbnVtYmVyIG9mIGVudHJpZXMgdG8gZ3JvdyBgZGlyX2lkcycgYnkuICAqLwotI2Rl ZmluZSBESVJfQUxMT0NfU1RFUCAzMgotCi0KLQotLyogV2UndmUgZGV0ZWN0ZWQgYSBmaWxl IHN5c3RlbSBsb29wLiAgIFRoaXMgaXMgY2F1c2VkIGJ5IG9uZSBvZgotICogdHdvIHRoaW5n czoKLSAqCi0gKiAxLiBPcHRpb24gLUwgaXMgaW4gZWZmZWN0IGFuZCB3ZSd2ZSBoaXQgYSBz eW1ib2xpYyBsaW5rIHRoYXQKLSAqICAgIHBvaW50cyB0byBhbiBhbmNlc3Rvci4gIFRoaXMg aXMgaGFybWxlc3MuICBXZSB3b24ndCB0cmF2ZXJzZSB0aGUKLSAqICAgIHN5bWJvbGljIGxp bmsuCi0gKgotICogMi4gV2UgaGF2ZSBoaXQgYSByZWFsIGN5Y2xlIGluIHRoZSBkaXJlY3Rv cnkgaGllcmFyY2h5LiAgSW4gdGhpcwotICogICAgY2FzZSwgd2UgaXNzdWUgYSBkaWFnbm9z dGljIG1lc3NhZ2UgKFBPU0lYIHJlcXVpcmVzIHRoaXMpIGFuZCB3ZQotICogICAgc2tpcCB0 aGF0IGRpcmVjdG9yeSBlbnRyeS4KLSAqLwotc3RhdGljIHZvaWQKLWlzc3VlX2xvb3Bfd2Fy bmluZyAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBsZXZl bCkKLXsKLSAgc3RydWN0IHN0YXQgc3RidWZfbGluazsKLSAgaWYgKGxzdGF0IChuYW1lLCAm c3RidWZfbGluaykgIT0gMCkKLSAgICBzdGJ1Zl9saW5rLnN0X21vZGUgPSBTX0lGUkVHOwot Ci0gIGlmIChTX0lTTE5LKHN0YnVmX2xpbmsuc3RfbW9kZSkpCi0gICAgewotICAgICAgZXJy b3IgKDAsIDAsCi0JICAgICBfKCJTeW1ib2xpYyBsaW5rICVzIGlzIHBhcnQgb2YgYSBsb29w IGluIHRoZSBkaXJlY3RvcnkgaGllcmFyY2h5OyB3ZSBoYXZlIGFscmVhZHkgdmlzaXRlZCB0 aGUgZGlyZWN0b3J5IHRvIHdoaWNoIGl0IHBvaW50cy4iKSwKLQkgICAgIHNhZmVseV9xdW90 ZV9lcnJfZmlsZW5hbWUgKDAsIHBhdGhuYW1lKSk7Ci0gICAgICAvKiBYWFg6IFBPU0lYIGFw cGVhcnMgdG8gcmVxdWlyZSB0aGF0IHRoZSBleGl0IHN0YXR1cyBiZSBub24temVybyBpZiBh Ci0gICAgICAgKiBkaWFnbm9zdGljIGlzIGlzc3VlZC4KLSAgICAgICAqLwotICAgIH0KLSAg ZWxzZQotICAgIHsKLSAgICAgIGludCBkaXN0YW5jZSA9IDEgKyAoZGlyX2N1cnItbGV2ZWwp OwotICAgICAgLyogV2UgaGF2ZSBmb3VuZCBhbiBpbmZpbml0ZSBsb29wLiAgUE9TSVggcmVx dWlyZXMgdXMgdG8KLSAgICAgICAqIGlzc3VlIGEgZGlhZ25vc3RpYy4gIFVzdWFsbHkgd2Ug d29uJ3QgZ2V0IHRvIGhlcmUKLSAgICAgICAqIGJlY2F1c2Ugd2hlbiB0aGUgbGVhZiBvcHRp bWlzYXRpb24gaXMgb24sIGl0IHdpbGwgY2F1c2UKLSAgICAgICAqIHRoZSBzdWJkaXJlY3Rv cnkgdG8gYmUgc2tpcHBlZC4gIElmIC9hL2IvYy9kIGlzIGEgaGFyZAotICAgICAgICogbGlu ayB0byAvYS9iLCB0aGVuIHRoZSBsaW5rIGNvdW50IG9mIC9hL2IvYyBpcyAyLAotICAgICAg ICogYmVjYXVzZSB0aGUgIi4uIiBlbnRyeSBvZiAvYi9iL2MvZCBwb2ludHMgdG8gL2EsIG5v dAotICAgICAgICogdG8gL2EvYi9jLgotICAgICAgICovCi0gICAgICBlcnJvciAoMCwgMCwK LQkgICAgIG5nZXR0ZXh0ICgKLQkJICAgICAgICJGaWxlc3lzdGVtIGxvb3AgZGV0ZWN0ZWQ7 ICVzIGhhcyB0aGUgc2FtZSBkZXZpY2UgbnVtYmVyIGFuZCBpbm9kZSBhcyAiCi0JCSAgICAg ICAiYSBkaXJlY3Rvcnkgd2hpY2ggaXMgJWQgbGV2ZWwgaGlnaGVyIGluIHRoZSBmaWxlIHN5 c3RlbSBoaWVyYXJjaHkiLAotCQkgICAgICAgIkZpbGVzeXN0ZW0gbG9vcCBkZXRlY3RlZDsg JXMgaGFzIHRoZSBzYW1lIGRldmljZSBudW1iZXIgYW5kIGlub2RlIGFzICIKLQkJICAgICAg ICJhIGRpcmVjdG9yeSB3aGljaCBpcyAlZCBsZXZlbHMgaGlnaGVyIGluIHRoZSBmaWxlIHN5 c3RlbSBoaWVyYXJjaHkiLAotCQkgICAgICAgKGxvbmcpZGlzdGFuY2UpLAotCSAgICAgc2Fm ZWx5X3F1b3RlX2Vycl9maWxlbmFtZSAoMCwgcGF0aG5hbWUpLAotCSAgICAgZGlzdGFuY2Up OwotICAgIH0KLX0KLQotCi0KLS8qIFJlY3Vyc2l2ZWx5IGRlc2NlbmQgcGF0aCBQQVRITkFN RSwgYXBwbHlpbmcgdGhlIHByZWRpY2F0ZXMuCi0gICBMRUFGIGlzIHRydWUgaWYgUEFUSE5B TUUgaXMga25vd24gdG8gYmUgaW4gYSBkaXJlY3RvcnkgdGhhdCBoYXMgbm8KLSAgIG1vcmUg dW5leGFtaW5lZCBzdWJkaXJlY3RvcmllcywgYW5kIHRoZXJlZm9yZSBpdCBpcyBub3QgYSBk aXJlY3RvcnkuCi0gICBLbm93aW5nIHRoaXMgYWxsb3dzIHVzIHRvIGF2b2lkIGNhbGxpbmcg c3RhdCBhcyBsb25nIGFzIHBvc3NpYmxlIGZvcgotICAgbGVhZiBmaWxlcy4KLQotICAgTkFN RSBpcyBQQVRITkFNRSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBXZSBh Y2Nlc3MgTkFNRQotICAgYnV0IHByaW50IFBBVEhOQU1FLgotCi0gICBQQVJFTlQgaXMgdGhl IHBhdGggb2YgdGhlIHBhcmVudCBvZiBOQU1FLCByZWxhdGl2ZSB0byBmaW5kJ3MKLSAgIHN0 YXJ0aW5nIGRpcmVjdG9yeS4KLQotICAgUmV0dXJuIG5vbnplcm8gaWZmIFBBVEhOQU1FIGlz IGEgZGlyZWN0b3J5LiAqLwotCi1zdGF0aWMgaW50Ci1wcm9jZXNzX3BhdGggKGNvbnN0IGNo YXIgKnBhdGhuYW1lLCBjb25zdCBjaGFyICpuYW1lLCBib29sIGxlYWYsIGNvbnN0IGNoYXIg KnBhcmVudCwKLQkgICAgICBtb2RlX3QgbW9kZSwgaW5vX3QgaW51bSkKLXsKLSAgc3RydWN0 IHN0YXQgc3RhdF9idWY7Ci0gIHN0YXRpYyBkZXZfdCByb290X2RldjsJLyogRGV2aWNlIElE IG9mIGN1cnJlbnQgYXJndW1lbnQgcGF0aG5hbWUuICovCi0gIGludCBpOwotICBzdHJ1Y3Qg cHJlZGljYXRlICpldmFsX3RyZWU7Ci0KLSAgZXZhbF90cmVlID0gZ2V0X2V2YWxfdHJlZSAo KTsKLSAgLyogQXNzdW1lIGl0IGlzIGEgbm9uLWRpcmVjdG9yeSBpbml0aWFsbHkuICovCi0g IHN0YXRfYnVmLnN0X21vZGUgPSAwOwotCi0gIC8qIFRoZSBjYWxsZXIgdXN1YWxseSBrbm93 cyB0aGUgaW5vZGUgbnVtYmVyLCBlaXRoZXIgZnJvbSByZWFkZGlyIG9yCi0gICAqIGEgKnN0 YXQgY2FsbC4gIFdlIHVzZSB0aGF0IHZhbHVlICh0aGUgY2FsbGVyIHBhc3NlcyAwIHRvIGlu ZGljYXRlCi0gICAqIGlnbm9yYW5jZSBvZiB0aGUgaW5vZGUgbnVtYmVyKS4KLSAgICovCi0g IHN0YXRfYnVmLnN0X2lubyA9IGludW07Ci0KLSAgc3RhdGUucmVsX3BhdGhuYW1lID0gbmFt ZTsKLSAgc3RhdGUudHlwZSA9IDA7Ci0gIHN0YXRlLmhhdmVfc3RhdCA9IGZhbHNlOwotICBz dGF0ZS5oYXZlX3R5cGUgPSBmYWxzZTsKLSAgc3RhdGUuYWxyZWFkeV9pc3N1ZWRfc3RhdF9l cnJvcl9tc2cgPSBmYWxzZTsKLQotICBpZiAoIWRpZ2VzdF9tb2RlICgmbW9kZSwgcGF0aG5h bWUsIG5hbWUsICZzdGF0X2J1ZiwgbGVhZikpCi0gICAgcmV0dXJuIDA7Ci0KLSAgaWYgKCFT X0lTRElSIChzdGF0ZS50eXBlKSkKLSAgICB7Ci0gICAgICBpZiAoc3RhdGUuY3VyZGVwdGgg Pj0gb3B0aW9ucy5taW5kZXB0aCkKLQlhcHBseV9wcmVkaWNhdGUgKHBhdGhuYW1lLCAmc3Rh dF9idWYsIGV2YWxfdHJlZSk7Ci0gICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgLyogRnJv bSBoZXJlIG9uLCB3ZSdyZSB3b3JraW5nIG9uIGEgZGlyZWN0b3J5LiAgKi8KLQotCi0gIC8q IE5vdyB3ZSByZWFsbHkgbmVlZCB0byBzdGF0IHRoZSBkaXJlY3RvcnksIGV2ZW4gaWYgd2Ug a25vdyB0aGUKLSAgICogdHlwZSwgYmVjYXVzZSB3ZSBuZWVkIGluZm9ybWF0aW9uIGxpa2Ug c3RydWN0IHN0YXQuc3RfcmRldi4KLSAgICovCi0gIGlmIChnZXRfc3RhdGluZm8gKHBhdGhu YW1lLCBuYW1lLCAmc3RhdF9idWYpICE9IDApCi0gICAgcmV0dXJuIDA7Ci0KLSAgc3RhdGUu aGF2ZV9zdGF0ID0gdHJ1ZTsKLSAgbW9kZSA9IHN0YXRlLnR5cGUgPSBzdGF0X2J1Zi5zdF9t b2RlOwkvKiB1c2UgZnVsbCBpbmZvIG5vdyB0aGF0IHdlIGhhdmUgaXQuICovCi0gIHN0YXRl LnN0b3BfYXRfY3VycmVudF9sZXZlbCA9Ci0gICAgb3B0aW9ucy5tYXhkZXB0aCA+PSAwCi0g ICAgJiYgc3RhdGUuY3VyZGVwdGggPj0gb3B0aW9ucy5tYXhkZXB0aDsKLQotICAvKiBJZiB3 ZSd2ZSBhbHJlYWR5IHNlZW4gdGhpcyBkaXJlY3Rvcnkgb24gdGhpcyBicmFuY2gsCi0gICAg IGRvbid0IGRlc2NlbmQgaXQgYWdhaW4uICAqLwotICBmb3IgKGkgPSAwOyBpIDw9IGRpcl9j dXJyOyBpKyspCi0gICAgaWYgKHN0YXRfYnVmLnN0X2lubyA9PSBkaXJfaWRzW2ldLmlubyAm JgotCXN0YXRfYnVmLnN0X2RldiA9PSBkaXJfaWRzW2ldLmRldikKLSAgICAgIHsKLQlzdGF0 ZS5zdG9wX2F0X2N1cnJlbnRfbGV2ZWwgPSB0cnVlOwotCWlzc3VlX2xvb3Bfd2FybmluZyAo bmFtZSwgcGF0aG5hbWUsIGkpOwotICAgICAgfQotCi0gIGlmIChkaXJfYWxsb2MgPD0gKytk aXJfY3VycikKLSAgICB7Ci0gICAgICBkaXJfYWxsb2MgKz0gRElSX0FMTE9DX1NURVA7Ci0g ICAgICBkaXJfaWRzID0gKHN0cnVjdCBkaXJfaWQgKikKLQl4cmVhbGxvYyAoKGNoYXIgKikg ZGlyX2lkcywgZGlyX2FsbG9jICogc2l6ZW9mIChzdHJ1Y3QgZGlyX2lkKSk7Ci0gICAgfQot ICBkaXJfaWRzW2Rpcl9jdXJyXS5pbm8gPSBzdGF0X2J1Zi5zdF9pbm87Ci0gIGRpcl9pZHNb ZGlyX2N1cnJdLmRldiA9IHN0YXRfYnVmLnN0X2RldjsKLQotICBpZiAob3B0aW9ucy5zdGF5 X29uX2ZpbGVzeXN0ZW0pCi0gICAgewotICAgICAgaWYgKHN0YXRlLmN1cmRlcHRoID09IDAp Ci0Jcm9vdF9kZXYgPSBzdGF0X2J1Zi5zdF9kZXY7Ci0gICAgICBlbHNlIGlmIChzdGF0X2J1 Zi5zdF9kZXYgIT0gcm9vdF9kZXYpCi0Jc3RhdGUuc3RvcF9hdF9jdXJyZW50X2xldmVsID0g dHJ1ZTsKLSAgICB9Ci0KLSAgaWYgKG9wdGlvbnMuZG9fZGlyX2ZpcnN0ICYmIHN0YXRlLmN1 cmRlcHRoID49IG9wdGlvbnMubWluZGVwdGgpCi0gICAgYXBwbHlfcHJlZGljYXRlIChwYXRo bmFtZSwgJnN0YXRfYnVmLCBldmFsX3RyZWUpOwotCi0gIGlmIChvcHRpb25zLmRlYnVnX29w dGlvbnMgJiBEZWJ1Z1NlYXJjaCkKLSAgICBmcHJpbnRmIChzdGRlcnIsICJwYXRobmFtZSA9 ICVzLCBzdG9wX2F0X2N1cnJlbnRfbGV2ZWwgPSAlZFxuIiwKLQkgICAgIHBhdGhuYW1lLCBz dGF0ZS5zdG9wX2F0X2N1cnJlbnRfbGV2ZWwpOwotCi0gIGlmIChzdGF0ZS5zdG9wX2F0X2N1 cnJlbnRfbGV2ZWwgPT0gZmFsc2UpCi0gICAgewotICAgICAgLyogU2NhbiBkaXJlY3Rvcnkg b24gZGlzay4gKi8KLSAgICAgIHByb2Nlc3NfZGlyIChwYXRobmFtZSwgbmFtZSwgc3RybGVu IChwYXRobmFtZSksICZzdGF0X2J1ZiwgcGFyZW50KTsKLSAgICB9Ci0KLSAgaWYgKG9wdGlv bnMuZG9fZGlyX2ZpcnN0ID09IGZhbHNlICYmIHN0YXRlLmN1cmRlcHRoID49IG9wdGlvbnMu bWluZGVwdGgpCi0gICAgewotICAgICAgLyogVGhlIGZpZWxkcyBpbiAnc3RhdGUnIGFyZSBu b3cgb3V0IG9mIGRhdGUuICBDb3JyZWN0IHRoZW0uCi0gICAgICAgKi8KLSAgICAgIGlmICgh ZGlnZXN0X21vZGUgKCZtb2RlLCBwYXRobmFtZSwgbmFtZSwgJnN0YXRfYnVmLCBsZWFmKSkK LQlyZXR1cm4gMDsKLQotICAgICAgaWYgKDAgPT0gZGlyX2N1cnIpCi0JewotCSAgYXRfdG9w IChwYXRobmFtZSwgbW9kZSwgc3RhdF9idWYuc3RfaW5vLCAmc3RhdF9idWYsCi0JCSAgZG9f cHJvY2Vzc19wcmVkaWNhdGUpOwotCX0KLSAgICAgIGVsc2UKLQl7Ci0JICBkb19wcm9jZXNz X3ByZWRpY2F0ZSAocGF0aG5hbWUsIG5hbWUsIG1vZGUsIHN0YXRfYnVmLnN0X2lubywKLQkJ CQkmc3RhdF9idWYpOwotCX0KLSAgICB9Ci0KLSAgZGlyX2N1cnItLTsKLQotICByZXR1cm4g MTsKLX0KLQotCi0vKiBTY2FuIGRpcmVjdG9yeSBQQVRITkFNRSBhbmQgcmVjdXJzZSB0aHJv dWdoIHByb2Nlc3NfcGF0aCBmb3IgZWFjaCBlbnRyeS4KLQotICAgUEFUSExFTiBpcyB0aGUg bGVuZ3RoIG9mIFBBVEhOQU1FLgotCi0gICBOQU1FIGlzIFBBVEhOQU1FIHJlbGF0aXZlIHRv IHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLQotICAgU1RBVFAgaXMgdGhlIHJlc3VsdHMgb2Yg Km9wdGlvbnMueHN0YXQgb24gaXQuCi0KLSAgIFBBUkVOVCBpcyB0aGUgcGF0aCBvZiB0aGUg cGFyZW50IG9mIE5BTUUsIHJlbGF0aXZlIHRvIGZpbmQncwotICAgc3RhcnRpbmcgZGlyZWN0 b3J5LiAgKi8KLQotc3RhdGljIHZvaWQKLXByb2Nlc3NfZGlyIChjb25zdCBjaGFyICpwYXRo bmFtZSwgY29uc3QgY2hhciAqbmFtZSwgaW50IHBhdGhsZW4sIGNvbnN0IHN0cnVjdCBzdGF0 ICpzdGF0cCwgY29uc3QgY2hhciAqcGFyZW50KQotewotICBpbnQgc3ViZGlyc19sZWZ0OwkJ LyogTnVtYmVyIG9mIHVuZXhhbWluZWQgc3ViZGlycyBpbiBQQVRITkFNRS4gKi8KLSAgYm9v bCBzdWJkaXJzX3VucmVsaWFibGU7CS8qIGlmIHRydWUsIGNhbm5vdCB1c2UgZGlyIGxpbmsg Y291bnQgYXMgc3ViZGlyIGxpbWlmIChpZiBmYWxzZSwgaXQgbWF5IFNUSUxMIGJlIHVucmVs aWFibGUpICovCi0gIHN0cnVjdCBzdGF0IHN0YXRfYnVmOwotICBzaXplX3QgZGlyY291bnQg PSAwdTsKLSAgRElSICpkaXJwOwotCi0gIGlmIChzdGF0cC0+c3RfbmxpbmsgPCAyKQotICAg IHsKLSAgICAgIHN1YmRpcnNfdW5yZWxpYWJsZSA9IHRydWU7Ci0gICAgICBzdWJkaXJzX2xl ZnQgPSAwOwotICAgIH0KLSAgZWxzZQotICAgIHsKLSAgICAgIHN1YmRpcnNfdW5yZWxpYWJs ZSA9IGZhbHNlOyAvKiBub3QgbmVjZXNzYXJpbHkgcmlnaHQgKi8KLSAgICAgIHN1YmRpcnNf bGVmdCA9IHN0YXRwLT5zdF9ubGluayAtIDI7IC8qIEFjY291bnQgZm9yIG5hbWUgYW5kICIu Ii4gKi8KLSAgICB9Ci0KLSAgZXJybm8gPSAwOwotICBkaXJwID0gb3BlbmRpciAobmFtZSk7 Ci0KLSAgaWYgKGRpcnAgPT0gTlVMTCkKLSAgICB7Ci0gICAgICBhc3NlcnQgKGVycm5vICE9 IDApOwotICAgICAgZXJyb3IgKDAsIGVycm5vLCAiJXMiLCBzYWZlbHlfcXVvdGVfZXJyX2Zp bGVuYW1lICgwLCBwYXRobmFtZSkpOwotICAgICAgc3RhdGUuZXhpdF9zdGF0dXMgPSAxOwot ICAgIH0KLSAgZWxzZQotICAgIHsKLSAgICAgIGNoYXIgKmN1cl9wYXRoOwkJLyogRnVsbCBw YXRoIG9mIGVhY2ggZmlsZSB0byBwcm9jZXNzLiAqLwotICAgICAgY2hhciAqY3VyX25hbWU7 CQkvKiBCYXNlIG5hbWUgb2YgZWFjaCBmaWxlIHRvIHByb2Nlc3MuICovCi0gICAgICB1bnNp Z25lZCBjdXJfcGF0aF9zaXplOwkvKiBCeXRlcyBhbGxvY2F0ZWQgZm9yIGBjdXJfcGF0aCcu ICovCi0gICAgICByZWdpc3RlciB1bnNpZ25lZCBmaWxlX2xlbjsgLyogTGVuZ3RoIG9mIGVh Y2ggcGF0aCB0byBwcm9jZXNzLiAqLwotICAgICAgcmVnaXN0ZXIgdW5zaWduZWQgcGF0aG5h bWVfbGVuOyAvKiBQQVRITEVOIHBsdXMgdHJhaWxpbmcgJy8nLiAqLwotICAgICAgYm9vbCBk aWRfc3RhdCA9IGZhbHNlOwotCi0gICAgICBpZiAocGF0aG5hbWVbcGF0aGxlbiAtIDFdID09 ICcvJykKLQlwYXRobmFtZV9sZW4gPSBwYXRobGVuICsgMTsgLyogRm9yICdcMCc7IGFscmVh ZHkgaGF2ZSAnLycuICovCi0gICAgICBlbHNlCi0JcGF0aG5hbWVfbGVuID0gcGF0aGxlbiAr IDI7IC8qIEZvciAnLycgYW5kICdcMCcuICovCi0gICAgICBjdXJfcGF0aF9zaXplID0gMDsK LSAgICAgIGN1cl9wYXRoID0gTlVMTDsKLQotICAgICAgLyogV2UncmUgYWJvdXQgdG8gbGVh dmUgdGhlIGRpcmVjdG9yeS4gIElmIHRoZXJlIGFyZSBhbnkKLSAgICAgICAqIC1leGVjZGly IGFyZ3VtZW50IGxpc3RzIHdoaWNoIGhhdmUgYmVlbiBidWlsdCBidXQgaGF2ZSBub3QKLSAg ICAgICAqIHlldCBiZWVuIHByb2Nlc3NlZCwgZG8gdGhlbSBub3cgYmVjYXVzZSB0aGV5IG11 c3QgYmUgZG9uZSBpbgotICAgICAgICogdGhlIHNhbWUgZGlyZWN0b3J5LgotICAgICAgICov Ci0gICAgICBjb21wbGV0ZV9wZW5kaW5nX2V4ZWNkaXJzICgpOwotCi0gICAgICBpZiAoc3Ry Y21wIChuYW1lLCAiLiIpKQotCXsKLQkgIGVudW0gU2FmZUNoZGlyU3RhdHVzIHN0YXR1cyA9 IHNhZmVseV9jaGRpciAobmFtZSwgVHJhdmVyc2luZ0Rvd24sICZzdGF0X2J1ZiwgU3ltbGlu a0hhbmRsZURlZmF1bHQsICZkaWRfc3RhdCk7Ci0JICBzd2l0Y2ggKHN0YXR1cykKLQkgICAg ewotCSAgICBjYXNlIFNhZmVDaGRpck9LOgotCSAgICAgIC8qIElmIHRoZXJlIGhhZCBiZWVu IGEgY2hhbmdlIGJ1dCB3ZF9zYW5pdHlfY2hlY2soKQotCSAgICAgICAqIGFjY2VwdGVkIGl0 LCB3ZSBuZWVkIHRvIGFjY2VwdCB0aGF0IG9uIHRoZQotCSAgICAgICAqIHdheSBiYWNrIHVw IGFzIHdlbGwsIHNvIG1vZGlmeSBvdXIgcmVjb3JkCi0JICAgICAgICogb2Ygd2hhdCB3ZSB0 aGluayB3ZSBzaG91bGQgc2VlIGxhdGVyLgotCSAgICAgICAqIElmIHRoZXJlIHdhcyBubyBj aGFuZ2UsIHRoZSBhc3NpZ25tZW50cyBhcmUgYSBuby1vcC4KLQkgICAgICAgKgotCSAgICAg ICAqIEhvd2V2ZXIsIGJlZm9yZSBwZXJmb3JtaW5nIHRoZSBhc3NpZ25tZW50LCB3ZSBuZWVk IHRvCi0JICAgICAgICogY2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBzdGF0IGluZm9ybWF0aW9u LiAgIElmIE9fTk9GT0xMT1cKLQkgICAgICAgKiBpcyBhdmFpbGFibGUsIHNhZmVseV9jaGRp cigpIHdpbGwgbm90IGhhdmUgbmVlZGVkIHRvIHVzZQotCSAgICAgICAqIHN0YXQoKSwgYW5k IHNvIHN0YXRfYnVmIHdpbGwganVzdCBjb250YWluIHJhbmRvbSBkYXRhLgotCSAgICAgICAq LwotCSAgICAgIGlmICghZGlkX3N0YXQpCi0JCXsKLQkJICAvKiBJZiB0aGVyZSBpcyBhIGxp bmsgd2UgbmVlZCB0byBmb2xsb3cgaXQuICBIZW5jZQotCQkgICAqIHRoZSBkaXJlY3QgY2Fs bCB0byBzdGF0KCkgbm90IHRocm91Z2ggKG9wdGlvbnMueHN0YXQpCi0JCSAgICovCi0JCSAg c2V0X3N0YXRfcGxhY2Vob2xkZXJzICgmc3RhdF9idWYpOwotCQkgIGlmICgwICE9IHN0YXQg KCIuIiwgJnN0YXRfYnVmKSkKLQkJICAgIGJyZWFrOwkvKiBza2lwIHRoZSBhc3NpZ25tZW50 LiAqLwotCQl9Ci0JICAgICAgZGlyX2lkc1tkaXJfY3Vycl0uZGV2ID0gc3RhdF9idWYuc3Rf ZGV2OwotCSAgICAgIGRpcl9pZHNbZGlyX2N1cnJdLmlubyA9IHN0YXRfYnVmLnN0X2lubzsK LQotCSAgICAgIGJyZWFrOwotCi0JICAgIGNhc2UgU2FmZUNoZGlyRmFpbFdvdWxkQmVVbmFi bGVUb1JldHVybjoKLQkgICAgICBlcnJvciAoMCwgZXJybm8sICIuIik7Ci0JICAgICAgc3Rh dGUuZXhpdF9zdGF0dXMgPSAxOwotCSAgICAgIGJyZWFrOwotCi0JICAgIGNhc2UgU2FmZUNo ZGlyRmFpbE5vbmV4aXN0ZW50OgotCSAgICBjYXNlIFNhZmVDaGRpckZhaWxEZXN0VW5yZWFk YWJsZToKLQkgICAgY2FzZSBTYWZlQ2hkaXJGYWlsU3RhdDoKLQkgICAgY2FzZSBTYWZlQ2hk aXJGYWlsTm90RGlyOgotCSAgICBjYXNlIFNhZmVDaGRpckZhaWxDaGRpckZhaWxlZDoKLQkg ICAgICBlcnJvciAoMCwgZXJybm8sICIlcyIsCi0JCSAgICAgc2FmZWx5X3F1b3RlX2Vycl9m aWxlbmFtZSAoMCwgcGF0aG5hbWUpKTsKLQkgICAgICBzdGF0ZS5leGl0X3N0YXR1cyA9IDE7 Ci0JICAgICAgcmV0dXJuOwotCi0JICAgIGNhc2UgU2FmZUNoZGlyRmFpbFN5bWxpbms6Ci0J ICAgICAgZXJyb3IgKDAsIDAsCi0JCSAgICAgXygid2FybmluZzogbm90IGZvbGxvd2luZyB0 aGUgc3ltYm9saWMgbGluayAlcyIpLAotCQkgICAgIHNhZmVseV9xdW90ZV9lcnJfZmlsZW5h bWUgKDAsIHBhdGhuYW1lKSk7Ci0JICAgICAgc3RhdGUuZXhpdF9zdGF0dXMgPSAxOwotCSAg ICAgIHJldHVybjsKLQkgICAgfQotCX0KLQotICAgICAgd2hpbGUgKDEpCi0JewotCSAgY29u c3QgY2hhciAqbmFtZXA7Ci0JICBtb2RlX3QgbW9kZSA9IDA7Ci0JICBjb25zdCBzdHJ1Y3Qg ZGlyZW50ICpkcDsKLQotCSAgLyogV2UgcmVzZXQgZXJybm8gaGVyZSB0byBkaXN0aW5ndWlz aCBiZXR3ZWVuIGVuZC1vZi1kaXJlY3RvcnkgYW5kIGFuIGVycm9yICovCi0JICBlcnJubyA9 IDA7Ci0JICBkcCA9IHJlYWRkaXIgKGRpcnApOwotCSAgaWYgKE5VTEwgPT0gZHApCi0JICAg IHsKLQkgICAgICBpZiAoZXJybm8pCi0JCXsKLQkJICAvKiBhbiBlcnJvciBvY2N1cnJlZCwg YnV0IHdlIGFyZSBub3QgeWV0IGF0IHRoZSBlbmQKLQkJICAgICBvZiB0aGUgZGlyZWN0b3J5 IHN0cmVhbS4gKi8KLQkJICBlcnJvciAoMCwgZXJybm8sICIlcyIsIHNhZmVseV9xdW90ZV9l cnJfZmlsZW5hbWUgKDAsIHBhdGhuYW1lKSk7Ci0JCSAgY29udGludWU7Ci0JCX0KLQkgICAg ICBlbHNlCi0JCXsKLQkJICBicmVhazsJLyogRW5kIG9mIHRoZSBkaXJlY3Rvcnkgc3RyZWFt LiAqLwotCQl9Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewotCSAgICAgIG5hbWVwID0gZHAt PmRfbmFtZTsKLQkgICAgICAvKiBTa2lwICIiLCAiLiIsIGFuZCAiLi4iLiAgIiIgaXMgcmV0 dXJuZWQgYnkgYXQgbGVhc3Qgb25lIGJ1Z2d5Ci0JCSBpbXBsZW1lbnRhdGlvbjogU29sYXJp cyAyLjQgcmVhZGRpciBvbiBORlMgZmlsZSBzeXN0ZW1zLiAgKi8KLQkgICAgICBpZiAoIW5h bWVwWzBdIHx8Ci0gICAgICAgICAgICAgICAgICAobmFtZXBbMF0gPT0gJy4nICYmIChuYW1l cFsxXSA9PSAwIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bmFtZXBbMV0gPT0gJy4nICYmIG5hbWVwWzJdID09IDApKSkpCi0JCWNvbnRpbnVlOwotCSAg ICB9Ci0KLSNpZiBkZWZpbmVkIEhBVkVfU1RSVUNUX0RJUkVOVF9EX1RZUEUKLQkgIGlmIChk cC0+ZF90eXBlICE9IERUX1VOS05PV04pCi0JICAgIG1vZGUgPSB0eXBlX3RvX21vZGUgKGRw LT5kX3R5cGUpOwotI2VuZGlmCi0KLQkgIC8qIEFwcGVuZCB0aGlzIGRpcmVjdG9yeSBlbnRy eSdzIG5hbWUgdG8gdGhlIHBhdGggYmVpbmcgc2VhcmNoZWQuICovCi0JICBmaWxlX2xlbiA9 IHBhdGhuYW1lX2xlbiArIHN0cmxlbiAobmFtZXApOwotCSAgaWYgKGZpbGVfbGVuID4gY3Vy X3BhdGhfc2l6ZSkKLQkgICAgewotCSAgICAgIGN1cl9wYXRoX3NpemUgPSAoZmlsZV9sZW4v MTAyNCArIDEpICogMTAyNDsKLQkgICAgICBmcmVlIChjdXJfcGF0aCk7Ci0JICAgICAgY3Vy X3BhdGggPSB4bWFsbG9jIChjdXJfcGF0aF9zaXplKTsKLQkgICAgICBzdHJjcHkgKGN1cl9w YXRoLCBwYXRobmFtZSk7Ci0JICAgICAgY3VyX3BhdGhbcGF0aG5hbWVfbGVuIC0gMl0gPSAn Lyc7Ci0JICAgIH0KLQkgIGN1cl9uYW1lID0gY3VyX3BhdGggKyBwYXRobmFtZV9sZW4gLSAx OwotCSAgc3RyY3B5IChjdXJfbmFtZSwgbmFtZXApOwotCi0JICBzdGF0ZS5jdXJkZXB0aCsr OwotCSAgaWYgKCFvcHRpb25zLm5vX2xlYWZfY2hlY2sgJiYgIXN1YmRpcnNfdW5yZWxpYWJs ZSkKLQkgICAgewotCSAgICAgIGlmIChtb2RlICYmIFNfSVNESVIobW9kZSkgJiYgKHN1YmRp cnNfbGVmdCA9PSAwKSkKLQkJewotCQkgIC8qIFRoaXMgaXMgYSBzdWJkaXJlY3RvcnksIGJ1 dCB0aGUgbnVtYmVyIG9mIGRpcmVjdG9yaWVzIHdlCi0JCSAgICogaGF2ZSBmb3VuZCBub3cg ZXhjZWVkcyB0aGUgbnVtYmVyIHdlIHdvdWxkIGV4cGVjdCBnaXZlbgotCQkgICAqIHRoZSBo YXJkIGxpbmsgY291bnQgb24gdGhlIHBhcmVudC4gICBUaGlzIGlzIGxpa2VseSB0byBiZQot CQkgICAqIGEgYnVnIGluIHRoZSBmaWxlIHN5c3RlbSBkcml2ZXIgKGUuZy4gTGludXgncwot CQkgICAqIC9wcm9jIGZpbGUgc3lzdGVtKSBvciBtYXkganVzdCBiZSBhIGZhY3QgdGhhdCB0 aGUgT1MKLQkJICAgKiBkb2Vzbid0IHJlYWxseSBoYW5kbGUgaGFyZCBsaW5rcyB3aXRoIFVu aXggc2VtYW50aWNzLgotCQkgICAqIEluIHRoZSBsYXR0ZXIgY2FzZSwgLW5vbGVhZiBzaG91 bGQgYmUgdXNlZCByb3V0aW5lbHkuCi0JCSAgICovCi0JCSAgZXJyb3IgKDAsIDAsIF8oIldB Uk5JTkc6IEhhcmQgbGluayBjb3VudCBpcyB3cm9uZyBmb3IgJXMgKHNhdyBvbmx5IHN0X25s aW5rPSUiIFBSSXVNQVggICIgYnV0IHdlIGFscmVhZHkgc2F3ICUiIFBSSXVNQVggIiBzdWJk aXJlY3Rvcmllcyk6IHRoaXMgbWF5IGJlIGEgYnVnIGluIHlvdXIgZmlsZSBzeXN0ZW0gZHJp dmVyLiAgQXV0b21hdGljYWxseSB0dXJuaW5nIG9uIGZpbmQncyAtbm9sZWFmIG9wdGlvbi4g IEVhcmxpZXIgcmVzdWx0cyBtYXkgaGF2ZSBmYWlsZWQgdG8gaW5jbHVkZSBkaXJlY3Rvcmll cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gc2VhcmNoZWQuIiksCi0JCQkgc2FmZWx5X3F1b3Rl X2Vycl9maWxlbmFtZSgwLCBwYXRobmFtZSksCi0JCQkgKHVpbnRtYXhfdCkgc3RhdHAtPnN0 X25saW5rLAotCQkJICh1aW50bWF4X3QpIGRpcmNvdW50KTsKLQkJICBzdGF0ZS5leGl0X3N0 YXR1cyA9IDE7IC8qIFdlIGtub3cgdGhlIHJlc3VsdCBpcyB3cm9uZywgbm93ICovCi0JCSAg b3B0aW9ucy5ub19sZWFmX2NoZWNrID0gdHJ1ZTsJLyogRG9uJ3QgbWFrZSBzYW1lCi0JCQkJ CQkgICBtaXN0YWtlIGFnYWluICovCi0JCSAgc3ViZGlyc191bnJlbGlhYmxlID0gMTsKLQkJ ICBzdWJkaXJzX2xlZnQgPSAxOyAvKiBiYW5kLWFpZCBmb3IgdGhpcyBpdGVyYXRpb24uICov Ci0JCX0KLQotCSAgICAgIC8qIE5vcm1hbCBjYXNlIG9wdGltaXphdGlvbi4gIE9uIG5vcm1h bCBVbml4Ci0JCSBmaWxlIHN5c3RlbXMsIGEgZGlyZWN0b3J5IHRoYXQgaGFzIG5vIHN1YmRp cmVjdG9yaWVzCi0JCSBoYXMgdHdvIGxpbmtzOiBpdHMgbmFtZSwgYW5kICIuIi4gIEFueSBh ZGRpdGlvbmFsCi0JCSBsaW5rcyBhcmUgdG8gdGhlICIuLiIgZW50cmllcyBvZiBpdHMgc3Vi ZGlyZWN0b3JpZXMuCi0JCSBPbmNlIHdlIGhhdmUgcHJvY2Vzc2VkIGFzIG1hbnkgc3ViZGly ZWN0b3JpZXMgYXMKLQkJIHRoZXJlIGFyZSBhZGRpdGlvbmFsIGxpbmtzLCB3ZSBrbm93IHRo YXQgdGhlIHJlc3Qgb2YKLQkJIHRoZSBlbnRyaWVzIGFyZSBub24tZGlyZWN0b3JpZXMgLS0g aW4gb3RoZXIgd29yZHMsCi0JCSBsZWFmIGZpbGVzLiAqLwotCSAgICAgIHsKLQkJaW50IGNv dW50OwotCQljb3VudCA9IHByb2Nlc3NfcGF0aCAoY3VyX3BhdGgsIGN1cl9uYW1lLAotCQkJ CSAgICAgIHN1YmRpcnNfbGVmdCA9PSAwLCBwYXRobmFtZSwKLQkJCQkgICAgICBtb2RlLCBE X0lOTyhkcCkpOwotCQlzdWJkaXJzX2xlZnQgLT0gY291bnQ7Ci0JCWRpcmNvdW50ICs9IGNv dW50OwotCSAgICAgIH0KLQkgICAgfQotCSAgZWxzZQotCSAgICB7Ci0JICAgICAgLyogVGhl cmUgbWlnaHQgYmUgd2VpcmQgKGUuZy4sIENELVJPTSBvciBNUy1ET1MpIGZpbGUgc3lzdGVt cwotCQkgbW91bnRlZCwgd2hpY2ggZG9uJ3QgaGF2ZSBVbml4LWxpa2UgZGlyZWN0b3J5IGxp bmsgY291bnRzLiAqLwotCSAgICAgIHByb2Nlc3NfcGF0aCAoY3VyX3BhdGgsIGN1cl9uYW1l LCBmYWxzZSwgcGF0aG5hbWUsIG1vZGUsCi0JCQkgICAgRF9JTk8oZHApKTsKLQkgICAgfQot Ci0JICBzdGF0ZS5jdXJkZXB0aC0tOwotCX0KLQotCi0gICAgICAvKiBXZSdyZSBhYm91dCB0 byBsZWF2ZSB0aGUgZGlyZWN0b3J5LiAgSWYgdGhlcmUgYXJlIGFueQotICAgICAgICogLWV4 ZWNkaXIgYXJndW1lbnQgbGlzdHMgd2hpY2ggaGF2ZSBiZWVuIGJ1aWx0IGJ1dCBoYXZlIG5v dAotICAgICAgICogeWV0IGJlZW4gcHJvY2Vzc2VkLCBkbyB0aGVtIG5vdyBiZWNhdXNlIHRo ZXkgbXVzdCBiZSBkb25lIGluCi0gICAgICAgKiB0aGUgc2FtZSBkaXJlY3RvcnkuCi0gICAg ICAgKi8KLSAgICAgIGNvbXBsZXRlX3BlbmRpbmdfZXhlY2RpcnMgKCk7Ci0KLSAgICAgIGlm IChzdHJjbXAgKG5hbWUsICIuIikpCi0JewotCSAgZW51bSBTYWZlQ2hkaXJTdGF0dXMgc3Rh dHVzOwotCi0JICAvKiBXZSBjb3VsZCBnbyBiYWNrIGFuZCBkbyB0aGUgbmV4dCBjb21tYW5k LWxpbmUgYXJnCi0JICAgICBpbnN0ZWFkLCBtYXliZSB1c2luZyBsb25nam1wLiAgKi8KLQkg IGNoYXIgY29uc3QgKmRpcjsKLQkgIGJvb2wgZGVyZWYgPSBmb2xsb3dpbmdfbGlua3MgKCkg PyB0cnVlIDogZmFsc2U7Ci0KLQkgIGlmICggKHN0YXRlLmN1cmRlcHRoPjApICYmICFkZXJl ZikKLQkgICAgZGlyID0gIi4uIjsKLQkgIGVsc2UKLQkgICAgewotCSAgICAgIGNoZGlyX2Jh Y2sgKCk7Ci0JICAgICAgZGlyID0gcGFyZW50OwotCSAgICB9Ci0KLQkgIGRpZF9zdGF0ID0g ZmFsc2U7Ci0JICBzdGF0dXMgPSBzYWZlbHlfY2hkaXIgKGRpciwgVHJhdmVyc2luZ1VwLCAm c3RhdF9idWYsIFN5bWxpbmtIYW5kbGVEZWZhdWx0LCAmZGlkX3N0YXQpOwotCSAgc3dpdGNo IChzdGF0dXMpCi0JICAgIHsKLQkgICAgY2FzZSBTYWZlQ2hkaXJPSzoKLQkgICAgICBicmVh azsKLQotCSAgICBjYXNlIFNhZmVDaGRpckZhaWxXb3VsZEJlVW5hYmxlVG9SZXR1cm46Ci0J ICAgICAgZGllIChFWElUX0ZBSUxVUkUsIGVycm5vLCAiLiIpOwotCSAgICAgIHJldHVybjsK LQotCSAgICBjYXNlIFNhZmVDaGRpckZhaWxOb25leGlzdGVudDoKLQkgICAgY2FzZSBTYWZl Q2hkaXJGYWlsRGVzdFVucmVhZGFibGU6Ci0JICAgIGNhc2UgU2FmZUNoZGlyRmFpbFN0YXQ6 Ci0JICAgIGNhc2UgU2FmZUNoZGlyRmFpbFN5bWxpbms6Ci0JICAgIGNhc2UgU2FmZUNoZGly RmFpbE5vdERpcjoKLQkgICAgY2FzZSBTYWZlQ2hkaXJGYWlsQ2hkaXJGYWlsZWQ6Ci0JICAg ICAgZGllIChFWElUX0ZBSUxVUkUsIGVycm5vLAotCQkgICAiJXMiLCBzYWZlbHlfcXVvdGVf ZXJyX2ZpbGVuYW1lICgwLCBwYXRobmFtZSkpOwotCSAgICAgIHJldHVybjsKLQkgICAgfQot CX0KLQotICAgICAgZnJlZSAoY3VyX3BhdGgpOwotICAgICAgQ0xPU0VESVIgKGRpcnApOwot ICAgIH0KLQotICBpZiAoc3ViZGlyc191bnJlbGlhYmxlKQotICAgIHsKLSAgICAgIC8qIE1h a2Ugc3VyZSB3ZSBoYXNuJ3QgdXNlZCB0aGUgdmFyaWFibGUgc3ViZGlyc19sZWZ0IGlmIHdl IGtuZXcKLSAgICAgICAqIHdlIHNob3VsZG4ndCBkbyBzby4KLSAgICAgICAqLwotICAgICAg YXNzZXJ0ICgwID09IHN1YmRpcnNfbGVmdCB8fCBvcHRpb25zLm5vX2xlYWZfY2hlY2spOwot ICAgIH0KLX0KZGlmZiAtLWdpdCBhL2ZpbmQvdGVzdHN1aXRlL2NvbmZpZy91bml4LmV4cCBi L2ZpbmQvdGVzdHN1aXRlL2NvbmZpZy91bml4LmV4cAppbmRleCBkOTIxMTg0My4uYTg3OWM4 OTYgMTAwNjQ0Ci0tLSBhL2ZpbmQvdGVzdHN1aXRlL2NvbmZpZy91bml4LmV4cAorKysgYi9m aW5kL3Rlc3RzdWl0ZS9jb25maWcvdW5peC5leHAKQEAgLTIwLDM5ICsyMCwyOCBAQAogIyB3 cml0dGVuIGJ5IFJvYiBTYXZveWUgPHJvYkBjeWdudXMuY29tPi4KIAwKIAotZ2xvYmFsIE9M REZJTkQKIGdsb2JhbCBGVFNGSU5ECiAKIHZlcmJvc2UgImJhc2VfZGlyIGlzICRiYXNlX2Rp ciIgMgogZ2xvYmFsIGVudjsKIHNldCBlbnYoR05VX0ZJTkRVVElMU19GRF9MRUFLX0NIRUNL KSAiMSIKIAotIyBsb29rIGZvciBPTERGSU5EIGFuZCBGVFNGSU5ECi1pZiB7ICFbaW5mbyBl eGlzdHMgT0xERklORF0gfHwgIVtpbmZvIGV4aXN0cyBGVFNGSU5EXSB9IHsKLSAgICB2ZXJi b3NlICJTZWFyY2hpbmcgZm9yIG9sZGZpbmQiCisjIGxvb2sgZm9yIEZUU0ZJTkQKK2lmIHsg IVtpbmZvIGV4aXN0cyBGVFNGSU5EXSB9IHsKKyAgICB2ZXJib3NlICJTZWFyY2hpbmcgZm9y IGZpbmQiCiAgICAgc2V0IGRpciAiJGJhc2VfZGlyLy4uIgogCiAgICAgc2V0IG9iamZpbGUg ImZ0c2ZpbmQubyIKICAgICBpZiAhW2ZpbGUgZXhpc3RzICIkZGlyLyRvYmpmaWxlIl0gdGhl biB7CiAJZXJyb3IgImRpciBpcyAkZGlyLCBidXQgSSBjYW5ub3Qgc2VlICRvYmpmaWxlIGlu IHRoYXQgZGlyZWN0b3J5IgogICAgIH0KLSAgICBzZXQgT0xERklORCBbZmluZGZpbGUgJGRp ci9vbGRmaW5kICRkaXIvb2xkZmluZCBbdHJhbnNmb3JtIG9sZGZpbmRdXQogICAgIHNldCBG VFNGSU5EIFtmaW5kZmlsZSAkZGlyL2ZpbmQgICAgJGRpci9maW5kICAgIFt0cmFuc2Zvcm0g ZmluZCAgIF1dCiB9CiAKIHZlcmJvc2UgImZ0c2ZpbmQgaXMgYXQgJEZUU0ZJTkQiIDIKLXZl cmJvc2UgIm9sZGZpbmQgaXMgYXQgJE9MREZJTkQiIDIKLQotaWYgeyBbIHN0cmluZyBlcXVh bCAkRlRTRklORCAkT0xERklORCBdIH0gewotICAgIGVycm9yICJPTERGSU5EIGFuZCBGVFNG SU5EIGFyZSBzZXQgdG8gJEZUU0ZJTkQsIHdoaWNoIGNhbid0IGJlIHJpZ2h0IgotfQogCiBp ZiBbZmlsZSBleGlzdHMgJEZUU0ZJTkRdIHRoZW4gewotICAgIGlmIFtmaWxlIGV4aXN0cyAk T0xERklORF0gdGhlbiB7Ci0JdmVyYm9zZSAiRlRTRklORD0kRlRTRklORCBhbmQgT0xERklO RD0kT0xERklORCBib3RoIGV4aXN0LiIgMgotICAgIH0gZWxzZSB7Ci0JZXJyb3IgIk9MREZJ TkQ9JE9MREZJTkQsIGJ1dCB0aGF0IHByb2dyYW0gZG9lcyBub3QgZXhpc3QiCi0gICAgfQor ICAgIHZlcmJvc2UgIkZUU0ZJTkQ9JEZUU0ZJTkQgZXhpc3RzLiIgMgogfSBlbHNlIHsKICAg ICBlcnJvciAiRlRTRklORD0kRlRTRklORCwgYnV0IHRoYXQgcHJvZ3JhbSBkb2VzIG5vdCBl eGlzdCAoYmFzZV9kaXIgaXMgJGJhc2VfZGlyKSIKIH0KQEAgLTE5OCwxMCArMTg3LDggQEAg cHJvYyBvcHRpbWlzYXRpb25fbGV2ZWxzX3RvX3Rlc3Qge30gewogfQogCiBwcm9jIGZpbmRf c3RhcnQgeyBwYXNzZmFpbCBvcHRpb25zIHtpbmZpbGUgIiJ9IHtvdXRwdXQgIiJ9IHtzZXR1 cCAiIn19IHsKLSAgICBnbG9iYWwgT0xERklORAogICAgIGdsb2JhbCBGVFNGSU5ECiAgICAg Z2xvYmFsIEZJTkRGTEFHUwotICAgIGdsb2JhbCBTS0lQX09MRAogICAgIGdsb2JhbCBTS0lQ X05FVwogCiAgICAgaWYgeyRpbmZpbGUgIT0gIiJ9IHRoZW4gewpAQCAtMjE0LDE4ICsyMDEs MTAgQEAgcHJvYyBmaW5kX3N0YXJ0IHsgcGFzc2ZhaWwgb3B0aW9ucyB7aW5maWxlICIifSB7 b3V0cHV0ICIifSB7c2V0dXAgIiJ9fSB7CiAJZXJyb3IgIiRGVFNGSU5ELCBwcm9ncmFtIGRv ZXMgbm90IGV4aXN0IgogCWV4aXQgMQogICAgIH0KLSAgICBpZiB7W3doaWNoICRPTERGSU5E XSA9PSAwfSB0aGVuIHsKLQllcnJvciAiJE9MREZJTkQsIHByb2dyYW0gZG9lcyBub3QgZXhp c3QiCi0JZXhpdCAxCi0gICAgfQogCiAgICAgIyBOb3cgcnVuIHRoZSB0ZXN0IHdpdGggZWFj aCBiaW5hcnksIG9uY2Ugd2l0aCBlYWNoIG9wdGltaXNhdGlvbiBsZXZlbC4KICAgICBmb3Jl YWNoIG9wdGxldmVsIFtvcHRpbWlzYXRpb25fbGV2ZWxzX3RvX3Rlc3RdIHsKIAlzZXQgZmxh Z3MgIiRGSU5ERkxBR1MgLU8kb3B0bGV2ZWwiCi0JaWYgeyAhW2luZm8gZXhpc3RzIFNLSVBf T0xEXSB8fCAhICRTS0lQX09MRCB9IHsKLQkgICAgZXZhbCAkc2V0dXAKLQkgICAgZG9fZmlu ZF9zdGFydCBvbGQtTyRvcHRsZXZlbCAgJE9MREZJTkQgJGZsYWdzICRwYXNzZmFpbCAkb3B0 aW9ucyAkaW5maWxlICRvdXRwdXQKLQl9CiAJaWYgeyAhW2luZm8gZXhpc3RzIFNLSVBfTkVX XSB8fCAhJFNLSVBfTkVXIH0gewogCSAgICBldmFsICRzZXR1cAogCSAgICBkb19maW5kX3N0 YXJ0IG5ldy1PJG9wdGxldmVsICAkRlRTRklORCAkZmxhZ3MgJHBhc3NmYWlsICRvcHRpb25z ICRpbmZpbGUgJG91dHB1dApkaWZmIC0tZ2l0IGEvZmluZC90ZXN0c3VpdGUvZmluZC5wb3Np eC9kb3Rkb3RmaWxlcy5leHAgYi9maW5kL3Rlc3RzdWl0ZS9maW5kLnBvc2l4L2RvdGRvdGZp bGVzLmV4cAppbmRleCA4MGRmN2M2Yy4uOWE0NWVhMjQgMTAwNjQ0Ci0tLSBhL2ZpbmQvdGVz dHN1aXRlL2ZpbmQucG9zaXgvZG90ZG90ZmlsZXMuZXhwCisrKyBiL2ZpbmQvdGVzdHN1aXRl L2ZpbmQucG9zaXgvZG90ZG90ZmlsZXMuZXhwCkBAIC0xLDYgKzEsNiBAQAogIyBUZXN0IGVu dHJpZXMgc3RhcnRpbmcgd2l0aCAiLi4iLCBlLmcuICIuLnRtcCIuCiAjIENvbW1pdCB2NC41 LjEwLTk1LWdhMjllNjFiIGludHJvZHVjZWQgYSByZWdyZXNzaW9uCi0jIHdoaWNoIG1hZGUg b2xkZmluZCgxKSBza2lwIHN1Y2ggZW50cmllcy4KKyMgd2hpY2ggbWFkZSAobm8gbG9uZ2Vy IGJ1aWx0KSBvbGRmaW5kKDEpIHNraXAgc3VjaCBlbnRyaWVzLgogIyBUaGlzIGlzIFNhdmFu bmFoIGJ1ZyAjNDUwOTAuCiBleGVjIHJtIC1yZiB0bXAKIGV4ZWMgbWtkaXIgdG1wIHRtcC8u LnRtcApkaWZmIC0tZ2l0IGEvcG8vUE9URklMRVMuaW4gYi9wby9QT1RGSUxFUy5pbgppbmRl eCA4MTNiNzA4Yy4uZWEzMjNhOTIgMTAwNjQ0Ci0tLSBhL3BvL1BPVEZJTEVTLmluCisrKyBi L3BvL1BPVEZJTEVTLmluCkBAIC05LDcgKzksNiBAQAogZmluZC9leGVjLmMKIGZpbmQvZnN0 eXBlLmMKIGZpbmQvZnRzZmluZC5jCi1maW5kL29sZGZpbmQuYwogZmluZC9wYXJzZXIuYwog ZmluZC9wcmVkLmMKIGZpbmQvcHJpbnQuYwpkaWZmIC0tZ2l0IGEvdGVzdHMvZmluZC9kZWJ1 Zy1taXNzaW5nLWFyZy5zaCBiL3Rlc3RzL2ZpbmQvZGVidWctbWlzc2luZy1hcmcuc2gKaW5k ZXggY2U4ZGZmYWYuLjc3NmYyOTVkIDEwMDc1NQotLS0gYS90ZXN0cy9maW5kL2RlYnVnLW1p c3NpbmctYXJnLnNoCisrKyBiL3Rlc3RzL2ZpbmQvZGVidWctbWlzc2luZy1hcmcuc2gKQEAg LTE5LDE0ICsxOSwxMCBAQAogIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKIC4gIiR7c3JjZGlyPS59 L3Rlc3RzL2luaXQuc2giOyBmdV9wYXRoX3ByZXBlbmRfCi1wcmludF92ZXJfIGZpbmQgb2xk ZmluZAorcHJpbnRfdmVyXyBmaW5kCiAKLSMgRXhlcmNpc2UgYm90aCBmaW5kIGV4ZWN1dGFi bGVzLgotZm9yIGV4ZSBpbiBmaW5kIG9sZGZpbmQ7IGRvCi0gIHJtIC1mIG91dCBlcnIgfHwg ZnJhbWV3b3JrX2ZhaWx1cmVfCi0gIHJldHVybnNfIDEgIiRleGUiIC1EID4vZGV2L251bGwg Mj4gZXJyIHx8IGZhaWw9MQotICBncmVwIC1GICJmaW5kOiBNaXNzaW5nIGFyZ3VtZW50IGFm dGVyIHRoZSAtRCBvcHRpb24uIiBlcnIgXAotICAgIHx8IHsgY2F0IGVycjsgZmFpbD0xOyB9 Ci1kb25lCityZXR1cm5zXyAxIGZpbmQgLUQgPi9kZXYvbnVsbCAyPiBlcnIgfHwgZmFpbD0x CitncmVwIC1GICJmaW5kOiBNaXNzaW5nIGFyZ3VtZW50IGFmdGVyIHRoZSAtRCBvcHRpb24u IiBlcnIgXAorICB8fCB7IGNhdCBlcnI7IGZhaWw9MTsgfQogCiBFeGl0ICRmYWlsCmRpZmYg LS1naXQgYS90ZXN0cy9maW5kL2V4ZWMtcGx1cy1sYXN0LWZpbGUuc2ggYi90ZXN0cy9maW5k L2V4ZWMtcGx1cy1sYXN0LWZpbGUuc2gKaW5kZXggNTk2ZjU0NGIuLmU5MDAxYjY0IDEwMDc1 NQotLS0gYS90ZXN0cy9maW5kL2V4ZWMtcGx1cy1sYXN0LWZpbGUuc2gKKysrIGIvdGVzdHMv ZmluZC9leGVjLXBsdXMtbGFzdC1maWxlLnNoCkBAIC0yMSw3ICsyMSw3IEBACiAjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KIAogLiAiJHtzcmNkaXI9Ln0vdGVzdHMvaW5pdC5zaCI7IGZ1X3BhdGhf cHJlcGVuZF8KLXByaW50X3Zlcl8gZmluZCBvbGRmaW5kCitwcmludF92ZXJfIGZpbmQKIAog IyBSZXF1aXJlIHNlcSgxKSBmb3IgdGhpcyB0ZXN0IC0gd2hpY2ggbWF5IG5vdCBiZSBhdmFp bGFibGUKICMgb24gc29tZSBzeXN0ZW1zLCBlLmcgb24gc29tZSAqQlNEcy4KQEAgLTU3LDEw ICs1Nyw4IEBAIG1rZGlyICIkRElSIiBcCiAgIHx8IGZyYW1ld29ya19mYWlsdXJlXwogCiAK LWZvciBleGUgaW4gZmluZCBvbGRmaW5kOyBkbwotICAiJGV4ZSIgIiRESVIiIC10eXBlIGYg LWV4ZWMgIiRDTUQiICd7fScgKyA+IG91dCB8fCBmYWlsPTEKLSAgTENfQUxMPUMgc29ydCBv dXQgPiBvdXQyIHx8IGZhaWw9MQotICBjb21wYXJlIGV4cCBvdXQyIHx8IGZhaWw9MQotZG9u ZQorZmluZCAiJERJUiIgLXR5cGUgZiAtZXhlYyAiJENNRCIgJ3t9JyArID4gb3V0IHx8IGZh aWw9MQorTENfQUxMPUMgc29ydCBvdXQgPiBvdXQyIHx8IGZhaWw9MQorY29tcGFyZSBleHAg b3V0MiB8fCBmYWlsPTEKIAogRXhpdCAkZmFpbApkaWZmIC0tZ2l0IGEvdGVzdHMvZmluZC9l eGVjZGlyLWZkLWxlYWsuc2ggYi90ZXN0cy9maW5kL2V4ZWNkaXItZmQtbGVhay5zaAppbmRl eCA0ZmJmMGE1Yy4uMmI2ODBmNWUgMTAwNzU1Ci0tLSBhL3Rlc3RzL2ZpbmQvZXhlY2Rpci1m ZC1sZWFrLnNoCisrKyBiL3Rlc3RzL2ZpbmQvZXhlY2Rpci1mZC1sZWFrLnNoCkBAIC0xOSw3 ICsxOSw3IEBACiAjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAogLiAiJHtzcmNkaXI9Ln0vdGVzdHMv aW5pdC5zaCI7IGZ1X3BhdGhfcHJlcGVuZF8KLXByaW50X3Zlcl8gZmluZCBvbGRmaW5kCitw cmludF92ZXJfIGZpbmQKIAogIyBzZXEgaXMgbm90IHJlcXVpcmVkIGJ5IFBPU0lYLCBzbyB3 ZSBoYXZlIG1hbnVhbCBsaXN0cyBvZiBudW1iZXIgaGVyZSBpbnN0ZWFkLgogdGhyZWVfdG9f dGhpcnR5X2ZpdmU9IjMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTgg MTkgMjAgMjEgMjIgMjMgMjQgMjUgMjYgMjcgMjggMjkgMzAgMzEgMzIgMzMgMzQgMzUiCkBA IC01NSwxMiArNTUsMTAgQEAgbWFrZV90ZXN0X2RhdGEoKSB7CiBtYWtlX3Rlc3RfZGF0YSBc CiAgIHx8IGZyYW1ld29ya19mYWlsdXJlXyAiZmFpbGVkIHRvIHNldCB1cCB0aGUgdGVzdCIK IAotZm9yIGV4ZSBpbiBmaW5kIG9sZGZpbmQ7IGRvCi0gICggdWxpbWl0IC1uIDMwICYmIFwK LSAgICAke2V4ZX0gLiAtdHlwZSBmIC1leGVjZGlyIGNhdCAne30nIFw7ID4vZGV2L251bGw7 IFwKLSAgKSBcCi0gIHx8IHsgZWNobyAiT3B0aW9uIC1leGVjZGlyIG9mICR7ZXhlfSBsZWFr cyBmaWxlIGRlc2NyaXB0b3JzIiA+JjIgOyBcCisoIHVsaW1pdCAtbiAzMCAmJiBcCisgIGZp bmQgLiAtdHlwZSBmIC1leGVjZGlyIGNhdCAne30nIFw7ID4vZGV2L251bGw7IFwKKykgXAor ICB8fCB7IGVjaG8gIk9wdGlvbiAtZXhlY2RpciBsZWFrcyBmaWxlIGRlc2NyaXB0b3JzIiA+ JjIgOyBcCiAgICAgICAgZmFpbD0xIDsgfQotZG9uZQogCiBFeGl0ICRmYWlsCmRpZmYgLS1n aXQgYS90ZXN0cy9maW5kL21hbnktZGlyLWVudHJpZXMtdnMtT09NLnNoIGIvdGVzdHMvZmlu ZC9tYW55LWRpci1lbnRyaWVzLXZzLU9PTS5zaAppbmRleCA4YWIzNDNmNy4uZDJlZGIyNTMg MTAwNzU1Ci0tLSBhL3Rlc3RzL2ZpbmQvbWFueS1kaXItZW50cmllcy12cy1PT00uc2gKKysr IGIvdGVzdHMvZmluZC9tYW55LWRpci1lbnRyaWVzLXZzLU9PTS5zaApAQCAtMTksNyArMTks NyBAQAogIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKIC4gIiR7c3JjZGlyPS59L3Rlc3RzL2luaXQu c2giOyBmdV9wYXRoX3ByZXBlbmRfCi1wcmludF92ZXJfIGZpbmQgb2xkZmluZAorcHJpbnRf dmVyXyBmaW5kCiAKICMgTWFyayBhcyBleHBlbnNpdmUuCiBleHBlbnNpdmVfCkBAIC03Nywx OCArNzcsMTIgQEAgY2QgLi4KICMgQ3JlYXRlIGEgc21hbGwgZGlyZWN0b3J5IGFzIHJlZmVy ZW5jZSB0byBkZXRlcm1pbmUgbG93ZXIgdWxpbWl0LgogbWtkaXIgZGlyMiAmJiB0b3VjaCBk aXIyL2EgZGlyMi9iIGRpcjIvYyB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KIAotIyBXZSBkb24n dCBjaGVjayBvbGRmaW5kLCBhcyBpdCB1c2VzIHNhdmVkaXIsIG1lYW5pbmcgdGhhdAotIyBp dCBzdG9yZXMgYWxsIHRoZSBkaXJlY3RvcnkgZW50cmllcy4gIEhlbmNlIHRoZSBleGNlc3Np dmUKLSMgbWVtb3J5IGNvbnN1bXB0aW9uIGJ1ZyBhcHBsaWVzIHRvIG9sZGZpbmQgZXZlbiB0 aG91Z2ggaXQgaXMKLSMgbm90IHVzaW5nIGZ0cy4KLWZvciBleGUgaW4gZmluZCBvbGRmaW5k OyBkbwotICAjIERldGVybWluZSBtZW1vcnkgY29uc3VtcHRpb24gZm9yIHRoZSB0cml2aWFs IGNhc2UuCi0gIHZtPSIkKGdldF9taW5fdWxpbWl0X3ZfICR7ZXhlfSBkaXIyIC1mcHJpbnQg ZHVtbXkpIiBcCi0gICAgfHwgc2tpcF8gInRoaXMgc2hlbGwgbGFja3MgdWxpbWl0IHN1cHBv cnQiCi0KLSAgIyBBbGxvdyAzNU1pQiBtb3JlIG1lbW9yeSB0aGFuIGFib3ZlLgotICAoIHVs aW1pdCAtdiAkKCgkdm0gKyAzNTAwMCkpICYmICR7ZXhlfSBkaXIgPi9kZXYvbnVsbCApIFwK LSAgICB8fCB7IGVjaG8gIiR7ZXhlfTogbWVtb3J5IGNvbnN1bXB0aW9uIGlzIHRvbyBoaWdo IiA+JjI7IGZhaWw9MTsgfQotZG9uZQorIyBEZXRlcm1pbmUgbWVtb3J5IGNvbnN1bXB0aW9u IGZvciB0aGUgdHJpdmlhbCBjYXNlLgordm09IiQoZ2V0X21pbl91bGltaXRfdl8gZmluZCBk aXIyIC1mcHJpbnQgZHVtbXkpIiBcCisgIHx8IHNraXBfICJ0aGlzIHNoZWxsIGxhY2tzIHVs aW1pdCBzdXBwb3J0IgorCisjIEFsbG93IDM1TWlCIG1vcmUgbWVtb3J5IHRoYW4gYWJvdmUu CisoIHVsaW1pdCAtdiAkKCgkdm0gKyAzNTAwMCkpICYmIGZpbmQgZGlyID4vZGV2L251bGwg KSBcCisgIHx8IHsgZWNobyAibWVtb3J5IGNvbnN1bXB0aW9uIGlzIHRvbyBoaWdoIiA+JjI7 IGZhaWw9MTsgfQogCiBFeGl0ICRmYWlsCmRpZmYgLS1naXQgYS90ZXN0cy9maW5kL25hbWUt bGJyYWNrZXQtbGl0ZXJhbC5zaCBiL3Rlc3RzL2ZpbmQvbmFtZS1sYnJhY2tldC1saXRlcmFs LnNoCmluZGV4IDlmNTU4M2QyLi5iM2E2YmU1OCAxMDA3NTUKLS0tIGEvdGVzdHMvZmluZC9u YW1lLWxicmFja2V0LWxpdGVyYWwuc2gKKysrIGIvdGVzdHMvZmluZC9uYW1lLWxicmFja2V0 LWxpdGVyYWwuc2gKQEAgLTE4LDcgKzE4LDcgQEAKICMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCiAu ICIke3NyY2Rpcj0ufS90ZXN0cy9pbml0LnNoIjsgZnVfcGF0aF9wcmVwZW5kXwotcHJpbnRf dmVyXyBmaW5kIG9sZGZpbmQKK3ByaW50X3Zlcl8gZmluZAogCiAjIFByZXBhcmUgYSBmaWxl IG5hbWVkICdbJy4KIHRvdWNoICdbJyB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KQEAgLTI3LDcg KzI3LDQgQEAgZWNobyAnLi9bJyA+IGV4cCB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KIGZpbmQg LW5hbWUgJ1snIC1wcmludCA+IG91dCB8fCBmYWlsPTEKIGNvbXBhcmUgZXhwIG91dCB8fCBm YWlsPTEKIAotb2xkZmluZCAtbmFtZSAnWycgLXByaW50ID4gb3V0MiB8fCBmYWlsPTEKLWNv bXBhcmUgZXhwIG91dDIgfHwgZmFpbD0xCi0KIEV4aXQgJGZhaWwKZGlmZiAtLWdpdCBhL3Rl c3RzL2ZpbmQvcHJpbnRmX2VzY2FwZV9jLnNoIGIvdGVzdHMvZmluZC9wcmludGZfZXNjYXBl X2Muc2gKaW5kZXggNmE5MzhhMmQuLjUzMGFjN2I4IDEwMDc1NQotLS0gYS90ZXN0cy9maW5k L3ByaW50Zl9lc2NhcGVfYy5zaAorKysgYi90ZXN0cy9maW5kL3ByaW50Zl9lc2NhcGVfYy5z aApAQCAtMTcsMTkgKzE3LDE2IEBACiAjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAogLiAiJHtzcmNk aXI9Ln0vdGVzdHMvaW5pdC5zaCI7IGZ1X3BhdGhfcHJlcGVuZF8KLXByaW50X3Zlcl8gZmlu ZCBvbGRmaW5kCitwcmludF92ZXJfIGZpbmQKIAogZWNobyAnaGVsbG9eLl53b3JsZCcgPiBl eHAgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCiAKLWZvciBleGVjdXRhYmxlIGluIG9sZGZpbmQg ZmluZDsgZG8KLSAgcm0gLWYgb3V0IHx8IGZyYW1ld29ya19mYWlsdXJlXwotICAkZXhlY3V0 YWJsZSAuIC1tYXhkZXB0aCAwIFwKLSAgICAtcHJpbnRmICdoZWxsb15cY3RoZXJlJyBcCi0g ICAgLWV4ZWMgcHJpbnRmICVzIHt9IFw7IFwKLSAgICAtcHJpbnRmICded29ybGRcbicgXAot ICAgID4gb3V0IHx8IGZhaWw9MQorZmluZCAuIC1tYXhkZXB0aCAwIFwKKyAgLXByaW50ZiAn aGVsbG9eXGN0aGVyZScgXAorICAtZXhlYyBwcmludGYgJXMge30gXDsgXAorICAtcHJpbnRm ICded29ybGRcbicgXAorICA+IG91dCB8fCBmYWlsPTEKIAotICBjb21wYXJlIGV4cCBvdXQg fHwgZmFpbD0xCi1kb25lCitjb21wYXJlIGV4cCBvdXQgfHwgZmFpbD0xCiAKIEV4aXQgJGZh aWwKZGlmZiAtLWdpdCBhL3Rlc3RzL2ZpbmQvcHJpbnRmX2VzY2FwZWNoYXJzLnNoIGIvdGVz dHMvZmluZC9wcmludGZfZXNjYXBlY2hhcnMuc2gKaW5kZXggOGQ2ZGNlYmUuLjU1OTAwZTU5 IDEwMDc1NQotLS0gYS90ZXN0cy9maW5kL3ByaW50Zl9lc2NhcGVjaGFycy5zaAorKysgYi90 ZXN0cy9maW5kL3ByaW50Zl9lc2NhcGVjaGFycy5zaApAQCAtMTcsNyArMTcsNyBAQAogIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCiAKIC4gIiR7c3JjZGlyPS59L3Rlc3RzL2luaXQuc2giOyBmdV9w YXRoX3ByZXBlbmRfCi1wcmludF92ZXJfIGZpbmQgb2xkZmluZAorcHJpbnRfdmVyXyBmaW5k CiAKICMgQ2hlY2sgZm9yIHdvcmtpbmcgb2QoMSkuCiBlY2hvIHRlc3QgfCBvZCAtYyA+L2Rl di9udWxsIFwKQEAgLTU0LDMzICs1NCwyOSBAQCBfRU9EXwogIyBQcmVwYXJlIGV4cGVjdGVk IHN0ZGVyci4KIGVjaG8gIndhcm5pbmc6IHVucmVjb2duaXplZCBlc2NhcGUiID4gZXhwZXJy IHx8IGZyYW1ld29ya19mYWlsdXJlXwogCi1mb3IgZXhlY3V0YWJsZSBpbiBvbGRmaW5kIGZp bmQ7IGRvCi0gIHJtIC1mIG91dCogZXJyKiB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KK2ZpbmQg LiAtbWF4ZGVwdGggMCBcCisgIC1wcmludGYgJ09DVEFMMTogXDFcbicgXAorICAtcHJpbnRm ICdPQ1RBTDI6IFwwMlxuJyBcCisgIC1wcmludGYgJ09DVEFMMzogXDAwM1xuJyBcCisgIC1w cmludGYgJ09DVEFMNDogXDAwNDRcbicgXAorICAtcHJpbnRmICdPQ1RBTDg6IFwwMDI4XG4n IFwKKyAgLXByaW50ZiAnQkVMOiBcYVxuJyBcCisgIC1wcmludGYgJ0NSOiBcclxuJyBcCisg IC1wcmludGYgJ0ZGOiBcZlxuJyBcCisgIC1wcmludGYgJ1RBQjogXHRcbicgXAorICAtcHJp bnRmICdWVEFCOiBcdlxuJyBcCisgIC1wcmludGYgJ0JTOiBcYlxuJyBcCisgIC1wcmludGYg J0JBQ0tTTEFTSDogXFxcbicgXAorICAtcHJpbnRmICdVTktOT1dOOiBcelxuJyBcCisgID4g b3V0IDI+IGVyciB8fCBmYWlsPTEKIAotICAkZXhlY3V0YWJsZSAuIC1tYXhkZXB0aCAwIFwK LSAgICAtcHJpbnRmICdPQ1RBTDE6IFwxXG4nIFwKLSAgICAtcHJpbnRmICdPQ1RBTDI6IFww MlxuJyBcCi0gICAgLXByaW50ZiAnT0NUQUwzOiBcMDAzXG4nIFwKLSAgICAtcHJpbnRmICdP Q1RBTDQ6IFwwMDQ0XG4nIFwKLSAgICAtcHJpbnRmICdPQ1RBTDg6IFwwMDI4XG4nIFwKLSAg ICAtcHJpbnRmICdCRUw6IFxhXG4nIFwKLSAgICAtcHJpbnRmICdDUjogXHJcbicgXAotICAg IC1wcmludGYgJ0ZGOiBcZlxuJyBcCi0gICAgLXByaW50ZiAnVEFCOiBcdFxuJyBcCi0gICAg LXByaW50ZiAnVlRBQjogXHZcbicgXAotICAgIC1wcmludGYgJ0JTOiBcYlxuJyBcCi0gICAg LXByaW50ZiAnQkFDS1NMQVNIOiBcXFxuJyBcCi0gICAgLXByaW50ZiAnVU5LTk9XTjogXHpc bicgXAotICAgID4gb3V0IDI+IGVyciB8fCBmYWlsPTEKKyMgU29tZSAnb2QnIGltcGxlbWVu dGF0aW9ucyAoZS5nLiBvbiB0aGUgKkJTRHMpIHByb2R1Y2UgZGlmZmVyZW50IGluZGVudGF0 aW9uCisjIGFuZCB0cmFpbGluZyBzcGFjZXMsIHRoZXJlZm9yZSBzcXVlZXplIHRoZSBmb3Jt ZXIgYW5kIHJlbW92ZSB0aGUgbGF0dGVyLgorb2QgLXQgbzEgPCBvdXQgfCBzZWQgJ3MvICAq LyAvZzsgcy8gKiQvLzsnID4gb3V0MiB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KK2NvbXBhcmUg ZXhwb3V0IG91dDIgfHwgZmFpbD0xCiAKLSAgIyBTb21lICdvZCcgaW1wbGVtZW50YXRpb25z IChlLmcuIG9uIHRoZSAqQlNEcykgcHJvZHVjZSBkaWZmZXJlbnQgaW5kZW50YXRpb24KLSAg IyBhbmQgdHJhaWxpbmcgc3BhY2VzLCB0aGVyZWZvcmUgc3F1ZWV6ZSB0aGUgZm9ybWVyIGFu ZCByZW1vdmUgdGhlIGxhdHRlci4KLSAgb2QgLXQgbzEgPCBvdXQgfCBzZWQgJ3MvICAqLyAv Zzsgcy8gKiQvLzsnID4gb3V0MiB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KLSAgY29tcGFyZSBl eHBvdXQgb3V0MiB8fCBmYWlsPTEKLQotICBzZWQgJ3MvXi4qXCh3YXJuaW5nOiB1bnJlY29n bml6ZWQgZXNjYXBlXCkgLiokL1wxLycgZXJyID4gZXJyMiBcCi0gICAgfHwgZnJhbWV3b3Jr X2ZhaWx1cmVfCi0gIGNvbXBhcmUgZXhwZXJyIGVycjIgfHwgZmFpbD0xCi1kb25lCitzZWQg J3MvXi4qXCh3YXJuaW5nOiB1bnJlY29nbml6ZWQgZXNjYXBlXCkgLiokL1wxLycgZXJyID4g ZXJyMiBcCisgIHx8IGZyYW1ld29ya19mYWlsdXJlXworY29tcGFyZSBleHBlcnIgZXJyMiB8 fCBmYWlsPTEKIAogRXhpdCAkZmFpbApkaWZmIC0tZ2l0IGEvdGVzdHMvZmluZC9wcmludGZf aW5vZGUuc2ggYi90ZXN0cy9maW5kL3ByaW50Zl9pbm9kZS5zaAppbmRleCA1MzkyNWQyYi4u NDBlOTE4ZmYgMTAwNzU1Ci0tLSBhL3Rlc3RzL2ZpbmQvcHJpbnRmX2lub2RlLnNoCisrKyBi L3Rlc3RzL2ZpbmQvcHJpbnRmX2lub2RlLnNoCkBAIC0xNyw3ICsxNyw3IEBACiAjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KIAogLiAiJHtzcmNkaXI9Ln0vdGVzdHMvaW5pdC5zaCI7IGZ1X3BhdGhf cHJlcGVuZF8KLXByaW50X3Zlcl8gZmluZCBvbGRmaW5kCitwcmludF92ZXJfIGZpbmQKIAog bWFrZV9jYW5vbmljYWwoKSB7CiAgIHNlZCAtZSAnCkBAIC0zMywxMSArMzMsOSBAQCBtYWtl X2Nhbm9uaWNhbCgpIHsKICMgTGV0IGxzKDEpIGNyZWF0ZSB0aGUgZXhwZWN0ZWQgb3V0cHV0 LgogbHMgLWkgZmlsZSB8IG1ha2VfY2Fub25pY2FsID4gZXhwIHx8IGZyYW1ld29ya19mYWls dXJlXwogCi1mb3IgZXhlY3V0YWJsZSBpbiBvbGRmaW5kIGZpbmQ7IGRvCi0gIHJtIC1mIG91 dCBvdXQyCi0gICRleGVjdXRhYmxlIGZpbGUgLXByaW50ZiAnJWlfJXBcbicgPiBvdXQgfHwg ZmFpbD0xCi0gIG1ha2VfY2Fub25pY2FsIDwgb3V0ID4gb3V0MiB8fCBmcmFtZXdvcmtfZmFp bHVyZV8KLSAgY29tcGFyZSBleHAgb3V0MiB8fCBmYWlsPTEKLWRvbmUKK3JtIC1mIG91dCBv dXQyCitmaW5kIGZpbGUgLXByaW50ZiAnJWlfJXBcbicgPiBvdXQgfHwgZmFpbD0xCittYWtl X2Nhbm9uaWNhbCA8IG91dCA+IG91dDIgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCitjb21wYXJl IGV4cCBvdXQyIHx8IGZhaWw9MQogCiBFeGl0ICRmYWlsCmRpZmYgLS1naXQgYS90ZXN0cy9m aW5kL3JlZnVzZS1ub29wLnNoIGIvdGVzdHMvZmluZC9yZWZ1c2Utbm9vcC5zaAppbmRleCBk ODk2ZWUyNi4uYTJhMWE1M2YgMTAwNzU1Ci0tLSBhL3Rlc3RzL2ZpbmQvcmVmdXNlLW5vb3Au c2gKKysrIGIvdGVzdHMvZmluZC9yZWZ1c2Utbm9vcC5zaApAQCAtMTksMTggKzE5LDE2IEBA CiAjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KIAogLiAiJHtzcmNkaXI9Ln0vdGVzdHMvaW5pdC5zaCI7 IGZ1X3BhdGhfcHJlcGVuZF8KLXByaW50X3Zlcl8gZmluZCBvbGRmaW5kCitwcmludF92ZXJf IGZpbmQKIAogIyBFeGVyY2lzZSBib3RoIHRoZSBwcmV2aW91cyBuYW1lIG9mIHRoZSBwc2V1 ZG8tb3B0aW9uICctbm9vcCcsCi0jIGFuZCB0aGUgbm93IHJlbmFtZWQgJy0tLW5vb3AnIG9w dGlvbiBmb3IgYm90aCBmaW5kIGV4ZWN1dGFibGVzLgotZm9yIGV4ZSBpbiBmaW5kIG9sZGZp bmQ7IGRvCi0gIGZvciBvcHQgaW4gJ25vb3AnICctLW5vb3AnOyBkbwotICAgIHJtIC1mIG91 dCBlcnIgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCi0gICAgcmV0dXJuc18gMSAiJGV4ZSIgIi0k e29wdH0iID4gb3V0IDI+IGVyciB8fCBmYWlsPTEKLSAgICBjb21wYXJlIC9kZXYvbnVsbCBv dXQgfHwgZmFpbD0xCi0gICAgZ3JlcCAiZmluZDogdW5rbm93biBwcmVkaWNhdGUgLi0ke29w dH0uIiBlcnIgXAotICAgICAgfHwgeyBjYXQgZXJyOyBmYWlsPTE7IH0KLSAgZG9uZQorIyBh bmQgdGhlIG5vdyByZW5hbWVkICctLS1ub29wJyBvcHRpb24uCitmb3Igb3B0IGluICdub29w JyAnLS1ub29wJzsgZG8KKyAgcm0gLWYgb3V0IGVyciB8fCBmcmFtZXdvcmtfZmFpbHVyZV8K KyAgcmV0dXJuc18gMSBmaW5kICItJHtvcHR9IiA+IG91dCAyPiBlcnIgfHwgZmFpbD0xCisg IGNvbXBhcmUgL2Rldi9udWxsIG91dCB8fCBmYWlsPTEKKyAgZ3JlcCAiZmluZDogdW5rbm93 biBwcmVkaWNhdGUgLi0ke29wdH0uIiBlcnIgXAorICAgIHx8IHsgY2F0IGVycjsgZmFpbD0x OyB9CiBkb25lCiAKIEV4aXQgJGZhaWwKZGlmZiAtLWdpdCBhL3Rlc3RzL2ZpbmQvdHlwZV9s aXN0LnNoIGIvdGVzdHMvZmluZC90eXBlX2xpc3Quc2gKaW5kZXggMDZjNWM4YjQuLjAxNjU4 MDZkIDEwMDc1NQotLS0gYS90ZXN0cy9maW5kL3R5cGVfbGlzdC5zaAorKysgYi90ZXN0cy9m aW5kL3R5cGVfbGlzdC5zaApAQCAtMTgsNyArMTgsNyBAQAogIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CiAKIC4gIiR7c3JjZGlyPS59L3Rlc3RzL2luaXQuc2giOyBmdV9wYXRoX3ByZXBlbmRfCi1w cmludF92ZXJfIGZpbmQgb2xkZmluZAorcHJpbnRfdmVyXyBmaW5kCiAKICMgVGhpcyB0ZXN0 IGlzIGluICdhbGxfcm9vdF90ZXN0cycgdG8gZ2V0IGJldHRlciBjb3ZlcmFnZSBmb3IgZmls ZSB0eXBlcyBhCiAjIHJlZ3VsYXIgdXNlciBjYW5ub3QgY3JlYXRlLiAgU3RpbGwsIGl0IGlz IHJ1biBkdXJpbmcgJ21ha2UgY2hlY2snIGFzIHdlbGwuCkBAIC0xMTYsMTc1ICsxMTYsMTcx IEBAIG1ha2VfdGVzdF9kYXRhIGRpciBcCiBmaW5kIGRpciAtbWluZGVwdGggMSAtbHMKIAog ZmFpbD0wCi1mb3IgZXhlIGluIGZpbmQgb2xkZmluZDsgZG8KLQotICAjIE5lZ2F0aXZlIHRl c3RzIGZpcnN0LiAgRXhwZWN0IHRoZSBvdXRwdXQgdG8gYmUgZW1wdHkuCi0gID4gZXhwCi0K LSAgIyBFbnN1cmUgZW1wdHkgdHlwZSBhcmd1bWVudHMgYXJlIHJlamVjdGVkLgotICByZXR1 cm5zXyAxICIke2V4ZX0iIGRpciAtbWluZGVwdGggMSAtdHlwZSAnJyA+IG91dCAyPiBlcnIg fHwgZmFpbD0xCi0gIGNvbXBhcmUgZXhwIG91dCB8fCBmYWlsPTEKLSAgZ3JlcCAnQXJndW1l bnRzIHRvIC10eXBlIHNob3VsZCBjb250YWluIGF0IGxlYXN0IG9uZSBsZXR0ZXInIGVyciBc Ci0gICAgfHwgeyBjYXQgZXJyOyBmYWlsPTE7IH0KLQotICByZXR1cm5zXyAxICIke2V4ZX0i IGRpciAtbWluZGVwdGggMSAteHR5cGUgJycgPiBvdXQgMj4gZXJyIHx8IGZhaWw9MQotICBj b21wYXJlIGV4cCBvdXQgfHwgZmFpbD0xCi0gIGdyZXAgJ0FyZ3VtZW50cyB0byAteHR5cGUg c2hvdWxkIGNvbnRhaW4gYXQgbGVhc3Qgb25lIGxldHRlcicgZXJyIFwKLSAgICB8fCB7IGNh dCBlcnI7IGZhaWw9MTsgfQotCi0gICMgRW5zdXJlIG5vbi1zZXBhcmF0ZWQgdHlwZSBhcmd1 bWVudHMgYXJlIHJlamVjdGVkLgotICByZXR1cm5zXyAxICIke2V4ZX0iIGRpciAtbWluZGVw dGggMSAtdHlwZSBmZCA+IG91dCAyPiBlcnIgfHwgZmFpbD0xCi0gIGNvbXBhcmUgZXhwIG91 dCB8fCBmYWlsPTEKLSAgZ3JlcCAnTXVzdCBzZXBhcmF0ZSBtdWx0aXBsZSBhcmd1bWVudHMg dG8gLXR5cGUnIGVyciBcCi0gICAgfHwgeyBjYXQgZXJyOyBmYWlsPTE7IH0KLQotICByZXR1 cm5zXyAxICIke2V4ZX0iIGRpciAtbWluZGVwdGggMSAteHR5cGUgZmQgPiBvdXQgMj4gZXJy IHx8IGZhaWw9MQotICBjb21wYXJlIGV4cCBvdXQgfHwgZmFpbD0xCi0gIGdyZXAgJ011c3Qg c2VwYXJhdGUgbXVsdGlwbGUgYXJndW1lbnRzIHRvIC14dHlwZScgZXJyIFwKLSAgICB8fCB7 IGNhdCBlcnI7IGZhaWw9MTsgfQotCi0gICMgRW5zdXJlIHVudGVybWluYXRlZCB0eXBlIGxp c3QgYXJndW1lbnRzIGFyZSByZWplY3RlZC4KLSAgcmV0dXJuc18gMSAiJHtleGV9IiBkaXIg LW1pbmRlcHRoIDEgLXR5cGUgZiwgPiBvdXQgMj4gZXJyIHx8IGZhaWw9MQotICBjb21wYXJl IGV4cCBvdXQgfHwgZmFpbD0xCi0gIGdyZXAgJ0xhc3QgZmlsZSB0eXBlIGluIGxpc3QgYXJn dW1lbnQgdG8gLXR5cGUgaXMgbWlzc2luZycgZXJyIFwKLSAgICB8fCAgeyBjYXQgZXJyOyBm YWlsPTE7IH0KLQotICByZXR1cm5zXyAxICIke2V4ZX0iIGRpciAtbWluZGVwdGggMSAteHR5 cGUgZiwgPiBvdXQgMj4gZXJyIHx8IGZhaWw9MQotICBjb21wYXJlIGV4cCBvdXQgfHwgZmFp bD0xCi0gIGdyZXAgJ0xhc3QgZmlsZSB0eXBlIGluIGxpc3QgYXJndW1lbnQgdG8gLXh0eXBl IGlzIG1pc3NpbmcnIGVyciBcCi0gICAgfHwgIHsgY2F0IGVycjsgZmFpbD0xOyB9Ci0KLSAg IyBFbnN1cmUgZHVwbGljYXRlIGVudHJpZXMgaW4gdGhlIHR5cGUgbGlzdCBhcmd1bWVudHMg YXJlIHJlamVjdGVkLgotICByZXR1cm5zXyAxICIke2V4ZX0iIGRpciAtbWluZGVwdGggMSAt dHlwZSBmLGYgPiBvdXQgMj4gZXJyIHx8IGZhaWw9MQotICBjb21wYXJlIGV4cCBvdXQgfHwg ZmFpbD0xCi0gIGdyZXAgJ0R1cGxpY2F0ZSBmaWxlIHR5cGUgLiogaW4gdGhlIGFyZ3VtZW50 IGxpc3QgdG8gLXR5cGUnIGVyciBcCi0gICAgfHwgIHsgY2F0IGVycjsgZmFpbD0xOyB9Ci0K LSAgcmV0dXJuc18gMSAiJHtleGV9IiBkaXIgLW1pbmRlcHRoIDEgLXh0eXBlIGYsZiA+IG91 dCAyPiBlcnIgfHwgZmFpbD0xCi0gIGNvbXBhcmUgZXhwIG91dCB8fCBmYWlsPTEKLSAgZ3Jl cCAnRHVwbGljYXRlIGZpbGUgdHlwZSAuKiBpbiB0aGUgYXJndW1lbnQgbGlzdCB0byAteHR5 cGUnIGVyciBcCi0gICAgfHwgIHsgY2F0IGVycjsgZmFpbD0xOyB9Ci0KLSAgIyBDb250aW51 ZSB3aXRoIHBvc2l0aXZlIHRlc3RzLgotICAjIEZpbGVzIG9ubHkKLSAgZ3JlcCAtZSAnL3Jl ZyQnIGFsbCA+IGV4cAotICAiJHtleGV9IiBkaXIgLXR5cGUgZiA+IG91dCB8fCBmYWlsPTEK KworIyBOZWdhdGl2ZSB0ZXN0cyBmaXJzdC4gIEV4cGVjdCB0aGUgb3V0cHV0IHRvIGJlIGVt cHR5LgorPiBleHAKKworIyBFbnN1cmUgZW1wdHkgdHlwZSBhcmd1bWVudHMgYXJlIHJlamVj dGVkLgorcmV0dXJuc18gMSBmaW5kIGRpciAtbWluZGVwdGggMSAtdHlwZSAnJyA+IG91dCAy PiBlcnIgfHwgZmFpbD0xCitjb21wYXJlIGV4cCBvdXQgfHwgZmFpbD0xCitncmVwICdBcmd1 bWVudHMgdG8gLXR5cGUgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3Qgb25lIGxldHRlcicgZXJy IFwKKyAgfHwgeyBjYXQgZXJyOyBmYWlsPTE7IH0KKworcmV0dXJuc18gMSBmaW5kIGRpciAt bWluZGVwdGggMSAteHR5cGUgJycgPiBvdXQgMj4gZXJyIHx8IGZhaWw9MQorY29tcGFyZSBl eHAgb3V0IHx8IGZhaWw9MQorZ3JlcCAnQXJndW1lbnRzIHRvIC14dHlwZSBzaG91bGQgY29u dGFpbiBhdCBsZWFzdCBvbmUgbGV0dGVyJyBlcnIgXAorICB8fCB7IGNhdCBlcnI7IGZhaWw9 MTsgfQorCisjIEVuc3VyZSBub24tc2VwYXJhdGVkIHR5cGUgYXJndW1lbnRzIGFyZSByZWpl Y3RlZC4KK3JldHVybnNfIDEgZmluZCBkaXIgLW1pbmRlcHRoIDEgLXR5cGUgZmQgPiBvdXQg Mj4gZXJyIHx8IGZhaWw9MQorY29tcGFyZSBleHAgb3V0IHx8IGZhaWw9MQorZ3JlcCAnTXVz dCBzZXBhcmF0ZSBtdWx0aXBsZSBhcmd1bWVudHMgdG8gLXR5cGUnIGVyciBcCisgIHx8IHsg Y2F0IGVycjsgZmFpbD0xOyB9CisKK3JldHVybnNfIDEgZmluZCBkaXIgLW1pbmRlcHRoIDEg LXh0eXBlIGZkID4gb3V0IDI+IGVyciB8fCBmYWlsPTEKK2NvbXBhcmUgZXhwIG91dCB8fCBm YWlsPTEKK2dyZXAgJ011c3Qgc2VwYXJhdGUgbXVsdGlwbGUgYXJndW1lbnRzIHRvIC14dHlw ZScgZXJyIFwKKyAgfHwgeyBjYXQgZXJyOyBmYWlsPTE7IH0KKworIyBFbnN1cmUgdW50ZXJt aW5hdGVkIHR5cGUgbGlzdCBhcmd1bWVudHMgYXJlIHJlamVjdGVkLgorcmV0dXJuc18gMSBm aW5kIGRpciAtbWluZGVwdGggMSAtdHlwZSBmLCA+IG91dCAyPiBlcnIgfHwgZmFpbD0xCitj b21wYXJlIGV4cCBvdXQgfHwgZmFpbD0xCitncmVwICdMYXN0IGZpbGUgdHlwZSBpbiBsaXN0 IGFyZ3VtZW50IHRvIC10eXBlIGlzIG1pc3NpbmcnIGVyciBcCisgIHx8ICB7IGNhdCBlcnI7 IGZhaWw9MTsgfQorCityZXR1cm5zXyAxIGZpbmQgZGlyIC1taW5kZXB0aCAxIC14dHlwZSBm LCA+IG91dCAyPiBlcnIgfHwgZmFpbD0xCitjb21wYXJlIGV4cCBvdXQgfHwgZmFpbD0xCitn cmVwICdMYXN0IGZpbGUgdHlwZSBpbiBsaXN0IGFyZ3VtZW50IHRvIC14dHlwZSBpcyBtaXNz aW5nJyBlcnIgXAorICB8fCAgeyBjYXQgZXJyOyBmYWlsPTE7IH0KKworIyBFbnN1cmUgZHVw bGljYXRlIGVudHJpZXMgaW4gdGhlIHR5cGUgbGlzdCBhcmd1bWVudHMgYXJlIHJlamVjdGVk LgorcmV0dXJuc18gMSBmaW5kIGRpciAtbWluZGVwdGggMSAtdHlwZSBmLGYgPiBvdXQgMj4g ZXJyIHx8IGZhaWw9MQorY29tcGFyZSBleHAgb3V0IHx8IGZhaWw9MQorZ3JlcCAnRHVwbGlj YXRlIGZpbGUgdHlwZSAuKiBpbiB0aGUgYXJndW1lbnQgbGlzdCB0byAtdHlwZScgZXJyIFwK KyAgfHwgIHsgY2F0IGVycjsgZmFpbD0xOyB9CisKK3JldHVybnNfIDEgZmluZCBkaXIgLW1p bmRlcHRoIDEgLXh0eXBlIGYsZiA+IG91dCAyPiBlcnIgfHwgZmFpbD0xCitjb21wYXJlIGV4 cCBvdXQgfHwgZmFpbD0xCitncmVwICdEdXBsaWNhdGUgZmlsZSB0eXBlIC4qIGluIHRoZSBh cmd1bWVudCBsaXN0IHRvIC14dHlwZScgZXJyIFwKKyAgfHwgIHsgY2F0IGVycjsgZmFpbD0x OyB9CisKKyMgQ29udGludWUgd2l0aCBwb3NpdGl2ZSB0ZXN0cy4KKyMgRmlsZXMgb25seQor Z3JlcCAtZSAnL3JlZyQnIGFsbCA+IGV4cAorZmluZCBkaXIgLXR5cGUgZiA+IG91dCB8fCBm YWlsPTEKK3NvcnQgLW8gb3V0IG91dAorY29tcGFyZSBleHAgb3V0IHx8IGZhaWw9MTsKKwor IyBTeW1ib2xpYyBsaW5rcyBvbmx5LgoraWYgWyAkSEFWRV9MSU5LID0gMSBdOyB0aGVuCisg IGdyZXAgLWUgJ2xpbmskJyBhbGwgPiBleHAKKyAgZmluZCBkaXIgLXR5cGUgbCA+IG91dCB8 fCBmYWlsPTEKICAgc29ydCAtbyBvdXQgb3V0CiAgIGNvbXBhcmUgZXhwIG91dCB8fCBmYWls PTE7CiAKLSAgIyBTeW1ib2xpYyBsaW5rcyBvbmx5LgotICBpZiBbICRIQVZFX0xJTksgPSAx IF07IHRoZW4KLQotICAgIGdyZXAgLWUgJ2xpbmskJyBhbGwgPiBleHAKLSAgICAiJHtleGV9 IiBkaXIgLXR5cGUgbCA+IG91dCB8fCBmYWlsPTEKLSAgICBzb3J0IC1vIG91dCBvdXQKLSAg ICBjb21wYXJlIGV4cCBvdXQgfHwgZmFpbD0xOwotCi0gICAgZ3JlcCAtZSAnZGFuZ2xpbmct bGluayQnIGFsbCA+IGV4cAotICAgICIke2V4ZX0iIGRpciAteHR5cGUgbCA+IG91dCB8fCBm YWlsPTEKLSAgICBzb3J0IC1vIG91dCBvdXQKLSAgICBjb21wYXJlIGV4cCBvdXQgfHwgZmFp bD0xOwotICBmaQotCi0gICMgRmlsZXMgYW5kIGRpcmVjdG9yaWVzLgotICBncmVwIC1lICcv cmVnJCcgLWUgJy9kaXIkJyBhbGwgPiBleHAKLSAgIiR7ZXhlfSIgZGlyIC1taW5kZXB0aCAx IC10eXBlIGYsZCA+IG91dCB8fCBmYWlsPTEKKyAgZ3JlcCAtZSAnZGFuZ2xpbmctbGluayQn IGFsbCA+IGV4cAorICBmaW5kIGRpciAteHR5cGUgbCA+IG91dCB8fCBmYWlsPTEKICAgc29y dCAtbyBvdXQgb3V0CiAgIGNvbXBhcmUgZXhwIG91dCB8fCBmYWlsPTE7Ci0KLSAgZ3JlcCAt ZSAnL3JlZycgLWUgJy9kaXInIGFsbCA+IGV4cAotICAiJHtleGV9IiBkaXIgLW1pbmRlcHRo IDEgLXh0eXBlIGYsZCA+IG91dCB8fCBmYWlsPTEKK2ZpCisKKyMgRmlsZXMgYW5kIGRpcmVj dG9yaWVzLgorZ3JlcCAtZSAnL3JlZyQnIC1lICcvZGlyJCcgYWxsID4gZXhwCitmaW5kIGRp ciAtbWluZGVwdGggMSAtdHlwZSBmLGQgPiBvdXQgfHwgZmFpbD0xCitzb3J0IC1vIG91dCBv dXQKK2NvbXBhcmUgZXhwIG91dCB8fCBmYWlsPTE7CisKK2dyZXAgLWUgJy9yZWcnIC1lICcv ZGlyJyBhbGwgPiBleHAKK2ZpbmQgZGlyIC1taW5kZXB0aCAxIC14dHlwZSBmLGQgPiBvdXQg fHwgZmFpbD0xCitzb3J0IC1vIG91dCBvdXQKK2NvbXBhcmUgZXhwIG91dCB8fCBmYWlsPTE7 CisKKyMgQmxvY2sgZGV2aWNlcy4KK2dyZXAgLWUgJy9yZWckJyAtZSAnL2RpciQnIC1lICcv YmxrJCcgYWxsID4gZXhwCitmaW5kIGRpciAtbWluZGVwdGggMSAtdHlwZSBiLGYsZCA+IG91 dCB8fCBmYWlsPTEKK3NvcnQgLW8gb3V0IG91dAorY29tcGFyZSBleHAgb3V0IHx8IGZhaWw9 MTsKKworZ3JlcCAtZSAnL3JlZycgLWUgJy9kaXInIC1lICcvYmxrJyBhbGwgPiBleHAKK2Zp bmQgZGlyIC1taW5kZXB0aCAxIC14dHlwZSBiLGYsZCA+IG91dCB8fCBmYWlsPTEKK3NvcnQg LW8gb3V0IG91dAorY29tcGFyZSBleHAgb3V0IHx8IGZhaWw9MTsKKworIyBDaGFyYWN0ZXIg ZGV2aWNlcy4KK2dyZXAgLWUgJy9yZWckJyAtZSAnL2RpciQnIC1lICcvY2hyJCcgYWxsID4g ZXhwCitmaW5kIGRpciAtbWluZGVwdGggMSAtdHlwZSBmLGMsZCA+IG91dCB8fCBmYWlsPTEK K3NvcnQgLW8gb3V0IG91dAorY29tcGFyZSBleHAgb3V0IHx8IGZhaWw9MTsKKworZ3JlcCAt ZSAnL3JlZycgLWUgJy9kaXInIC1lICcvY2hyJyBhbGwgPiBleHAKK2ZpbmQgZGlyIC1taW5k ZXB0aCAxIC14dHlwZSBmLGMsZCA+IG91dCB8fCBmYWlsPTEKK3NvcnQgLW8gb3V0IG91dAor Y29tcGFyZSBleHAgb3V0IHx8IGZhaWw9MTsKKworIyBGSUZPcy4KK2lmIFsgJEhBVkVfRklG TyA9IDEgXTsgdGhlbgorICBncmVwIC1lICcvcmVnJCcgLWUgJy9kaXIkJyAtZSAnL2ZpZm8k JyBhbGwgPiBleHAKKyAgZmluZCBkaXIgLW1pbmRlcHRoIDEgLXR5cGUgZixkLHAgPiBvdXQg fHwgZmFpbD0xCiAgIHNvcnQgLW8gb3V0IG91dAogICBjb21wYXJlIGV4cCBvdXQgfHwgZmFp bD0xOwogCi0gICMgQmxvY2sgZGV2aWNlcy4KLSAgZ3JlcCAtZSAnL3JlZyQnIC1lICcvZGly JCcgLWUgJy9ibGskJyBhbGwgPiBleHAKLSAgIiR7ZXhlfSIgZGlyIC1taW5kZXB0aCAxIC10 eXBlIGIsZixkID4gb3V0IHx8IGZhaWw9MQorICBncmVwIC1lICcvcmVnJyAtZSAnL2Rpcicg LWUgJy9maWZvJyBhbGwgPiBleHAKKyAgZmluZCBkaXIgLW1pbmRlcHRoIDEgLXh0eXBlIGYs ZCxwID4gb3V0IHx8IGZhaWw9MQogICBzb3J0IC1vIG91dCBvdXQKICAgY29tcGFyZSBleHAg b3V0IHx8IGZhaWw9MTsKK2ZpCiAKLSAgZ3JlcCAtZSAnL3JlZycgLWUgJy9kaXInIC1lICcv YmxrJyBhbGwgPiBleHAKLSAgIiR7ZXhlfSIgZGlyIC1taW5kZXB0aCAxIC14dHlwZSBiLGYs ZCA+IG91dCB8fCBmYWlsPTEKKyMgU29ja2V0cy4KK2lmIFsgJEhBVkVfU09DSyA9IDEgXTsg dGhlbgorICBncmVwIC1lICcvcmVnJCcgLWUgJy9kaXIkJyAtZSAnL3NvY2skJyBhbGwgPiBl eHAKKyAgZmluZCBkaXIgLW1pbmRlcHRoIDEgLXR5cGUgZixkLHMgPiBvdXQgfHwgZmFpbD0x CiAgIHNvcnQgLW8gb3V0IG91dAogICBjb21wYXJlIGV4cCBvdXQgfHwgZmFpbD0xOwogCi0g ICMgQ2hhcmFjdGVyIGRldmljZXMuCi0gIGdyZXAgLWUgJy9yZWckJyAtZSAnL2RpciQnIC1l ICcvY2hyJCcgYWxsID4gZXhwCi0gICIke2V4ZX0iIGRpciAtbWluZGVwdGggMSAtdHlwZSBm LGMsZCA+IG91dCB8fCBmYWlsPTEKKyAgZ3JlcCAtZSAnL3JlZycgLWUgJy9kaXInIC1lICcv c29jaycgYWxsID4gZXhwCisgIGZpbmQgZGlyIC1taW5kZXB0aCAxIC14dHlwZSBmLGQscyA+ IG91dCB8fCBmYWlsPTEKICAgc29ydCAtbyBvdXQgb3V0CiAgIGNvbXBhcmUgZXhwIG91dCB8 fCBmYWlsPTE7CitmaQogCi0gIGdyZXAgLWUgJy9yZWcnIC1lICcvZGlyJyAtZSAnL2Nocicg YWxsID4gZXhwCi0gICIke2V4ZX0iIGRpciAtbWluZGVwdGggMSAteHR5cGUgZixjLGQgPiBv dXQgfHwgZmFpbD0xCisjIFN5bWJvbGljIGxpbmtzLgoraWYgWyAkSEFWRV9MSU5LID0gMSBd OyB0aGVuCisgIGdyZXAgLWUgJy9yZWckJyAtZSAnbGluayQnIGFsbCA+IGV4cAorICBmaW5k IGRpciAtbWluZGVwdGggMSAtdHlwZSBmLGwgPiBvdXQgfHwgZmFpbD0xCiAgIHNvcnQgLW8g b3V0IG91dAogICBjb21wYXJlIGV4cCBvdXQgfHwgZmFpbD0xOwogCi0gICMgRklGT3MuCi0g IGlmIFsgJEhBVkVfRklGTyA9IDEgXTsgdGhlbgotICAgIGdyZXAgLWUgJy9yZWckJyAtZSAn L2RpciQnIC1lICcvZmlmbyQnIGFsbCA+IGV4cAotICAgICIke2V4ZX0iIGRpciAtbWluZGVw dGggMSAtdHlwZSBmLGQscCA+IG91dCB8fCBmYWlsPTEKLSAgICBzb3J0IC1vIG91dCBvdXQK LSAgICBjb21wYXJlIGV4cCBvdXQgfHwgZmFpbD0xOwotCi0gICAgZ3JlcCAtZSAnL3JlZycg LWUgJy9kaXInIC1lICcvZmlmbycgYWxsID4gZXhwCi0gICAgIiR7ZXhlfSIgZGlyIC1taW5k ZXB0aCAxIC14dHlwZSBmLGQscCA+IG91dCB8fCBmYWlsPTEKLSAgICBzb3J0IC1vIG91dCBv dXQKLSAgICBjb21wYXJlIGV4cCBvdXQgfHwgZmFpbD0xOwotICBmaQotCi0gICMgU29ja2V0 cy4KLSAgaWYgWyAkSEFWRV9TT0NLID0gMSBdOyB0aGVuCi0gICAgZ3JlcCAtZSAnL3JlZyQn IC1lICcvZGlyJCcgLWUgJy9zb2NrJCcgYWxsID4gZXhwCi0gICAgIiR7ZXhlfSIgZGlyIC1t aW5kZXB0aCAxIC10eXBlIGYsZCxzID4gb3V0IHx8IGZhaWw9MQotICAgIHNvcnQgLW8gb3V0 IG91dAotICAgIGNvbXBhcmUgZXhwIG91dCB8fCBmYWlsPTE7Ci0KLSAgICBncmVwIC1lICcv cmVnJyAtZSAnL2RpcicgLWUgJy9zb2NrJyBhbGwgPiBleHAKLSAgICAiJHtleGV9IiBkaXIg LW1pbmRlcHRoIDEgLXh0eXBlIGYsZCxzID4gb3V0IHx8IGZhaWw9MQotICAgIHNvcnQgLW8g b3V0IG91dAotICAgIGNvbXBhcmUgZXhwIG91dCB8fCBmYWlsPTE7Ci0gIGZpCi0KLSAgIyBT eW1ib2xpYyBsaW5rcy4KLSAgaWYgWyAkSEFWRV9MSU5LID0gMSBdOyB0aGVuCi0KLSAgICBn cmVwIC1lICcvcmVnJCcgLWUgJ2xpbmskJyBhbGwgPiBleHAKLSAgICAiJHtleGV9IiBkaXIg LW1pbmRlcHRoIDEgLXR5cGUgZixsID4gb3V0IHx8IGZhaWw9MQotICAgIHNvcnQgLW8gb3V0 IG91dAotICAgIGNvbXBhcmUgZXhwIG91dCB8fCBmYWlsPTE7Ci0KLSAgICBncmVwIC1lICcv cmVnJyAtZSAnZGFuZ2xpbmctbGluayQnIGFsbCA+IGV4cAotICAgICIke2V4ZX0iIGRpciAt bWluZGVwdGggMSAteHR5cGUgZixsID4gb3V0IHx8IGZhaWw9MQotICAgIHNvcnQgLW8gb3V0 IG91dAotICAgIGNvbXBhcmUgZXhwIG91dCB8fCBmYWlsPTE7Ci0gIGZpCi0KLSAgIyAteHR5 cGU6IGFsbCBidXQgdGhlIGRhbmdsaW5nIHN5bWxpbmsuCi0gIHQ9J2YsZCxiLGMnCi0gIFsg JEhBVkVfRklGTyA9IDEgXSAmJiB0PSIkdCxwIgotICBbICRIQVZFX1NPQ0sgPSAxIF0gJiYg dD0iJHQscyIKLSAgWyAkSEFWRV9ET09SID0gMSBdICYmIHQ9IiR0LEQiCi0gIGdyZXAgLXYg J2RhbmdsaW5nLWxpbmskJyBhbGwgPiBleHAKLSAgIiR7ZXhlfSIgZGlyIC1taW5kZXB0aCAx IC14dHlwZSAiJHQiID4gb3V0IHx8IGZhaWw9MQorICBncmVwIC1lICcvcmVnJyAtZSAnZGFu Z2xpbmctbGluayQnIGFsbCA+IGV4cAorICBmaW5kIGRpciAtbWluZGVwdGggMSAteHR5cGUg ZixsID4gb3V0IHx8IGZhaWw9MQogICBzb3J0IC1vIG91dCBvdXQKICAgY29tcGFyZSBleHAg b3V0IHx8IGZhaWw9MTsKLQotICAjIG5lZ2F0aW9uCi0gIGlmIFsgJEhBVkVfTElOSyA9IDEg XTsgdGhlbgotICAgICIke2V4ZX0iIGRpciAtbWluZGVwdGggMSAtbm90IC14dHlwZSBsID4g b3V0IHx8IGZhaWw9MQotICAgIHNvcnQgLW8gb3V0IG91dAotICAgIGNvbXBhcmUgZXhwIG91 dCB8fCBmYWlsPTE7Ci0gIGZpCi0KLSAgIyBGaW5hbGx5OiBmdWxsIGxpc3QKLSAgWyAkSEFW RV9MSU5LID0gMSBdICYmIHQ9IiR0LGwiCi0gICIke2V4ZX0iIGRpciAtbWluZGVwdGggMSAt dHlwZSAiJHQiID4gb3V0IHx8IGZhaWw9MQorZmkKKworIyAteHR5cGU6IGFsbCBidXQgdGhl IGRhbmdsaW5nIHN5bWxpbmsuCit0PSdmLGQsYixjJworWyAkSEFWRV9GSUZPID0gMSBdICYm IHQ9IiR0LHAiCitbICRIQVZFX1NPQ0sgPSAxIF0gJiYgdD0iJHQscyIKK1sgJEhBVkVfRE9P UiA9IDEgXSAmJiB0PSIkdCxEIgorZ3JlcCAtdiAnZGFuZ2xpbmctbGluayQnIGFsbCA+IGV4 cAorZmluZCBkaXIgLW1pbmRlcHRoIDEgLXh0eXBlICIkdCIgPiBvdXQgfHwgZmFpbD0xCitz b3J0IC1vIG91dCBvdXQKK2NvbXBhcmUgZXhwIG91dCB8fCBmYWlsPTE7CisKKyMgbmVnYXRp b24KK2lmIFsgJEhBVkVfTElOSyA9IDEgXTsgdGhlbgorICBmaW5kIGRpciAtbWluZGVwdGgg MSAtbm90IC14dHlwZSBsID4gb3V0IHx8IGZhaWw9MQogICBzb3J0IC1vIG91dCBvdXQKLSAg Y29tcGFyZSBhbGwgb3V0IHx8IGZhaWw9MTsKKyAgY29tcGFyZSBleHAgb3V0IHx8IGZhaWw9 MTsKK2ZpCiAKLSAgIiR7ZXhlfSIgZGlyIC1taW5kZXB0aCAxIC14dHlwZSAiJHQiID4gb3V0 IHx8IGZhaWw9MQotICBzb3J0IC1vIG91dCBvdXQKLSAgY29tcGFyZSBhbGwgb3V0IHx8IGZh aWw9MTsKLWRvbmUKKyMgRmluYWxseTogZnVsbCBsaXN0CitbICRIQVZFX0xJTksgPSAxIF0g JiYgdD0iJHQsbCIKK2ZpbmQgZGlyIC1taW5kZXB0aCAxIC10eXBlICIkdCIgPiBvdXQgfHwg ZmFpbD0xCitzb3J0IC1vIG91dCBvdXQKK2NvbXBhcmUgYWxsIG91dCB8fCBmYWlsPTE7CisK K2ZpbmQgZGlyIC1taW5kZXB0aCAxIC14dHlwZSAiJHQiID4gb3V0IHx8IGZhaWw9MQorc29y dCAtbyBvdXQgb3V0Citjb21wYXJlIGFsbCBvdXQgfHwgZmFpbD0xOwogCiBFeGl0ICRmYWls CmRpZmYgLS1naXQgYS90ZXN0cy9sb2NhbC5tayBiL3Rlc3RzL2xvY2FsLm1rCmluZGV4IDVi NWEwZTY0Li4xN2VmYzU5MSAxMDA2NDQKLS0tIGEvdGVzdHMvbG9jYWwubWsKKysrIGIvdGVz dHMvbG9jYWwubWsKQEAgLTE1LDcgKzE1LDcgQEAKICMjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAjIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCiAKLWJ1aWx0X3Byb2dyYW1zID0gZmluZCBvbGRmaW5kIHhhcmdzIGZy Y29kZSBsb2NhdGUgdXBkYXRlZGIKK2J1aWx0X3Byb2dyYW1zID0gZmluZCB4YXJncyBmcmNv ZGUgbG9jYXRlIHVwZGF0ZWRiCiAKICMgSW5kaXJlY3Rpb25zIHJlcXVpcmVkIHNvIHRoYXQg d2UnbGwgc3RpbGwgYmUgYWJsZSB0byBrbm93IHRoZQogIyBjb21wbGV0ZSBsaXN0IG9mIG91 ciB0ZXN0cyBldmVuIGlmIHRoZSB1c2VyIG92ZXJyaWRlcyBURVNUUwotLSAKMi4zMy4wCgo= --------------0fmKUWCT07Te08ZgHF3W5Zpn-- From MAILER-DAEMON Thu Sep 23 12:58:12 2021 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1mTS32-0004Ck-3L for mharc-bug-findutils@gnu.org; Thu, 23 Sep 2021 12:58:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39470) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mTS2z-0004BC-2G for bug-findutils@gnu.org; Thu, 23 Sep 2021 12:58:09 -0400 Received: from mail-lj1-f174.google.com ([209.85.208.174]:36723) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mTS2w-0003Kd-UO for bug-findutils@gnu.org; Thu, 23 Sep 2021 12:58:08 -0400 Received: by mail-lj1-f174.google.com with SMTP id a20so509333ljq.3 for ; Thu, 23 Sep 2021 09:58:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=0vqiOehSko8Slc5uAnqGx6dUcUNvWC/NxgvQKONg6pc=; b=qwwCrJkTwjzcNXSvPFhiuKvSudfSROSQ3tfGZYRGPA3ji/DECEfXOOEdcUkEH7+efI 8ja1UGkPvnKZo/fCJHxkoPW24uvazbO/646/eaPd/L2vN38beWrYp8cncmnmtQztF1cb L9ifMxJCn9aWy3pk2Vsjwykwy7VYmtYPvEJlt6rODp7yhcTypBmQqUMij4Zx/MlnCV3X jhjGnaSbpfZU7mbTeUo2rIi8OpOlbICbC2Y1fZg846bcAgodNtc6+GltL7roVzpNd3iT rzyLMriZmaAiVs7vpuZIvvLWF5GGDxJwKNt4FIej/kS5F7BnPn8rfdTVXTQnVM20/A5E GGrg== X-Gm-Message-State: AOAM533w1tSV1J8oFyoyqAMdnQFi+bUBZY0fjeojBaD3qSGCBBiU0aV8 cX+J7wgnNwwv5wIOoY1hV89V2kwfGiL6RsadA6EmQw== X-Google-Smtp-Source: ABdhPJwyEdQjm18+nkE3GI2e8DBemLlDpOvwB6yH3q62jfRg3268akgPPhVB1BlJxXneGv4EDTt/nwa3MPcl2r5tquY= X-Received: by 2002:a05:651c:1546:: with SMTP id y6mr6275866ljp.53.1632416282958; Thu, 23 Sep 2021 09:58:02 -0700 (PDT) MIME-Version: 1.0 References: <6703062e-bb71-d293-60ce-88661a965fae@bernhard-voelker.de> In-Reply-To: <6703062e-bb71-d293-60ce-88661a965fae@bernhard-voelker.de> From: James Youngman Date: Thu, 23 Sep 2021 17:57:51 +0100 Message-ID: Subject: Re: RFC: remove 'oldfind'? To: Bernhard Voelker Cc: "bug-findutils@gnu.org" , findutils-patches Content-Type: text/plain; charset="UTF-8" Received-SPF: none client-ip=209.85.208.174; envelope-from=james@youngman.org; helo=mail-lj1-f174.google.com X-Spam_score_int: 2 X-Spam_score: 0.2 X-Spam_bar: / X-Spam_report: (0.2 / 5.0 requ) HEADER_FROM_DIFFERENT_DOMAINS=0.248, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: bug-findutils@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports for the GNU find utilities List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Sep 2021 16:58:09 -0000 I think this makes sense. I cannot remember the last time a bug was identified via a disparity between ftsfind and oldfind. On Mon, Sep 20, 2021 at 12:33 AM Bernhard Voelker wrote: > > The FTS-based find is the default for a long time; oldfind has not been > installed since 4.5.18 (2015), and was only just used in tests. > > Any objection to remove 'oldfind'? > > Have a nice day, > Berny From MAILER-DAEMON Wed Sep 29 12:17:27 2021 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1mVcGt-0005c4-Na for mharc-bug-findutils@gnu.org; Wed, 29 Sep 2021 12:17:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59894) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVcGi-0005Zu-Uu; Wed, 29 Sep 2021 12:17:18 -0400 Received: from mout.kundenserver.de ([217.72.192.75]:47927) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVcGd-0001OL-Ts; Wed, 29 Sep 2021 12:17:16 -0400 Received: from [10.0.2.16] ([51.37.167.197]) by mrelayeu.kundenserver.de (mreue107 [213.165.67.113]) with ESMTPSA (Nemesis) id 1MAgMY-1mgete0jpQ-00B56a; Wed, 29 Sep 2021 18:17:06 +0200 Message-ID: Date: Wed, 29 Sep 2021 18:17:05 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.1 Subject: Re: RFC: remove 'oldfind'? Content-Language: en-US To: James Youngman Cc: "bug-findutils@gnu.org" , findutils-patches References: <6703062e-bb71-d293-60ce-88661a965fae@bernhard-voelker.de> From: Bernhard Voelker In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:5R5LMamBUGoXzHAgJRm7Qo54GapLJp7K2NEsp+ddyucbE0m5qTD Gmh5zzqNTWH4ex2ZaNi6OFNNpVOut6Fc/vMKvoWRTLxezHFjkU7X2/Go8WF/IfPZrq3VJBp vVLkVnQknUAkF09bEawz7E9XLUH5wrAospgAscmqdCQs+jzgEJYgYNQUnoXZJZIbVz/Vg0f 2dNzQwey39+XG6VnW8cdw== X-UI-Out-Filterresults: notjunk:1;V03:K0:jHrraoe1+No=:1Kb0DZleYPG0IesgVKMBHF k+ioZ1PmplAHML4mgHg/c7BSxyL6xeEAl50ARy4iduQMb2/WJfynp9BaODuNJxNFgLJEShpEs 6xz1RQrooBsEyzWSPiBoyPnkiS9LyoQymgBKZBjo0PK50OWXBJkURuV8fgclwKkAD2NkYfz8D UcUAHfWi7tlop9rMStgzfS7CPPo3/00rjnvQE0ML8F1yhx416c319TQEO6OJ9BpM1vSKdvyLJ O5ggSXl8tLtdlFM3KOvbeMt8KNLgOF3zvAyvH8kqoBfxrBgNOOP8MYNILIoxQFllUO/FkLhaW ykIUJhpgEcn3n8dhMPKbKuqaiGOD0KRc4v++KIId0AI1PKXu1VXpeyurhzQej3Zz8ZAtRG4L4 K4IEHGt1bfe94p/Mq+A6DD+tqz5rwREEa0Ixtx0DT0p7Fx/1+RAevX0pFTsYWVrQw/ZPR7jZ0 A7lXtovPlEbd+mR83bC5zQWF/EtWiv0/+lC5lyWFzE6/SK5b6068k0klhiz4STeETt2NuskcF 6/4DUTOKh/NNH7mqvQjYezcTRdU+3YdbM42Ph5IjLN5HuV+adt6yPsl24q9Xfb4WOwy0ZtXg4 4P8Y0XbJ15u8J/yWzaFuBOLZZKIf96RKzvEhCxgx8fYGzhZ6dQTEfrOcE7GkDUEaK5ZCpe2VJ VGxAxLYxirvEFWuNADu3zlvQ/OLa9WYX1Aeo5yDAWoNA8X/DBYyf0DmfR52CBVCGs0Y5260em cwgdHL/b4YxIeSXfEy9ChxvVQUz8+886kjeWUMW8kDkbT2zY8C9RmHkZqBM= Received-SPF: none client-ip=217.72.192.75; envelope-from=mail@bernhard-voelker.de; helo=mout.kundenserver.de X-Spam_score_int: -48 X-Spam_score: -4.9 X-Spam_bar: ---- X-Spam_report: (-4.9 / 5.0 requ) BAYES_00=-1.9, NICE_REPLY_A=-3.03, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: bug-findutils@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports for the GNU find utilities List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Sep 2021 16:17:21 -0000 On 9/23/21 18:57, James Youngman wrote: > I think this makes sense. Thanks, pushed at: https://git.sv.gnu.org/cgit/findutils.git/commit/?id=5768a03ddf Have a nice day, Berny