From nobody Fri Jan 24 09:32:13 2025 X-Original-To: freebsd-current@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4YfXrh2nvtz5l7bw for ; Fri, 24 Jan 2025 09:41:40 +0000 (UTC) (envelope-from freebsd-current-freebsd-org111@ketas.si.pri.ee) Received: from mail.ketas.si.pri.ee (d004-fea2-0bff-021e-13e8-8437-07d0-2001.dyn.estpak.ee [IPv6:2001:7d0:8437:13e8:21e:bff:fea2:d004]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4YfXrg1M6wz3lgF for ; Fri, 24 Jan 2025 09:41:39 +0000 (UTC) (envelope-from freebsd-current-freebsd-org111@ketas.si.pri.ee) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=ketas.si.pri.ee header.s=ketas-si-pri-ee-20240416002854-4096 header.b=yDNeD7Ck; spf=pass (mx1.freebsd.org: domain of freebsd-current-freebsd-org111@ketas.si.pri.ee designates 2001:7d0:8437:13e8:21e:bff:fea2:d004 as permitted sender) smtp.mailfrom=freebsd-current-freebsd-org111@ketas.si.pri.ee; dmarc=pass (policy=reject) header.from=ketas.si.pri.ee X-Original-To: freebsd-current@freebsd.org DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=ketas.si.pri.ee; s=ketas-si-pri-ee-20240416002854-4096; t=1737711133; bh=drENCkvxOjY0naU0Sss42CWClFgYITdl55e42x91NJE=; h=Date:From:To:Subject:In-Reply-To:References; b=yDNeD7Ck1USOaMSp4eQc2CaCeO+oxtmxsOiIGGKSWgrHt6T+BkJsZY877R46/fNN1 jupuA08hrg62HD8AslhR3X6WsvCmk8KAHnvzOh4M5geoGboMNxp4nfvkehkqkhnGqr G5IjwHI6vf9WcKML9lK6CcKsjtU0hnYdV6zvVz3/E2TiEQ+Krjs+gWYB3ghSFGbM7q 3Le7p38o8k+YG80NKwgH9er4utVc/NRc3BHs1YJ78qzblhLKoLAtCDzRfNAI2UPGHA eJqZNFrCWCF0Vm5tq7RSobvnWPZfK0PbdTZxPPvc3dMPBrZYwrOHxQGjemx/qwW9ON 386ufgFLBhTllzmnxGHsvXwRRIwMpZUsmMEhcsaDFoFBKELI2Pnygqzza6oaTyzKr3 vQuLcJ797tmwxEBtsoYbIWyvWybygDW4Y8+xSI40BZJAT92MjgAB7WPyYZo97aZJtV mKkNfYXRqvZUZDxgzOTDXVj4ND5LtMoQdU+Sb0qvk7OVNL6/fqKapaFe4HC3FbJMRS tcnOSWz/Vbkln5Hbo6LQskLikcg9ORTmRV1cD7rSHJdMuhZLaM2SAeKV1Brjhl/aDG hiATsydm+ENj53iTMEjBACsfKXzATIp4WVXldOG+MiY5iZ0eP0hvMPR1XDiur+k0WW D4r3srFCZi1QFI5TJW6Je+Mw= Received: from [IPv6:::1] (0114-0000-0000-0000-13c8-8437-07d0-2001.dyn.estpak.ee [IPv6:2001:7d0:8437:13c8::114]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mail.ketas.si.pri.ee (Postfix) with ESMTPSA id 8FF295AD3B4 for ; Fri, 24 Jan 2025 11:32:13 +0200 (EET) Date: Fri, 24 Jan 2025 11:32:13 +0200 From: Sulev-Madis Silber To: freebsd-current@freebsd.org Subject: Re: /usr/src and /usr/ports not git directories ? User-Agent: K-9 Mail for Android In-Reply-To: <20250123225513.ioRMw6A5@steffen%sdaoden.eu> References: <3782b90b-850f-4435-8b6d-bdb83753daea@app.fastmail.com> <20250123074050.d9e331172e6b2f9dbc8b8dfd@dec.sakura.ne.jp> <20250123074932.170b7959bca443a934599a9c@dec.sakura.ne.jp> <20250123053721.KDVDBu1z@steffen%sdaoden.eu> <20250123225513.ioRMw6A5@steffen%sdaoden.eu> Message-ID: List-Id: Discussions about the use of FreeBSD-current List-Archive: https://lists.freebsd.org/archives/freebsd-current List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-current@FreeBSD.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=----JA8FLK1MYCCRPEB3QNTRTNPOVETWO2 Content-Transfer-Encoding: 7bit X-Spamd-Result: default: False [1.31 / 15.00]; HFILTER_HOSTNAME_5(3.00)[d004-fea2-0bff-021e-13e8-8437-07d0-2001.dyn.estpak.ee]; MIME_BASE64_TEXT_BOGUS(1.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; SUBJECT_ENDS_QUESTION(1.00)[]; NEURAL_HAM_SHORT(-0.99)[-0.989]; DMARC_POLICY_ALLOW(-0.50)[ketas.si.pri.ee,reject]; R_DKIM_ALLOW(-0.20)[ketas.si.pri.ee:s=ketas-si-pri-ee-20240416002854-4096]; R_SPF_ALLOW(-0.20)[+ip6:2001:7d0:8437:1300::/56]; ONCE_RECEIVED(0.20)[]; MIME_BASE64_TEXT(0.10)[]; MIME_GOOD(-0.10)[multipart/mixed,text/plain]; RCVD_TLS_ALL(0.00)[]; FROM_HAS_DN(0.00)[]; GREYLIST(0.00)[pass,body]; TO_MATCH_ENVRCPT_ALL(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; DKIM_TRACE(0.00)[ketas.si.pri.ee:+]; RCVD_COUNT_ONE(0.00)[1]; ARC_NA(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[freebsd-current@freebsd.org]; TO_DN_NONE(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; HAS_ATTACHMENT(0.00)[]; MLMMJ_DEST(0.00)[freebsd-current@freebsd.org]; RCVD_VIA_SMTP_AUTH(0.00)[]; MID_RHS_MATCH_FROM(0.00)[]; ASN(0.00)[asn:3249, ipnet:2001:7d0::/32, country:EE]; MIME_TRACE(0.00)[0:+,1:+,2:+] X-Spamd-Bar: + X-Rspamd-Queue-Id: 4YfXrg1M6wz3lgF ------JA8FLK1MYCCRPEB3QNTRTNPOVETWO2 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable longer analysis, of why src would be, imho, still shipped, is here: so yeah, i hope src and ports don't disappear from releases completely bec= ause i have number or cases where that would be good, including offline by = accident, offline by design in high security environment, natural disasters= , ((global thermo)nuclear) war or just plain old complete software abadonem= ent of whole fbsd project in far future=2E i hope the last one is only reas= on=2E i'll also exclude sci-fi scenarios here i just peeked into v1=2E0 iso i found=2E imagine, there's src! that src can be still obtained from (our) git, i checked, but what if it s= uddenly can't it's probably not the first time when everyone thought to have piece of so= ftware / code until noone had it anymore=2E if you sprinkle the src around = the world like this, there are much less chance it completely disappearing for a fun, i also have kept my stash of distfiles of last 10+ years or tot= al 23y of using fbsd=2E it's only 50g of packed sources and includes most o= f server and desktop things=2E distcache exists but what if it won't=2E btw= i'm curious how large it is? there have been whole big tv stations who for intentional or unintentional= reasons lost their archive and had to resort on obtaining it from lucky ho= me taper remember you don't really need to install the src=2Etxz at all=2E you can = just pkg install git or ports install it and pull it down from network if i= t's there still it doesn't seem to save space either and we have minis for it while there, can we have maxi-memstick too? in addition of hybrid iso=2E a= s this could allow quick image modification if one couldn't be arsed to bui= ld their own at the time they eg want to quickly sideload something like ht= tp://ketas=2Esi=2Epri=2Eee/misc/installer-addon-utils-root-bin-si=2Esh into= installer so i hope end result is just src maybe getting git bootstrap and not getti= ng completely removed but yeah, it's weird how src is in git but base has no git=2E somehow we e= nded up with good tool but with wrong license and now it can't be in base b= ecause of it=2E if basically noone devs, why is compiler in base then? btw = removing that would be weird too and would create all sorts of chicken end = egg issues hopefully this all resolves into my favorite solution, still have src/port= s ---begin--- #!/bin/sh -Cefu # # Copyright (c) 2024 Sulev-Madis Silber # All rights reserved=2E # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1=2E Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer=2E # 2=2E Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution= =2E # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPO= SE # ARE DISCLAIMED=2E IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABL= E # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTI= AL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRI= CT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WA= Y # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE=2E # set -Cefu ###################################################################### keymap=3Dee wall_cmos_clock=3D1 timezone=3DEurope/Tallinn ping=3Dexample=2Ecom ntp_servers=3D'ntp ntp=2Esi=2Epri=2Eee' ###################################################################### _mount_unionfs() { local dst=3D"$1" =09 local src=3D"/tmp/unionfs$dst" =09 =09 if [ ! -d "$src" ] then mkdir -p "$src" fi =09 =09 if [ ! -d "$dst" ] then mkdir -p "$dst" fi =09 =09 if ! mount -t unionfs | fgrep -q "$dst" then mount_unionfs -o noatime "$src" "$dst" fi } if [ "$keymap" ] then kbdcontrol -r fast -l "$keymap" fi if [ ! -f /tmp/tmp-mount-done ] then echo =09 =09 mount -t tmpfs tmpfs /tmp =09 =09 service cleartmp start =09 mkdir /tmp/bsdinstall_etc =09 touch /tmp/bsdinstall_log =09 =09 touch /tmp/tmp-mount-done fi for dst in /etc /root /usr/local /var/cache/pkg /var/db/pkg do _mount_unionfs "$dst" done if [ "$wall_cmos_clock" ] then if [ ! -f /etc/wall_cmos_clock ] then touch /etc/wall_cmos_clock fi fi if [ "$timezone" ] then if [ ! -f /etc/localtime ] then tzsetup "$timezone" fi fi if ! pgrep -q adjkerntz then service adjkerntz start fi for if in `ifconfig -l` do if [ "$if" =3D lo0 ] then continue fi =09 =09 ifconfig "$if" inet6 -ifdisabled accept_rtadv up =09 =09 if ! service dhclient status "$if" > /dev/null then echo =09 =09 service dhclient forcestart "$if" fi done if ! pgrep -q rtsold then rtsold -am fi if [ "$ping" ] then echo =09 =09 for af in 4 6 do if ping "-${af}oq" "$ping" > /dev/null then echo "v$af ok" else echo "v$af fail" fi done fi if [ "$ntp_servers" ] then if [ ! -f /tmp/ntpdate-run-done ] then echo =09 =09 ntpdate $ntp_servers =09 =09 touch /tmp/ntpdate-run-done fi fi if ! service ntpd onestatus > /dev/null then echo =09 =09 service ntpd onestart fi if [ "$ntp_servers" ] then echo =09 =09 if [ -f /tmp/ntpdate-run-done ] then ntpdate -q $ntp_servers fi fi echo date echo for kld in coretemp amdtemp do if [ -f "/boot/kernel/$kld=2Eko" ] then kldload -n "$kld" fi done sysctl -a | grep '[0-9]C$' | egrep -v '(_(CRT|PSV)|\=2Etjmax)' if sysctl -a | fgrep -q battery then echo =09 =09 acpiconf -i 0 | grep -v ':[[:space:]]*$' fi echo ---end--- ------JA8FLK1MYCCRPEB3QNTRTNPOVETWO2 Content-Type: text/plain; name=installer-addon-utils-root-bin-si.txt Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=installer-addon-utils-root-bin-si.txt; size=3579 IyEvYmluL3NoIC1DZWZ1CiMKIyBDb3B5cmlnaHQgKGMpIDIwMjQgIFN1bGV2LU1hZGlzIFNpbGJl ciA8a2V0YXNAc2kucHJpLmVlPgojIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiMKIyBSZWRpc3RyaWJ1 dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnMKIyBhcmUgbWV0OgojIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiMgICAgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgojIDIuIFJlZGlzdHJp YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0 CiMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyIGluIHRoZQojICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiMKIyBUSElTIFNPRlRXQVJFIElTIFBS T1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECiMgQU5Z IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF RCBUTywgVEhFCiMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW RU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQojIEZPUiBBTlkg RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T RVFVRU5USUFMCiMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKIyBIT1dFVkVSIENBVVNF RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU UklDVAojIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX SVNFKSBBUklTSU5HIElOIEFOWSBXQVkKIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCiMgU1VDSCBEQU1BR0UuCiMK CgpzZXQgLUNlZnUKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgprZXltYXA9ZWUKCndhbGxfY21vc19jbG9jaz0x Cgp0aW1lem9uZT1FdXJvcGUvVGFsbGlubgoKcGluZz1leGFtcGxlLmNvbQoKbnRwX3NlcnZlcnM9 J250cCBudHAuc2kucHJpLmVlJwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKCl9tb3VudF91bmlvbmZzKCkKewoJ bG9jYWwgZHN0PSIkMSIKCQoJbG9jYWwgc3JjPSIvdG1wL3VuaW9uZnMkZHN0IgoJCgkKCWlmIFsg ISAtZCAiJHNyYyIgXQoJdGhlbgoJCW1rZGlyIC1wICIkc3JjIgoJZmkKCQoJCglpZiBbICEgLWQg IiRkc3QiIF0KCXRoZW4KCQlta2RpciAtcCAiJGRzdCIKCWZpCgkKCQoJaWYgISBtb3VudCAtdCB1 bmlvbmZzIHwgZmdyZXAgLXEgIiRkc3QiCgl0aGVuCgkJbW91bnRfdW5pb25mcyAtbyBub2F0aW1l ICIkc3JjIiAiJGRzdCIKCWZpCn0KCgppZiBbICIka2V5bWFwIiBdCnRoZW4KCWtiZGNvbnRyb2wg LXIgZmFzdCAtbCAiJGtleW1hcCIKZmkKCgppZiBbICEgLWYgL3RtcC90bXAtbW91bnQtZG9uZSBd CnRoZW4KCWVjaG8KCQoJCgltb3VudCAtdCB0bXBmcyB0bXBmcyAvdG1wCgkKCQoJc2VydmljZSBj bGVhcnRtcCBzdGFydAoJCglta2RpciAvdG1wL2JzZGluc3RhbGxfZXRjCgkKCXRvdWNoIC90bXAv YnNkaW5zdGFsbF9sb2cKCQoJCgl0b3VjaCAvdG1wL3RtcC1tb3VudC1kb25lCmZpCgoKZm9yIGRz dCBpbiAvZXRjIC9yb290IC91c3IvbG9jYWwgL3Zhci9jYWNoZS9wa2cgL3Zhci9kYi9wa2cKZG8K CV9tb3VudF91bmlvbmZzICIkZHN0Igpkb25lCgoKaWYgWyAiJHdhbGxfY21vc19jbG9jayIgXQp0 aGVuCglpZiBbICEgLWYgL2V0Yy93YWxsX2Ntb3NfY2xvY2sgXQoJdGhlbgoJCXRvdWNoIC9ldGMv d2FsbF9jbW9zX2Nsb2NrCglmaQpmaQoKCmlmIFsgIiR0aW1lem9uZSIgXQp0aGVuCglpZiBbICEg LWYgL2V0Yy9sb2NhbHRpbWUgXQoJdGhlbgoJCXR6c2V0dXAgIiR0aW1lem9uZSIKCWZpCmZpCgoK aWYgISBwZ3JlcCAtcSBhZGprZXJudHoKdGhlbgoJc2VydmljZSBhZGprZXJudHogc3RhcnQKZmkK Cgpmb3IgaWYgaW4gYGlmY29uZmlnIC1sYApkbwoJaWYgWyAiJGlmIiA9IGxvMCBdCgl0aGVuCgkJ Y29udGludWUKCWZpCgkKCQoJaWZjb25maWcgIiRpZiIgaW5ldDYgLWlmZGlzYWJsZWQgYWNjZXB0 X3J0YWR2IHVwCgkKCQoJaWYgISBzZXJ2aWNlIGRoY2xpZW50IHN0YXR1cyAiJGlmIiA+IC9kZXYv bnVsbAoJdGhlbgoJCWVjaG8KCQkKCQkKCQlzZXJ2aWNlIGRoY2xpZW50IGZvcmNlc3RhcnQgIiRp ZiIKCWZpCmRvbmUKCgppZiAhIHBncmVwIC1xIHJ0c29sZAp0aGVuCglydHNvbGQgLWFtCmZpCgoK aWYgWyAiJHBpbmciIF0KdGhlbgoJZWNobwoJCgkKCWZvciBhZiBpbiA0IDYKCWRvCgkJaWYgcGlu ZyAiLSR7YWZ9b3EiICIkcGluZyIgPiAvZGV2L251bGwKCQl0aGVuCgkJCWVjaG8gInYkYWYgb2si CgkJZWxzZQoJCQllY2hvICJ2JGFmIGZhaWwiCgkJZmkKCWRvbmUKZmkKCgppZiBbICIkbnRwX3Nl cnZlcnMiIF0KdGhlbgoJaWYgWyAhIC1mIC90bXAvbnRwZGF0ZS1ydW4tZG9uZSBdCgl0aGVuCgkJ ZWNobwoJCQoJCQoJCW50cGRhdGUgJG50cF9zZXJ2ZXJzCgkJCgkJCgkJdG91Y2ggL3RtcC9udHBk YXRlLXJ1bi1kb25lCglmaQpmaQoKCmlmICEgc2VydmljZSBudHBkIG9uZXN0YXR1cyA+IC9kZXYv bnVsbAp0aGVuCgllY2hvCgkKCQoJc2VydmljZSBudHBkIG9uZXN0YXJ0CmZpCgoKaWYgWyAiJG50 cF9zZXJ2ZXJzIiBdCnRoZW4KCWVjaG8KCQoJCglpZiBbIC1mIC90bXAvbnRwZGF0ZS1ydW4tZG9u ZSBdCgl0aGVuCgkJbnRwZGF0ZSAtcSAkbnRwX3NlcnZlcnMKCWZpCmZpCgoKZWNobwoKCmRhdGUK CgplY2hvCgoKZm9yIGtsZCBpbiBjb3JldGVtcCBhbWR0ZW1wCmRvCglpZiBbIC1mICIvYm9vdC9r ZXJuZWwvJGtsZC5rbyIgXQoJdGhlbgoJCWtsZGxvYWQgLW4gIiRrbGQiCglmaQpkb25lCgoKc3lz Y3RsIC1hIHwgZ3JlcCAnWzAtOV1DJCcgfCBlZ3JlcCAtdiAnKF8oQ1JUfFBTVil8XC50am1heCkn CgoKaWYgc3lzY3RsIC1hIHwgZmdyZXAgLXEgYmF0dGVyeQp0aGVuCgllY2hvCgkKCQoJYWNwaWNv bmYgLWkgMCB8IGdyZXAgLXYgJzpbWzpzcGFjZTpdXSokJwpmaQoKCmVjaG8K ------JA8FLK1MYCCRPEB3QNTRTNPOVETWO2--