SUMMARY:How do you untar a file with an absolute path name

Jon M Hayden (jhayden@auspex.com)
Wed, 18 Feb 1998 11:11:36 -0800 (PST)

This message is in MIME format

--Boundary_(ID_0JOK0pLfQoWhhXfEHHcvew)
Content-type: text/plain; charset=us-ascii

Thanks to all who responded. Too many to thank separately:

Original question:
==================
I have a tar file that I want to untar. The problem is that this file was
tar'd with the absolute pathname and I don't want to extract it with the
absolute pathname. Is there a way I can specify which directory I want these
files untar'd at? I think gnu tar can do this, but I don't have that on my
system right now.

Suggested Solutions:
====================
1. A lot of people said get gtar. Unfortunately, I don't do a lot of work on
the system I needed to do this on and I don't have root access. Maybe I'll
install gtar in my home directory for future use.

2. There were also a lot of votes for the chroot command, but again I don't
have root access on this system.

Use the chroot command. It causes a command to be executed with a
different directory as root. So "chroot /tmp ls /usr" would return
a directory listing of /tmp/usr since /tmp is used as root. The
problem is that any commands you want to run with the chroot command
have to exist under the new root directory. In the above example, you
would have to first copy the ls command to /tmp. Also the command
needs to be the static linked version. Otherwise it won't find the
dynamic libraries.

This example is from the chroot man page:

example# cp /usr/sbin/static/tar /tmp
example# dd if=/dev/nrst0 | chroot /tmp tar xvf -

3. I had a couple suggestions to do links. Again, for me to do this, I would
of needed root access.

As far as I know you cannot do this with standard tar. My only suggestion
would be to create a link in the root directory.

eg if the top level name in the tar file is /tarfile

ln -s extract_dir /tarfile

This way the data is extracted into the place you want it.

4. Some people suggested "digital unix" options that I don't have on my Solaris
system.

Try 'man tar' . You should find a -r or -R switch to strip off the leading
slash. On a Digital Unix system the flag is -s.

P [Digital] Specifies the prefix that is to be stripped off of the
filenames archived to or extracted from tape. (See also the s flag.)

s [Digital] Tells tar to strip off any leading slashes from pathnames
during extraction. This is useful when restoring a tape that was
created on a system with a different file system structure. (See also
the P flag.)

5. I was sent a perl script to do this, but I haven't had a chance to try it.
I attached it for those of you that would like to try it.

What I did
==========
I ended up just ftping the tar file to my system and extracting it with the
absolute pathname and then tar'd it back up the way I wanted it. Then ftp'd
back to the other system and untar'd it. It was about 300Meg in size so it took
a while.

=========================================================
Jon Hayden
Technical Support Engineer SUPPORT: 800/328-7739
Auspex Systems, Inc. DIRECT: 919/461-2215
jhayden@auspex.com FAX: 919/319-9910
www.auspex.com PAGER: 800/391-4970
=========================================================

--Boundary_(ID_0JOK0pLfQoWhhXfEHHcvew)
Content-type: application/octet-stream; SizeOnDisk=10533; name=tarfix.pl
Content-description: tarfix.pl
Content-disposition: attachment; filename=tarfix.pl
Content-transfer-encoding: base64

IyEvdXNyL2xvY2FsL2Jpbi9wZXJsIC13CkBSRU09KCIKQHBlcmwgLVMgJTAuYmF0ICUxICUyICUz
ICU0ICU1ICU2ICU3ICU4ICU5CkBnb3RvIGVuZCAiKSBpZiAwIDsKIwojIEZpeCBhbmQgY29udmVy
dCB0YXBlIGFyY2hpdmVzCiMKIyAoQykgQ29weXJpZ2h0IDE5OTAsOTEgRGlvbWlkaXMgU3BpbmVs
bGlzLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KIwojIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBh
bmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZCBpdHMKIyBkb2N1bWVudGF0aW9uIGZvciBh
bnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsCiMgcHJvdmlkZWQg
dGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQg
dGhhdAojIGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90
aWNlIGFwcGVhciBpbgojIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbi4KIyAKIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgV0lUSE9VVCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVECiMgV0FSUkFOVElFUywgSU5DTFVESU5HLCBXSVRIT1VUIExJTUlUQVRJT04sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YKIyBNRVJDSEFOVElCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLgojCiMgZGRzQGRvYy5pYy5hYy51awojCiMgVGhpcyBwcm9ncmFtIGlz
IG5vdCBlZmZpY2llbnQuCiMgQSBoYXZlIHRyaWVkIGluc3RlYWQgdG8gbWFrZSBpdCByZWFkYWJs
ZSwgZmxleGlibGUgYW5kIGVhc3kgdG8gdXNlLgojIEZvciB0aGlzIEkgdXNlIGxvdHMgb2Ygc3Vi
cm91dGluZXMsIGxvY2FsIHZhcmlhYmxlcyBhbmQgaGlnaGVyIG9yZGVyIAojIGZ1bmN0aW9ucy4g
IElmIHlvdSB3YW50IHNvbWV0aGluZyBlZmZpY2llbnQgcmV3cml0ZSBpdCBpbiBDLgojCiMgWW91
IGNhbiB2ZXJ5IGVhc2lseSBhZGQgYSBuZXcgY29udmVyc2lvbiBtb2RlLiAgSnVzdCBhZGQgdGhl
IGNvbnZlcnNpb24KIyBmdW5jdGlvbi4gIElmIHRoZSBjb252ZXJzaW9uIGZ1bmN0aW9uIG5lZWRz
IHRvIGJlIGFwcGxpZWQgdG8gZXZlcnkKIyBmaWxlbmFtZSBjb21wb25lbnQgYWRkIGEgbWFwIGZ1
bmN0aW9uIGFuZCBhIGZ1bmN0aW9uIHRvIHByZXBhcmUgYSBjb21wb25lbnQKIyB0byBoYXZlIGFj
b3VudGVyIGFkZGVkIHRvIGl0LgojIElmIHlvdSBuZWVkIHRvIGNvbnZlcnQgYW5vdGhlciBwYXJ0
IG9mIHRoZSBoZWFkZXIgKGUuZy4gdWlkKSBzZWFyY2ggZm9yIHRoZQojIHN0cmluZyBIRUFERVJN
T0QgaW4gdGhpcyBmaWxlLgoKZG8gJ2dldG9wdHMucGwnIHx8IGRpZSAiJDA6IFVuYWJsZSB0byBm
aW5kIGdldG9wdHMgbGlicmFyeTogJCFcbiI7CiZHZXRvcHRzKCdtbmNhZjp0OnM6ZScpIHx8ICR1
c2FnZSsrOwoKJGNvdW50ID0gMDsKJHByb2MgPSAnY29weSc7CgppZiAoJG9wdF9jKSB7CgkkcHJv
YyA9ICdjYW5vbmljJzsKCSRjb3VudCsrOwp9CmlmICgkb3B0X2EpIHsKCSRwcm9jID0gJ25vYWJz
JzsKCSRjb3VudCsrOwp9CmlmICgkb3B0X2YpIHsKCSRwcm9jID0gJ2Zyb21fJyAuICRvcHRfZjsK
CSRjb3VudCsrOwp9CmlmICgkb3B0X3QpIHsKCSRwcm9jID0gJ3RvXycgLiAkb3B0X3Q7CgkkY291
bnQrKzsKfQppZiAoJG9wdF9zKSB7CgkkcHJvYyA9ICd1c2Vyc2hvcnQnOwoJJHVzZXJzaG9ydGxl
biA9ICRvcHRfczsKCSRjb3VudCsrOwp9CgppZiAoJGNvdW50ID4gMSkgewoJcHJpbnQgU1RERVJS
ICIkMDogT25seSBvbmUgb2YgLWMgLWEgLWYgLXQgLXMgY2FuIGJlIHNwZWNpZmllZFxuIjsKCSR1
c2FnZSsrOwp9CgppZiAoISBldmFsKCcmJyAuICRwcm9jIC4gJygiZm9vIik7JykpIHsKCXByaW50
IFNUREVSUiAiJDA6IEJhZCBvcHRpb24gc3BlY2lmaWVkICRwcm9jXG4iOwoJJHVzYWdlKys7Cn0K
ZGVsZXRlICRtYXB7J2Zvbyd9OwoKCmlmICgkdXNhZ2UpIHsKCXByaW50IFNUREVSUiAiVXNhZ2U6
ICQwIC1uIC1jIC1hIC1zIE4gLWYgbXNkb3N8dm1zIC10IG1zZG9zfHY3IjsKCXByaW50IFNUREVS
UiAiCgktbiBEbyBub3Qgd29yayBvbiB0YXIgZmlsZXMuICBSZWFkIGFuZCBwcmludCBhIGxpc3Qg
b2YgZmlsZSBuYW1lcy4KCS1jIENhbm9uaWNhbGlzZSBmaWxlbmFtZXMgYnkgcmVtb3ZpbmcgLy4u
LywgLy4vIGFuZCAvLy4KCS1hIEZpeCBhYnNvbHV0ZSBmaWxlbmFtZXMgYnkgcmVtb3ZpbmcgbGVh
ZGluZyAvLgoJLXMgQ29udmVydCBmaWxlbmFtZXMgdG8gdGhlIHNwZWNpZmllZCBsZW5ndGggTi4K
CS1mIENvbnZlcnQgZnJvbSBmb3JtYXQuICBGb3JtYXQgY2FuIGJlIG1zZG9zIG9yIHZtcy4KCS10
IENvbnZlcnQgdG8gZm9ybWF0LiAgRm9ybWF0IGNhbiBiZSB2NyAoN3RoIEVkaXRpb24pIG9yIG1z
ZG9zLgoJLW0gUHJpbnQgYSBtYXAgdGFibGUgY29udGFpbmluZyBpbml0aWFsIGFuZCBmaW5hbCBu
YW1lIG9uIHN0ZGVyci4KCS1lIFJlbW92ZSB0cmFpbGluZyBFT0YKCglPbmx5IG9uZSBvZiAtYyAt
YSAtZiAtdCAtcyBjYW4gYmUgc3BlY2lmaWVkLlxuIjsKCWV4aXQgMTsKfQoKaWYgKCRvcHRfbikg
ewoJd2hpbGUgKDw+KSB7CgkJcy9cbiQvLzsKCQlwcmludCAmJHByb2MoJF8pLCAiXG4iOwoJfQp9
IGVsc2UgewoJJmNvcHl0YXIoKTsKfQoKaWYgKCRvcHRfbSkgewoJd2hpbGUgKCgkZnJvbSwgJHRv
KSA9IGVhY2goJW1hcCkpIHsKCQlwcmludCBTVERFUlIgIiRmcm9tICR0b1xuIjsKCX0KfQoKZXhp
dCAwOwoKIyBSZW1vdmUgYWJzb2x1dGUgZmlsZSBuYW1lcy4KIyBXZSBjYW5vbmljYWxpc2Ugc2lu
Y2UgZm9vLy9iYXIgaXMgL2JhciBvbiBtYW55IFVuaXhlcwpzdWIgbm9hYnMgewoJbG9jYWwoJG5h
bWUpID0gJF9bMF07CgoJICRuYW1lID0gJmNhbm9uaWMoJG5hbWUpOwoJICRuYW1lID1+IHMvXlwv
Ly87CgkgcmV0dXJuICRuYW1lOwp9CgojIENvbnZlcnQgdG8gTVMtRE9TCiMgLSBTaG9ydGVuIG5h
bWUgdG8gOCBjaGFyYWN0ZXJzCiMgLSBSZW1vdmUgYWxsIGRvdHMsIGJ1dCB0aGUgbGFzdCBvbmUK
IyAtIFNob3J0ZW4gZXh0ZW5zaW9uIHRvIDMgY2hhcmFjdGVycwojIC0gQ29udmVydCAsPSs8Pnw7
ICo/OltdXCIgdG8gXgojIC0gQ29udmVydCBkZXZpY2UgbmFtZSAoY29uLCBhdXggLi4uKSB0byBf
ZGV2aWNlCnN1YiB0b19tc2RvcyB7Cglsb2NhbCgkbm0pOwoKCSRubSA9ICRfWzBdOwoJcmV0dXJu
ICZmaWxlbWFwKCRubSwgJ21hcG1zZG9zJywgJ2NvdW50cHJlcG1zZG9zJyk7CgkjIFRoZSBmb2xs
b3dpbmcgbGluZSBmYWlscyBvbiBwZXJsIDMuMCBwYXRjaGxldmVsIDE4IFhYWAoJIyByZXR1cm4g
JmZpbGVtYXAoJF9bMF0sICdtYXBtc2RvcycsICdjb3VudHByZXBtc2RvcycpOwp9CgojIFNob3J0
ZW5pbmcgcm91dGluZSBmb3IgTVMtRE9TCnN1YiBtYXBtc2RvcyB7Cglsb2NhbCgkbmFtZSkgPSAk
X1swXTsKCWxvY2FsKCRleHQpOwoKCSMgTGVhdmUgb25seSB0aGUgbGFzdCBkb3QKCXdoaWxlICgk
bmFtZSA9fiBzLyguKilcLiguKilcLiguKikvXDFfXDIuXDMvZykgeyAKCQk7Cgl9CgkjIENvbnZl
cnQgZnVubnkgY2hhcmFjdGVycyB0byBeCgkkbmFtZSA9fiBzL1ssPSs8Pnw7ICo/OltcXVxcXS9e
L2c7CgkjIFNob3J0ZW4gdGhlIG5hbWUKCWlmICgkbmFtZSA9fiBtL1wuLykgewoJCSgkbmFtZSwg
JGV4dCkgPSBzcGxpdCgvXC4vLCAkbmFtZSk7CgkJJG5hbWUgPX4gcy9eKChjb24pfChhdXhbMS00
XT8pfChwcm4pfChscHRbMS0zXSl8KGNsb2NrXCQpKSQvX1wxL2k7CgkJcmV0dXJuICZzaG9ydGVu
KCRuYW1lLCA4KSAuICcuJyAuICZzaG9ydGVuKCRleHQsIDMpOwoJfSBlbHNlIHsKCQkkbmFtZSA9
fiBzL14oKGNvbil8KGF1eFsxLTRdPyl8KHBybil8KGxwdFsxLTNdKXwoY2xvY2tcJCkpJC9fXDEv
aTsKCQlyZXR1cm4gJnNob3J0ZW4oJG5hbWUsIDgpOwoJfQp9CgojIENvdW50IHByZXBhcmF0aW9u
IHJvdXRpbmUgZm9yIE1TLURPUwpzdWIgY291bnRwcmVwbXNkb3MgewoJbG9jYWwoJG5hbWUpID0g
JF9bMF07Cglsb2NhbCgkZXh0KTsKCQoJaWYgKCRuYW1lID1+IG0vXC4vKSB7CgkJKCRuYW1lLCAk
ZXh0KSA9IHNwbGl0KC9cLi8sICRuYW1lKTsKCQlyZXR1cm4gJG5hbWUgLiAnLicgLiBzdWJzdHIo
JGV4dCwgMCwgMSk7Cgl9IGVsc2UgewoJCXJldHVybiAkbmFtZSAuICcuJzsKCX0KfQoKCiMgQ29u
dmVydCB0byA3dGggRWRpdGlvbiB0eXBlIGZpbGVzeXN0ZW1zCiMgLSBTaG9ydGVuIGZpbGVuYW1l
cyB0byAxNCBjaGFyYWN0ZXJzCnN1YiB0b192NyB7Cglsb2NhbCgkbm0pOwoKCSRubSA9ICRfWzBd
OwoJcmV0dXJuICZmaWxlbWFwKCRubSwgJ21hcHY3JywgJ2NvdW50cHJlcHY3Jyk7Cn0KCiMgU2hv
cnRlbmluZyByb3V0aW5lIGZvciBWNwpzdWIgbWFwdjcgewoJcmV0dXJuICZzaG9ydGVuKCRfWzBd
LCAxNCk7Cn0KCiMgQ291bnQgcHJlcGFyYXRpb24gcm91dGluZSBmb3IgVjcKc3ViIGNvdW50cHJl
cHY3IHsKCXJldHVybiBzdWJzdHIoJF9bMF0sIDAsIDEyKTsKfQoKIyBTaG9ydGVuIHRoZSBmaWxl
bmFtZSBjb21wb25lbnRzIGJ5IGEgdXNlciBzcGVjaWZpZWQgYW1vdW50CnN1YiB1c2Vyc2hvcnQg
ewoJbG9jYWwoJG5tKTsKCgkkbm0gPSAkX1swXTsKCXJldHVybiAmZmlsZW1hcCgkbm0sICdtYXB1
c2Vyc2hvcnQnLCAnY291bnRwcmVwdXNlcnNob3J0Jyk7Cn0KCiMgU2hvcnRlbmluZyByb3V0aW5l
IGZvciB1c2Vyc2hvcnQKc3ViIG1hcHVzZXJzaG9ydCB7CglyZXR1cm4gJnNob3J0ZW4oJF9bMF0s
ICR1c2Vyc2hvcnRsZW4pOwp9CgojIENvdW50IHByZXBhcmF0aW9uIHJvdXRpbmUgZm9yIHVzZXJz
aG9ydApzdWIgY291bnRwcmVwdXNlcnNob3J0IHsKCXJldHVybiBzdWJzdHIoJF9bMF0sIDAsICR1
c2Vyc2hvcnRsZW4pOwp9CgojIENvbnZlcnQgZnJvbSBWTVMKIyAtIENvbnZlcnQgdXBwZXJjYXNl
IHRvIGxvd2VyY2FzZQojIC0gUmVtb3ZlIGxlYWRpbmcgZGV2aWNlIG5hbWU6IG9yIG5vZGU6Ogoj
IC0gQ29udmVydCBkaXJlY3RvcnkgZm9ybSBbeHh4XSB0byB4eHgvCiMgLSBSZW1vdmUgdHJhaWxp
bmcgZ2VuZXJhdGlvbiBudW1iZXIKIyAtIFJlbW92ZSBxdW90aW5nIGNoYXJhY3RlcnMgXlYgYW5k
ICIgKFhYWCkKIyBOT1RFOiAgSSBhbSBhbiBpZ25vcmFudCBvbiBWTVMsIHNvIHRoaXMgcHJvYmFi
bHkgbmVlZCBmaXhpbmcuICBVTlRFU1RFRApzdWIgZnJvbV92bXMgewoJbG9jYWwoJG5hbWUpID0g
JF9bMF07CgoJJG5hbWUgPX4gdHIvW0EtWl1cXC9bYS16XVwvLzsKCSRuYW1lID1+IHMvXlthLXpd
Kjo6Py8vOwoJJG5hbWUgPX4gcy9cWyguKilcXSguKikvXDFcL1wyLzsKCSRuYW1lID1+IHMvO1sw
LTldKyQvLzsKCSRuYW1lID1+IHMvWyJcMDI2XS8vZzsKCXJldHVybiAkbmFtZTsKfQoKIyBDb252
ZXJ0IGZyb20gTVMtRE9TCiMgLSBDb252ZXJ0IFwgdG8gLwojIC0gQ29udmVydCB1cHBlcmNhc2Ug
dG8gbG93ZXJjYXNlCiMgLSBSZW1vdmUgbGVhZGluZyBkZXZpY2UgbmFtZXMKc3ViIGZyb21fbXNk
b3MgewoJbG9jYWwoJG5hbWUpID0gJF9bMF07CgoJJG5hbWUgPX4gdHIvW0EtWl1cXC9bYS16XVwv
LzsKCSRuYW1lID1+IHMvXlthLXpdOi8vOwoJcmV0dXJuICRuYW1lOwp9CgojIGZpbGVtYXAobmFt
ZSwgbWFwZnVuYywgY291bnRwcmVwZnVuYykKIyBHbyB0aHJvdWdoIGV2ZXJ5IHBhdGggZWxlbWVu
dCBvZiBuYW1lIHN1YnN0aXR1dGluZyBpdCB3aXRoIHRoZSByZXN1bHQKIyBvZiBtYXBmdW5jKGVs
ZW1lbnQpLiAgSWYgdGhlIGZpbGVuYW1lIGlzIGFscmVhZHkgdXNlZCB0aGVuIHN1YnN0aXR1dGUg
aXQKIyB3aXRoIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgY291bnRwcmVwZnVuYyB0byB3aXRoIGEg
dHdvIGxldHRlciBjb3VudGVyIAojIGFwcGVuZGVkLgojIFR3byBhc3NvY2lhdGl2ZSBhcnJheXMg
YXJlIGtlcHQgdG8gYXZvaWQgdGhlIGNoYW5jZSBvZiByZS11c2luZyBhIG5hbWUKIyAlbWFwIGNv
bnRhaW5zIHRoZSBtYXBwaW5ncyBmcm9tIGJpZyBuYW1lcyB0byBzbWFsbCBuYW1lcwojICV1c2Vk
IGNvbnRhaW5zIDEgZm9yIGV2ZXJ5IHNob3J0IG5hbWUgdGhhdCBoYXMgYmVlbiB1c2VkCiMgV2Ug
a2VlcCBwYXJ0aWFsIGZpbGUgbmFtZXMgdG8gc3BlZWQgdXAgdGhlIHByb2Nlc3MKIyBUaGUgZmls
ZW5hbWVzIGFyZSBhbHdheXMgY2Fub25pY2FsaXNlZApzdWIgZmlsZW1hcCB7Cglsb2NhbCgKCQlA
YmlnLAkJIyBDb250YWlucyBjb21wb25lbnRzIG9mIG9yaWdpbmFsCgkJQHNtYWxsLAkJIyBSZXN1
bHQgaXMgYnVpbHQgaW4gaGVyZQoJCUBiaWdwYXJ0LAkjIFBhcnQgb2YgYmlnIHRoYXQgaGFzIGJl
ZW4gZG9uZQoJCUBzLAkJIyBUbyB0cnkgYWx0ZXJuYXRpdmUgbWFwcGluZ3MKCQkkbmFtZSwJCSMg
UGFydCBvZiBwYXRoIHdlIGFyZSBkZWFsaW5nIHdpdGgKCQkkY291bnQsCQkjIFRvIGNyZWF0ZSBk
aXN0aW5jdCBuYW1lcwoJCSR0cnksCQkjIFJlbWVtYmVyIG1hcCByZXN1bHQKCQkkbWFwZnVuYywJ
IyBGdW5jdGlvbiB0byBjcmVhdGUgbmV3IGVsZW1lbnRzCgkJJGNvdW50cHJlcGZ1bmMJIyBGdW5j
dGlvbiB0byBwcmVwYXJlIGZvciBjb3VudGluZwoKCSk7CgoJJG1hcGZ1bmMgPSAkX1sxXTsKCSRj
b3VudHByZXBmdW5jID0gJF9bMl07CglAYmlnID0gc3BsaXQoL1wvLywgJmNhbm9uaWMoJF9bMF0p
KTsKCUBzbWFsbCA9IEBiaWdwYXJ0ID0gKCk7Cgl3aGlsZSAoZGVmaW5lZCgkbmFtZSA9IHNoaWZ0
KEBiaWcpKSkgewoJCXB1c2goQGJpZ3BhcnQsICRuYW1lKTsKCQlpZiAoZGVmaW5lZCgkdHJ5ID0g
JG1hcHtqb2luKCcvJywgQGJpZ3BhcnQpfSkpIHsKCQkJIyBGb3VuZCBpbiBtYXAKCQkJQHNtYWxs
ID0gc3BsaXQoL1wvLywgJHRyeSk7CgkJCSMgVGhlIG5leHQgbGluZSBpcyBuZWVkZWQgYmVjYXVz
ZSBvZiBidWdneSBzcGxpdAoJCQkjIHNwbGl0KC94LywgJycpIHNob3VsZCBnaXZlICgnJykgbm90
ICgpCgkJCUBzbWFsbCA9ICgnJykgaWYgJCNzbWFsbCA9PSAtMTsKCQl9IGVsc2UgewoJCQkjIENy
ZWF0ZSBuZXcgbWFwCgkJCSMgRXZlbiBpZiB0aGUgbmFtZSBpcyBzaG9ydCB3ZSBtYXkgaGF2ZSB1
c2VkIGl0IHVwCgkJCSMgYnkgc2hvcnRlbmluZyB1cCBhIGJpZ2dlciBvbmUsIHNvIHdlIG1heSBo
YXZlIHRvCgkJCSMgY291bnQKCQkJJG5hbWUgPSAmJG1hcGZ1bmMoJG5hbWUpOwoJCQkkY291bnQg
PSAnJzsKCQkJd2hpbGUgKCR1c2Vke2pvaW4oJy8nLCBAcyA9IChAc21hbGwsICRuYW1lIC4gJGNv
dW50KSl9KSB7CgkJCQlpZiAoJGNvdW50IGVxICcnKSB7CgkJCQkJJG5hbWUgPSAmJGNvdW50cHJl
cGZ1bmMoJG5hbWUpOwoJCQkJCSRjb3VudCA9ICdBQSc7CgkJCQl9IGVsc2UgewoJCQkJCSRjb3Vu
dCsrOwoJCQkJfQoJCQl9CgkJCUBzbWFsbCA9IEBzOwoJCQkkdXNlZHtqb2luKCcvJywgQHNtYWxs
KX0gPSAxOwoJCQkkbWFwe2pvaW4oJy8nLCBAYmlncGFydCl9ID0gam9pbignLycsIEBzbWFsbCk7
CgkJfQoJfQoJcmV0dXJuIGpvaW4oJy8nLCBAc21hbGwpOwp9CgojCiMgQ29udmVydCBhIHNpbmds
ZSBzdHJpbmcgdG8gc29tZXRoaW5nIGNsb3NlIHRvIGl0IHdpdGggbGVuZ3RoIHVwCiMgdG8gbGVu
Z3RoIGdpdmVuCnN1YiBzaG9ydGVuIHsKCWxvY2FsKCRzdHIsICRsZW4pID0gQF87CgoJIyBEbyAi
Zm9uZXRpYyBzcGVsaW5nIiBmcm9tIGVuZCB0byBiZWdpbm5pbmcKCXdoaWxlICgKCQlsZW5ndGgo
JHN0cikgPiAkbGVuICYmICgKCQkJJHN0ciA9fiBzLyguKikoW2ZnbG1ucHJzdF0pXDIoLiopL1wx
XDJcMy9pIHx8CgkJCSRzdHIgPX4gcy8oLiopKG91KSguKikvXDF1XDMvaSB8fAoJCQkkc3RyID1+
IHMvKC4qKShjaykoLiopL1wxa1wzL2kgfHwKCQkJJHN0ciA9fiBzLyguKikoa3MpKC4qKS9cMXhc
My9pIHx8CgkJCSRzdHIgPX4gcy8oLiopKHNoKSguKikvXDFzXDMvaSB8fAoJCQkkc3RyID1+IHMv
KC4qKShwaCkoLiopL1wxZlwzL2kgfHwKCQkJJHN0ciA9fiBzLyguKikob28pKC4qKS9cMXVcMy9p
CgkJKQoJKSB7IDsgfQoJIyBSZW1vdmUgbG93ZXJjYXNlIHZvd2VscyBmcm9tIHRoZSBlbmQgdG8g
dGhlIGJlZ2lubmluZwoJd2hpbGUgKAoJCWxlbmd0aCgkc3RyKSA+ICRsZW4gJiYgCgkJJHN0ciA9
fiBzLyguKilbYWVpb3VdKC4qKS9cMVwyLwoJKSB7IDsgfQoJIyBSZW1vdmUgdXBwZXJjYXNlIHZv
d2VscyBmcm9tIHRoZSBlbmQgdG8gdGhlIGJlZ2lubmluZwoJd2hpbGUgKAoJCWxlbmd0aCgkc3Ry
KSA+ICRsZW4gJiYgCgkJJHN0ciA9fiBzLyguKilbQUVJT1VdKC4qKS9cMVwyLwoJKSB7IDsgfQoJ
IyBGaW5hbGx5IGN1dCBjaGFyYWN0ZXJzIGZyb20gdGhlIGVuZAoJJHN0ciA9IHN1YnN0cigkc3Ry
LCAwLCAkbGVuKTsKCXJldHVybiAkc3RyOwp9CgojIENyZWF0ZSBhIGNhbm9uaWMgZmlsZSBuYW1l
IG91dCBvZiBvbmUgY29udGFpbmluZyAuLiBhbmQgLiAKIyBFbXBsb3kgVW5peCBzZW1hbnRpY3M6
IGVtcHR5IGZpbGUgbWVhbnMgcm9vdCBkaXJlY3RvcnkuCnN1YiBjYW5vbmljIHsKCWxvY2FsKEBj
b21wLCBAY2FuKTsKCglAY29tcCA9IHNwbGl0KC9cLy8sICRfWzBdKTsKCWZvciAoJGkgPSAwOyAk
aSA8PSAkI2NvbXA7ICRpKyspIHsKCQlpZiAoJGNvbXBbJGldIGVxICcuJykgewoJCQk7CgkJfSBl
bHNpZiAoJGNvbXBbJGldIGVxICcnKSB7CgkJCUBjYW4gPSAoKTsKCQkJcHVzaChAY2FuLCAnJyk7
CgkJfSBlbHNpZiAoJGNvbXBbJGldIGVxICcuLicpIHsKCQkJcG9wKEBjYW4pOwoJCX0gZWxzZSB7
CgkJCXB1c2goQGNhbiwgJGNvbXBbJGldKTsKCQl9Cgl9CglyZXR1cm4gam9pbignLycsIEBjYW4p
Owp9CgojIEEgZG8gbm90aGluZyBwcm9jZWR1cmUKc3ViIGNvcHkgewoJcmV0dXJuICRfWzBdOwp9
CgojIENvcHkgYSB0YXBlIGFyY2hpdmUgZnJvbSBzdGRpbiB0byBzdGRvdXQKc3ViIGNvcHl0YXIg
ewoJYmlubW9kZSBTVERJTjsKCWJpbm1vZGUgU1RET1VUOwoKCWZvcmxvb3A6IGZvcig7OykgewoJ
CXJlYWQoU1RESU4sICRoZWFkZXIsIDUxMikgPT0gNTEyIHx8IGRpZSAiJDA6IENvdWxkbid0IHJl
YWQgaGVhZGVyOiAkIVxuIjsKCQlpZiAoJGhlYWRlciBlcSAiXDAiIHggNTEyKSB7CgkJCWxhc3Qg
Zm9ybG9vcDsKCQl9CgkJKCRuYW1lLCAkbW9kZSwgJHVpZCwgJGdpZCwgJHNpemUsICRtdGltZSwg
JGNoZWNrc3VtLCAkbGlua2ZsYWcsICRsaW5rbmFtZSkgPSB1bnBhY2soImExMDAgQTd4IEE3eCBB
N3ggQTEyIEExMiBhOCBhMSBhMTAwIiwgJGhlYWRlcik7CgkJIwoJCSMgSGVhZGVyIG1vZGlmaWNh
dGlvbiBjb2RlIHNob3VsZCBiZSBwdXQgaGVyZQoJCSMgSEVBREVSTU9ECgkJJG5hbWUgPX4gcy9b
XDAwMCBdKi8vZzsKCQkkbmFtZSA9ICYkcHJvYygkbmFtZSk7CgkJaWYgKCRsaW5rZmxhZyAhPSAi
XDAiKSB7CgkJCSRsaW5rbmFtZSA9fiBzL1tcMDAwIF0qLy9nOwoJCQkkbGlua25hbWUgPSAmJHBy
b2MoJGxpbmtuYW1lKTsKCQl9CgoJCSMgQ3JlYXRlIGR1bW15IGhlYWRlciBmb3IgY2hlY2tzdW0g
Y2FsY3VsYXRpb24gKGNoZWNrc3VtIGlzIGJsYW5rcykKCQkkaG5ldyA9IHBhY2soImE5OXggQTZh
MXggQTZhMXggQTZhMXggQTExYTEgQTExYTEgYTggYTEgYTk5eCB4MjU1IiwgCgkJCSgkbmFtZSwg
JG1vZGUsICcgJywgJHVpZCwgJyAnLCAkZ2lkLCAnICcsICRzaXplLCAnICcsICRtdGltZSwgJyAn
LCAnICcgeCA4LCAkbGlua2ZsYWcsICRsaW5rbmFtZSkpOwoJCSRzeiA9ICRzaXplOwoJCSRzeiA9
fiBzLyAqLy9nOwoJCSRzeiA9IG9jdCgkc3opOwoJCSRjaGVja3N1bSA9fiBzLyAqLy9nOwoJCSRj
aGVja3N1bSA9IG9jdCgkY2hlY2tzdW0pOwoJCSRuZXdjaGVjayA9ICZjaGVjaygkaG5ldyk7CgkJ
IyBDcmVhdGUgdGhlIGhlYWRlciB3aXRoIHRoZSBuZXcgY2hlY2tzdW0KCQkkaG5ldyA9IHBhY2so
ImE5OXggQTZhMXggQTZhMXggQTZhMXggQTExYTEgQTExYTEgYTZ4YTEgYTEgYTk5eCB4MjU1Iiwg
CgkJCSgkbmFtZSwgJG1vZGUsICcgJywgJHVpZCwgJyAnLCAkZ2lkLCAnICcsICRzaXplLCAnICcs
ICRtdGltZSwgJyAnLCBzcHJpbnRmKCclNm8nLCAkbmV3Y2hlY2spLCAnICcsICRsaW5rZmxhZywg
JGxpbmtuYW1lKSk7CgkJcHJpbnQgU1RET1VUICRobmV3OwoJCSMgQ29weSBjb250ZW50cwoJCWZv
ciAoJGkgPSAwOyAkaSA8ICRzejsgJGkgKz0gNTEyKSB7CgkJCXJlYWQoU1RESU4sICRjb250ZW50
cywgNTEyKSA9PSA1MTIgfHwgZGllICIkMDogQ291bGRuJ3QgcmVhZCBkYXRhOiAkIVxuIjsKCQkJ
cHJpbnQgU1RET1VUICRjb250ZW50czsKCQl9CgkJI3NlZWsoU1RESU4sIChpbnQoJHN6IC8gNTEy
KSArIDEpICogNTEyLCAxKSB1bmxlc3MgJHN6ID09IDA7Cgl9CgkjIFdyaXRlIEVPRgoJaWYgKCEk
b3B0X2UpIHsKCQlwcmludCBTVERPVVQgcGFjaygieDUxMiIsICgpKTsKCQlwcmludCBTVERPVVQg
cGFjaygieDUxMiIsICgpKTsKCX0KfQoKIyBSZXR1cm4gY2hlY2tzdW0gZm9yIHRhciBoZWFkZXIg
YmxvY2sKc3ViIGNoZWNrIHsKCSRoID0gJF9bMF07Cglsb2NhbCgkaSwgJHMpOwoKCSRzID0gMDsK
CWZvcigkaSA9IDA7ICRpIDwgNTEyOyAkaSsrKSB7CgkJJHMgKz0gdW5wYWNrKCdDJywgc3Vic3Ry
KCRoLCAkaSwgMSkpOwoJfQoJcmV0dXJuICRzOwp9CgoiCjplbmQgIiwgMDsK

--Boundary_(ID_0JOK0pLfQoWhhXfEHHcvew)--