Compare commits

...
Sign in to create a new pull request.

4 commits

Author SHA1 Message Date
Todd Zullinger
1ab8a42940 Update to 2.7.5 (resolves CVE-2017-8386)
Use https for and xz-compressed files for sources.
2017-05-09 22:22:17 -04:00
Petr Stodulka
61a6b9451b fix broken aliases inside sub-dirs of worktree
Resolves: #1377440
2016-10-02 21:46:13 +02:00
Todd Zullinger
a37eeb40e9 Define __global_ldflags on EL < 7 (#1337137)
Building on EL was unintentionally broken by 58fa169 (Set LDFLAGS for
hardened builds (#1289728), 2016-04-11).

Thanks to Dimitry Andric for reporting this issue.
2016-07-01 12:54:07 +02:00
Todd Zullinger
2cf182e0bb Set LDFLAGS for hardened builds (#1289728)
Without LDFLAGS the git exectuables were not being linked with the
desired settings for hardened builds.
2016-07-01 12:51:47 +02:00
4 changed files with 608 additions and 7 deletions

View file

@ -42,21 +42,26 @@
%global use_systemd 0
%endif
# Settings for EL <= 7
%if 0%{?rhel} && 0%{?rhel} <= 7
%{!?__global_ldflags: %global __global_ldflags -Wl,-z,relro}
%endif
Name: git
Version: 2.7.4
Version: 2.7.5
Release: 1%{?dist}
Summary: Fast Version Control System
License: GPLv2
Group: Development/Tools
URL: http://git-scm.com/
Source0: http://www.kernel.org/pub/software/scm/git/%{name}-%{version}.tar.gz
Source0: https://www.kernel.org/pub/software/scm/git/%{name}-%{version}.tar.xz
Source2: git-init.el
Source3: git.xinetd.in
Source4: git.conf.httpd
Source5: git-gui.desktop
Source6: gitweb.conf.in
Source10: http://www.kernel.org/pub/software/scm/git/%{name}-manpages-%{version}.tar.gz
Source11: http://www.kernel.org/pub/software/scm/git/%{name}-htmldocs-%{version}.tar.gz
Source10: https://www.kernel.org/pub/software/scm/git/%{name}-manpages-%{version}.tar.xz
Source11: https://www.kernel.org/pub/software/scm/git/%{name}-htmldocs-%{version}.tar.xz
Source12: git@.service
Source13: git.socket
Patch0: git-1.8-gitweb-home-link.patch
@ -68,6 +73,7 @@ Patch3: git-1.7-el5-emacs-support.patch
# http://thread.gmane.org/gmane.comp.version-control.git/266145
# could be removed when update/branch of Michael will be merged in upstream
#Patch4: git-infinite-loop.patch
Patch5: subtree-alias.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@ -334,6 +340,7 @@ Requires: emacs-git = %{version}-%{release}
%patch3 -p1
%endif
#%patch4 -p1
%patch5 -p1
%if %{use_prebuilt_docs}
mkdir -p prebuilt_docs/{html,man}
@ -349,6 +356,7 @@ find prebuilt_docs/html -type d | xargs rmdir --ignore-fail-on-non-empty
cat << \EOF > config.mak
V = 1
CFLAGS = %{optflags}
LDFLAGS = %{__global_ldflags}
BLK_SHA1 = 1
NEEDS_CRYPTO_WITH_SSL = 1
USE_LIBPCRE = 1
@ -686,6 +694,18 @@ rm -rf %{buildroot}
# No files for you!
%changelog
* Tue May 09 2017 Todd Zullinger <tmz@pobox.com> - 2.7.5-1
- Update to 2.7.5 (resolves CVE-2017-8386)
* Sun Oct 02 2016 Petr Stodulka <pstodulk@redhat.com> - 2.7.4-3
- fix broken aliases inside sub-dirs of worktree
Resolves: #1377440
* Fri Jul 01 2016 Petr Stodulka <pstodulk@redhat.com> - 2.7.4-2
- Set LDFLAGS for hardened builds (#1289728)
and define __global_ldflags on EL < 7 (#1337137)
(Thanks Todd)
* Fri Mar 18 2016 David Woodhouse <dwmw2@infradead.org> - 2.7.4-1
- Update to 2.7.4 (for CVE-2016-2315, CVE-2016-2324)
Resolves: #1318220

360
gpgkey-junio.asc Normal file
View file

@ -0,0 +1,360 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQINBE6GdewBEADE3szNmKeUAUad22z1tWkLjLzyDcJpF7IzEnLs8bD1y0I6iqH0
169ru5iXKn29wc+YAuxWorb4P5a2i2B/vs32hJy/rXE7dpvsAqlHLSGSDUJXiFzM
Bb9SfJO0EY2r+vqzeQgSUmhp/b4dAXVnMATFM37V83H/mq8REl5Wwb2rxP3pcv6W
F6i51+tPEWIUgo1N74QkR4wdLcPztDO9v7ZIaFKl+2GEGkx6Z+YjECTqQuyushjq
41K3UVmv+AmLhJYKA78HY5KqCkXrz8rCgoi+Ih+ZT2sgjx637yT84Dr/QDh7BkIB
blmpRQ+yoJlVDWI5/bI8rcdrPz+NmxaJ7dKEBg0qTclbwquacpwG1DCCD8NgQrwL
WVLGVdsT2qwek+KkmOs+iNBXY1TgKPAeuv0ZDKKYrCwYpN1K90oXk431g79bKsH5
8Tybg5uW+e2i+H5gnDeyl481HOt8aHOPu9qIB/zIek6lDH69q3nGcf7k3prxDf3I
qYy6CPcpjTfpN4i/7gxQDNI+AIgbs21EE5Kg1TPUe0XgfdJMtIF+D6wTjbrLtDnn
09Iwz0SfIZR52IrZHxUlFXZFjk10RXYATtdMqEFgYgjYvYXxL9EEr7T5Dgso+qaE
wV0rrg0VDKrf/afrjGOeffumlhBhJnBnns1T+p65Vz5hyQl7SFKLw+Ix7wARAQAB
tCJKdW5pbyBDIEhhbWFubyA8Z2l0c3RlckBwb2JveC5jb20+iQI4BBMBAgAiBQJO
hnXsAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRAg0E5acTZgp+dxD/4l
rBl79z7SK7RUNapxiosr/1VVf2/fWHKqGmjbZscc/8Z8gbN8lzan/8siXtGxhpxt
t/F3X0ag4cQGB7IvQ4eaEJN0yYmccgdjPvt1OkHFTywrg6MjSx5kTk6IjO3Ngcof
te3VVcdGwOc3Q+HyG1Pb5N2VBL7iR2va+NyRIxtMSq+WVaC9YRgK8lhrkFM7zTS1
S/80W6l3ZL0TaGxg2Ys8cbfVruefPLr8SHh+TEssij55/sebLPsqyP+aGXfYc5FJ
VcFnYxp6FdKovODLEEjR97HaTo3z68jSHQWCDJDp1vYpjqdnTGCSwnL2isYeCcuj
dLLKOAlbKu2aiP/+rZOmZfbxNK7dWnhg/Z7YC+dq5Mt/W+4EcaRvf5MYe3V7PGoL
XURi5dewQD35PtxfT1Zj0KQHzZ9m81IE3s0zjTAHSVqwFXcue4Jwr9SZLEjKSUQF
jMHoK2VwTFKu6UA6JS0gQwPwyHYfdOxAm0dEUTcJqrWOJHjHu2WNyqzI+sh9lP1P
S4l0vsVwdyTCkWos0mVNlSiYq8fZ5/fcUcM4Tb4AJlvV1p1t+/dNNDgf/qWmMkQc
hyLVCQi3zPFtbAFPDp+PVcninjkyjB7chyRGSp0aN6mFmnrDxjDg3zz7DWe3Q6PI
790RF4EQY738+WcoKhpuJfcAArfQ2xgKr55VSs7glYkCOwQTAQIAJQIbAwYLCQgH
AwIGFQgCCQoLBBYCAwECHgECF4AFAk6GeOUCGQEACgkQINBOWnE2YKdUxRAAq/kE
aXw5mxp1GNUasudAKdXhtNOtbwGqQjC5lPuJMaiESpuf9NGBpm+1cUQiw6SjWtIZ
B/n7QOEJpz1OI+FBLIf7wGtgRgl0YwfUYsU6JL0H/Yjl1Boh2L9ZJ/qd5cYOumy5
yld3VknI1diLngz+MqSxGR5Vg/SP1J5q4NpiRAHM+IEgHwR1izn//iWAKuo+nqyM
T0uWbSM/7cEH+jAqF1wF7jOrYFIXabSahvNls0mTLljn85kug0k7qitOYfYKcHY+
Z8+I3YeLubKfiyjqhcPeCSEXBPsI+XJYzjpV9xaovOAAwvG/zswt1fShmqzZwc1n
Z5CKDcWzQTResA9XYJ9aXrnrn2j/auQjvZYyjUjhlApcL7SRa6WWS+T4XjTRRZD0
maZJkrXAerPER7Ms+c7qsUFDlrry1VA0VufMmUdFgtV3P8ovnBBUlIiiOTqjzcAt
b9MYe2vzDmyUMU0AhChy8lWJZ6IbH9kcc8Wjjo4FpmNjvsh+RucpnwYnv1MO83Er
CfPaLywBBv9dLZCVaiH82uVnsY91QGWyPou78doLZS6jNt4BspKnL+1VphQ+ZRVh
guEsPDOyYpJvL5/fXcWZ7ASozKpLIxDVF9SXlGSPhR4NgjUlQV9CfMi55nfHiQZG
F5FO/SdxlXsf1k82xZ0pD5sNejLQLvxPRCjWwCCIRgQQEQIABgUCToZ4eQAKCRDA
xtmk8xGbmhJjAJ9YdwIYsa0q1i0kCLOWlXNTMRpXmACgivss4zsxTs+UsHKpNm2P
e6t655OJAhwEEAECAAYFAk6KMDYACgkQvkvAx/ZRq3vafQ/+KgazXW7OCf1BMSGy
sl9jZYIgWp9KP0SR6AG7WWEG8nHbfEaSrUyM4i1x4F2vAbsfqQLEkJSI+6z8L9rP
7/vgWxC1Zx58txQnV+p4h3L5gLC5wTAgLFL54E5pr13KdeGE8Nn0ve49qITJZ278
ZGkIqAir6MO+tDPR+/Oj6beh5dQT/N/otMrcSEzCoRN1QwcQltNduISXKpyMnpRO
t9riz8aaJkY1dupxrn8Xr53GrphKEH8DLH9Pwe8PjBfKcOtY05OQTkOgq1wKCDMq
rP6DMpffLvdHyPZ3otkyaMEx35gWIQ3mByckCB8OQlf9zM2vFBvgR7GpJ43dGcBS
RmpjnzYCVFXohR+T0jfPU2qTDki5OpmyHlS6xinFtACw2sbUof2PkaZgLxS4AU4T
Ju8M7lPM/RUL/yf+lOnfgl0y5CSPJOo0SxAIL+UORhlpxrw8uB9SPWn2+64Qvha+
Mksp2/UU7hjFbYPywL+sE1a2LsX3s/lchJUmLvC42x6iYpcJqcOTSy6DHHRqU1Mc
FcmEWQ9dmD6g1pdxBiv0riA6VlhYNgDik67sZC2dMaGLoCdoIWgFH1D96xV4ousg
oF+jlV1xtxs+KCnjvEmTITBP/5o50UQ4sxcd6Br+I/6cGWL4mTe3IulxxN9yupSw
TPLBu17W3ON4ZE8vv9vk5AziB+mJAhwEEAECAAYFAk6KL/oACgkQyx8mb86fmYF5
qw/8CQi20QzdVxDL2WfMIo5J7AOrpKQhbDbmScURKW3AmH8BLI/tFP+FpZ2PwFMh
9xWmtdr3zm/NKVYHP1BpCKNk2hiAQtWGAlzO8YYKAw1v0ZNNOjyOOpeA4XIBrwIK
7lMi8NJlitWuJqavnPYnptpfNuvRl2JWTqd+MZp738aTOBXwz/6GqnWRaH47La1g
DzXtK5nc7pB1p5BUelhAUZE+W0uBxZxBr3P66A7EEwfDtixsiWJK1p0LRtJwzPQu
CQw9oxhTUIghutUZ5N507SySvYT7kLbm0pr6T+3AYgu5a7f13qBOd8JMLjIbd5vQ
y0aTD9RNf9R+vNUErBOo009s2Mdh83DU87P3QzbeNd/nUrW57fwMVzLhaqhlX8nz
eTS9Yv9+/6UkqouI+uMUaroEgBIt+VTSUR+MML28ii4CEJc+n9YgXWMEsvsSKv5C
xQVM2TBlYYNJY73K99k3jG+maVI4uX25ZsYlmO+L/hSD/XM1ROrHfNUfyhHILUkI
Vyx2nOApFYpTUPV7iyJCDnF0eImuX4e7gJ2JPNY1f5rPAeOJvRbJs/oStkTnfc+v
ZDi3KOWxAIPaAjB1atFxWp+hxuxDHzhFMVgfnJ5cZDTgrBb3ftkE+0rdyHfLMM+g
EnxbQIJ2r6S9KQZAJJC6kIXyPRi/49Wp7Eqfx/KZfnllhBWJAhwEEAECAAYFAk6K
MMQACgkQjBrnPN6EHHdj1A//ahy751AcOwddYNooUAkvSUoOUkiDPH3gtToQ9Acv
uda6ZuKw+v7+kV6JAICrjL2zVfo65lYDcsrepnHDaGS70kPA9A5CFoh7ba+KQyBS
Zvdzc5MQlN1uwUNI8+BzCSlctdCaTQFtDVNr8iXQBVQVpMCoLw5+OEp6oC/dH2E+
PhuYSJxpwMvTtLpNhV7K6kPY2nPPG33GSC0zQT2G7NeGqffKKlfPHprJfYtnKqCS
vrfkvgOAJWTgJTBIBHuUMQxLVVMJtgY4dEiCS4/X9m+Xtor971pc+/FX1cVAEm27
rEQSq+kn+lQsXCTINPx12wQf2HRSwgruvDQ0rVMgBwBAD7jTZYR2xfXw/DTqiYuL
NVcLmZZ450kxvxBvUReTOPeCKqQC1N5eQSIqIEzIuN8AF51ddxdGXA6EZCy5CfGm
Z89bSj8Hv9yXSTdQY5rrp0OpF05XE1c7U8dJUvUlEZLi7lLFvL5l1etoixFUeEnN
td/dSkPK5tXj+ryDrnSn6Y8YNrj2gqt8ZVqLoi9ADQh6EwGe6AOWW2sJvVOwlAHs
MVTz2+uLXNuM7pjT9N2W1AsR0KZeDGqEZ4H03c8/awidtnqAkaUV4eRRLAIYN3Vp
TC0P8m4Rm89t72H1ZebzGrHGN1lMI+G3wVoEGsNKbuxCGo76xnBQWNU8Egn99jyJ
VYeJAhwEEAECAAYFAk6KTm8ACgkQvaBghUk7rOTXDxAAun7VtPSqHqmWbjlZ6lAM
HhoWFlpIETpa433WyA7FeruqshPEJlxQXXkgOyD/WXyZqVmh16pWZXdviJWuT0YE
nnt2oNXfRwuyo8MJUuJfzubx7tYOwVFGMQ0U6anzRdiez5CWP8tw9hCOQIKDqJI3
qMMCcqLOzvNS/Ho8iXULlJ+k8bD5yyZUzbsy4JimR3YPKWJi9rXpcpFiQGLeHGPN
wvmUn/bW26KNHFBOlBVxUvkOSiZusT/xVEGfDCsu1BFsEF1Iigaa3IYZXNcMLVEy
pfbc8GozoU2+T6/TQw8uPwXhJXzKUsk1OJacgJtVvQfJGWy0SXWrlBv46ZokFnVv
fNjKgRhvYYmfojK/kJ0lE6Jm5PZOqmgmUabZXDjOIngODvJ2e2lcaxUu8MTNS/XY
5gZQqv/8Q/5ptjeVB19OGjpWQ1hWyK53sDOzTMqA+5LzD+Lub8ETuFnkY3bW5VnB
1B77uhskv4DKH5jsiOSAKik1rYOF0M06Pjumk7FTCB4bkwlzdsyjEzsyrOBjg8Ml
ckmNmwI1vRonhriyqxuJNFyhE/OSLyXlSObRztHJsXII+Mui3eQ2M1mTpr6EZe5o
Sy0Z/Yb1gX/tNZNZ0KEKBLUChTyKAYK0Kc6rKZsfN4laXZoZaQjbUpbTOJCRgbwJ
nR/AHLo8fIcqMZdj0biHUmWJAhwEEAECAAYFAk6KQ/kACgkQTQotlCAJATJeTBAA
5CaaZtuQgsJVXmPlwuk1Wqfjo7fsfgqM0miqQ7wiab1S9tcYVI+UGl7iotjsWG+A
oS5XtbEBZ/wxCpX8Ram+PIsr0SkTdJarSPy+U+kTLKguygYwtuXft4gxnInA9cuZ
dBbBbTh3i+YF2i289J0GErqYLbzlklLjstrjEjliWXI8FapvK+rqMUMvol6jerOJ
DeULk1VTgcNITmbnel8EiGLNdCdwOz9KEzD1Nhl1NoXB61SAGciMl4ssezkVC7LX
omaMWrp7RXfozrggGaiu28Gl2CW4yvJ7alR7nU/nyrtFqy3cIGTAD8UpZWd1AcYf
dt1Hh3q45qyoIZg3+M3bsZis5X+0eiGFH550bw5SvkHeCzorQmNKSTWjalxYu7PK
uJv5pk7Z9dZmFUTyvkGeBPYwNq/WDXNrBtpy9REPc4Z5jbOTpnSLC+qFVUWIl+a7
0Tlw45uDp8lOWu/CD6pbpHTkxSxwHIM04K0fdoMFvzkmenOx98/FSuLnCYbJzV3g
oANL6biHk1w5RhRb5LDeTtiHayMxEeBCkL/06PUA26OCoFbmq53PGlhKQnQxuiPt
g9gwJYMkkiMUrW6p8s+xIwZKeXbjAFFParPYx7rFzjbD2VlzedzlUgN5g20izT5k
l+/n1oUxggmWnO0cTuO5LBxKDdp21oqhhOvCY7vN2u6JAhwEEwECAAYFAk6KVo8A
CgkQIx9wyqsxaFDoMg//ZOZXcgMIVBfFX2GLiFPfBclysUP/CWn6o7ZYeshhLWTY
kIPxvLn7nPFHob83mX/iPXYnQWZggahWu148ysKmMvulYeNEwvcl85QULyJRNx3G
H0PG3dfVavFxgOHeHBIGUlkLGcqHFjDM4HqaRAbQ2CkHk/Ds5NiHVT45/rIL+M3l
A+leFxNQ2hl68nsRL2B54ml9/bQx1PhLuDTGT7EMxkgLMv9cspqpT/nIoT/3Nq7E
IrN51PZDixpBcxalz3NXtkirAKLXI1XKlRDKrzL27PZiXZTRWZCbNdpf1kkjauD2
RN9KOXT9izvbC6PrJM8/cikOCpYaWfRUe8yXAxqFP7NK7z+8vL6TFPRnBwF5DTNE
oHdf+7jBbXwV01f/At6YtcBBvNDGOKZQE3lw6Bjqace/z1IIeYggq6ffq9h554O+
0skye7NqViZh2y5Kd2TrYZksdhRgfRcMDJkvXj3rINcoaWf91u5Y51gFfHB/KiKn
rTIn94bmLh7omcZjx5dde9IpZtk3i0REg+LoG2G85U409AoPHbnbhXwbmX/ROp1j
dl02ewbLAo1GzX2E+NnaKoIgEI6yXpQgP/bDeTJrOq4B4FGHbLv0jdfDwgAcOz7D
xrmsDbqivcKS8ncYSlEndnIE/X+RlKMCKGHcpht2dwpfxNzs6xqeJLtNwdkuVBmJ
AhwEEwECAAYFAk6KVqcACgkQZrFaRl4fnslDchAAuFk3mX3Fs4ibFZKd/wOm+Rgq
WwmwTxbu//5e6NVb6wi4Rh0T8zDVlNHxXKUuL5u1Ywnjee1JPxn1xHJRYh5Teb1z
rZVD50NtF2QDzJdWnsCEp6zVkI791+pI3yd2oZOpaUU4jdjfvukExKl2y4HsR8RY
7b0G5OxIHdOyEmS4wtKr1iaoCXzunMi1y4jukBxo/RsBuipizn7QbEkTnuL2tMpv
oLbXJh6lIZ8pHcM0DIrlATGGB51k01+ChabSKWZhlObZG1vNWwi8/5uxHsUvULLE
fqXeDPRimrX9gL+HbUkXqUq4kyXVbqXwdqD+hfETr1aWeal4NYYhwWU90x5171aD
lw509mmQYeehpWY2Tm3VV+uY1BjYEym5bbTCWYxSS1vu1illFboZWyDUaOzarT/m
TxaHm6qsMhcKj4bfAxfG6+t8cNHwYhbpNLmn1gA3J/HKPlHagavJQZcYK7qjkUwo
UD1l2+KrK+qEskHXzRZ19CZehkO7+II5jghZlZGSi/T2OibOmyuPMYKo2Mx9dizg
08aD+H+A/c6BBKLpZr6dAlJwLI6JpyEoxKsWfqhbT22ml5P9CydMFy07ZNrleX23
Pp4aB6oEvI6806RTVi36pIrUTdtwpfHY9vVOQpbYDCagfX7EDusGIDguzOSycllg
hAM0A5oMlDWWWAoqHLGJARwEEAECAAYFAk6KZssACgkQb4/yn8cykmFRLggAq0+u
+mbzSBMrGtrdo3AmYObe9QkfK/G4iNG4nrO+lbJUFGbbkWrmjF4TTPA78UCKsyqx
uGq01R2SnMdHUlg7awOepA5u9WQiWxJJ0znqWgTK7mLXPVAuMmkV3HriAzoGNGez
gYvGWW1NGc3jaw4snDBNx6yD1jVKmnECCLa8cks0GA6qy9bf3DQrASeuQWJ6L0yh
sR2IiyZd1ppsLW6B531dNWlR44fm6nPl029OKw+bUxATfjeYpD11CU78UQ+fQimF
+8seXAb5J0zN4kWV3ldJBoks8q1e+6NQadTeKg1tioCVFDx8J/UAL4AEsIV+jUua
JBufd+JpVcXsTUoVOrQgSnVuaW8gQyBIYW1hbm8gPGp1bmlvQHBvYm94LmNvbT6J
AjgEEwECACIFAk6GeL4CGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJECDQ
TlpxNmCn6GMQAJ0V0jmyQ7Lvi5FBBgNTdY8qfVbLFxEUVAsKf2x9QxhsOcL2heQR
Vkp10JKv4/VQLfDwr6Pv98FQchXlBmFiySAbVihUVC+VJ3FhyKBtI14RXT6Nkwd1
8PXDvWXy2fKeiK9GPDWkufac0h/giz0T1xP7CHxDErQATMmYbkinyyM+xd1Nir6D
UYcHJQIK2Dg2VPChkI0XXCQETLDbrC9fDwWg1vP36PQZ+nw/cIRt+2xkq8HHUzB7
kOnXHqPt1kb/Ry8hZwPnfV7g/V0MogoMLtz233pqwuguLXP7zY3jTwAZZ9VTpuCT
sdVWXJDlznMNurYi1yurCNuUvq/O/9JC8WBtdVUuvFZGjRZWfP24W57iq/qz8CV6
dThq5r4WygE83tMC3DaarNJ4f9dQUA4KpL7j2EMXkgoXcEy1mieUCypdNiZj96hV
8Q7apSLk2V4jtvLkJfzX053glqRJI35SX8OkSazZGYZHX6QfZlvznnrCF5x/xBzh
bfr2Geo4rxL0BQsp2DQodqUCB23QzsPhWWffYtkATaD5vovGeQ9Acd1u72jH3DO8
tVMH85jMO4f+oc0h3lnkPS4F33QqlnErRo/IRm6jCsI/NgMZUYdh0EY5Iiq/e8e+
u8gdo0akkwHlNvR4KrYrK/1K4h+i+UBIbJDZpqT/iH+yhJRQ3CAan8KSiEYEEBEC
AAYFAk6Gee0ACgkQwMbZpPMRm5olWwCeIfUIBkx+J5CWi8lLt/QiWJbmXTUAn34X
sZP8NxiyYyw+BO8q/XSjOUk2iQIcBBABAgAGBQJOijA2AAoJEL5LwMf2Uat7pRwP
/3cb2a04QUP+5NUS8sDULlEFZAUTQcnlKgiWFOVQwzASDespiXPL0sqw/A+yZKAG
M176KjomyD6zBeLrtvIMWhWKUd8jvHtlQsXlgv36NBz6rmSnbQQ+TWK6QomMETsO
VQ+ZfX+aR7EEy9WkaDgJiWtfigMISGyzZ/jITF3eiBJV1hXSKKn128iuhwNwg02T
TCPoxECehy+lHr0u1MG20gcnaQdk1KCC75pIIb0VxWMqjiBgU2xZwWPzSMlDZgiU
00YVFTR3746VeLw9ywb+JsqDplNJwES1P7EqCNASjzt/jWShLtDrryGgDivrWDRN
hCjqBaukqxssdox2EXOYXNCtUcEvYtfPcYneLTa81MaRQ8cRYDdkcI/WGAv8vGaq
NhC6nrmlJIyWi7Ql0VPV83inZxEnR5KLdPocoU7uPMpT2Omp0HL+arhU6+f8Cf4J
M8v/MMpMwmh6IlCaJxjqkYev23yfMlnP5xM9MrHDsNmMSyIJ/VlPutszSJzAyXM1
KRpxaJyPokegYl0YTptAONHOt4KJhgag7bkveK+RwDRs1BvK/KXIZSbDpnCCfE/L
PARg80SKo+etZQkkZcHyPZEb9iZssp4Rm44NgfHBuWJ7QACkRXbThzaoba6ThwKl
9oHRBi4+WEDymZf3aa0g7EWB3OjHfDVr3xp6QgmP1M8viQIcBBABAgAGBQJOii/6
AAoJEMsfJm/On5mBr+sQAI3KA94kGfUqfpHjohh4ExBW/13GDa2sxmTNEMSTNtfF
qlNqYuGbyBkCnDrQP2xBhJIVwo62pZgcPmBdRc4KYOexed1eesVijIJolz5hScMP
aZO9yUCZvhQ1UkqmARuDJ6wzuAL8wIJoIAfFBknJFd945ztmxNrLWlWgWseUHcJv
HIC54rFkNvJY0UbOJyRjNFjJ6VueQ7HSJKqagrUExAxVD5VUFxgyLZg91zWi2eYN
f/uloLKBvd5PD6vCZcLmQUm7uyhWW6PQYUtUNq6/3y4NKOoGVWsB21e//cYzuXzP
0wGQ+Cdso86I3HjL9TVO+ZUx0KBHdIXZfLyrNC6Kiz1f+69Qj7sutq7qhmqR1tcF
+cnKnMMtkxeI6v6+gsm9+0ZMZGFlhsfTzq/nChdR205wtMvWx654rpeJjPyzZXBW
N+9A/Khqv9abLnAYKYVUwoVH1qhkkvWxk78WMc+YFjRpeDboum9RRVN8yG/ktsVx
h59oh0qiiLLsQf3cXiPH8kUw9sKKWJ8UjM2UCi3o/6tjh+DlMPLQ4/CeRMlGr58h
QXqePg1b8YCzNuOg0X6CF9YNVdW6lSRNjjDJSH1W56BAhBIW1xZVil5KamijkbGa
Mbfj3kijPvfLf9n9KfuveU8z7PzTSuzhh/UzRYyoQh1qG9DBZp5KWJVljG4qFZ0o
iQIcBBABAgAGBQJOijDEAAoJEIwa5zzehBx3Nj8QAKI4kYCz+z/DcBB/1uYEMC6P
DlE5wSS/4RAVpDDyhXeTw2OR9N/Req60dO/anBD4MLkKaSDul9SSMgsFo3JM54Ke
DqzoMDA12+rzdK3sH6pewWt5JYMQuhE0Y9T8VMq6FhUVPdcIEPBFdyIA7SYf8g+C
UmWBvMxsT+krS4zttOm/B1kOJr5F15rZMAk83F9goUrys1GbAVggFbzWxrJbvXnc
9va72V7rNklFDGwtNJ2lAqUU1Dqtva0vBSnOqPlP0UaC2Ad+rf26Wkvfh6YACEX2
1NBvt9HfJKCMBx3lKbhDjhDjFcny9BvEEH5cmQGtFmjYy7SnyPE6V1ikzw9DIK/d
tZyDR5jHZZeSotngq3f5eBUY0XQV7QYh27wYDSsRmBgPmuERhueX9bajMdtoDm4q
PLq4aXxhWtTowvGjfk4GG4UBi9So8lWU1yZbFHp0yeerG1sZN/wMtgSVy4MzHrwD
rQgGRJ3n4x3S/x8jS73NoJAbmrngIno7lUogwNg6uhMCNFpGCzGBLWMu1zY+oDFo
BOAleNyLoYhAXiBGKL66qwfoWKwOeX/jUawbxcnzyGQBmnA8Z9djv6bxU3/sDp5l
RvJ48TruHPol01lMUOMfalUL9H+IjEZmcpsToNadxbxuRLchFECeNSien/QD1XaT
M4gm3xFCG8YpnHGPDo5viQIcBBABAgAGBQJOik5vAAoJEL2gYIVJO6zkkZ8P/2w+
5xUoHYbYJ5P+2j07HUV6M7YtxZOb6vIHoWGCYSNWRKjFy5MeUhMW+JNU++W6MOt9
Ru7MDUFzrHPKKjtg2eK2rVJ/29aavrl/ywIs4MMPF9P76vYsr2jzPgvsnlAp8VAK
bhzZRB6pE+tBMz9OE0IqPNcrkbKM7KpuJulMOCeQF8QC6YsPI6vxI4QKteC3vHBk
x8tT8QCvSMDyqk/jmYtuBABlfnzDtwRPabVHy40/KtHObr3Na4MXrZ4Y4/Xh1UMs
eXblaA76YGRStJwP3VjEW+hqp9271VgxxG14c2jJ5mYTjBHgDGlpLHdFNi2ugmh9
A1jSk3lR3qsTzigRdjRT2n6JwlARDTLiWzFGbFgd+8OTs+Qc0MwKygQ853t/GWqS
00Ra4edNl1pnIC12QspQdzZ3axXB90sE6llnu2CjfLFLxn1qLH0cgEs3KFeWMPkY
39cK7Eff7eTdji/3q8dsq0k5V65CKIDavS79vgSN25jltPv7CiC7YAJCuiMF0Eno
YannyLvRvFsViBBzlEw/aPAN7tZ/SUUFcwtg8WGOKf0O6U1afqXKY7yQMFcVE7bZ
IdH3joh1JZ3TPQoHWkLTQD0MLrpXekCctHNB1TvSVQPndE9HTit2OejcgZzPfv4q
29Rc0RIAEMfqjwST8dAhNu1WPiqzpnEnxzKT3hhiiQIcBBABAgAGBQJOikP5AAoJ
EE0KLZQgCQEy8jcP/jfkVp1XGIl5y2XTOVtCdRMd9UUmb4xAJ+R5/XruEn/hpxDh
1UZQ/NzRsN2opKDaTRVe8zMZOVjmS8DUrMj5vGOoITNXZg5kbltJKb5qEKID5dV3
H3s4C97ITrIa1CXPdGxSEwQzJumxPB3U8sJM9m+mbFuNdxQ9UyT+FDVuD3PUqmm5
j/D9FZTkRu7+sb2U5Wwh432MaI8AlOOGBH2l6jkn/IkwddfzK/ZNg//pGZMVZ4wr
juOGsvafZ2t3bCPHxByymEJvWW2y+nZPqO3Zhdj5xFbRYx/MuwbKfMP10bYBLf8K
gu8y5/1RY8q7GJEFqakHDielkY8Q444wxfLIGGdLUmzwyHW9/btxKEfYKPEsZ0gQ
/WDXc3aA5Zd/yaq69VPjtmSA9q74AKJBhdBki2RGv4lUVyp+bgifcVgUV6/ICB+D
KjJzb9xico3E5QbH7exSXo56hBuvY9VapRAS1MMrOOcnxD6/PXyS4TTNAd6okJx9
xbTDG8JQlQwJB95wMGHbbjioJKCulOKX+r0J+DLmpek1MoD4xe3cf6qMmvPuI54E
F4vcofswTpb/lbMz1gdH5Yv7IY6uLf8tsj1XiVspvUQ15E2GKsrWBJo3D8n8Sxv6
FuS7EPksXHSFDgERWoeEXBFr9W8DXOJ24zEl0sKAzAGsW18gzXP2gvzbMGAEiQIc
BBMBAgAGBQJOilaPAAoJECMfcMqrMWhQHsgP/1qrkoPzPTgxQ3JK2KQaygp+JoN5
WQxNPbgzh0u8BUu2KjD1Fx8gYF/PefD8BAjyKYObMGKnO2pJX6QypjscuAPuGTE/
TLhN32i5TbrtGFV4fRjDz2iqPQg6diIGIDkQmxPflU0YVZVUjUQhR+jYW11qqKNR
UJYm3s6FRx2D1t6HboSurEArU3s+s9oCP/KL/kUADhENKllv5QkyMmk93B6Ic7BN
47D90eQt7Sf8QI8bqlqwR9WeQhfIqNL1/dz/KW/uIFBgmffymYbvB0YeFMbfETOA
ySw3K10I0f2JMockRIEiaj5pRypV1wwjr1NabjLurSrxeSpvsKys8K0fQB2BLfb9
NPYA9jhpbCZGrqL1yTQ4RRG8kd9RTad9lh39y1Ab2IK5zy4UZCZhUTYFQRFtTRgH
4nW2noHRfdfqYxYwkrZLj88nVh8xMqZjJ93dXW/zwar4zovS+ccsdhAWsJVWypMb
nYL0YDU2Na4y0tLvGTrop5xp8hlXGaC5ciREdFOivNWMCknSoInRtO74teB92xIi
nrPR0Cvg3GLaiw1584b0jkNumUwvJMnFzf20vL8s7D+VUjGXR4tS5l8MAbwohNq1
daaGcGNTUJ7KJwvMDEWS2QFroiJf/DgZHyvkmm0yW6hs/DhktuE7KvtfaliXxT/6
eOnppMYm2g9MOf0yiQIcBBMBAgAGBQJOilanAAoJEGaxWkZeH57JahEQAM8e+vjN
HNwIYBgAXiHuUiDjaRvAYJSOqvTqdwJr1jJ4gHpovqKCayboCwvT05Ul9X2ZkC26
/umXN+eE93RR2cUYOSOkc62g7l1De/GKEl6Lk6pp5jhk97rTzQ5MD7qmuHBYFZNi
AaSSuabRZLdaWMy7BlCMgP+jeULfBQXSoOjyu/TPDQP2XBcmt01vUoQGMPGBFgm6
+QTZdH9CKbgSGtjc4q/JsVx24oeDrqcUzCd9LLvNlOMIjFdS55ksmTmZLEnRL3a+
v9Iwr2HfX0U1/ofGaIxUPiroC8QwNvHxtdIdCWJWIn3m0E8/BUGgIN/RRR8IDD6m
VSW+gIio2gUMg3qDaRFVbOVE6WGBgt3Yl4uN4ArdTzh4wkc4sTMUeQKPTU8BKQcu
p4gSmYpUYy4RPS7d+ZRVrzLol2eLhrLSU3KXG5ZR9cNTSD3aHiivw1cz0q9fcHpQ
OHKbUybTiQmy48LfRHNrBRNxAQULZnRZpL5JtZhOwjYXl5DdLnJNnucFFRbYiLQc
4i5dx4VJRZ0lwtWyCg8InIRTC9jNl0LK2FfPDDUKoDOiqBY3JO31UnswLPb2gxCB
lDHwX/b3/iWkLQRqxV+kXd5F7rvTLyumFFNRgZaHnHOCrhxLBWtnqRnj7uPm0+4+
yWe/wUo3PoMWkESPFkDfNxhGBOfBps16hK/SiQEcBBABAgAGBQJOimbLAAoJEG+P
8p/HMpJh/s4IAJa/Fd6ATQ5dagjZHlcny1P1hLA+wucw94jXRnrLGoZWEbA6wuR8
gpOpNhyXSiDeHkc0VRRCB63WJbNdg65E5oMsoqmgZx0wePOxVJCVxuYMWXKj/Wg3
oxN08qL8cpKdXTi5ynWA5X0qt8pvEOmRbiom+YtTqgVOzq5lcHFgM649XegL0A+5
6ULA2CsSCXhvsJUD9ZoSwsJP8oXRsUVEZjQsLEpL+2PQvDTq4gcHEq2CcHZbe1sI
wIj99PI/PH+yuXIp0yF5Cn8cIG9/z+5SRmZDSr8x1ffMYeRli5HXPvSI/8j4h69i
QAFVfW9F+lx9t0wfNESjCdesADusZaobRpy0H0p1bmlvIEMgSGFtYW5vIDxqY2hA
Z29vZ2xlLmNvbT6JAjgEEwECACIFAk6GeNUCGwMGCwkIBwMCBhUIAgkKCwQWAgMB
Ah4BAheAAAoJECDQTlpxNmCnhLIP/2yVDUiRirP5Vc+eYcJAWG6thwcPy3WIYGqJ
fEj6CkDVjcvVAv5qPR+mVbgq4Q9snvGVh0sDgn4z2SCTC3cm5/D6UzWlAz21IHrb
usBvFTJzOPgAWNn2/wamrJndc8N7w2Scj9XheWGyv57cAck+vfnldpwyQUZzdG3D
Wq4VWCsQK213NQPrG2uHBhhUBgCcqvrn3jdS0wuxVeQkt+OrxzU1k4Ki/1LBJvQ3
0iQSFLKKF3/3ZnY0fh34HVBMjJZqAvcY03wtdcQcr7H6gD+duEZsWDtuqHFRbh3Y
lrEo/LhTed921KYxuLLXp5R8xtszK8HSO0t/pQWvEXlsmdiSIbXwNwtJpfsexvLw
hXNlBkdi+THn7ukrZIGx16Tdu7em6c/d1YsmgzD5WabkGTRiXunHO+xhBaE9Xv62
mCCVRIVC4h5cWvCNVc/xD4+H2c7S8ohp5NyfUhK6rZdqiqGQsf5nDUj+u5G2TYMl
tmyDkEEZ8DboGRlYleU7qHfd6Y/CQnQVqeXNG0xOpn/hGJNe/kbUv+XKlfWKrp8X
ZX5ZOHYmYQrJj7aXT/X1dEA19oOJhQugG8kR0JwhcttpFOqN6b7vRka8CIJoY7nZ
i9SEGj5cKCO5yNyqHGIXfBzbiTOPVnJyvBsNrtWN+1kACk3TUInfyZcalleJZlTi
GMnHjXAJiEYEEBECAAYFAk6Gee0ACgkQwMbZpPMRm5pp5QCfaR46cq4RrdRCk2lW
v1jZBIlSzisAnAgKVV3U3btQGaXmRn7oDcHDUF8DiQIcBBABAgAGBQJOijA2AAoJ
EL5LwMf2Uat7tIAQAM7PNzpPu4VGFA3h+KE2zOSYBtIFpuS97GNtPbFEHLueXl4d
UjoLEFaB97GF0ccXDWu0J5+m+bsz2LD/BAWYvmOvxj4w8Y0c0P5KNOsOkyObRTkN
CKm0Q/LzZbTpD4P9RosNSOMLiBeYV8llgNR8DXcnkw5TNssqHnOTte91vfRqIBDJ
qB+a24o1PF6BsLZkVeEsR5FqaKWcAIJ8edfapOYyaDwkLT+XlVkhfzS1NgxRcNCX
EySNhdelq0WtnCnKFWLDjZNll7IH8xon48fBo1qJldDldFIV7m2/GWDfe5DhoGux
Y6JRnk8fuXOPIkZLlfQh1PpRn6vHl8pNJIzAnJ3NvLaUlxtvPV/zQyVHgIb96qpe
BvlCY44QAjUAc4Iubf1Lv2Sdf0ckngg4eiT97UqFl9A8FPLYiVk3k7xt3Jt/cMHU
bYC5hmel/8S8t3+iCO886I7Tcz+49V+MEiVo9/PPPLcDXb+tRY/hh8cWbSZOrkfc
/xXRm8J2+LBPZCny9mpVoRwxSCdnhTk0OjTRY9uCUPbWB6FEcqYZEhgxSQhaG0el
zE6nxbxiYNWXfFHYX/3HkzhfPh0SrPkuIBRSkVEXGZ4dypjcv8BV2251BtXkVdFA
h6PmNNa0pjdcn1jfI8Xp0M9mWxkYItAGVIY3aVfg9xtWyouk3pGf5uGTp6triQIc
BBABAgAGBQJOii/6AAoJEMsfJm/On5mBC48QAKpWGxIAjR1pVPw/CcYX66azidY2
iTYAcFwFthtFqokvSfZj4Nz30dzMo5LCaOsmhxlUsJISmwvM5m5gurWM7edzwLn6
bM+DELWyJJ3XQcKU5kNw1+un1PScAnkfsUsu6t++KXMtO//dkDD4B9WqeIbcSMLE
GSlCYxz7Cik6gzMGPuERNWlQ5Plmos2HfzI5ATXzoUSr6YBcc0l67cD0lgeU8ICt
nHeafcJ8gIUIR5o3JMljBG9YvAzubCpKp957hE23kj+tngAtlMCIM4jeR8AVE7Xk
3fvlMD4vT1XoUCyHXCMKjmViCsnPlwVpZeYhUgBsLBA3NzFj4+XPKiAjZpaVCxXo
6t6qTf0XS97BmlPLIPl6Q5+pfSw6PELxWLrgIcfEaX0Jnfv7zEayK+kQiWnBAXja
UfvVPbN/W4o28XTt2zg40RvWpu0hYU+2YmsDJ5vCtiR7GJDoSegJKdIi89Vmjjxx
325HMjCcp0GgMtF6EOvGUXgAK5Bg1zEfdLO37jEXIb+rHu2vR+f8FJD9t0mAJu6H
7ZY0e5KJDyQMPDsiZumEfmboqDb3VTG9+35N6drtn20IafLKcNXokM3CC1/NHfj3
b4K/6i8sUFc0c7fPXb42SSypRb/K5GlEcxRPRLGmraypvESmkQYLNIDCcfuXnru6
q5xigN3rkJUWmEXpiQIcBBABAgAGBQJOijDEAAoJEIwa5zzehBx3FtsP/0BQozuW
jBvk7OndhzIJdPc/QAVW5noFn1ZQ/zw6SzPBGiclMuuoEd+rdRP17IEqUOBQ3Y+1
fFgQHxpHW7HdhwhoxlVfeoD5n0xgWkFAEReFHpJG03VlcXyKqx1eC4Bgqk8ao+d1
RcbC1lbgiZHAB/MvACLG5nmPi5EqGy4UeXp3a80JtcQf5C2/acRz2t3y4uzph9QM
fXclh+/av5C9Ce+ENjwmZJqWPx9wkf6VCLZcLIQY7OsWzXuaHZ7/dUzHOXBGYmsu
sf0pdsVnli1XtMeH3OOLY1NtlOKzI3jR/rV2gfUjL9nvrOSTxNXJT5MfiaLXtvKv
LOihXE5UnSEHGUPCkJBUrGwWuB+OgVnJtZp+YnLi19vmQ1vaOcqc5R3BpL+IWKgp
TC6JoQeBCeqfkP5t6Ow6eAg6g5h6bHkqY6fFXl47wlkvKvMFdpsoqDuW4RJ+FhhZ
8Y7bIdVgE2hagYxm60BdnqdRJMlBDTqx8n8Ne+z8OAgWlq+bdBYe9X17EPIOQmWR
/OpzGo82mNtqTFnOAu94qmZhLbKYcVssCAw75wnEzlHQ2jm7H3UOmMtjlL4I3htG
xs/M/5lotImPM3okfUtMrog2tHKEzfM/Pb/zdM8PGT+fDG+kMcnnuB2xE85Y1mi/
XWAJcNlSGjaLpVihtS77P+fgp1uK2m18gWotiQIcBBABAgAGBQJOik5vAAoJEL2g
YIVJO6zkAFAP/2+IUCHekKDQ9V+7+R8OD0UdKqTIvZ1IJS9Ipa0KJ9zJfScDjSbG
Iy6MpxOUq/TH0bppdrTTlWjCRD+puVAi8yKZbQ75iFSl5fBP8eXQfSFSn4w+p6lV
6toYZu4pvldmN/bH5LUFJOXiCw0ixTOQD58JyTRaAh3c0WZyqbYD3abPerUIhxKk
1GMKOgt1pGLfjjMNyETF59IkDyvi15BxFuI87ukn1UU+Qayb2DYrCe+nDO1Jvgpl
bUJturTiRZVMlHMMDi01KGlZWGCp1i4pbuISoUG9KWeKsJfpeqr0rg30u5w4xVgF
G6Y53y4N+R91Y6IkFNTADMBmsg50V/EZBUGxMahEeFU0MRKuUY38FowVbmspoSOh
jepFD1Zikh3WLCo30niHU4iK41CVnb/s6ZEORuSFZF4zzxGb8+IQW5LxSmEMCqyK
ZkvMdKyUGOjGGce2Jlly9PK0izGS18ncUFcdqPaxDgQLf+Xt0gkKILSCZ0PRmf1l
RgPceZK2k+x04QtyX6DLGN9+KL8lrU0IV/5IEA73nHTi5ujcUAwF89ZVBLIzpQd4
cfEY2QkqZSbLzKKr+ewqLLq02S6uar1ahW6xISTpd4Rzy4kYis/x1WOwPWkM9lFl
WioBKxP5KzxkU4Z+qcW7Xd/oycVcI8QL9czKfHb/gJJtSCwWEqyti/LtiQIcBBAB
AgAGBQJOikP5AAoJEE0KLZQgCQEyISQP/0Jl1W3uY7blKbp13DBb3OrgerqAJlHW
zyToGi2SY/vvO6BCTBAzyjBhanLClfdYq/AkLkom3UmyirfTcuO8UD/EobYCJ+aA
8u/EGKaaIyaXVNyZMDtI9ngO4A9MWLzC8a6PNm9LizPom7LB6/ZXgpBCNUg7hxzZ
HYy1Y7G7Nu4qnHgmsE4YRz3fgE/81lwzSXWqBmiQUmN5zt/5dPWcGxSs5m9CQebB
7+anupqJYo7Sy1vwCaeWlu3zlnDPhrGZqXNkF3TIKnP9USk20vZvshfjs+3u+uxo
sdl0Ou6kHIJd6Akf4+UsrNnwp39giVCuBddmyzsMjXtYsbRZwNLmqJDLm09DQPs3
R1GPj6Rw01o9JCZSI3Sfprt84HDNj+HRuA88YmOisXp79ANlo6Emko/ws73+haq1
drZb0uLINIjfiY5kXw0FfkVxE/5Zu/uc1XxJHwNtvvC+DpRk815KdtVGs1bUtvH2
gCckQEagO4M4YX4TPLk8+qS6xpVVa0r/IUWNrX123OYUcE/ENXKtZk7XaHFmAlEn
BA5A5l7XosxzLjMviN3VruuoowW7KyHneXyJ5tIhdrPMFV8otDmiJky7r0b5y5gs
hlDHwH/rfTADOyHH7cD858JuUtyklSMFeZcopR/1KYQKqcR6hulLjOeVj5Oy7hic
IU4ZNIGF53jkiQIcBBMBAgAGBQJOilaPAAoJECMfcMqrMWhQ8jwQAIyVYWu5Oks6
30FZlX0k4J18fwmjmYUl108sg01qCIt7sWXEyMFwmruxiYzmCN6IIAFFKQEMF3NV
yxJwbna+aCH/rRr0R9UUzjzgFgJV8twi8sStQc/FKl+HGPfreBN3/77WuMP9N0fA
5OIb3uGc10cmm0PIP2RLMTAyHGcyGxXszKm+ERPTderN/1tLd0G5k7tV3L0W0zzx
hHwQQzF7Mu7d2wGzJhebRN8NbHgBFpjNIa/LAkUKLdmaMbt9RuvCP6+9WvcWSVLl
tpW5bTWRUGHSeYvvK759fHoz8TI6uiDO18X7PY3dz6l5YFeP5QO3cSqcc38aiaz5
H4CsR8UqUQrxOAnhkbJJPUhXvBrv8pwRv6sukPK3FJkHk441zRxrWnXgE262SO9F
CkfReL1BZM+fslUZbzAP2F2KdFz4ugfv8JFsS+RRKBRM31whDRwxAYx4KpWexXFH
tkZbcbZGLcAKxci39qTMJ0jf6E5rbnIZbot2I+3d4KGqczITTV+mevhbLqoCtF0m
/Wu0j4vFk/8dzPm9kvkOBeqNEalyz2obmmotvadhTzX4W6XrD47mAZn8db6UNIW5
f+yhiE7aBKBScz1DFqjOcx2H86S+sGY4oRsOL1NZBWPBGZtqjPxFnpN4ZtpTA+fz
nEhlkCMmftUnvN6xyYlVq/Fc1+In2tdfiQIcBBMBAgAGBQJOilanAAoJEGaxWkZe
H57JrwIP/3Wi7G7Y95HjeXQ9VrD+Ji6A9jNRaCmq2EzxjB0wLOUl36qzUlBxwcaN
7ZQmrgI2h6uj0StlOe+lJuzxvOs8j+FsX+GvS5o3wDb8EEYGRFvVXdhWf2PHjqvP
7nQEX5GxaHfo090fxDFmOzIQSYXm5m3QBMSRCNJvmFjsJ8CAq8sNSgOodVIoatOz
b4JM1pSjcdu/j/0l8ktcsB7SGeMm3D3+jpOrh41iNb/fzEKHJWKMxGqK2p0dVKxl
iwSXGmUfUMZlcicxAsfSeZzQs0ih7b9ulheyopx4iHYlz2ivVxZ3KSGkyzFI6yCC
xJXfJ1qhlO/q7/3IEWE2C6Vrkm4gUSAR/skqHSky+6fkGqyTkE6HO+WphDVgZuyG
/Fdi45+oBY/bLiZPnFWe756liQzda0TOJu+lFU0/YaF4hqwlljQEkkm0Vs4bj5xd
CHjtq4jygU7Lc4Zm6V8I4TuVNcgyhfheB4yK+3YrArfw7IcX3ptnPOFCslMfR252
ArSeEeHRpTar4UGH/P/RF+OjbrOZd/UwxyjdQAqQf+dXjp4oKsZJ+SYMV2MqsXzq
uU5NBXb2ykQOW+UCcBZp8et9HfVYQFzLlqrBrr219j5OhtpSDE6C6Qhsw9FKQc3h
Pp2KzIQKyWSOQ6W6B5cKdbCea8HnqAb0rTk24UoMj9SjQd4xaS02iQEcBBABAgAG
BQJOimbLAAoJEG+P8p/HMpJhxCEIALGSwNfNGitvAHBF0apo5SsbGCrqIXMafoko
belD1YdfmEieDEmith587PSkTQdujVdPvgP3oSTwPoeu0c6nhA/IT5ipHX1hdLw8
YefXdfRXnPpz6PRggfB+llDGURUXXWi5DDEeAZVcl7x2MwbhfDSkHoJI7Aj9HQ41
ZDVOFnsxQ0t9fTpN66M7+6Wu4qHe+bg5GzJyIG1wVj7R6tGLA8sa7pMkiQqVK7ix
jcmga2Op/JMzTJ31qmIaSPANoL3fVKIQUT/Y/6D7XALt7VQuhObLK/ZGkvVOCSiE
aIQDo5pLfg2DGgf4j6rFZ8M2fvIHRpWo+gzo6bKOmbvnGo1MW525Ag0ETolKOQEQ
APJeT06GqZitCBwaWOaIYnud2XMy1eaI1imVzbJlWDbkgQSqcAulR9l/OfXVXefR
4oAGLEtU2wwlDRgtWzNLYSfWPdn2tVp5RKsmEGQ5ieK7dvNw09hpq5J4Olz476/D
2Xhyrb8O7i8sH3ZuMdFqxqx9+INewS/Nrv+5NCVDoCaD7pSJDvTJbN+VCUmP2cJN
RHZDOIRypqiRSIlvw5T2IdE4+cfUrpJNAEx/0f0HbaY78CSWcqYeoDIW4mAfhvp0
f1mcvbwfmxcDz2mtBLnQA6CGfS5EM1P+eSqjZyh/XT6j1VhDgWVWbz6okYskbn3z
CCdLfZrb3P467ktaok2XSaMtr5eiuFKnPobr5R3ggmEdJRgngwfiMbs/cXdmXVMT
IMIHDYkDglu9GFrcX9CxdrHkiXSyLRwwTrv393KisDRlL3At3f/alW9MD0iNZqtf
EtNjBnLw8krIxrV+6OJLo1KhNmTQlujkSyVAusxGLt00TVq13kt7gD9tcVKxD5Lk
4iS+0gktdhWCbeWoMeTSFCiO25CFGy24roQuM+OzBWo1vWOY1EJPOnZO24xqla12
CLvdg4cXNgjQ9n1mjKWEYcLx0eikFNcmB2JBlZTB4qMzOQ/uHQkUVSPMd6f/sqRQ
WZma+8k6b/6g9DfBx5djQGLxkUHc48hUDlxEcGl7s4wpABEBAAGJBEQEGAECAA8C
GwIFAlQfYz4FCQd3TGgCKcFdIAQZAQIABgUCTolKOQAKCRCwteiGlq/my6SlEADL
AJoqajQcfvvI2Sqiuacq1EGvPyO3Hrx7/+mr8DIKuCEpSH3WIsZiOLf8TWpB7uns
17tYCfe4VmzbbOs0ogMbG0wwJBMLQ17gEC8yHU3PDPMEILKKuzVxwuPmAqSgWQp9
OjlTk1Y3Odg8zy6JvW5jm91Gogna8nsknKQ11xbmh3jZO1aw7EfbNOnhJE2ZfxA9
pFt87E92UqxunR4g7qST4vHqAS9YC0R1rnFJ3U/DIrtJ8Zp1Ob7xHDlR4/WRG24p
A+buxEEHRyhcNUekWL+cxYfNXG/80qEsCTMhsY5XqsvyKFWFcaoSCIPlD5B1to2y
Iu0ejmeIHOlufO9KikFhw5+2uFw80NjRFhdhv/kllSJ38kFYrBX7NEQSduC2xgNv
AUQOcJUgbJcCjHJqz9LdvXiLNq2qAg3GJi7GkNj7DU7lHLCM5N0s9RaUvliEfVb+
DBt3IaIviyHS/9/M3LS8pHnM+3WEgIQD1i8IjuTdvvg7p6IMHl8whE+Q2vq5tlZ7
RPrHh4vYSNIVFcgSZuacCH3el2lYWtcf5J/UsqEFnOiOBSxBT+vMHZH3hLtXHRn6
3OANnx8l7jtlQR/MlxzLIa979ACwsuBNZHBE/cxJrWsLjC5a0MMyT92vD0KmZ4V5
EWfSgMgGj+baYG/5Q0DFJ2KNETO89GLBE6Zr9FrBVwkQINBOWnE2YKe+LA/+KwRD
8gJO3JlrckdFw2aUBE2NEsOza+GhK3U3UOwJZ7RzHJ/jFkSaWue0v3mthZeklmeF
9PVVfx9dZVp2M8NCJEkQ7AwE8TIp/qqcunOyMMWfUUNVE/T4ZlQc+6267Jdx547/
lhvT3DAnZRTjGS+FQtk0BK9IQUl1oVepgyNK3cLlLvqKvOLNXJHuYP3uU46BrqU8
ZGjTv8nwyTH/t3asBpiQypdt3XyoPl2xYd2Pxt9tfwuRoL6rY2gqKswrkwwchG1V
wXXu5hQecUIPHow4BX7qHMOe8IXTXEtzJRjzvz9OpwfeNEBC48KeTt+JjHFZ9Kp8
oYGoqLnlVuas7nBGvlH825GIYp5WHW8pY8KriZaiEnCzzS9MbczlqNaFhy5e41ZJ
UbkR1xaegLKmp/zKLy5WE3ATuDsDif6yCQTh5DHi7v75RCHqguieb7g/mz+F1KR2
psTlPFOkVVQyB+HHJIRFN81g08Gg/0UxvE2rScxpozTjkdOIpm6hQKVOzTlEOPPF
jah9dWnmaAzqF1ihL1nxOwoP30z9CWR9x2lvS1pY1q7evBQsri7bxlXjcox8ODWa
vPW26p4SgQF9S0t6Zf/p3w/FseLJXaPEYZTkIFELvmSebALni653dQJlhBF72Qxc
mal7K7p+HI72Vw5shRYbmhlYrNUM0yLpmKVLprw=
=K5VA
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -1,3 +1,6 @@
c64012d491e24c7d65cd389f75383d91 git-2.7.4.tar.gz
8cb6a341e1add5c622488ff44093bbe6 git-htmldocs-2.7.4.tar.gz
58020dc13a5801c49f7986fef7027535 git-manpages-2.7.4.tar.gz
SHA512 (git-2.7.5.tar.xz) = 3a5ce90de7386eb8d276a47b55c8df4576df5c9a292624193baa5f7a05069076220265c08c6503a0bf3508160be3cca7cd1c013d3ffdfbc11e4b8c4f7cf38703
SHA512 (git-2.7.5.tar.sign) = 388dc4a9a73bee35f1fa6aafc8984e55024c9f49b2d5c006c4ccfed2a31200287d5bf345cd40a1c04f2e46a1f8060ba3b446edc159d921f8c14cc468b66b3356
SHA512 (git-htmldocs-2.7.5.tar.xz) = 87429ebbc4ea5e7d3cb7d6176e44f0767749d3762ffd53e7416ddb1eabd4cf44413077e8c3e9c196a7ad01e3b5322f11213c350206d5f52185f18ce31fc56a03
SHA512 (git-htmldocs-2.7.5.tar.sign) = a4d03bb9c3e3601cc293121a33d3bc5f4caf772fa4f01277edd6abce7559a41c3b0ed68130c4c832bcc8e55d1503a203496ba5dcbbef2635d340988939b67126
SHA512 (git-manpages-2.7.5.tar.xz) = 248defefeff66a3489b642a45c8c4f5a31ce6a66470d3d6efd1434ce5155b0d03b7b50de4c21b52195cdc00a7bbcc2c9fa275bcbeb7950fba200d69853089a21
SHA512 (git-manpages-2.7.5.tar.sign) = 7955279fd85c3f90c22c296381f123cc4fa1132c57a72e02613638f64bd77e9d7f5512cd9f84caa9aac613e391a0336a89610f6642f6dd90f66aa6610c320bad

218
subtree-alias.patch Normal file
View file

@ -0,0 +1,218 @@
diff --git a/git.c b/git.c
index c19d6bf..2de339a 100644
--- a/git.c
+++ b/git.c
@@ -25,14 +25,14 @@ static const char *env_names[] = {
GIT_PREFIX_ENVIRONMENT
};
static char *orig_env[4];
-static int saved_environment;
+static int saved_env_before_alias;
-static void save_env(void)
+static void save_env_before_alias(void)
{
int i;
- if (saved_environment)
+ if (saved_env_before_alias)
return;
- saved_environment = 1;
+ saved_env_before_alias = 1;
orig_cwd = xgetcwd();
for (i = 0; i < ARRAY_SIZE(env_names); i++) {
orig_env[i] = getenv(env_names[i]);
@@ -41,13 +41,16 @@ static void save_env(void)
}
}
-static void restore_env(void)
+static void restore_env(int external_alias)
{
int i;
- if (orig_cwd && chdir(orig_cwd))
+ if (!external_alias && orig_cwd && chdir(orig_cwd))
die_errno("could not move to %s", orig_cwd);
free(orig_cwd);
for (i = 0; i < ARRAY_SIZE(env_names); i++) {
+ if (external_alias &&
+ !strcmp(env_names[i], GIT_PREFIX_ENVIRONMENT))
+ continue;
if (orig_env[i])
setenv(env_names[i], orig_env[i], 1);
else
@@ -226,14 +229,14 @@ static int handle_options(const char ***argv, int *argc, int *envchanged)
static int handle_alias(int *argcp, const char ***argv)
{
int envchanged = 0, ret = 0, saved_errno = errno;
- const char *subdir;
int count, option_count;
const char **new_argv;
const char *alias_command;
char *alias_string;
int unused_nongit;
- subdir = setup_git_directory_gently(&unused_nongit);
+ save_env_before_alias();
+ setup_git_directory_gently(&unused_nongit);
alias_command = (*argv)[0];
alias_string = alias_lookup(alias_command);
@@ -242,6 +245,7 @@ static int handle_alias(int *argcp, const char ***argv)
struct child_process child = CHILD_PROCESS_INIT;
commit_pager_choice();
+ restore_env(1);
child.use_shell = 1;
argv_array_push(&child.args, alias_string + 1);
@@ -287,8 +291,7 @@ static int handle_alias(int *argcp, const char ***argv)
ret = 1;
}
- if (subdir && chdir(subdir))
- die_errno("Cannot change to '%s'", subdir);
+ restore_env(0);
errno = saved_errno;
@@ -303,7 +306,6 @@ static int handle_alias(int *argcp, const char ***argv)
* RUN_SETUP for reading from the configuration file.
*/
#define NEED_WORK_TREE (1<<3)
-#define NO_SETUP (1<<4)
struct cmd_struct {
const char *cmd;
@@ -385,7 +387,7 @@ static struct cmd_struct commands[] = {
{ "cherry", cmd_cherry, RUN_SETUP },
{ "cherry-pick", cmd_cherry_pick, RUN_SETUP | NEED_WORK_TREE },
{ "clean", cmd_clean, RUN_SETUP | NEED_WORK_TREE },
- { "clone", cmd_clone, NO_SETUP },
+ { "clone", cmd_clone },
{ "column", cmd_column, RUN_SETUP_GENTLY },
{ "commit", cmd_commit, RUN_SETUP | NEED_WORK_TREE },
{ "commit-tree", cmd_commit_tree, RUN_SETUP },
@@ -411,8 +413,8 @@ static struct cmd_struct commands[] = {
{ "hash-object", cmd_hash_object },
{ "help", cmd_help },
{ "index-pack", cmd_index_pack, RUN_SETUP_GENTLY },
- { "init", cmd_init_db, NO_SETUP },
- { "init-db", cmd_init_db, NO_SETUP },
+ { "init", cmd_init_db },
+ { "init-db", cmd_init_db },
{ "interpret-trailers", cmd_interpret_trailers, RUN_SETUP_GENTLY },
{ "log", cmd_log, RUN_SETUP },
{ "ls-files", cmd_ls_files, RUN_SETUP },
@@ -530,9 +532,13 @@ static void handle_builtin(int argc, const char **argv)
builtin = get_builtin(cmd);
if (builtin) {
- if (saved_environment && (builtin->option & NO_SETUP))
- restore_env();
- else
+ /*
+ * XXX: if we can figure out cases where it is _safe_
+ * to do, we can avoid spawning a new process when
+ * saved_env_before_alias is true
+ * (i.e. setup_git_dir* has been run once)
+ */
+ if (!saved_env_before_alias)
exit(run_builtin(builtin, argc, argv));
}
}
@@ -590,7 +596,6 @@ static int run_argv(int *argcp, const char ***argv)
*/
if (done_alias)
break;
- save_env();
if (!handle_alias(argcp, argv))
break;
done_alias = 1;
diff --git a/run-command.c b/run-command.c
index 2392b1e..6b78072 100644
--- a/run-command.c
+++ b/run-command.c
@@ -236,7 +236,7 @@ static int wait_or_whine(pid_t pid, const char *argv0, int in_signal)
error("waitpid is confused (%s)", argv0);
} else if (WIFSIGNALED(status)) {
code = WTERMSIG(status);
- if (code != SIGINT && code != SIGQUIT)
+ if (code != SIGINT && code != SIGQUIT && code != SIGPIPE)
error("%s died of signal %d", argv0, code);
/*
* This return value is chosen so that code & 0xff
diff --git a/t/t0001-init.sh b/t/t0001-init.sh
index f91bbcf..295aa59 100755
--- a/t/t0001-init.sh
+++ b/t/t0001-init.sh
@@ -87,6 +87,23 @@ test_expect_success 'plain nested in bare through aliased command' '
check_config bare-ancestor-aliased.git/plain-nested/.git false unset
'
+test_expect_success 'No extra GIT_* on alias scripts' '
+ (
+ env | sed -ne "/^GIT_/s/=.*//p" &&
+ echo GIT_PREFIX && # setup.c
+ echo GIT_TEXTDOMAINDIR # wrapper-for-bin.sh
+ ) | sort | uniq >expected &&
+ cat <<-\EOF >script &&
+ #!/bin/sh
+ env | sed -ne "/^GIT_/s/=.*//p" | sort >actual
+ exit 0
+ EOF
+ chmod 755 script &&
+ git config alias.script \!./script &&
+ ( mkdir sub && cd sub && git script ) &&
+ test_cmp expected actual
+'
+
test_expect_success 'plain with GIT_WORK_TREE' '
mkdir plain-wt &&
test_must_fail env GIT_WORK_TREE="$(pwd)/plain-wt" git init plain-wt
diff --git a/t/t0002-gitfile.sh b/t/t0002-gitfile.sh
index 3afe012..9670e8c 100755
--- a/t/t0002-gitfile.sh
+++ b/t/t0002-gitfile.sh
@@ -99,7 +99,7 @@ test_expect_success 'check rev-list' '
test "$SHA" = "$(git rev-list HEAD)"
'
-test_expect_failure 'setup_git_dir twice in subdir' '
+test_expect_success 'setup_git_dir twice in subdir' '
git init sgd &&
(
cd sgd &&
diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh
index 9b34f3c..31b4658 100755
--- a/t/t5601-clone.sh
+++ b/t/t5601-clone.sh
@@ -65,6 +65,29 @@ test_expect_success 'clone respects GIT_WORK_TREE' '
'
+test_expect_success 'clone from hooks' '
+
+ test_create_repo r0 &&
+ cd r0 &&
+ test_commit initial &&
+ cd .. &&
+ git init r1 &&
+ cd r1 &&
+ cat >.git/hooks/pre-commit <<-\EOF &&
+ #!/bin/sh
+ git clone ../r0 ../r2
+ exit 1
+ EOF
+ chmod u+x .git/hooks/pre-commit &&
+ : >file &&
+ git add file &&
+ test_must_fail git commit -m invoke-hook &&
+ cd .. &&
+ test_cmp r0/.git/HEAD r2/.git/HEAD &&
+ test_cmp r0/initial.t r2/initial.t
+
+'
+
test_expect_success 'clone creates intermediate directories' '
git clone src long/path/to/dst &&