bug#77805: new snapshot available: m4-1.4.19.60-6ebfc.tar.xz
Karl Berry <[email protected]> Tue, 20 May 2025 10:17:35 -0600
| Newsgroups | gmane.comp.sysutils.automake.bugs |
|---|---|
| Message-ID | <[email protected]> |
--NAFOtzu6wf
Content-Type: text/plain; charset=us-ascii
Content-Description: message body text
Content-Transfer-Encoding: 7bit
The Solaris failure is because their date does not support the '--date'
or '-r' option.
As far as I can tell, the date command on Solaris 10 (cfarm210) and 11
(cfarm211) does not support any way to print a specified date value. So
I inserted a fallback to perl -e 'print scalar
gmtime($SOURCE_DATE_EPOCH)' if the date commands fail.
If Perl isn't available either, mdate-sh gives a warning and falls back
to using the mtime of the given file.
I don't mind just ignorning that platform.
Not supporting gnulib-tool is one thing, but a lot of people still build
and use Solaris 10. We still get bug reports for Automake from people
running it there. Might as well keep mdate-sh working there, since it
was easy to do.
Below is the important part of the patch, and the new file.
I also threw in a warning if more than one file is specified on the
command line, instead of silently ignoring anything after the first.
Hopefully no one's build actually passes multiple files.
Anyway ... closing this bug, with fingers crossed. This was the last
change I intended to make before the release. Just have to finalize the
Algol 68 naming. --thanks, karl.
--- a/lib/mdate-sh
+++ b/lib/mdate-sh
@@ -61,12 +66,35 @@ EOF
;;
esac
+# Warn if more than one file given.
+if test $# -ne 1; then
+ echo "$0: warning: multiple files given, using first: $*" >&2
+fi
+
error ()
{
echo "$0: $1" >&2
exit 1
}
+# set $month ("January") and $nummonth (1) given arg MON ("Jan").
+mon_to_month ()
+{
+ case $1 in
+ Jan) month=January; nummonth=1;;
+ Feb) month=February; nummonth=2;;
+ Mar) month=March; nummonth=3;;
+ Apr) month=April; nummonth=4;;
+ May) month=May; nummonth=5;;
+ Jun) month=June; nummonth=6;;
+ Jul) month=July; nummonth=7;;
+ Aug) month=August; nummonth=8;;
+ Sep) month=September; nummonth=9;;
+ Oct) month=October; nummonth=10;;
+ Nov) month=November; nummonth=11;;
+ Dec) month=December; nummonth=12;;
+ esac
+}
# Prevent date giving response in another language.
LANG=C
@@ -80,6 +108,56 @@ export LC_TIME
TZ=UTC0
export TZ
+#
+# https://reproducible-builds.org/docs/source-date-epoch/
+if test -n "$SOURCE_DATE_EPOCH"; then
+ epoch_ok=true # be optimistic
+ date_fmt="+%d %B %Y"
+ result=`date -u --date="@$SOURCE_DATE_EPOCH" "$date_fmt" 2>/dev/null`
+ if test -z "$result"; then
+ result=`date -u -r "$SOURCE_DATE_EPOCH" "$date_fmt" 2>/dev/null`
+ if test -z "$result"; then
+ # The date command on Solaris 10 and 11 doesn't support any way
+ # to do this. Fall back to Perl.
+ #
+ perlout=`perl -e 'print scalar gmtime($SOURCE_DATE_EPOCH)' 2>/dev/null`
+ # Output is, e.g., Thu Jan 1 00:00:00 1970. Split it apart,
+ # since we need to convert "Jan" to "January".
+ # (We could use cut, but surely if a system has perl, it has awk?)
+ day=`echo $perlout | awk '{print $3}'`
+ mon=`echo $perlout | awk '{print $2}'`
+ mon_to_month $mon # sets $month
+ year=`echo $perlout | awk '{print $5}'`
+ result="$day $month $year"
+ #
+ if test -z "$result"; then
+ echo "$0: warning: SOURCE_DATE_EPOCH was set, but can't convert, ignoring: $SOURCE_DATE_EPOCH" >&2
+ epoch_ok=false
+ fi
+ fi
+ fi
+ #
+ if $epoch_ok; then
+ # Remove leading spaces and zeros. We don't want to get into the
+ # various date options to control this. (Not quoting $result here
+ # isn't important, just another way to omit leading spaces.)
+ result=`echo $result | sed 's/^[ 0]*//'`
+ if test -z "$result"; then
+ echo "$0: SOURCE_DATE_EPOCH was set, but converted to empty: $SOURCE_DATE_EPOCH" >&2
+ epoch_ok=false
+ fi
+ fi
+ if $epoch_ok; then
+ echo $result
+ exit 0
+ else
+ echo "$0: SOURCE_DATE_EPOCH failed, falling back to using mtime on: $1" >&2
+ fi
+fi
+# end of SOURCE_DATE_EPOCH support, rest is about the normal case of
+# using the mtime of the specified file.
+
+#
# GNU ls changes its time format in response to the TIME_STYLE
# variable. Since we cannot assume 'unset' works, revert this
# variable to its documented default.
--NAFOtzu6wf
Content-Type: application/octet-stream
Content-Disposition: attachment;
filename="mdate-sh"
Content-Transfer-Encoding: base64
IyEvYmluL3NoCiMgR2V0IG1vZGlmaWNhdGlvbiB0aW1lIG9mIGEgZmlsZSBvciBkaXJlY3Rv
cnksIG9yIHZhbHVlIG9mCiMgJFNPVVJDRV9EQVRFX0VQT0NILCBhbmQgcHJldHR5LXByaW50
IGl0LCBmb3JtYXR0ZWQgbGlrZSAxIEphbnVhcnkgMjAwMC4KCnNjcmlwdHZlcnNpb249MjAy
NS0wNS0yMS4wMTsgIyBVVEMKCiMgQ29weXJpZ2h0IChDKSAxOTk1LTIwMjUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiMgd3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJl
cHBlckBnbnUuYWkubWl0LmVkdT4sIEp1bmUgMTk5NQojCiMgVGhpcyBwcm9ncmFtIGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2
ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKIyBhbnkgbGF0ZXIgdmVyc2lvbi4KIwoj
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGgg
dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5z
ZXMvPi4KCiMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UsIGlmIHlvdQojIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2Yg
YSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQojIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVy
YXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCiMgdGhlIHNhbWUg
ZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBw
cm9ncmFtLgoKIyBUaGlzIGZpbGUgaXMgbWFpbnRhaW5lZCBpbiBBdXRvbWFrZSwgcGxlYXNl
IHJlcG9ydAojIGJ1Z3MgdG8gPGJ1Zy1hdXRvbWFrZUBnbnUub3JnPiBvciBzZW5kIHBhdGNo
ZXMgdG8KIyA8YXV0b21ha2UtcGF0Y2hlc0BnbnUub3JnPi4KCmlmIHRlc3QgLW4gIiR7WlNI
X1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgog
IGVtdWxhdGUgc2gKICBOVUxMQ01EPToKICAjIFByZS00LjIgdmVyc2lvbnMgb2YgWnNoIGRv
IHdvcmQgc3BsaXR0aW5nIG9uICR7MSsiJEAifSwgd2hpY2gKICAjIGlzIGNvbnRyYXJ5IHRv
IG91ciB1c2FnZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLgogIGFsaWFzIC1nICckezErIiRA
In0nPSciJEAiJwogIHNldG9wdCBOT19HTE9CX1NVQlNUCmZpCgpjYXNlICQxIGluCiAgJycp
CiAgICAgZWNobyAiJDA6IE5vIGZpbGUuICBUcnkgJyQwIC0taGVscCcgZm9yIG1vcmUgaW5m
b3JtYXRpb24uIiAxPiYyCiAgICAgZXhpdCAxOwogICAgIDs7CiAgLWggfCAtLWgqKQogICAg
Y2F0IDw8XEVPRgpVc2FnZTogbWRhdGUtc2ggWy0taGVscF0gWy0tdmVyc2lvbl0gRklMRQoK
UHJldHR5LXByaW50IHRoZSBtb2RpZmljYXRpb24gZGF5IG9mIEZJTEUsIGluIHRoZSBmb3Jt
YXQ6CjEgSmFudWFyeSAxOTcwCgpJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgU09VUkNF
X0RBVEVfRVBPQ0ggaXMgc2V0LCB1c2UgaXRzIHZhbHVlIChpbgplcG9jaC1zZWNvbmRzKSBm
b3IgdGhlIGRhdGUgaW5zdGVhZCBvZiBhbnkgRklMRSBtdGltZS4gIFRoZSBGSUxFCmFyZ3Vt
ZW50IGlzIHN0aWxsIHJlcXVpcmVkIGluIHRoaXMgY2FzZSwgYnV0IGlnbm9yZWQuCgpSZXBv
cnQgYnVncyB0byA8YnVnLWF1dG9tYWtlQGdudS5vcmc+LgpHTlUgQXV0b21ha2UgaG9tZSBw
YWdlOiA8aHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvbWFrZS8+LgpHZW5lcmFs
IGhlbHAgdXNpbmcgR05VIHNvZnR3YXJlOiA8aHR0cHM6Ly93d3cuZ251Lm9yZy9nZXRoZWxw
Lz4uCkVPRgogICAgZXhpdCAkPwogICAgOzsKICAtdiB8IC0tdiopCiAgICBlY2hvICJtZGF0
ZS1zaCAoR05VIEF1dG9tYWtlKSAkc2NyaXB0dmVyc2lvbiIKICAgIGV4aXQgJD8KICAgIDs7
CmVzYWMKCiMgV2FybiBpZiBtb3JlIHRoYW4gb25lIGZpbGUgZ2l2ZW4uCmlmIHRlc3QgJCMg
LW5lIDE7IHRoZW4KICBlY2hvICIkMDogd2FybmluZzogbXVsdGlwbGUgZmlsZXMgZ2l2ZW4s
IHVzaW5nIGZpcnN0OiAkKiIgPiYyCmZpCgplcnJvciAoKQp7CiAgZWNobyAiJDA6ICQxIiA+
JjIKICBleGl0IDEKfQoKIyBzZXQgJG1vbnRoICgiSmFudWFyeSIpIGFuZCAkbnVtbW9udGgg
KDEpIGdpdmVuIGFyZyBNT04gKCJKYW4iKS4KbW9uX3RvX21vbnRoICgpCnsKICBjYXNlICQx
IGluCiAgICBKYW4pIG1vbnRoPUphbnVhcnk7IG51bW1vbnRoPTE7OwogICAgRmViKSBtb250
aD1GZWJydWFyeTsgbnVtbW9udGg9Mjs7CiAgICBNYXIpIG1vbnRoPU1hcmNoOyBudW1tb250
aD0zOzsKICAgIEFwcikgbW9udGg9QXByaWw7IG51bW1vbnRoPTQ7OwogICAgTWF5KSBtb250
aD1NYXk7IG51bW1vbnRoPTU7OwogICAgSnVuKSBtb250aD1KdW5lOyBudW1tb250aD02OzsK
ICAgIEp1bCkgbW9udGg9SnVseTsgbnVtbW9udGg9Nzs7CiAgICBBdWcpIG1vbnRoPUF1Z3Vz
dDsgbnVtbW9udGg9ODs7CiAgICBTZXApIG1vbnRoPVNlcHRlbWJlcjsgbnVtbW9udGg9OTs7
CiAgICBPY3QpIG1vbnRoPU9jdG9iZXI7IG51bW1vbnRoPTEwOzsKICAgIE5vdikgbW9udGg9
Tm92ZW1iZXI7IG51bW1vbnRoPTExOzsKICAgIERlYykgbW9udGg9RGVjZW1iZXI7IG51bW1v
bnRoPTEyOzsKICBlc2FjCn0KCiMgUHJldmVudCBkYXRlIGdpdmluZyByZXNwb25zZSBpbiBh
bm90aGVyIGxhbmd1YWdlLgpMQU5HPUMKZXhwb3J0IExBTkcKTENfQUxMPUMKZXhwb3J0IExD
X0FMTApMQ19USU1FPUMKZXhwb3J0IExDX1RJTUUKCiMgVXNlIFVUQyB0byBnZXQgcmVwcm9k
dWNpYmxlIHJlc3VsdC4KVFo9VVRDMApleHBvcnQgVFoKCiMgDAojIGh0dHBzOi8vcmVwcm9k
dWNpYmxlLWJ1aWxkcy5vcmcvZG9jcy9zb3VyY2UtZGF0ZS1lcG9jaC8KaWYgdGVzdCAtbiAi
JFNPVVJDRV9EQVRFX0VQT0NIIjsgdGhlbgogIGVwb2NoX29rPXRydWUgIyBiZSBvcHRpbWlz
dGljCiAgZGF0ZV9mbXQ9IislZCAlQiAlWSIKICByZXN1bHQ9YGRhdGUgLXUgLS1kYXRlPSJA
JFNPVVJDRV9EQVRFX0VQT0NIIiAiJGRhdGVfZm10IiAyPi9kZXYvbnVsbGAKICBpZiB0ZXN0
IC16ICIkcmVzdWx0IjsgdGhlbgogICAgcmVzdWx0PWBkYXRlIC11IC1yICIkU09VUkNFX0RB
VEVfRVBPQ0giICIkZGF0ZV9mbXQiIDI+L2Rldi9udWxsYAogICAgaWYgdGVzdCAteiAiJHJl
c3VsdCI7IHRoZW4KICAgICAgIyBUaGUgZGF0ZSBjb21tYW5kIG9uIFNvbGFyaXMgMTAgYW5k
IDExIGRvZXNuJ3Qgc3VwcG9ydCBhbnkgd2F5CiAgICAgICMgdG8gZG8gdGhpcy4gRmFsbCBi
YWNrIHRvIFBlcmwuCiAgICAgICMKICAgICAgcGVybG91dD1gcGVybCAtZSAncHJpbnQgc2Nh
bGFyIGdtdGltZSgkU09VUkNFX0RBVEVfRVBPQ0gpJyAyPi9kZXYvbnVsbGAKICAgICAgIyBP
dXRwdXQgaXMsIGUuZy4sIFRodSBKYW4gIDEgMDA6MDA6MDAgMTk3MC4gU3BsaXQgaXQgYXBh
cnQsCiAgICAgICMgc2luY2Ugd2UgbmVlZCB0byBjb252ZXJ0ICJKYW4iIHRvICJKYW51YXJ5
Ii4KICAgICAgIyAoV2UgY291bGQgdXNlIGN1dCwgYnV0IHN1cmVseSBpZiBhIHN5c3RlbSBo
YXMgcGVybCwgaXQgaGFzIGF3az8pCiAgICAgIGRheT1gZWNobyAkcGVybG91dCB8IGF3ayAn
e3ByaW50ICQzfSdgCiAgICAgIG1vbj1gZWNobyAkcGVybG91dCB8IGF3ayAne3ByaW50ICQy
fSdgCiAgICAgIG1vbl90b19tb250aCAkbW9uICMgc2V0cyAkbW9udGgKICAgICAgeWVhcj1g
ZWNobyAkcGVybG91dCB8IGF3ayAne3ByaW50ICQ1fSdgCiAgICAgIHJlc3VsdD0iJGRheSAk
bW9udGggJHllYXIiCiAgICAgICMKICAgICAgaWYgdGVzdCAteiAiJHJlc3VsdCI7IHRoZW4K
ICAgICAgICBlY2hvICIkMDogd2FybmluZzogU09VUkNFX0RBVEVfRVBPQ0ggd2FzIHNldCwg
YnV0IGNhbid0IGNvbnZlcnQsIGlnbm9yaW5nOiAkU09VUkNFX0RBVEVfRVBPQ0giID4mMgog
ICAgICAgIGVwb2NoX29rPWZhbHNlCiAgICAgIGZpCiAgICBmaQogIGZpCiAgIwogIGlmICRl
cG9jaF9vazsgdGhlbgogICAgIyBSZW1vdmUgbGVhZGluZyBzcGFjZXMgYW5kIHplcm9zLiBX
ZSBkb24ndCB3YW50IHRvIGdldCBpbnRvIHRoZQogICAgIyB2YXJpb3VzIGRhdGUgb3B0aW9u
cyB0byBjb250cm9sIHRoaXMuIChOb3QgcXVvdGluZyAkcmVzdWx0IGhlcmUKICAgICMgaXNu
J3QgaW1wb3J0YW50LCBqdXN0IGFub3RoZXIgd2F5IHRvIG9taXQgbGVhZGluZyBzcGFjZXMu
KQogICAgcmVzdWx0PWBlY2hvICRyZXN1bHQgfCBzZWQgJ3MvXlsgMF0qLy8nYAogICAgaWYg
dGVzdCAteiAiJHJlc3VsdCI7IHRoZW4KICAgICAgZWNobyAiJDA6IFNPVVJDRV9EQVRFX0VQ
T0NIIHdhcyBzZXQsIGJ1dCBjb252ZXJ0ZWQgdG8gZW1wdHk6ICRTT1VSQ0VfREFURV9FUE9D
SCIgPiYyCiAgICAgIGVwb2NoX29rPWZhbHNlCiAgICBmaQogIGZpCiAgaWYgJGVwb2NoX29r
OyB0aGVuCiAgICBlY2hvICRyZXN1bHQKICAgIGV4aXQgMAogIGVsc2UKICAgIGVjaG8gIiQw
OiBTT1VSQ0VfREFURV9FUE9DSCBmYWlsZWQsIGZhbGxpbmcgYmFjayB0byB1c2luZyBtdGlt
ZSBvbjogJDEiID4mMgogIGZpCmZpCiMgZW5kIG9mIFNPVVJDRV9EQVRFX0VQT0NIIHN1cHBv
cnQsIHJlc3QgaXMgYWJvdXQgdGhlIG5vcm1hbCBjYXNlIG9mCiMgdXNpbmcgdGhlIG10aW1l
IG9mIHRoZSBzcGVjaWZpZWQgZmlsZS4KCiMgDAojIEdOVSBscyBjaGFuZ2VzIGl0cyB0aW1l
IGZvcm1hdCBpbiByZXNwb25zZSB0byB0aGUgVElNRV9TVFlMRQojIHZhcmlhYmxlLiAgU2lu
Y2Ugd2UgY2Fubm90IGFzc3VtZSAndW5zZXQnIHdvcmtzLCByZXZlcnQgdGhpcwojIHZhcmlh
YmxlIHRvIGl0cyBkb2N1bWVudGVkIGRlZmF1bHQuCmlmIHRlc3QgIiR7VElNRV9TVFlMRStz
ZXR9IiA9IHNldDsgdGhlbgogIFRJTUVfU1RZTEU9cG9zaXgtbG9uZy1pc28KICBleHBvcnQg
VElNRV9TVFlMRQpmaQoKc2F2ZV9hcmcxPSQxCgojIEZpbmQgb3V0IGhvdyB0byBnZXQgdGhl
IGV4dGVuZGVkIGxzIG91dHB1dCBvZiBhIGZpbGUgb3IgZGlyZWN0b3J5LgppZiBscyAtTCAv
ZGV2L251bGwgMT4vZGV2L251bGwgMj4mMTsgdGhlbgogIGxzX2NvbW1hbmQ9J2xzIC1MIC1s
IC1kJwplbHNlCiAgbHNfY29tbWFuZD0nbHMgLWwgLWQnCmZpCiMgQXZvaWQgdXNlci9ncm91
cCBuYW1lcyB0aGF0IG1pZ2h0IGhhdmUgc3BhY2VzLCB3aGVuIHBvc3NpYmxlLgppZiBscyAt
biAvZGV2L251bGwgMT4vZGV2L251bGwgMj4mMTsgdGhlbgogIGxzX2NvbW1hbmQ9IiRsc19j
b21tYW5kIC1uIgpmaQoKIyBBICdscyAtbCcgbGluZSBsb29rcyBhcyBmb2xsb3dzIG9uIE9T
LzIuCiMgIGRyd3hyd3gtLS0gICAgICAgIDAgQXVnIDExICAyMDAxIGZvbwojIFRoaXMgZGlm
ZmVycyBmcm9tIFVuaXgsIHdoaWNoIGFkZHMgb3duZXJzaGlwIGluZm9ybWF0aW9uLgojICBk
cnd4cnd4LS0tICAgMiByb290ICByb290ICAgICAgNDA5NiBBdWcgMTEgIDIwMDEgZm9vCiMK
IyBUbyBmaW5kIHRoZSBkYXRlLCB3ZSBzcGxpdCB0aGUgbGluZSBvbiBzcGFjZXMgYW5kIGl0
ZXJhdGUgb24gd29yZHMKIyB1bnRpbCB3ZSBmaW5kIGEgbW9udGguICBUaGlzIGNhbm5vdCB3
b3JrIHdpdGggZmlsZXMgd2hvc2Ugb3duZXIgaXMgYQojIHVzZXIgbmFtZWQgIkphbiIsIG9y
ICJGZWIiLCBldGMuICBIb3dldmVyLCBpdCdzIHVubGlrZWx5IHRoYXQgJy8nCiMgd2lsbCBi
ZSBvd25lZCBieSBhIHVzZXIgd2hvc2UgbmFtZSBpcyBhIG1vbnRoLiAgU28gd2UgZmlyc3Qg
bG9vayBhdAojIHRoZSBleHRlbmRlZCBscyBvdXRwdXQgb2YgdGhlIHJvb3QgZGlyZWN0b3J5
IHRvIGRlY2lkZSBob3cgbWFueQojIHdvcmRzIHNob3VsZCBiZSBza2lwcGVkIHRvIGdldCB0
aGUgZGF0ZS4KCiMgT24gSFBVWCAvYmluL3NoLCAic2V0IiBpbnRlcnByZXRzICItcnctci0t
ci0tIiBhcyBvcHRpb25zLCBzbyB0aGUgIngiIGJlbG93LgpzZXQgeGAkbHNfY29tbWFuZCAv
YAoKIyBGaW5kIHdoaWNoIGFyZ3VtZW50IGlzIHRoZSBtb250aC4KbW9udGg9CmNvbW1hbmQ9
CnVudGlsIHRlc3QgJG1vbnRoCmRvCiAgdGVzdCAkIyAtZ3QgMCB8fCBlcnJvciAiZmFpbGVk
IHBhcnNpbmcgJyRsc19jb21tYW5kIC8nIG91dHB1dCIKICBzaGlmdAogICMgQWRkIGFub3Ro
ZXIgc2hpZnQgdG8gdGhlIGNvbW1hbmQuCiAgY29tbWFuZD0iJGNvbW1hbmQgc2hpZnQ7Igog
IG1vbl90b19tb250aCAkMQpkb25lCgp0ZXN0IC1uICIkbW9udGgiIHx8IGVycm9yICJmYWls
ZWQgcGFyc2luZyAnJGxzX2NvbW1hbmQgLycgb3V0cHV0IgoKIyBHZXQgdGhlIGV4dGVuZGVk
IGxzIG91dHB1dCBvZiB0aGUgZmlsZSBvciBkaXJlY3RvcnkuCnNldCBkdW1teSB4YGV2YWwg
IiRsc19jb21tYW5kIFwiXFxcJHNhdmVfYXJnMVwiImAKCiMgUmVtb3ZlIGFsbCBwcmVjZWRp
bmcgYXJndW1lbnRzCmV2YWwgJGNvbW1hbmQKCiMgQmVjYXVzZSBvZiB0aGUgZHVtbXkgYXJn
dW1lbnQgYWJvdmUsIG1vbnRoIGlzIGluICQyLgojCiMgT24gYSBQT1NJWCBzeXN0ZW0sIHdl
IHNob3VsZCBoYXZlCiMgJCMgPSA1CiMgJDEgPSBmaWxlIHNpemUKIyAkMiA9IG1vbnRoCiMg
JDMgPSBkYXkKIyAkNCA9IHllYXIgb3IgdGltZQojICQ1ID0gZmlsZW5hbWUKIwojIE9uIERh
cndpbiA3LjcuMCBhbmQgNy42LjAsIHdlIGhhdmUKIyAkIyA9IDQKIyAkMSA9IGRheQojICQy
ID0gbW9udGgKIyAkMyA9IHllYXIgb3IgdGltZQojICQ0ID0gZmlsZW5hbWUKCiMgR2V0IHRo
ZSBtb250aC4KbW9uX3RvX21vbnRoICQyCgpjYXNlICQzIGluCiAgPz8/KikgZGF5PSQxOzsK
ICAqKSBkYXk9JDM7IHNoaWZ0OzsKZXNhYwoKIyBIZXJlIHdlIGhhdmUgdG8gZGVhbCB3aXRo
IHRoZSBwcm9ibGVtIHRoYXQgdGhlIGxzIG91dHB1dCBnaXZlcyBlaXRoZXIKIyB0aGUgdGlt
ZSBvZiBkYXkgb3IgdGhlIHllYXIuCmNhc2UgJDMgaW4KICAqOiopIHNldCBgZGF0ZWA7IGV2
YWwgeWVhcj1cJCQjCiAgICAgICBjYXNlICQyIGluCgkgSmFuKSBudW1tb250aHRvZD0xOzsK
CSBGZWIpIG51bW1vbnRodG9kPTI7OwoJIE1hcikgbnVtbW9udGh0b2Q9Mzs7CgkgQXByKSBu
dW1tb250aHRvZD00OzsKCSBNYXkpIG51bW1vbnRodG9kPTU7OwoJIEp1bikgbnVtbW9udGh0
b2Q9Njs7CgkgSnVsKSBudW1tb250aHRvZD03OzsKCSBBdWcpIG51bW1vbnRodG9kPTg7OwoJ
IFNlcCkgbnVtbW9udGh0b2Q9OTs7CgkgT2N0KSBudW1tb250aHRvZD0xMDs7CgkgTm92KSBu
dW1tb250aHRvZD0xMTs7CgkgRGVjKSBudW1tb250aHRvZD0xMjs7CiAgICAgICBlc2FjCiAg
ICAgICAjIEZvciB0aGUgZmlyc3Qgc2l4IG1vbnRocyBvZiB0aGUgeWVhciB0aGUgdGltZSBu
b3RhdGlvbiBjYW4gYWxzbwogICAgICAgIyBiZSB1c2VkIGZvciBmaWxlcyBtb2RpZmllZCBp
biB0aGUgbGFzdCB5ZWFyLgogICAgICAgaWYgKGV4cHIgJG51bW1vbnRoIFw+ICRudW1tb250
aHRvZCkgPi9kZXYvbnVsbDsKICAgICAgIHRoZW4KCSB5ZWFyPWBleHByICR5ZWFyIC0gMWAK
ICAgICAgIGZpOzsKICAqKSB5ZWFyPSQzOzsKZXNhYwoKIyBUaGUgcmVzdWx0LgplY2hvICRk
YXkgJG1vbnRoICR5ZWFyCgojIExvY2FsIFZhcmlhYmxlczoKIyBtb2RlOiBzaGVsbC1zY3Jp
cHQKIyBzaC1pbmRlbnRhdGlvbjogMgojIGV2YWw6IChhZGQtaG9vayAnYmVmb3JlLXNhdmUt
aG9vayAndGltZS1zdGFtcCBuaWwgdCkKIyB0aW1lLXN0YW1wLXN0YXJ0OiAic2NyaXB0dmVy
c2lvbj0iCiMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCiMgdGlt
ZS1zdGFtcC10aW1lLXpvbmU6ICJVVEMwIgojIHRpbWUtc3RhbXAtZW5kOiAiOyAjIFVUQyIK
IyBFbmQ6Cg==
--NAFOtzu6wf--