This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "IPFire 2.x development tree".
The branch, next has been updated via 9a9cb82c4f73b7ec11a6ebb4e2f50cd319f25aa3 (commit) via bbfeb48f9fb8ad5923d753e002ebf1011b3bd971 (commit) via 628e8c3a0005d9f710fd39b4d8bd4581b83cd08f (commit) via fc07307f9a964f6b6d33c356727ac76f07e5bd59 (commit) via ae294f15e9e63b823d479981d5958620b28cecf8 (commit) via 7ba9c8cd7a3ae9cb832261378322672c84b5cf4f (commit) via 28948acec79cf0bf4893de029d8cb9ad6031da76 (commit) via 9ac834f026e9b45d7bd492316a0c98738646e9fe (commit) via 3c2f8544d458cd94f6ad77b5756b44b57bd76fcd (commit) via 3e9cfac8ba5d761806189fd12caa679525bbc385 (commit) via 1e9c3fb2741c4d93650229befc5dea19139ff5da (commit) via 2b4156d2e4e84536105a9a4166a52c2c895f92f7 (commit) via 489145db2d396e72d6d63b800244791a2f21c74c (commit) via 7502d6f898912bdfcbd5e6c685b50124cfa79163 (commit) via fd2e94fe11869d82aa1419a7de577594506e058d (commit) via b271259b7ef4e8f8e4469ad129a895c8ec1928ba (commit) via 38da37b89a0be73a20ea8592636176cc94451141 (commit) via bb948e3e3bead460b69e20161cdd6d7591d4995b (commit) via 520666772b562dadd715c95a915186d742043677 (commit) via 26d7f93ed9aa4b60a203b8db79b337a680ea09e9 (commit) via 516911e6b54c8073bd644b49d1f447097031e28f (commit) via 8480dabca386d8cfc5c46fa6d2e51b0ce61b3628 (commit) via ae666b0c234f9204b864292e044a0c8d182e58d2 (commit) via a18c2318d8a4fd525a0a3230d7e169465a93931a (commit) via 66f3b51d6d98dde3614c68a23ee23662e932a1f9 (commit) via a3366d419fee79d2c195fc72423c32bf221bfcdb (commit) via dfa795eb1a052ac58f7f3d9ebf1676f0a2c3c534 (commit) via 2bc88212b05054345a39c3ca2ad0b3e33e1f94fd (commit) via 9c82fea2c7189fd074398fa8992b347d7c3db887 (commit) via 990eb18bd995ec8069638d5a6e36c36479602424 (commit) via bff88a482c2ace10e0ca51f5bc83e56feeacca61 (commit) via dc8abdfe1c1fbea80eee2d57521ab6cd700e9c7d (commit) via 18f4933922d80f4fdb96f37af94170771a55f774 (commit) via 3e477b7d733820131cc03d30fcaa0bc12568a8a8 (commit) via d9030efeb741d31bf3a161061dfd3307640b9852 (commit) via ec51f20d52e3da3657452aa7ddebed81941de6db (commit) via 8d29c3bf1087f30d0dfd921fd3fa42afe0aaa543 (commit) via fe2adb0cdf030b3a94369c8268e09e0900782883 (commit) via b45e371ff71e6a321849ede22bcd606d2b42cebd (commit) via 8bc5ded22e29e1ab89aa2015ae9095dae8bf76e4 (commit) via d0bba4d26e378218b9311dcf934106bdfe8b7b07 (commit) via bdc6837d866004ec11b293a315eb26d153f3fbb1 (commit) via b7093f17d5eeafbe270c4999046fa90216d14a44 (commit) via 51777e5d7ce7555f6e908a215b245a10fcf2c6fa (commit) via e5ecbf7d6bf00b0087fc95dcf439dc3de95ae0c5 (commit) via 1977473d4ac08e9374fc35961d31bf7894d0a703 (commit) via 9d928e829cfe6eaa748dc58873ac22eb29a66ff6 (commit) via 58256cf1521fb87cc6beb4e1aee9ead90f37a49f (commit) via dc7d6b204d8ef2178a8fd4f0da28ec1ff6967913 (commit) via 174498ef96404461522ffd4bd6e0422c17fc4e7e (commit) via 5d512a1f81cabcdd77a9ff9c057a0172cf113f39 (commit) via de1928cca7aef30c0aadb2cd6fecbb7bd07790f9 (commit) via 0c24d56d7c67b6c25250c4d50b83006cdddc9f93 (commit) via ff92f1ac389bcfe341d4fd95fa0cea7ce6574419 (commit) via f65d8173429c70c74eeabe1fd317cb911b576586 (commit) via 4162dbaef183234fc0651afb70cf8839dc8fb113 (commit) via 6ef98fe9bed0c8a9379b105a556f5cc7c855668d (commit) via 991d11d738222438a21c92a3c37f5429c5ca6489 (commit) via a74272d2bbe57181a4b1650ead570b551095bf40 (commit) via 66dd71f298366f122b51e510847581c5be0d64ad (commit) via 6f8f452267d78803c0a6a7ba1ae4079c445f50ba (commit) via 16449f750488e84862873b80e66c21fbfc9afe09 (commit) via bab5ff7c5bd07dea1159c70ac16edbbd0c1586a0 (commit) via e259f335ae8ced4253d5c65631afa6a7450fea6a (commit) via 962ddd8d7368df7a079a3e74b119e009bf2ca5af (commit) via 6b9f806e95f6bedaf27f7b8b62e59cf0e21b02d5 (commit) via 7cefbe1c0dd9eb7abb3cf6aa4762ae6f37f8274a (commit) via cfd39a32dff5dfb1e81e8f0dadc35945ea297fee (commit) via 9c59597ba49c3bcec23bc5397eb203cddc38cc35 (commit) via 6323c4d0e2a0ddf5d78830c325ffc28d39a8013e (commit) via 8e48347732af5dedf2cafa10becc0d38af261885 (commit) from 488c7e7e31d52387609a3ee8b29015158d7ecaf3 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 9a9cb82c4f73b7ec11a6ebb4e2f50cd319f25aa3 Merge: 628e8c3 bbfeb48 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu May 18 16:41:12 2017 +0100
Merge branch 'master' into next
commit 628e8c3a0005d9f710fd39b4d8bd4581b83cd08f Author: Michael Tremer michael.tremer@ipfire.org Date: Thu May 18 12:24:49 2017 +0100
Bump toolchain version
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit fc07307f9a964f6b6d33c356727ac76f07e5bd59 Author: Michael Tremer michael.tremer@ipfire.org Date: Wed May 3 19:12:31 2017 +0200
Drop vdr_vnsiserver5
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit ae294f15e9e63b823d479981d5958620b28cecf8 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri May 5 13:30:20 2017 +0200
directfb: Update to 1.7.7
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 7ba9c8cd7a3ae9cb832261378322672c84b5cf4f Author: Michael Tremer michael.tremer@ipfire.org Date: Sat May 6 10:28:45 2017 +0200
ipset: Don't (re-)build kernel module here
The reason why this comes up is that we currently don't build a kernel for aarch64 and therefore building ipset fails.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 28948acec79cf0bf4893de029d8cb9ad6031da76 Author: Michael Tremer michael.tremer@ipfire.org Date: Sat May 6 14:04:12 2017 +0200
dfb++: Drop package
This does not seem to be needed by anything
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 9ac834f026e9b45d7bd492316a0c98738646e9fe Author: Michael Tremer michael.tremer@ipfire.org Date: Sun May 7 13:42:30 2017 +0200
boost: Update to 1.64.0
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 3c2f8544d458cd94f6ad77b5756b44b57bd76fcd Author: Michael Tremer michael.tremer@ipfire.org Date: Wed May 17 23:26:27 2017 +0200
iftop: Drop package
This is not maintained upstream any more and I cannot get this to build.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 3e9cfac8ba5d761806189fd12caa679525bbc385 Author: Michael Tremer michael.tremer@ipfire.org Date: Wed May 17 23:08:30 2017 +0200
tcpick: Drop package
This FTBFS and is not maintained upstream any more.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 1e9c3fb2741c4d93650229befc5dea19139ff5da Author: Michael Tremer michael.tremer@ipfire.org Date: Mon Apr 24 15:55:49 2017 +0200
make.sh: Build autoconf and automake before berkeley
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 2b4156d2e4e84536105a9a4166a52c2c895f92f7 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Apr 21 12:06:08 2017 +0200
make.sh: Drop installmake()
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 489145db2d396e72d6d63b800244791a2f21c74c Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Apr 21 12:00:14 2017 +0200
make.sh: Drop ipfiremake() which is identical to lfsmake2
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 7502d6f898912bdfcbd5e6c685b50124cfa79163 Author: Michael Tremer michael.tremer@ipfire.org Date: Wed May 17 22:58:03 2017 +0200
fuse: Update to 2.9.7
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit fd2e94fe11869d82aa1419a7de577594506e058d Author: Michael Tremer michael.tremer@ipfire.org Date: Sat May 6 10:09:34 2017 +0200
iperf: Update to 2.0.9
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit b271259b7ef4e8f8e4469ad129a895c8ec1928ba Author: Michael Tremer michael.tremer@ipfire.org Date: Fri May 5 19:03:47 2017 +0200
crda: Compile fix for newer GCC
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 38da37b89a0be73a20ea8592636176cc94451141 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri May 5 14:14:25 2017 +0200
lcr: Fix compilation with GCC 6
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit bb948e3e3bead460b69e20161cdd6d7591d4995b Author: Michael Tremer michael.tremer@ipfire.org Date: Sun Apr 30 12:59:55 2017 +0200
ghostscript: Delete all bundled libraries
ghostscript ships a number of bundled libraries that is needs to be build and at runtime.
This patch removes them all which causes ghostcript to automatically fall back to the libraries installed in the system.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 520666772b562dadd715c95a915186d742043677 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Apr 28 12:56:58 2017 +0100
linux: Do not build GCC plugins
Our version of GCC has plugins enabled and built but for some reason they are not properly detected.
Hence they are disabled for now.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 26d7f93ed9aa4b60a203b8db79b337a680ea09e9 Author: Michael Tremer michael.tremer@ipfire.org Date: Mon May 1 17:04:37 2017 +0200
perl: Fix Errno.pm generation for GCC >= 5
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 516911e6b54c8073bd644b49d1f447097031e28f Author: Michael Tremer michael.tremer@ipfire.org Date: Mon May 1 16:46:00 2017 +0200
libdvbpsi: Fails to build with newer GCC
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 8480dabca386d8cfc5c46fa6d2e51b0ce61b3628 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Apr 28 13:30:04 2017 +0200
fontconfig: Fix build with glibc >= 2.25
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit ae666b0c234f9204b864292e044a0c8d182e58d2 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Apr 27 11:10:03 2017 +0100
Drop paxctl
Since the new toolchain the flags are not compiled into the binaries any more which causes paxctl to fail.
On top of that, PaX and grsecurity won't be available freely any more which requires us to remove it from the distribution.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit a18c2318d8a4fd525a0a3230d7e169465a93931a Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Apr 27 10:58:35 2017 +0100
grub: Fix compile error in gnulib with newer GCCs
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 66f3b51d6d98dde3614c68a23ee23662e932a1f9 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Apr 28 13:10:41 2017 +0200
python: Update to 2.7.13
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit a3366d419fee79d2c195fc72423c32bf221bfcdb Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Apr 27 12:04:05 2017 +0200
mysql: Fix build with newer GCC
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit dfa795eb1a052ac58f7f3d9ebf1676f0a2c3c534 Author: Michael Tremer michael.tremer@ipfire.org Date: Wed Apr 26 11:48:48 2017 +0100
glibc: Do not enable stack-smashing protector in toolchain stage
This is causing build errors on some systems where the host system does or does not use SSP.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 2bc88212b05054345a39c3ca2ad0b3e33e1f94fd Author: Michael Tremer michael.tremer@ipfire.org Date: Wed Apr 26 11:48:31 2017 +0100
ncurses-compat: Fix build with GCC 6
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 9c82fea2c7189fd074398fa8992b347d7c3db887 Author: Michael Tremer michael.tremer@ipfire.org Date: Wed Apr 26 11:28:58 2017 +0100
make.sh: Pass BUILD_PLATFORM variable to build environment
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 990eb18bd995ec8069638d5a6e36c36479602424 Author: Michael Tremer michael.tremer@ipfire.org Date: Wed Apr 26 12:45:27 2017 +0200
pam: Compile fix for newer glibcs
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit bff88a482c2ace10e0ca51f5bc83e56feeacca61 Author: Michael Tremer michael.tremer@ipfire.org Date: Tue Apr 25 11:56:40 2017 +0200
openssl: Make package compile on all arches
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit dc8abdfe1c1fbea80eee2d57521ab6cd700e9c7d Author: Michael Tremer michael.tremer@ipfire.org Date: Tue Apr 25 11:56:17 2017 +0200
udev: Remove old compile fix for older versions of glibc
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 18f4933922d80f4fdb96f37af94170771a55f774 Author: Michael Tremer michael.tremer@ipfire.org Date: Tue Apr 25 11:56:02 2017 +0200
binutils: Cleanup makefile
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 3e477b7d733820131cc03d30fcaa0bc12568a8a8 Author: Michael Tremer michael.tremer@ipfire.org Date: Tue Apr 25 11:08:35 2017 +0200
glibc: Install obsolete RPC headers
Some programs still use these and therefore we need to install them here.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit d9030efeb741d31bf3a161061dfd3307640b9852 Author: Michael Tremer michael.tremer@ipfire.org Date: Tue Apr 25 11:07:55 2017 +0200
sysklogd: Fix build with GCC 6
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit ec51f20d52e3da3657452aa7ddebed81941de6db Author: Michael Tremer michael.tremer@ipfire.org Date: Tue Apr 25 11:07:30 2017 +0200
stage2: Make sure to install lib64 symlinks on all 64 bit architectures
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 8d29c3bf1087f30d0dfd921fd3fa42afe0aaa543 Author: Michael Tremer michael.tremer@ipfire.org Date: Tue Apr 25 11:27:00 2017 +0100
gcc: Remove some deprecated configure options in 2nd toolchain pass
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit fe2adb0cdf030b3a94369c8268e09e0900782883 Author: Michael Tremer michael.tremer@ipfire.org Date: Tue Apr 25 11:26:50 2017 +0100
glibc: Test toolchain after build
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit b45e371ff71e6a321849ede22bcd606d2b42cebd Author: Michael Tremer michael.tremer@ipfire.org Date: Mon Apr 24 19:31:37 2017 +0100
gcc: Perform full bootstrap on ARM32
The build fails with various reasons and a full bootstrap always succeeds. This takes a very long time so we try to avoid it where ever possible.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 8bc5ded22e29e1ab89aa2015ae9095dae8bf76e4 Author: Michael Tremer michael.tremer@ipfire.org Date: Mon Apr 24 10:17:43 2017 +0100
gcc: Do not build libmpx on x86 in first pass in toolchain
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit d0bba4d26e378218b9311dcf934106bdfe8b7b07 Author: Michael Tremer michael.tremer@ipfire.org Date: Mon Apr 24 13:12:37 2017 +0200
cleanup-toolchain: Fix TARGET for toolchain and non-toolchain pass
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit bdc6837d866004ec11b293a315eb26d153f3fbb1 Author: Michael Tremer michael.tremer@ipfire.org Date: Mon Apr 24 13:11:54 2017 +0200
make.sh: Use a better marker to determine if toolchain is present
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit b7093f17d5eeafbe270c4999046fa90216d14a44 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Apr 21 17:09:17 2017 +0200
stage1: New build script
Creates some basic directories and symlinks in toolchain stage
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 51777e5d7ce7555f6e908a215b245a10fcf2c6fa Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Apr 21 17:08:45 2017 +0200
gcc: Always pass --disable-multilib
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit e5ecbf7d6bf00b0087fc95dcf439dc3de95ae0c5 Author: Michael Tremer michael.tremer@ipfire.org Date: Fri Apr 21 12:04:42 2017 +0200
make.sh: Use enterchroot function in ipfiredist
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 1977473d4ac08e9374fc35961d31bf7894d0a703 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Apr 20 18:43:38 2017 +0200
make.sh: Let lfsmake2 use the new enterchroot function
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 9d928e829cfe6eaa748dc58873ac22eb29a66ff6 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Apr 20 18:02:15 2017 +0200
make.sh: Create a function to execute a command in chroot
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 58256cf1521fb87cc6beb4e1aee9ead90f37a49f Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Apr 20 17:45:49 2017 +0200
make.sh: Correctly configure ccache in toolchain stage
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit dc7d6b204d8ef2178a8fd4f0da28ec1ff6967913 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Apr 20 17:09:42 2017 +0200
make.sh: Cleanup of polluted environment
The build environment is using a number of variables which occasionally conflicted with some other build systems.
This patch cleans that up by renaming some variables and later unexporting them in the lfs files.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 174498ef96404461522ffd4bd6e0422c17fc4e7e Author: Michael Tremer michael.tremer@ipfire.org Date: Mon Apr 17 13:42:46 2017 +0200
cleanup-toolchain: Use TOOLCHAIN variable
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 5d512a1f81cabcdd77a9ff9c057a0172cf113f39 Author: Michael Tremer michael.tremer@ipfire.org Date: Wed Apr 19 09:19:33 2017 +0100
binutils: Drop modifying CFLAGS in PASS=1
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit de1928cca7aef30c0aadb2cd6fecbb7bd07790f9 Author: Michael Tremer michael.tremer@ipfire.org Date: Wed Apr 19 09:17:27 2017 +0100
glibc: Enable hard float abi when compiling for armv7hl
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 0c24d56d7c67b6c25250c4d50b83006cdddc9f93 Author: Michael Tremer michael.tremer@ipfire.org Date: Wed Apr 19 09:16:34 2017 +0100
gcc: Build with hard floating point support on armv7hl
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit ff92f1ac389bcfe341d4fd95fa0cea7ce6574419 Author: Michael Tremer michael.tremer@ipfire.org Date: Wed Apr 19 09:15:44 2017 +0100
armv7hl: Build without -mthumb
Causes some linking problems when bootstrapping the toolchain
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit f65d8173429c70c74eeabe1fd317cb911b576586 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Apr 13 15:12:49 2017 +0100
linux: Install ARM headers for armv7hl
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 4162dbaef183234fc0651afb70cf8839dc8fb113 Author: Michael Tremer michael.tremer@ipfire.org Date: Wed Apr 12 11:07:33 2017 +0100
Support building for armv7hl
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 6ef98fe9bed0c8a9379b105a556f5cc7c855668d Author: Michael Tremer michael.tremer@ipfire.org Date: Sun Apr 16 18:28:08 2017 +0200
toolchain: Drop first pass of cleanup-toolchain script
This is no longer necessary
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 991d11d738222438a21c92a3c37f5429c5ca6489 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Apr 13 20:27:32 2017 +0200
Cleanup makefiles by using the new TOOLCHAIN variable
No functional changes
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit a74272d2bbe57181a4b1650ead570b551095bf40 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Apr 13 19:05:58 2017 +0200
binutils: Remove some unnecessary compiler options
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 66dd71f298366f122b51e510847581c5be0d64ad Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Apr 13 18:56:16 2017 +0200
gcc: Don't bootstrap in second pass
GCC does not need to be bootstrapped in the second pass any more since the toolchain is not built hardened
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 6f8f452267d78803c0a6a7ba1ae4079c445f50ba Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Apr 13 18:56:06 2017 +0200
gcc: Remove unnecessary compiler options
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 16449f750488e84862873b80e66c21fbfc9afe09 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Apr 13 18:55:35 2017 +0200
Build for aarch64 by default on aarch64 hosts
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit bab5ff7c5bd07dea1159c70ac16edbbd0c1586a0 Author: Michael Tremer michael.tremer@ipfire.org Date: Sun Mar 12 17:40:28 2017 +0100
Allow building for aarch64
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit e259f335ae8ced4253d5c65631afa6a7450fea6a Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Apr 13 16:03:38 2017 +0200
toolchain: Build without hardening
The toolchain will be built without hardening which makes the entire bootstrapping process way more complicated than necessary and sometimes fail on some host distribution.
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 962ddd8d7368df7a079a3e74b119e009bf2ca5af Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Apr 13 16:03:17 2017 +0200
pkg-config: Remove accidentially commited line
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 6b9f806e95f6bedaf27f7b8b62e59cf0e21b02d5 Author: Michael Tremer michael.tremer@ipfire.org Date: Wed Apr 12 11:47:47 2017 +0200
glibc: Update to 2.25
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 7cefbe1c0dd9eb7abb3cf6aa4762ae6f37f8274a Author: Michael Tremer michael.tremer@ipfire.org Date: Wed Apr 12 11:45:41 2017 +0200
binutils: Update to version 2.28
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit cfd39a32dff5dfb1e81e8f0dadc35945ea297fee Author: Michael Tremer michael.tremer@ipfire.org Date: Wed Apr 12 11:44:31 2017 +0200
gcc: Update to version 6.3.0
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 9c59597ba49c3bcec23bc5397eb203cddc38cc35 Author: Michael Tremer michael.tremer@ipfire.org Date: Wed Apr 12 11:39:04 2017 +0200
pkg-config: Fix compilation with newer GCCs
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 6323c4d0e2a0ddf5d78830c325ffc28d39a8013e Author: Michael Tremer michael.tremer@ipfire.org Date: Sun Mar 12 17:54:41 2017 +0100
gcc: Package doesn't support build in parallel
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
commit 8e48347732af5dedf2cafa10becc0d38af261885 Author: Michael Tremer michael.tremer@ipfire.org Date: Sun Mar 12 17:53:22 2017 +0100
gcc: Enable --with-float only on armv5tel
Signed-off-by: Michael Tremer michael.tremer@ipfire.org
-----------------------------------------------------------------------
Summary of changes: config/rootfiles/common/boost | 4159 +- config/rootfiles/common/cpio | 12 +- config/rootfiles/common/paxctl | 2 - config/rootfiles/packages/dfb++ | 22 - config/rootfiles/packages/iftop | 2 - config/rootfiles/packages/tcpick | 3 - config/rootfiles/packages/vdr_vnsiserver5 | 4 - config/vdr/plugins.d/vnsiserver3.conf | 5 - config/vdr/plugins.d/vnsiserver5.conf | 5 - lfs/Config | 19 +- lfs/backports | 6 +- lfs/binutils | 51 +- lfs/boost | 4 +- lfs/ccache | 1 - lfs/cdrom | 14 +- lfs/clamav | 6 +- lfs/cleanup-toolchain | 20 +- lfs/core-updates | 2 +- lfs/crda | 1 + lfs/dfb++ | 86 - lfs/directfb | 18 +- lfs/flash-images | 14 +- lfs/fontconfig | 1 + lfs/fuse | 5 +- lfs/gcc | 132 +- lfs/ghostscript | 6 +- lfs/glibc | 336 +- lfs/gmp | 6 +- lfs/gmp-compat | 2 +- lfs/grub | 5 +- lfs/iftop | 84 - lfs/initscripts | 2 +- lfs/installer | 2 +- lfs/iperf | 6 +- lfs/ipset | 3 +- lfs/lcr | 2 + lfs/libdvbpsi | 3 +- lfs/linux | 35 +- lfs/memtest | 2 +- lfs/mysql | 6 +- lfs/ncurses-compat | 2 + lfs/openssl | 29 +- lfs/pakfire | 4 +- lfs/pam | 2 + lfs/paxctl | 79 - lfs/perl | 1 + lfs/php | 2 +- lfs/pkg-config | 1 + lfs/python | 5 +- lfs/qemu | 7 - lfs/sources-iso | 2 +- lfs/{hwdata => stage1} | 18 +- lfs/stage2 | 2 +- lfs/strongswan | 2 +- lfs/sysklogd | 4 + lfs/tcpick | 84 - lfs/udev | 2 - lfs/unzip | 2 +- lfs/vdr_dvbapi | 2 +- lfs/vdr_vnsiserver5 | 99 - lfs/xen-image | 2 +- make.sh | 1040 +- src/paks/mysql/install.sh | 3 + src/paks/vdr_vnsiserver5/install.sh | 27 - src/paks/vdr_vnsiserver5/uninstall.sh | 27 - src/paks/vdr_vnsiserver5/update.sh | 26 - .../binutils-2.24-pt-pax-flags-20131231.patch | 1030 - ...nflicts-with-integer-width-macros-from-TS.patch | 72 + .../fuse-2.9.2-namespace-conflict-fix.patch | 21 + src/patches/gcc-4.4.3-startfiles_fix-1.patch | 33 - src/patches/gcc-4.4.7-texinfo-5.patch | 89 - src/patches/gcc/gcc-fix-inlining-issues.patch | 1064 - src/patches/gcc/gcc49-i386-libgomp.patch | 11 - src/patches/gcc/gcc49-libtool-no-rpath.patch | 27 - src/patches/gcc/gcc49-no-add-needed.patch | 50 - src/patches/gcc/gcc49-pr38757.patch | 106 - src/patches/gcc/gcc49-pr64336.patch | 17 - ...2.12-accept-make-versions-4.0-and-greater.patch | 35 - src/patches/glibc-cfi-entry-not-closed.patch | 23 - .../glibc-remove-ctors-dtors-output-sections.patch | 150 - src/patches/glibc-resolv-stack_chk_fail.patch | 35 - .../glibc-test-installation.pl-libgcc_s.patch | 88 - .../glibc-test-installation.pl-nss_test1.patch | 31 - src/patches/glibc/glibc-aliasing.patch | 87 - src/patches/glibc/glibc-fedora.patch | 2106 - src/patches/glibc/glibc-getlogin-r.patch | 36 - src/patches/glibc/glibc-localedata.patch | 18 - src/patches/glibc/glibc-mq_open.patch | 34 - src/patches/glibc/glibc-recvmmsg.patch | 182 - src/patches/glibc/glibc-rh1008310.patch | 45 - src/patches/glibc/glibc-rh1019916.patch | 39 - src/patches/glibc/glibc-rh1022022.patch | 20 - src/patches/glibc/glibc-rh1023306.patch | 64 - src/patches/glibc/glibc-rh1025933.patch | 287 - src/patches/glibc/glibc-rh1027101.patch | 58 - src/patches/glibc/glibc-rh1027261.patch | 28 - src/patches/glibc/glibc-rh1028285.patch | 149 - src/patches/glibc/glibc-rh1032628.patch | 166 - src/patches/glibc/glibc-rh1039988.patch | 141 - src/patches/glibc/glibc-rh1043557.patch | 145 - src/patches/glibc/glibc-rh1044628.patch | 28 - src/patches/glibc/glibc-rh1053178.patch | 214 - src/patches/glibc/glibc-rh1054846.patch | 57 - src/patches/glibc/glibc-rh1066724.patch | 620 - src/patches/glibc/glibc-rh1074342.patch | 26 - src/patches/glibc/glibc-rh1074353.patch | 398 - src/patches/glibc/glibc-rh1082379.patch | 63 - src/patches/glibc/glibc-rh1085273.patch | 31 - src/patches/glibc/glibc-rh1085289.patch | 60 - src/patches/glibc/glibc-rh1085312.patch | 34 - src/patches/glibc/glibc-rh1087833.patch | 65 - src/patches/glibc/glibc-rh1088301.patch | 142 - src/patches/glibc/glibc-rh1091915.patch | 40 - src/patches/glibc/glibc-rh1099025-2.patch | 159 - src/patches/glibc/glibc-rh1099025.patch | 47 - src/patches/glibc/glibc-rh1111460.patch | 341 - src/patches/glibc/glibc-rh1116050-1.patch | 57 - src/patches/glibc/glibc-rh1116050.patch | 407 - src/patches/glibc/glibc-rh1124204.patch | 47 - src/patches/glibc/glibc-rh1125307.patch | 19 - src/patches/glibc/glibc-rh1133810-1.patch | 199 - src/patches/glibc/glibc-rh1133810-2.patch | 625 - src/patches/glibc/glibc-rh1138769.patch | 45 - src/patches/glibc/glibc-rh1144019.patch | 27 - src/patches/glibc/glibc-rh1144132.patch | 58 - src/patches/glibc/glibc-rh1154563.patch | 333 - src/patches/glibc/glibc-rh1159167.patch | 15 - src/patches/glibc/glibc-rh1171296.patch | 163 - src/patches/glibc/glibc-rh1172044.patch | 154 - src/patches/glibc/glibc-rh1176907.patch | 22 - src/patches/glibc/glibc-rh1183534.patch | 223 - src/patches/glibc/glibc-rh1195453-avx512.patch | 481 - src/patches/glibc/glibc-rh1207236.patch | 12 - src/patches/glibc/glibc-rh1209376.patch | 18 - src/patches/glibc/glibc-rh1217186.patch | 65 - src/patches/glibc/glibc-rh1256812-2.patch | 15 - src/patches/glibc/glibc-rh1256812-3.patch | 138 - src/patches/glibc/glibc-rh1256812-4.patch | 45 - src/patches/glibc/glibc-rh1256812.patch | 56 - src/patches/glibc/glibc-rh1256890.patch | 12 - src/patches/glibc/glibc-rh1256891.patch | 26 - src/patches/glibc/glibc-rh1291270.patch | 41 - src/patches/glibc/glibc-rh1296031-0.patch | 465 - src/patches/glibc/glibc-rh1296031.patch | 544 - src/patches/glibc/glibc-rh1299319-0.patch | 61 - src/patches/glibc/glibc-rh1299319-1.patch | 19 - src/patches/glibc/glibc-rh552960.patch | 1213 - src/patches/glibc/glibc-rh580498.patch | 296 - src/patches/glibc/glibc-rh582738.patch | 13 - src/patches/glibc/glibc-rh587360.patch | 13 - src/patches/glibc/glibc-rh593396.patch | 42 - src/patches/glibc/glibc-rh593686.patch | 179 - src/patches/glibc/glibc-rh601686.patch | 4640 -- src/patches/glibc/glibc-rh607010.patch | 26 - src/patches/glibc/glibc-rh607461.patch | 22 - src/patches/glibc/glibc-rh615090.patch | 21 - src/patches/glibc/glibc-rh615701.patch | 23 - src/patches/glibc/glibc-rh621959.patch | 120 - src/patches/glibc/glibc-rh623187.patch | 18 - src/patches/glibc/glibc-rh625893.patch | 79 - src/patches/glibc/glibc-rh629823-2.patch | 95 - src/patches/glibc/glibc-rh629823.patch | 1954 - src/patches/glibc/glibc-rh630801.patch | 29 - src/patches/glibc/glibc-rh631011.patch | 17 - src/patches/glibc/glibc-rh641128.patch | 78 - src/patches/glibc/glibc-rh642584.patch | 41 - src/patches/glibc/glibc-rh643822.patch | 64 - src/patches/glibc/glibc-rh645672.patch | 215 - src/patches/glibc/glibc-rh646954.patch | 216 - src/patches/glibc/glibc-rh647448.patch | 58 - src/patches/glibc/glibc-rh652661.patch | 21 - src/patches/glibc/glibc-rh656014.patch | 45 - src/patches/glibc/glibc-rh656530.patch | 21 - src/patches/glibc/glibc-rh657572.patch | 141 - src/patches/glibc/glibc-rh661982.patch | 188 - src/patches/glibc/glibc-rh663641-2.patch | 279 - src/patches/glibc/glibc-rh663641-3.patch | 31 - src/patches/glibc/glibc-rh663641.patch | 191 - src/patches/glibc/glibc-rh667974.patch | 160 - src/patches/glibc/glibc-rh676076.patch | 714 - src/patches/glibc/glibc-rh676591.patch | 352 - src/patches/glibc/glibc-rh681054.patch | 514 - src/patches/glibc/glibc-rh688720.patch | 1638 - src/patches/glibc/glibc-rh688980.patch | 20 - src/patches/glibc/glibc-rh689471.patch | 333 - src/patches/glibc/glibc-rh692177.patch | 137 - src/patches/glibc/glibc-rh692838.patch | 6165 --- src/patches/glibc/glibc-rh694386.patch | 86 - src/patches/glibc/glibc-rh695595.patch | 17 - src/patches/glibc/glibc-rh695963.patch | 1284 - src/patches/glibc/glibc-rh696472.patch | 36 - src/patches/glibc/glibc-rh697421.patch | 10 - src/patches/glibc/glibc-rh699724.patch | 188 - src/patches/glibc/glibc-rh700507.patch | 26 - src/patches/glibc/glibc-rh703480.patch | 68 - src/patches/glibc/glibc-rh703481.patch | 875 - src/patches/glibc/glibc-rh705465.patch | 449 - src/patches/glibc/glibc-rh711927.patch | 503 - src/patches/glibc/glibc-rh711987.patch | 136 - src/patches/glibc/glibc-rh712248.patch | 69 - src/patches/glibc/glibc-rh713134.patch | 36 - src/patches/glibc/glibc-rh714823.patch | 126 - src/patches/glibc/glibc-rh718057.patch | 109 - src/patches/glibc/glibc-rh726517.patch | 173 - src/patches/glibc/glibc-rh730379.patch | 34 - src/patches/glibc/glibc-rh731042.patch | 51 - src/patches/glibc/glibc-rh736346.patch | 116 - src/patches/glibc/glibc-rh737778.patch | 122 - src/patches/glibc/glibc-rh738665.patch | 149 - src/patches/glibc/glibc-rh738763.patch | 17 - src/patches/glibc/glibc-rh739184.patch | 18 - src/patches/glibc/glibc-rh739971.patch | 44 - src/patches/glibc/glibc-rh740506-2.patch | 35 - src/patches/glibc/glibc-rh740506.patch | 132 - src/patches/glibc/glibc-rh749188.patch | 32 - src/patches/glibc/glibc-rh750531.patch | 122 - src/patches/glibc/glibc-rh751750.patch | 28 - src/patches/glibc/glibc-rh752122.patch | 260 - src/patches/glibc/glibc-rh757888.patch | 225 - src/patches/glibc/glibc-rh766513.patch | 14 - src/patches/glibc/glibc-rh767146.patch | 21 - src/patches/glibc/glibc-rh767693-2.patch | 79 - src/patches/glibc/glibc-rh767693.patch | 89 - src/patches/glibc/glibc-rh767746.patch | 14 - src/patches/glibc/glibc-rh771342.patch | 155 - src/patches/glibc/glibc-rh782585.patch | 329 - src/patches/glibc/glibc-rh784402.patch | 166 - src/patches/glibc/glibc-rh785984.patch | 20 - src/patches/glibc/glibc-rh788959-2.patch | 92 - src/patches/glibc/glibc-rh788959.patch | 130 - src/patches/glibc/glibc-rh789189.patch | 12 - src/patches/glibc/glibc-rh789209.patch | 12 - src/patches/glibc/glibc-rh789238-2.patch | 114 - src/patches/glibc/glibc-rh789238.patch | 119 - src/patches/glibc/glibc-rh794817-2.patch | 85 - src/patches/glibc/glibc-rh794817.patch | 239 - src/patches/glibc/glibc-rh795498.patch | 13 - src/patches/glibc/glibc-rh797094-1.patch | 657 - src/patches/glibc/glibc-rh797094-2.patch | 862 - src/patches/glibc/glibc-rh804686.patch | 87 - src/patches/glibc/glibc-rh804689.patch | 23 - src/patches/glibc/glibc-rh806404.patch | 12 - src/patches/glibc/glibc-rh808337.patch | 21 - src/patches/glibc/glibc-rh808545.patch | 44 - src/patches/glibc/glibc-rh809602.patch | 47 - src/patches/glibc/glibc-rh809726.patch | 89 - src/patches/glibc/glibc-rh823909.patch | 25 - src/patches/glibc/glibc-rh826149.patch | 80 - src/patches/glibc/glibc-rh827362.patch | 250 - src/patches/glibc/glibc-rh830127.patch | 403 - src/patches/glibc/glibc-rh832516.patch | 19 - src/patches/glibc/glibc-rh832694.patch | 22 - src/patches/glibc/glibc-rh833717.patch | 45265 ------------------- src/patches/glibc/glibc-rh834386-2.patch | 107 - src/patches/glibc/glibc-rh834386.patch | 181 - src/patches/glibc/glibc-rh837695.patch | 54 - src/patches/glibc/glibc-rh837918.patch | 7183 --- src/patches/glibc/glibc-rh841787.patch | 42 - src/patches/glibc/glibc-rh843673.patch | 31 - src/patches/glibc/glibc-rh845218.patch | 218 - src/patches/glibc/glibc-rh846342.patch | 48 - src/patches/glibc/glibc-rh847932.patch | 364 - src/patches/glibc/glibc-rh848082.patch | 88 - src/patches/glibc/glibc-rh848748.patch | 70 - src/patches/glibc/glibc-rh849203.patch | 195 - src/patches/glibc/glibc-rh849651.patch | 343 - src/patches/glibc/glibc-rh851470.patch | 52 - src/patches/glibc/glibc-rh852445.patch | 105 - src/patches/glibc/glibc-rh859965.patch | 854 - src/patches/glibc/glibc-rh861167.patch | 86 - src/patches/glibc/glibc-rh862094.patch | 68 - src/patches/glibc/glibc-rh863384.patch | 14 - src/patches/glibc/glibc-rh863453.patch | 81 - src/patches/glibc/glibc-rh864322.patch | 12 - src/patches/glibc/glibc-rh867679.patch | 139 - src/patches/glibc/glibc-rh868808.patch | 99 - src/patches/glibc/glibc-rh886968.patch | 33 - src/patches/glibc/glibc-rh905575.patch | 72 - src/patches/glibc/glibc-rh905874.patch | 174 - src/patches/glibc/glibc-rh905941.patch | 146 - src/patches/glibc/glibc-rh916986.patch | 123 - src/patches/glibc/glibc-rh919562.patch | 190 - src/patches/glibc/glibc-rh928318.patch | 31 - src/patches/glibc/glibc-rh929302.patch | 98 - src/patches/glibc/glibc-rh929388.patch | 21 - src/patches/glibc/glibc-rh947882.patch | 63 - src/patches/glibc/glibc-rh952422.patch | 127 - src/patches/glibc/glibc-rh966775.patch | 177 - src/patches/glibc/glibc-rh966778.patch | 54 - src/patches/glibc/glibc-rh970090.patch | 24 - src/patches/glibc/glibc-rh970776.patch | 279 - src/patches/glibc/glibc-rh978098.patch | 124 - src/patches/glibc/glibc-rh981942.patch | 22 - src/patches/glibc/glibc-rh988931.patch | 33 - src/patches/glibc/glibc-rh995972.patch | 246 - src/patches/grub2-remove-gets.patch | 21 + src/patches/openssl-1.0.2a-rpmbuild.patch | 88 +- src/patches/pam-0.99.10.0-rlimit-build-fix.patch | 28 + .../perl-Fix-Errno.pm-generation-for-gcc-5.0.patch | 66 + src/patches/pkg-config-0.29-glib-compile-fix.patch | 29 + src/patches/python-2.7.13-getentropy.patch | 22 + src/scripts/archive.files | 4 +- tools/make-functions | 328 +- 303 files changed, 4719 insertions(+), 103717 deletions(-) delete mode 100644 config/rootfiles/common/paxctl delete mode 100644 config/rootfiles/packages/dfb++ delete mode 100644 config/rootfiles/packages/iftop delete mode 100644 config/rootfiles/packages/tcpick delete mode 100644 config/rootfiles/packages/vdr_vnsiserver5 delete mode 100644 config/vdr/plugins.d/vnsiserver3.conf delete mode 100644 config/vdr/plugins.d/vnsiserver5.conf delete mode 100644 lfs/dfb++ delete mode 100644 lfs/iftop delete mode 100644 lfs/paxctl copy lfs/{hwdata => stage1} (89%) delete mode 100644 lfs/tcpick delete mode 100644 lfs/vdr_vnsiserver5 delete mode 100644 src/paks/vdr_vnsiserver5/install.sh delete mode 100644 src/paks/vdr_vnsiserver5/uninstall.sh delete mode 100644 src/paks/vdr_vnsiserver5/update.sh delete mode 100644 src/patches/binutils-2.24-pt-pax-flags-20131231.patch create mode 100644 src/patches/fontconfig-avoid-conflicts-with-integer-width-macros-from-TS.patch create mode 100644 src/patches/fuse-2.9.2-namespace-conflict-fix.patch delete mode 100644 src/patches/gcc-4.4.3-startfiles_fix-1.patch delete mode 100644 src/patches/gcc-4.4.7-texinfo-5.patch delete mode 100644 src/patches/gcc/gcc-fix-inlining-issues.patch delete mode 100644 src/patches/gcc/gcc49-i386-libgomp.patch delete mode 100644 src/patches/gcc/gcc49-libtool-no-rpath.patch delete mode 100644 src/patches/gcc/gcc49-no-add-needed.patch delete mode 100644 src/patches/gcc/gcc49-pr38757.patch delete mode 100644 src/patches/gcc/gcc49-pr64336.patch delete mode 100644 src/patches/glibc-2.12-accept-make-versions-4.0-and-greater.patch delete mode 100644 src/patches/glibc-cfi-entry-not-closed.patch delete mode 100644 src/patches/glibc-remove-ctors-dtors-output-sections.patch delete mode 100644 src/patches/glibc-resolv-stack_chk_fail.patch delete mode 100644 src/patches/glibc-test-installation.pl-libgcc_s.patch delete mode 100644 src/patches/glibc-test-installation.pl-nss_test1.patch delete mode 100644 src/patches/glibc/glibc-aliasing.patch delete mode 100644 src/patches/glibc/glibc-fedora.patch delete mode 100644 src/patches/glibc/glibc-getlogin-r.patch delete mode 100644 src/patches/glibc/glibc-localedata.patch delete mode 100644 src/patches/glibc/glibc-mq_open.patch delete mode 100644 src/patches/glibc/glibc-recvmmsg.patch delete mode 100644 src/patches/glibc/glibc-rh1008310.patch delete mode 100644 src/patches/glibc/glibc-rh1019916.patch delete mode 100644 src/patches/glibc/glibc-rh1022022.patch delete mode 100644 src/patches/glibc/glibc-rh1023306.patch delete mode 100644 src/patches/glibc/glibc-rh1025933.patch delete mode 100644 src/patches/glibc/glibc-rh1027101.patch delete mode 100644 src/patches/glibc/glibc-rh1027261.patch delete mode 100644 src/patches/glibc/glibc-rh1028285.patch delete mode 100644 src/patches/glibc/glibc-rh1032628.patch delete mode 100644 src/patches/glibc/glibc-rh1039988.patch delete mode 100644 src/patches/glibc/glibc-rh1043557.patch delete mode 100644 src/patches/glibc/glibc-rh1044628.patch delete mode 100644 src/patches/glibc/glibc-rh1053178.patch delete mode 100644 src/patches/glibc/glibc-rh1054846.patch delete mode 100644 src/patches/glibc/glibc-rh1066724.patch delete mode 100644 src/patches/glibc/glibc-rh1074342.patch delete mode 100644 src/patches/glibc/glibc-rh1074353.patch delete mode 100644 src/patches/glibc/glibc-rh1082379.patch delete mode 100644 src/patches/glibc/glibc-rh1085273.patch delete mode 100644 src/patches/glibc/glibc-rh1085289.patch delete mode 100644 src/patches/glibc/glibc-rh1085312.patch delete mode 100644 src/patches/glibc/glibc-rh1087833.patch delete mode 100644 src/patches/glibc/glibc-rh1088301.patch delete mode 100644 src/patches/glibc/glibc-rh1091915.patch delete mode 100644 src/patches/glibc/glibc-rh1099025-2.patch delete mode 100644 src/patches/glibc/glibc-rh1099025.patch delete mode 100644 src/patches/glibc/glibc-rh1111460.patch delete mode 100644 src/patches/glibc/glibc-rh1116050-1.patch delete mode 100644 src/patches/glibc/glibc-rh1116050.patch delete mode 100644 src/patches/glibc/glibc-rh1124204.patch delete mode 100644 src/patches/glibc/glibc-rh1125307.patch delete mode 100644 src/patches/glibc/glibc-rh1133810-1.patch delete mode 100644 src/patches/glibc/glibc-rh1133810-2.patch delete mode 100644 src/patches/glibc/glibc-rh1138769.patch delete mode 100644 src/patches/glibc/glibc-rh1144019.patch delete mode 100644 src/patches/glibc/glibc-rh1144132.patch delete mode 100644 src/patches/glibc/glibc-rh1154563.patch delete mode 100644 src/patches/glibc/glibc-rh1159167.patch delete mode 100644 src/patches/glibc/glibc-rh1171296.patch delete mode 100644 src/patches/glibc/glibc-rh1172044.patch delete mode 100644 src/patches/glibc/glibc-rh1176907.patch delete mode 100644 src/patches/glibc/glibc-rh1183534.patch delete mode 100644 src/patches/glibc/glibc-rh1195453-avx512.patch delete mode 100644 src/patches/glibc/glibc-rh1207236.patch delete mode 100644 src/patches/glibc/glibc-rh1209376.patch delete mode 100644 src/patches/glibc/glibc-rh1217186.patch delete mode 100644 src/patches/glibc/glibc-rh1256812-2.patch delete mode 100644 src/patches/glibc/glibc-rh1256812-3.patch delete mode 100644 src/patches/glibc/glibc-rh1256812-4.patch delete mode 100644 src/patches/glibc/glibc-rh1256812.patch delete mode 100644 src/patches/glibc/glibc-rh1256890.patch delete mode 100644 src/patches/glibc/glibc-rh1256891.patch delete mode 100644 src/patches/glibc/glibc-rh1291270.patch delete mode 100644 src/patches/glibc/glibc-rh1296031-0.patch delete mode 100644 src/patches/glibc/glibc-rh1296031.patch delete mode 100644 src/patches/glibc/glibc-rh1299319-0.patch delete mode 100644 src/patches/glibc/glibc-rh1299319-1.patch delete mode 100644 src/patches/glibc/glibc-rh552960.patch delete mode 100644 src/patches/glibc/glibc-rh580498.patch delete mode 100644 src/patches/glibc/glibc-rh582738.patch delete mode 100644 src/patches/glibc/glibc-rh587360.patch delete mode 100644 src/patches/glibc/glibc-rh593396.patch delete mode 100644 src/patches/glibc/glibc-rh593686.patch delete mode 100644 src/patches/glibc/glibc-rh601686.patch delete mode 100644 src/patches/glibc/glibc-rh607010.patch delete mode 100644 src/patches/glibc/glibc-rh607461.patch delete mode 100644 src/patches/glibc/glibc-rh615090.patch delete mode 100644 src/patches/glibc/glibc-rh615701.patch delete mode 100644 src/patches/glibc/glibc-rh621959.patch delete mode 100644 src/patches/glibc/glibc-rh623187.patch delete mode 100644 src/patches/glibc/glibc-rh625893.patch delete mode 100644 src/patches/glibc/glibc-rh629823-2.patch delete mode 100644 src/patches/glibc/glibc-rh629823.patch delete mode 100644 src/patches/glibc/glibc-rh630801.patch delete mode 100644 src/patches/glibc/glibc-rh631011.patch delete mode 100644 src/patches/glibc/glibc-rh641128.patch delete mode 100644 src/patches/glibc/glibc-rh642584.patch delete mode 100644 src/patches/glibc/glibc-rh643822.patch delete mode 100644 src/patches/glibc/glibc-rh645672.patch delete mode 100644 src/patches/glibc/glibc-rh646954.patch delete mode 100644 src/patches/glibc/glibc-rh647448.patch delete mode 100644 src/patches/glibc/glibc-rh652661.patch delete mode 100644 src/patches/glibc/glibc-rh656014.patch delete mode 100644 src/patches/glibc/glibc-rh656530.patch delete mode 100644 src/patches/glibc/glibc-rh657572.patch delete mode 100644 src/patches/glibc/glibc-rh661982.patch delete mode 100644 src/patches/glibc/glibc-rh663641-2.patch delete mode 100644 src/patches/glibc/glibc-rh663641-3.patch delete mode 100644 src/patches/glibc/glibc-rh663641.patch delete mode 100644 src/patches/glibc/glibc-rh667974.patch delete mode 100644 src/patches/glibc/glibc-rh676076.patch delete mode 100644 src/patches/glibc/glibc-rh676591.patch delete mode 100644 src/patches/glibc/glibc-rh681054.patch delete mode 100644 src/patches/glibc/glibc-rh688720.patch delete mode 100644 src/patches/glibc/glibc-rh688980.patch delete mode 100644 src/patches/glibc/glibc-rh689471.patch delete mode 100644 src/patches/glibc/glibc-rh692177.patch delete mode 100644 src/patches/glibc/glibc-rh692838.patch delete mode 100644 src/patches/glibc/glibc-rh694386.patch delete mode 100644 src/patches/glibc/glibc-rh695595.patch delete mode 100644 src/patches/glibc/glibc-rh695963.patch delete mode 100644 src/patches/glibc/glibc-rh696472.patch delete mode 100644 src/patches/glibc/glibc-rh697421.patch delete mode 100644 src/patches/glibc/glibc-rh699724.patch delete mode 100644 src/patches/glibc/glibc-rh700507.patch delete mode 100644 src/patches/glibc/glibc-rh703480.patch delete mode 100644 src/patches/glibc/glibc-rh703481.patch delete mode 100644 src/patches/glibc/glibc-rh705465.patch delete mode 100644 src/patches/glibc/glibc-rh711927.patch delete mode 100644 src/patches/glibc/glibc-rh711987.patch delete mode 100644 src/patches/glibc/glibc-rh712248.patch delete mode 100644 src/patches/glibc/glibc-rh713134.patch delete mode 100644 src/patches/glibc/glibc-rh714823.patch delete mode 100644 src/patches/glibc/glibc-rh718057.patch delete mode 100644 src/patches/glibc/glibc-rh726517.patch delete mode 100644 src/patches/glibc/glibc-rh730379.patch delete mode 100644 src/patches/glibc/glibc-rh731042.patch delete mode 100644 src/patches/glibc/glibc-rh736346.patch delete mode 100644 src/patches/glibc/glibc-rh737778.patch delete mode 100644 src/patches/glibc/glibc-rh738665.patch delete mode 100644 src/patches/glibc/glibc-rh738763.patch delete mode 100644 src/patches/glibc/glibc-rh739184.patch delete mode 100644 src/patches/glibc/glibc-rh739971.patch delete mode 100644 src/patches/glibc/glibc-rh740506-2.patch delete mode 100644 src/patches/glibc/glibc-rh740506.patch delete mode 100644 src/patches/glibc/glibc-rh749188.patch delete mode 100644 src/patches/glibc/glibc-rh750531.patch delete mode 100644 src/patches/glibc/glibc-rh751750.patch delete mode 100644 src/patches/glibc/glibc-rh752122.patch delete mode 100644 src/patches/glibc/glibc-rh757888.patch delete mode 100644 src/patches/glibc/glibc-rh766513.patch delete mode 100644 src/patches/glibc/glibc-rh767146.patch delete mode 100644 src/patches/glibc/glibc-rh767693-2.patch delete mode 100644 src/patches/glibc/glibc-rh767693.patch delete mode 100644 src/patches/glibc/glibc-rh767746.patch delete mode 100644 src/patches/glibc/glibc-rh771342.patch delete mode 100644 src/patches/glibc/glibc-rh782585.patch delete mode 100644 src/patches/glibc/glibc-rh784402.patch delete mode 100644 src/patches/glibc/glibc-rh785984.patch delete mode 100644 src/patches/glibc/glibc-rh788959-2.patch delete mode 100644 src/patches/glibc/glibc-rh788959.patch delete mode 100644 src/patches/glibc/glibc-rh789189.patch delete mode 100644 src/patches/glibc/glibc-rh789209.patch delete mode 100644 src/patches/glibc/glibc-rh789238-2.patch delete mode 100644 src/patches/glibc/glibc-rh789238.patch delete mode 100644 src/patches/glibc/glibc-rh794817-2.patch delete mode 100644 src/patches/glibc/glibc-rh794817.patch delete mode 100644 src/patches/glibc/glibc-rh795498.patch delete mode 100644 src/patches/glibc/glibc-rh797094-1.patch delete mode 100644 src/patches/glibc/glibc-rh797094-2.patch delete mode 100644 src/patches/glibc/glibc-rh804686.patch delete mode 100644 src/patches/glibc/glibc-rh804689.patch delete mode 100644 src/patches/glibc/glibc-rh806404.patch delete mode 100644 src/patches/glibc/glibc-rh808337.patch delete mode 100644 src/patches/glibc/glibc-rh808545.patch delete mode 100644 src/patches/glibc/glibc-rh809602.patch delete mode 100644 src/patches/glibc/glibc-rh809726.patch delete mode 100644 src/patches/glibc/glibc-rh823909.patch delete mode 100644 src/patches/glibc/glibc-rh826149.patch delete mode 100644 src/patches/glibc/glibc-rh827362.patch delete mode 100644 src/patches/glibc/glibc-rh830127.patch delete mode 100644 src/patches/glibc/glibc-rh832516.patch delete mode 100644 src/patches/glibc/glibc-rh832694.patch delete mode 100644 src/patches/glibc/glibc-rh833717.patch delete mode 100644 src/patches/glibc/glibc-rh834386-2.patch delete mode 100644 src/patches/glibc/glibc-rh834386.patch delete mode 100644 src/patches/glibc/glibc-rh837695.patch delete mode 100644 src/patches/glibc/glibc-rh837918.patch delete mode 100644 src/patches/glibc/glibc-rh841787.patch delete mode 100644 src/patches/glibc/glibc-rh843673.patch delete mode 100644 src/patches/glibc/glibc-rh845218.patch delete mode 100644 src/patches/glibc/glibc-rh846342.patch delete mode 100644 src/patches/glibc/glibc-rh847932.patch delete mode 100644 src/patches/glibc/glibc-rh848082.patch delete mode 100644 src/patches/glibc/glibc-rh848748.patch delete mode 100644 src/patches/glibc/glibc-rh849203.patch delete mode 100644 src/patches/glibc/glibc-rh849651.patch delete mode 100644 src/patches/glibc/glibc-rh851470.patch delete mode 100644 src/patches/glibc/glibc-rh852445.patch delete mode 100644 src/patches/glibc/glibc-rh859965.patch delete mode 100644 src/patches/glibc/glibc-rh861167.patch delete mode 100644 src/patches/glibc/glibc-rh862094.patch delete mode 100644 src/patches/glibc/glibc-rh863384.patch delete mode 100644 src/patches/glibc/glibc-rh863453.patch delete mode 100644 src/patches/glibc/glibc-rh864322.patch delete mode 100644 src/patches/glibc/glibc-rh867679.patch delete mode 100644 src/patches/glibc/glibc-rh868808.patch delete mode 100644 src/patches/glibc/glibc-rh886968.patch delete mode 100644 src/patches/glibc/glibc-rh905575.patch delete mode 100644 src/patches/glibc/glibc-rh905874.patch delete mode 100644 src/patches/glibc/glibc-rh905941.patch delete mode 100644 src/patches/glibc/glibc-rh916986.patch delete mode 100644 src/patches/glibc/glibc-rh919562.patch delete mode 100644 src/patches/glibc/glibc-rh928318.patch delete mode 100644 src/patches/glibc/glibc-rh929302.patch delete mode 100644 src/patches/glibc/glibc-rh929388.patch delete mode 100644 src/patches/glibc/glibc-rh947882.patch delete mode 100644 src/patches/glibc/glibc-rh952422.patch delete mode 100644 src/patches/glibc/glibc-rh966775.patch delete mode 100644 src/patches/glibc/glibc-rh966778.patch delete mode 100644 src/patches/glibc/glibc-rh970090.patch delete mode 100644 src/patches/glibc/glibc-rh970776.patch delete mode 100644 src/patches/glibc/glibc-rh978098.patch delete mode 100644 src/patches/glibc/glibc-rh981942.patch delete mode 100644 src/patches/glibc/glibc-rh988931.patch delete mode 100644 src/patches/glibc/glibc-rh995972.patch create mode 100644 src/patches/grub2-remove-gets.patch create mode 100644 src/patches/pam-0.99.10.0-rlimit-build-fix.patch create mode 100644 src/patches/perl-Fix-Errno.pm-generation-for-gcc-5.0.patch create mode 100644 src/patches/pkg-config-0.29-glib-compile-fix.patch create mode 100644 src/patches/python-2.7.13-getentropy.patch
Difference in files: diff --git a/config/rootfiles/common/boost b/config/rootfiles/common/boost index 57cb128..39a9c05 100644 --- a/config/rootfiles/common/boost +++ b/config/rootfiles/common/boost @@ -59,7 +59,9 @@ #usr/include/boost/accumulators/statistics/pot_tail_mean.hpp #usr/include/boost/accumulators/statistics/rolling_count.hpp #usr/include/boost/accumulators/statistics/rolling_mean.hpp +#usr/include/boost/accumulators/statistics/rolling_moment.hpp #usr/include/boost/accumulators/statistics/rolling_sum.hpp +#usr/include/boost/accumulators/statistics/rolling_variance.hpp #usr/include/boost/accumulators/statistics/rolling_window.hpp #usr/include/boost/accumulators/statistics/skewness.hpp #usr/include/boost/accumulators/statistics/stats.hpp @@ -95,6 +97,7 @@ #usr/include/boost/accumulators/statistics/with_error.hpp #usr/include/boost/accumulators/statistics_fwd.hpp #usr/include/boost/algorithm +#usr/include/boost/algorithm/algorithm.hpp #usr/include/boost/algorithm/clamp.hpp #usr/include/boost/algorithm/cxx11 #usr/include/boost/algorithm/cxx11/all_of.hpp @@ -116,6 +119,7 @@ #usr/include/boost/algorithm/cxx14/mismatch.hpp #usr/include/boost/algorithm/gather.hpp #usr/include/boost/algorithm/hex.hpp +#usr/include/boost/algorithm/is_palindrome.hpp #usr/include/boost/algorithm/minmax.hpp #usr/include/boost/algorithm/minmax_element.hpp #usr/include/boost/algorithm/searching @@ -125,6 +129,7 @@ #usr/include/boost/algorithm/searching/detail/bm_traits.hpp #usr/include/boost/algorithm/searching/detail/debugging.hpp #usr/include/boost/algorithm/searching/knuth_morris_pratt.hpp +#usr/include/boost/algorithm/sort_subrange.hpp #usr/include/boost/algorithm/string #usr/include/boost/algorithm/string.hpp #usr/include/boost/algorithm/string/case_conv.hpp @@ -174,10 +179,57 @@ #usr/include/boost/algorithm/string/trim_all.hpp #usr/include/boost/algorithm/string/yes_no_type.hpp #usr/include/boost/algorithm/string_regex.hpp +#usr/include/boost/align +#usr/include/boost/align.hpp +#usr/include/boost/align/align.hpp +#usr/include/boost/align/align_down.hpp +#usr/include/boost/align/align_up.hpp +#usr/include/boost/align/aligned_alloc.hpp +#usr/include/boost/align/aligned_allocator.hpp +#usr/include/boost/align/aligned_allocator_adaptor.hpp +#usr/include/boost/align/aligned_allocator_adaptor_forward.hpp +#usr/include/boost/align/aligned_allocator_forward.hpp +#usr/include/boost/align/aligned_delete.hpp +#usr/include/boost/align/aligned_delete_forward.hpp +#usr/include/boost/align/alignment_of.hpp +#usr/include/boost/align/alignment_of_forward.hpp +#usr/include/boost/align/assume_aligned.hpp +#usr/include/boost/align/detail +#usr/include/boost/align/detail/addressof.hpp +#usr/include/boost/align/detail/align.hpp +#usr/include/boost/align/detail/align_cxx11.hpp +#usr/include/boost/align/detail/align_down.hpp +#usr/include/boost/align/detail/align_up.hpp +#usr/include/boost/align/detail/aligned_alloc.hpp +#usr/include/boost/align/detail/aligned_alloc_android.hpp +#usr/include/boost/align/detail/aligned_alloc_macos.hpp +#usr/include/boost/align/detail/aligned_alloc_msvc.hpp +#usr/include/boost/align/detail/aligned_alloc_posix.hpp +#usr/include/boost/align/detail/aligned_alloc_sunos.hpp +#usr/include/boost/align/detail/alignment_of.hpp +#usr/include/boost/align/detail/alignment_of_clang.hpp +#usr/include/boost/align/detail/alignment_of_codegear.hpp +#usr/include/boost/align/detail/alignment_of_cxx11.hpp +#usr/include/boost/align/detail/alignment_of_gcc.hpp +#usr/include/boost/align/detail/alignment_of_msvc.hpp +#usr/include/boost/align/detail/assume_aligned.hpp +#usr/include/boost/align/detail/assume_aligned_clang.hpp +#usr/include/boost/align/detail/assume_aligned_gcc.hpp +#usr/include/boost/align/detail/assume_aligned_intel.hpp +#usr/include/boost/align/detail/assume_aligned_msvc.hpp +#usr/include/boost/align/detail/element_type.hpp +#usr/include/boost/align/detail/integral_constant.hpp +#usr/include/boost/align/detail/is_aligned.hpp +#usr/include/boost/align/detail/is_alignment.hpp +#usr/include/boost/align/detail/is_alignment_constant.hpp +#usr/include/boost/align/detail/max_align.hpp +#usr/include/boost/align/detail/max_objects.hpp +#usr/include/boost/align/detail/max_size.hpp +#usr/include/boost/align/detail/min_size.hpp +#usr/include/boost/align/is_aligned.hpp #usr/include/boost/aligned_storage.hpp #usr/include/boost/any.hpp #usr/include/boost/archive -#usr/include/boost/archive/add_facet.hpp #usr/include/boost/archive/archive_exception.hpp #usr/include/boost/archive/basic_archive.hpp #usr/include/boost/archive/basic_binary_iarchive.hpp @@ -205,8 +257,6 @@ #usr/include/boost/archive/detail/archive_serializer_map.hpp #usr/include/boost/archive/detail/auto_link_archive.hpp #usr/include/boost/archive/detail/auto_link_warchive.hpp -#usr/include/boost/archive/detail/basic_archive_impl.hpp -#usr/include/boost/archive/detail/basic_config.hpp #usr/include/boost/archive/detail/basic_iarchive.hpp #usr/include/boost/archive/detail/basic_iserializer.hpp #usr/include/boost/archive/detail/basic_oarchive.hpp @@ -219,6 +269,7 @@ #usr/include/boost/archive/detail/common_iarchive.hpp #usr/include/boost/archive/detail/common_oarchive.hpp #usr/include/boost/archive/detail/decl.hpp +#usr/include/boost/archive/detail/helper_collection.hpp #usr/include/boost/archive/detail/interface_iarchive.hpp #usr/include/boost/archive/detail/interface_oarchive.hpp #usr/include/boost/archive/detail/iserializer.hpp @@ -256,7 +307,6 @@ #usr/include/boost/archive/iterators/dataflow.hpp #usr/include/boost/archive/iterators/dataflow_exception.hpp #usr/include/boost/archive/iterators/escape.hpp -#usr/include/boost/archive/iterators/head_iterator.hpp #usr/include/boost/archive/iterators/insert_linebreaks.hpp #usr/include/boost/archive/iterators/istream_iterator.hpp #usr/include/boost/archive/iterators/mb_from_wchar.hpp @@ -280,7 +330,6 @@ #usr/include/boost/archive/polymorphic_xml_oarchive.hpp #usr/include/boost/archive/polymorphic_xml_wiarchive.hpp #usr/include/boost/archive/polymorphic_xml_woarchive.hpp -#usr/include/boost/archive/shared_ptr_helper.hpp #usr/include/boost/archive/text_iarchive.hpp #usr/include/boost/archive/text_oarchive.hpp #usr/include/boost/archive/text_wiarchive.hpp @@ -420,6 +469,7 @@ #usr/include/boost/asio/detail/limits.hpp #usr/include/boost/asio/detail/local_free_on_block_exit.hpp #usr/include/boost/asio/detail/macos_fenced_block.hpp +#usr/include/boost/asio/detail/memory.hpp #usr/include/boost/asio/detail/mutex.hpp #usr/include/boost/asio/detail/noncopyable.hpp #usr/include/boost/asio/detail/null_event.hpp @@ -485,6 +535,7 @@ #usr/include/boost/asio/detail/solaris_fenced_block.hpp #usr/include/boost/asio/detail/static_mutex.hpp #usr/include/boost/asio/detail/std_event.hpp +#usr/include/boost/asio/detail/std_fenced_block.hpp #usr/include/boost/asio/detail/std_mutex.hpp #usr/include/boost/asio/detail/std_static_mutex.hpp #usr/include/boost/asio/detail/std_thread.hpp @@ -521,6 +572,7 @@ #usr/include/boost/asio/detail/win_iocp_overlapped_ptr.hpp #usr/include/boost/asio/detail/win_iocp_serial_port_service.hpp #usr/include/boost/asio/detail/win_iocp_socket_accept_op.hpp +#usr/include/boost/asio/detail/win_iocp_socket_connect_op.hpp #usr/include/boost/asio/detail/win_iocp_socket_recv_op.hpp #usr/include/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp #usr/include/boost/asio/detail/win_iocp_socket_recvmsg_op.hpp @@ -533,7 +585,7 @@ #usr/include/boost/asio/detail/win_static_mutex.hpp #usr/include/boost/asio/detail/win_thread.hpp #usr/include/boost/asio/detail/win_tss_ptr.hpp -#usr/include/boost/asio/detail/wince_thread.hpp +#usr/include/boost/asio/detail/winapi_thread.hpp #usr/include/boost/asio/detail/winrt_async_manager.hpp #usr/include/boost/asio/detail/winrt_async_op.hpp #usr/include/boost/asio/detail/winrt_resolve_op.hpp @@ -737,29 +789,51 @@ #usr/include/boost/atomic #usr/include/boost/atomic.hpp #usr/include/boost/atomic/atomic.hpp +#usr/include/boost/atomic/atomic_flag.hpp +#usr/include/boost/atomic/capabilities.hpp #usr/include/boost/atomic/detail -#usr/include/boost/atomic/detail/base.hpp -#usr/include/boost/atomic/detail/cas128strong.hpp -#usr/include/boost/atomic/detail/cas32strong.hpp -#usr/include/boost/atomic/detail/cas32weak.hpp -#usr/include/boost/atomic/detail/cas64strong-ptr.hpp -#usr/include/boost/atomic/detail/cas64strong.hpp +#usr/include/boost/atomic/detail/atomic_flag.hpp +#usr/include/boost/atomic/detail/atomic_template.hpp +#usr/include/boost/atomic/detail/bitwise_cast.hpp +#usr/include/boost/atomic/detail/caps_gcc_alpha.hpp +#usr/include/boost/atomic/detail/caps_gcc_arm.hpp +#usr/include/boost/atomic/detail/caps_gcc_atomic.hpp +#usr/include/boost/atomic/detail/caps_gcc_ppc.hpp +#usr/include/boost/atomic/detail/caps_gcc_sparc.hpp +#usr/include/boost/atomic/detail/caps_gcc_sync.hpp +#usr/include/boost/atomic/detail/caps_gcc_x86.hpp +#usr/include/boost/atomic/detail/caps_linux_arm.hpp +#usr/include/boost/atomic/detail/caps_msvc_arm.hpp +#usr/include/boost/atomic/detail/caps_msvc_x86.hpp +#usr/include/boost/atomic/detail/caps_windows.hpp #usr/include/boost/atomic/detail/config.hpp -#usr/include/boost/atomic/detail/gcc-alpha.hpp -#usr/include/boost/atomic/detail/gcc-armv6plus.hpp -#usr/include/boost/atomic/detail/gcc-atomic.hpp -#usr/include/boost/atomic/detail/gcc-cas.hpp -#usr/include/boost/atomic/detail/gcc-ppc.hpp -#usr/include/boost/atomic/detail/gcc-sparcv9.hpp -#usr/include/boost/atomic/detail/gcc-x86.hpp -#usr/include/boost/atomic/detail/generic-cas.hpp +#usr/include/boost/atomic/detail/int_sizes.hpp #usr/include/boost/atomic/detail/interlocked.hpp #usr/include/boost/atomic/detail/link.hpp -#usr/include/boost/atomic/detail/linux-arm.hpp #usr/include/boost/atomic/detail/lockpool.hpp +#usr/include/boost/atomic/detail/operations.hpp +#usr/include/boost/atomic/detail/operations_fwd.hpp +#usr/include/boost/atomic/detail/operations_lockfree.hpp +#usr/include/boost/atomic/detail/ops_cas_based.hpp +#usr/include/boost/atomic/detail/ops_emulated.hpp +#usr/include/boost/atomic/detail/ops_extending_cas_based.hpp +#usr/include/boost/atomic/detail/ops_gcc_alpha.hpp +#usr/include/boost/atomic/detail/ops_gcc_arm.hpp +#usr/include/boost/atomic/detail/ops_gcc_atomic.hpp +#usr/include/boost/atomic/detail/ops_gcc_ppc.hpp +#usr/include/boost/atomic/detail/ops_gcc_sparc.hpp +#usr/include/boost/atomic/detail/ops_gcc_sync.hpp +#usr/include/boost/atomic/detail/ops_gcc_x86.hpp +#usr/include/boost/atomic/detail/ops_gcc_x86_dcas.hpp +#usr/include/boost/atomic/detail/ops_linux_arm.hpp +#usr/include/boost/atomic/detail/ops_msvc_arm.hpp +#usr/include/boost/atomic/detail/ops_msvc_common.hpp +#usr/include/boost/atomic/detail/ops_msvc_x86.hpp +#usr/include/boost/atomic/detail/ops_windows.hpp +#usr/include/boost/atomic/detail/pause.hpp #usr/include/boost/atomic/detail/platform.hpp -#usr/include/boost/atomic/detail/type-classification.hpp -#usr/include/boost/atomic/detail/windows.hpp +#usr/include/boost/atomic/detail/storage_type.hpp +#usr/include/boost/atomic/fences.hpp #usr/include/boost/bimap #usr/include/boost/bimap.hpp #usr/include/boost/bimap/bimap.hpp @@ -984,6 +1058,348 @@ #usr/include/boost/compatibility/cpp_c_headers/cwchar #usr/include/boost/compatibility/cpp_c_headers/cwctype #usr/include/boost/compressed_pair.hpp +#usr/include/boost/compute +#usr/include/boost/compute.hpp +#usr/include/boost/compute/algorithm +#usr/include/boost/compute/algorithm.hpp +#usr/include/boost/compute/algorithm/accumulate.hpp +#usr/include/boost/compute/algorithm/adjacent_difference.hpp +#usr/include/boost/compute/algorithm/adjacent_find.hpp +#usr/include/boost/compute/algorithm/all_of.hpp +#usr/include/boost/compute/algorithm/any_of.hpp +#usr/include/boost/compute/algorithm/binary_search.hpp +#usr/include/boost/compute/algorithm/copy.hpp +#usr/include/boost/compute/algorithm/copy_if.hpp +#usr/include/boost/compute/algorithm/copy_n.hpp +#usr/include/boost/compute/algorithm/count.hpp +#usr/include/boost/compute/algorithm/count_if.hpp +#usr/include/boost/compute/algorithm/detail +#usr/include/boost/compute/algorithm/detail/balanced_path.hpp +#usr/include/boost/compute/algorithm/detail/binary_find.hpp +#usr/include/boost/compute/algorithm/detail/compact.hpp +#usr/include/boost/compute/algorithm/detail/copy_on_device.hpp +#usr/include/boost/compute/algorithm/detail/copy_to_device.hpp +#usr/include/boost/compute/algorithm/detail/copy_to_host.hpp +#usr/include/boost/compute/algorithm/detail/count_if_with_ballot.hpp +#usr/include/boost/compute/algorithm/detail/count_if_with_reduce.hpp +#usr/include/boost/compute/algorithm/detail/count_if_with_threads.hpp +#usr/include/boost/compute/algorithm/detail/find_extrema.hpp +#usr/include/boost/compute/algorithm/detail/find_extrema_on_cpu.hpp +#usr/include/boost/compute/algorithm/detail/find_extrema_with_atomics.hpp +#usr/include/boost/compute/algorithm/detail/find_extrema_with_reduce.hpp +#usr/include/boost/compute/algorithm/detail/find_if_with_atomics.hpp +#usr/include/boost/compute/algorithm/detail/inplace_reduce.hpp +#usr/include/boost/compute/algorithm/detail/insertion_sort.hpp +#usr/include/boost/compute/algorithm/detail/merge_path.hpp +#usr/include/boost/compute/algorithm/detail/merge_sort_on_cpu.hpp +#usr/include/boost/compute/algorithm/detail/merge_sort_on_gpu.hpp +#usr/include/boost/compute/algorithm/detail/merge_with_merge_path.hpp +#usr/include/boost/compute/algorithm/detail/radix_sort.hpp +#usr/include/boost/compute/algorithm/detail/random_fill.hpp +#usr/include/boost/compute/algorithm/detail/reduce_by_key.hpp +#usr/include/boost/compute/algorithm/detail/reduce_by_key_with_scan.hpp +#usr/include/boost/compute/algorithm/detail/reduce_on_cpu.hpp +#usr/include/boost/compute/algorithm/detail/reduce_on_gpu.hpp +#usr/include/boost/compute/algorithm/detail/scan.hpp +#usr/include/boost/compute/algorithm/detail/scan_on_cpu.hpp +#usr/include/boost/compute/algorithm/detail/scan_on_gpu.hpp +#usr/include/boost/compute/algorithm/detail/search_all.hpp +#usr/include/boost/compute/algorithm/detail/serial_accumulate.hpp +#usr/include/boost/compute/algorithm/detail/serial_count_if.hpp +#usr/include/boost/compute/algorithm/detail/serial_find_extrema.hpp +#usr/include/boost/compute/algorithm/detail/serial_merge.hpp +#usr/include/boost/compute/algorithm/detail/serial_reduce.hpp +#usr/include/boost/compute/algorithm/detail/serial_reduce_by_key.hpp +#usr/include/boost/compute/algorithm/detail/serial_scan.hpp +#usr/include/boost/compute/algorithm/equal.hpp +#usr/include/boost/compute/algorithm/equal_range.hpp +#usr/include/boost/compute/algorithm/exclusive_scan.hpp +#usr/include/boost/compute/algorithm/fill.hpp +#usr/include/boost/compute/algorithm/fill_n.hpp +#usr/include/boost/compute/algorithm/find.hpp +#usr/include/boost/compute/algorithm/find_end.hpp +#usr/include/boost/compute/algorithm/find_if.hpp +#usr/include/boost/compute/algorithm/find_if_not.hpp +#usr/include/boost/compute/algorithm/for_each.hpp +#usr/include/boost/compute/algorithm/for_each_n.hpp +#usr/include/boost/compute/algorithm/gather.hpp +#usr/include/boost/compute/algorithm/generate.hpp +#usr/include/boost/compute/algorithm/generate_n.hpp +#usr/include/boost/compute/algorithm/includes.hpp +#usr/include/boost/compute/algorithm/inclusive_scan.hpp +#usr/include/boost/compute/algorithm/inner_product.hpp +#usr/include/boost/compute/algorithm/inplace_merge.hpp +#usr/include/boost/compute/algorithm/iota.hpp +#usr/include/boost/compute/algorithm/is_partitioned.hpp +#usr/include/boost/compute/algorithm/is_permutation.hpp +#usr/include/boost/compute/algorithm/is_sorted.hpp +#usr/include/boost/compute/algorithm/lexicographical_compare.hpp +#usr/include/boost/compute/algorithm/lower_bound.hpp +#usr/include/boost/compute/algorithm/max_element.hpp +#usr/include/boost/compute/algorithm/merge.hpp +#usr/include/boost/compute/algorithm/min_element.hpp +#usr/include/boost/compute/algorithm/minmax_element.hpp +#usr/include/boost/compute/algorithm/mismatch.hpp +#usr/include/boost/compute/algorithm/next_permutation.hpp +#usr/include/boost/compute/algorithm/none_of.hpp +#usr/include/boost/compute/algorithm/nth_element.hpp +#usr/include/boost/compute/algorithm/partial_sum.hpp +#usr/include/boost/compute/algorithm/partition.hpp +#usr/include/boost/compute/algorithm/partition_copy.hpp +#usr/include/boost/compute/algorithm/partition_point.hpp +#usr/include/boost/compute/algorithm/prev_permutation.hpp +#usr/include/boost/compute/algorithm/random_shuffle.hpp +#usr/include/boost/compute/algorithm/reduce.hpp +#usr/include/boost/compute/algorithm/reduce_by_key.hpp +#usr/include/boost/compute/algorithm/remove.hpp +#usr/include/boost/compute/algorithm/remove_if.hpp +#usr/include/boost/compute/algorithm/replace.hpp +#usr/include/boost/compute/algorithm/replace_copy.hpp +#usr/include/boost/compute/algorithm/reverse.hpp +#usr/include/boost/compute/algorithm/reverse_copy.hpp +#usr/include/boost/compute/algorithm/rotate.hpp +#usr/include/boost/compute/algorithm/rotate_copy.hpp +#usr/include/boost/compute/algorithm/scatter.hpp +#usr/include/boost/compute/algorithm/scatter_if.hpp +#usr/include/boost/compute/algorithm/search.hpp +#usr/include/boost/compute/algorithm/search_n.hpp +#usr/include/boost/compute/algorithm/set_difference.hpp +#usr/include/boost/compute/algorithm/set_intersection.hpp +#usr/include/boost/compute/algorithm/set_symmetric_difference.hpp +#usr/include/boost/compute/algorithm/set_union.hpp +#usr/include/boost/compute/algorithm/sort.hpp +#usr/include/boost/compute/algorithm/sort_by_key.hpp +#usr/include/boost/compute/algorithm/stable_partition.hpp +#usr/include/boost/compute/algorithm/stable_sort.hpp +#usr/include/boost/compute/algorithm/stable_sort_by_key.hpp +#usr/include/boost/compute/algorithm/swap_ranges.hpp +#usr/include/boost/compute/algorithm/transform.hpp +#usr/include/boost/compute/algorithm/transform_if.hpp +#usr/include/boost/compute/algorithm/transform_reduce.hpp +#usr/include/boost/compute/algorithm/unique.hpp +#usr/include/boost/compute/algorithm/unique_copy.hpp +#usr/include/boost/compute/algorithm/upper_bound.hpp +#usr/include/boost/compute/allocator +#usr/include/boost/compute/allocator.hpp +#usr/include/boost/compute/allocator/buffer_allocator.hpp +#usr/include/boost/compute/allocator/pinned_allocator.hpp +#usr/include/boost/compute/async +#usr/include/boost/compute/async.hpp +#usr/include/boost/compute/async/future.hpp +#usr/include/boost/compute/async/wait.hpp +#usr/include/boost/compute/async/wait_guard.hpp +#usr/include/boost/compute/buffer.hpp +#usr/include/boost/compute/cl.hpp +#usr/include/boost/compute/cl_ext.hpp +#usr/include/boost/compute/closure.hpp +#usr/include/boost/compute/command_queue.hpp +#usr/include/boost/compute/config.hpp +#usr/include/boost/compute/container +#usr/include/boost/compute/container.hpp +#usr/include/boost/compute/container/array.hpp +#usr/include/boost/compute/container/basic_string.hpp +#usr/include/boost/compute/container/detail +#usr/include/boost/compute/container/detail/scalar.hpp +#usr/include/boost/compute/container/dynamic_bitset.hpp +#usr/include/boost/compute/container/flat_map.hpp +#usr/include/boost/compute/container/flat_set.hpp +#usr/include/boost/compute/container/mapped_view.hpp +#usr/include/boost/compute/container/stack.hpp +#usr/include/boost/compute/container/string.hpp +#usr/include/boost/compute/container/valarray.hpp +#usr/include/boost/compute/container/vector.hpp +#usr/include/boost/compute/context.hpp +#usr/include/boost/compute/core.hpp +#usr/include/boost/compute/detail +#usr/include/boost/compute/detail/assert_cl_success.hpp +#usr/include/boost/compute/detail/buffer_value.hpp +#usr/include/boost/compute/detail/device_ptr.hpp +#usr/include/boost/compute/detail/diagnostic.hpp +#usr/include/boost/compute/detail/duration.hpp +#usr/include/boost/compute/detail/get_object_info.hpp +#usr/include/boost/compute/detail/getenv.hpp +#usr/include/boost/compute/detail/global_static.hpp +#usr/include/boost/compute/detail/is_buffer_iterator.hpp +#usr/include/boost/compute/detail/is_contiguous_iterator.hpp +#usr/include/boost/compute/detail/iterator_plus_distance.hpp +#usr/include/boost/compute/detail/iterator_range_size.hpp +#usr/include/boost/compute/detail/iterator_traits.hpp +#usr/include/boost/compute/detail/literal.hpp +#usr/include/boost/compute/detail/lru_cache.hpp +#usr/include/boost/compute/detail/meta_kernel.hpp +#usr/include/boost/compute/detail/mpl_vector_to_tuple.hpp +#usr/include/boost/compute/detail/nvidia_compute_capability.hpp +#usr/include/boost/compute/detail/parameter_cache.hpp +#usr/include/boost/compute/detail/path.hpp +#usr/include/boost/compute/detail/print_range.hpp +#usr/include/boost/compute/detail/read_write_single_value.hpp +#usr/include/boost/compute/detail/sha1.hpp +#usr/include/boost/compute/detail/variadic_macros.hpp +#usr/include/boost/compute/detail/vendor.hpp +#usr/include/boost/compute/detail/work_size.hpp +#usr/include/boost/compute/device.hpp +#usr/include/boost/compute/event.hpp +#usr/include/boost/compute/exception +#usr/include/boost/compute/exception.hpp +#usr/include/boost/compute/exception/context_error.hpp +#usr/include/boost/compute/exception/no_device_found.hpp +#usr/include/boost/compute/exception/opencl_error.hpp +#usr/include/boost/compute/exception/unsupported_extension_error.hpp +#usr/include/boost/compute/experimental +#usr/include/boost/compute/experimental/clamp_range.hpp +#usr/include/boost/compute/experimental/malloc.hpp +#usr/include/boost/compute/experimental/sort_by_transform.hpp +#usr/include/boost/compute/experimental/tabulate.hpp +#usr/include/boost/compute/function.hpp +#usr/include/boost/compute/functional +#usr/include/boost/compute/functional.hpp +#usr/include/boost/compute/functional/as.hpp +#usr/include/boost/compute/functional/atomic.hpp +#usr/include/boost/compute/functional/bind.hpp +#usr/include/boost/compute/functional/common.hpp +#usr/include/boost/compute/functional/convert.hpp +#usr/include/boost/compute/functional/detail +#usr/include/boost/compute/functional/detail/macros.hpp +#usr/include/boost/compute/functional/detail/nvidia_ballot.hpp +#usr/include/boost/compute/functional/detail/nvidia_popcount.hpp +#usr/include/boost/compute/functional/detail/unpack.hpp +#usr/include/boost/compute/functional/field.hpp +#usr/include/boost/compute/functional/geometry.hpp +#usr/include/boost/compute/functional/get.hpp +#usr/include/boost/compute/functional/hash.hpp +#usr/include/boost/compute/functional/identity.hpp +#usr/include/boost/compute/functional/integer.hpp +#usr/include/boost/compute/functional/logical.hpp +#usr/include/boost/compute/functional/math.hpp +#usr/include/boost/compute/functional/operator.hpp +#usr/include/boost/compute/functional/popcount.hpp +#usr/include/boost/compute/functional/relational.hpp +#usr/include/boost/compute/image +#usr/include/boost/compute/image.hpp +#usr/include/boost/compute/image/image1d.hpp +#usr/include/boost/compute/image/image2d.hpp +#usr/include/boost/compute/image/image3d.hpp +#usr/include/boost/compute/image/image_format.hpp +#usr/include/boost/compute/image/image_object.hpp +#usr/include/boost/compute/image/image_sampler.hpp +#usr/include/boost/compute/image2d.hpp +#usr/include/boost/compute/image3d.hpp +#usr/include/boost/compute/image_format.hpp +#usr/include/boost/compute/image_sampler.hpp +#usr/include/boost/compute/interop +#usr/include/boost/compute/interop/eigen +#usr/include/boost/compute/interop/eigen.hpp +#usr/include/boost/compute/interop/eigen/core.hpp +#usr/include/boost/compute/interop/opencv +#usr/include/boost/compute/interop/opencv.hpp +#usr/include/boost/compute/interop/opencv/core.hpp +#usr/include/boost/compute/interop/opencv/highgui.hpp +#usr/include/boost/compute/interop/opencv/ocl.hpp +#usr/include/boost/compute/interop/opengl +#usr/include/boost/compute/interop/opengl.hpp +#usr/include/boost/compute/interop/opengl/acquire.hpp +#usr/include/boost/compute/interop/opengl/cl_gl.hpp +#usr/include/boost/compute/interop/opengl/cl_gl_ext.hpp +#usr/include/boost/compute/interop/opengl/context.hpp +#usr/include/boost/compute/interop/opengl/gl.hpp +#usr/include/boost/compute/interop/opengl/opengl_buffer.hpp +#usr/include/boost/compute/interop/opengl/opengl_renderbuffer.hpp +#usr/include/boost/compute/interop/opengl/opengl_texture.hpp +#usr/include/boost/compute/interop/qt +#usr/include/boost/compute/interop/qt.hpp +#usr/include/boost/compute/interop/qt/qimage.hpp +#usr/include/boost/compute/interop/qt/qpoint.hpp +#usr/include/boost/compute/interop/qt/qpointf.hpp +#usr/include/boost/compute/interop/qt/qtcore.hpp +#usr/include/boost/compute/interop/qt/qtgui.hpp +#usr/include/boost/compute/interop/qt/qvector.hpp +#usr/include/boost/compute/interop/vtk +#usr/include/boost/compute/interop/vtk.hpp +#usr/include/boost/compute/interop/vtk/bounds.hpp +#usr/include/boost/compute/interop/vtk/data_array.hpp +#usr/include/boost/compute/interop/vtk/matrix4x4.hpp +#usr/include/boost/compute/interop/vtk/points.hpp +#usr/include/boost/compute/iterator +#usr/include/boost/compute/iterator.hpp +#usr/include/boost/compute/iterator/buffer_iterator.hpp +#usr/include/boost/compute/iterator/constant_buffer_iterator.hpp +#usr/include/boost/compute/iterator/constant_iterator.hpp +#usr/include/boost/compute/iterator/counting_iterator.hpp +#usr/include/boost/compute/iterator/detail +#usr/include/boost/compute/iterator/detail/get_base_iterator_buffer.hpp +#usr/include/boost/compute/iterator/detail/swizzle_iterator.hpp +#usr/include/boost/compute/iterator/discard_iterator.hpp +#usr/include/boost/compute/iterator/function_input_iterator.hpp +#usr/include/boost/compute/iterator/permutation_iterator.hpp +#usr/include/boost/compute/iterator/strided_iterator.hpp +#usr/include/boost/compute/iterator/transform_iterator.hpp +#usr/include/boost/compute/iterator/zip_iterator.hpp +#usr/include/boost/compute/kernel.hpp +#usr/include/boost/compute/lambda +#usr/include/boost/compute/lambda.hpp +#usr/include/boost/compute/lambda/context.hpp +#usr/include/boost/compute/lambda/functional.hpp +#usr/include/boost/compute/lambda/get.hpp +#usr/include/boost/compute/lambda/make_pair.hpp +#usr/include/boost/compute/lambda/make_tuple.hpp +#usr/include/boost/compute/lambda/placeholder.hpp +#usr/include/boost/compute/lambda/placeholders.hpp +#usr/include/boost/compute/lambda/result_of.hpp +#usr/include/boost/compute/memory +#usr/include/boost/compute/memory.hpp +#usr/include/boost/compute/memory/local_buffer.hpp +#usr/include/boost/compute/memory/svm_ptr.hpp +#usr/include/boost/compute/memory_object.hpp +#usr/include/boost/compute/pipe.hpp +#usr/include/boost/compute/platform.hpp +#usr/include/boost/compute/program.hpp +#usr/include/boost/compute/random +#usr/include/boost/compute/random.hpp +#usr/include/boost/compute/random/bernoulli_distribution.hpp +#usr/include/boost/compute/random/default_random_engine.hpp +#usr/include/boost/compute/random/discrete_distribution.hpp +#usr/include/boost/compute/random/linear_congruential_engine.hpp +#usr/include/boost/compute/random/mersenne_twister_engine.hpp +#usr/include/boost/compute/random/normal_distribution.hpp +#usr/include/boost/compute/random/threefry_engine.hpp +#usr/include/boost/compute/random/uniform_int_distribution.hpp +#usr/include/boost/compute/random/uniform_real_distribution.hpp +#usr/include/boost/compute/source.hpp +#usr/include/boost/compute/svm.hpp +#usr/include/boost/compute/system.hpp +#usr/include/boost/compute/type_traits +#usr/include/boost/compute/type_traits.hpp +#usr/include/boost/compute/type_traits/common_type.hpp +#usr/include/boost/compute/type_traits/detail +#usr/include/boost/compute/type_traits/detail/capture_traits.hpp +#usr/include/boost/compute/type_traits/is_device_iterator.hpp +#usr/include/boost/compute/type_traits/is_fundamental.hpp +#usr/include/boost/compute/type_traits/is_vector_type.hpp +#usr/include/boost/compute/type_traits/make_vector_type.hpp +#usr/include/boost/compute/type_traits/result_of.hpp +#usr/include/boost/compute/type_traits/scalar_type.hpp +#usr/include/boost/compute/type_traits/type_definition.hpp +#usr/include/boost/compute/type_traits/type_name.hpp +#usr/include/boost/compute/type_traits/vector_size.hpp +#usr/include/boost/compute/types +#usr/include/boost/compute/types.hpp +#usr/include/boost/compute/types/builtin.hpp +#usr/include/boost/compute/types/complex.hpp +#usr/include/boost/compute/types/fundamental.hpp +#usr/include/boost/compute/types/pair.hpp +#usr/include/boost/compute/types/struct.hpp +#usr/include/boost/compute/types/tuple.hpp +#usr/include/boost/compute/user_event.hpp +#usr/include/boost/compute/utility +#usr/include/boost/compute/utility.hpp +#usr/include/boost/compute/utility/dim.hpp +#usr/include/boost/compute/utility/extents.hpp +#usr/include/boost/compute/utility/invoke.hpp +#usr/include/boost/compute/utility/program_cache.hpp +#usr/include/boost/compute/utility/source.hpp +#usr/include/boost/compute/utility/wait_list.hpp +#usr/include/boost/compute/version.hpp +#usr/include/boost/compute/wait_list.hpp #usr/include/boost/concept #usr/include/boost/concept/assert.hpp #usr/include/boost/concept/detail @@ -1037,6 +1453,7 @@ #usr/include/boost/config/compiler/sunpro_cc.hpp #usr/include/boost/config/compiler/vacpp.hpp #usr/include/boost/config/compiler/visualc.hpp +#usr/include/boost/config/compiler/xlcpp.hpp #usr/include/boost/config/no_tr1 #usr/include/boost/config/no_tr1/cmath.hpp #usr/include/boost/config/no_tr1/complex.hpp @@ -1048,8 +1465,10 @@ #usr/include/boost/config/platform/amigaos.hpp #usr/include/boost/config/platform/beos.hpp #usr/include/boost/config/platform/bsd.hpp +#usr/include/boost/config/platform/cloudabi.hpp #usr/include/boost/config/platform/cray.hpp #usr/include/boost/config/platform/cygwin.hpp +#usr/include/boost/config/platform/haiku.hpp #usr/include/boost/config/platform/hpux.hpp #usr/include/boost/config/platform/irix.hpp #usr/include/boost/config/platform/linux.hpp @@ -1080,34 +1499,59 @@ #usr/include/boost/config/user.hpp #usr/include/boost/config/warning_disable.hpp #usr/include/boost/container +#usr/include/boost/container/adaptive_pool.hpp +#usr/include/boost/container/allocator.hpp #usr/include/boost/container/allocator_traits.hpp #usr/include/boost/container/container_fwd.hpp #usr/include/boost/container/deque.hpp #usr/include/boost/container/detail +#usr/include/boost/container/detail/adaptive_node_pool.hpp #usr/include/boost/container/detail/adaptive_node_pool_impl.hpp +#usr/include/boost/container/detail/addressof.hpp #usr/include/boost/container/detail/advanced_insert_int.hpp -#usr/include/boost/container/detail/algorithms.hpp +#usr/include/boost/container/detail/algorithm.hpp +#usr/include/boost/container/detail/alloc_helpers.hpp +#usr/include/boost/container/detail/alloc_lib.h #usr/include/boost/container/detail/allocation_type.hpp #usr/include/boost/container/detail/allocator_version_traits.hpp +#usr/include/boost/container/detail/auto_link.hpp +#usr/include/boost/container/detail/block_list.hpp +#usr/include/boost/container/detail/block_slist.hpp +#usr/include/boost/container/detail/compare_functors.hpp #usr/include/boost/container/detail/config_begin.hpp #usr/include/boost/container/detail/config_end.hpp +#usr/include/boost/container/detail/construct_in_place.hpp +#usr/include/boost/container/detail/copy_move_algo.hpp #usr/include/boost/container/detail/destroyers.hpp +#usr/include/boost/container/detail/dispatch_uses_allocator.hpp +#usr/include/boost/container/detail/dlmalloc.hpp #usr/include/boost/container/detail/flat_tree.hpp #usr/include/boost/container/detail/function_detector.hpp +#usr/include/boost/container/detail/is_sorted.hpp +#usr/include/boost/container/detail/iterator.hpp +#usr/include/boost/container/detail/iterator_to_raw_pointer.hpp #usr/include/boost/container/detail/iterators.hpp #usr/include/boost/container/detail/math_functions.hpp -#usr/include/boost/container/detail/memory_util.hpp +#usr/include/boost/container/detail/min_max.hpp +#usr/include/boost/container/detail/minimal_char_traits_header.hpp #usr/include/boost/container/detail/mpl.hpp #usr/include/boost/container/detail/multiallocation_chain.hpp +#usr/include/boost/container/detail/mutex.hpp +#usr/include/boost/container/detail/next_capacity.hpp #usr/include/boost/container/detail/node_alloc_holder.hpp +#usr/include/boost/container/detail/node_pool.hpp #usr/include/boost/container/detail/node_pool_impl.hpp #usr/include/boost/container/detail/pair.hpp +#usr/include/boost/container/detail/placement_new.hpp #usr/include/boost/container/detail/pool_common.hpp -#usr/include/boost/container/detail/preprocessor.hpp +#usr/include/boost/container/detail/pool_common_alloc.hpp +#usr/include/boost/container/detail/pool_resource.hpp +#usr/include/boost/container/detail/singleton.hpp +#usr/include/boost/container/detail/std_fwd.hpp +#usr/include/boost/container/detail/to_raw_pointer.hpp #usr/include/boost/container/detail/transform_iterator.hpp #usr/include/boost/container/detail/tree.hpp #usr/include/boost/container/detail/type_traits.hpp -#usr/include/boost/container/detail/utilities.hpp #usr/include/boost/container/detail/value_init.hpp #usr/include/boost/container/detail/variadic_templates_tools.hpp #usr/include/boost/container/detail/version_type.hpp @@ -1116,20 +1560,55 @@ #usr/include/boost/container/flat_set.hpp #usr/include/boost/container/list.hpp #usr/include/boost/container/map.hpp +#usr/include/boost/container/new_allocator.hpp +#usr/include/boost/container/node_allocator.hpp +#usr/include/boost/container/node_handle.hpp +#usr/include/boost/container/options.hpp +#usr/include/boost/container/pmr +#usr/include/boost/container/pmr/deque.hpp +#usr/include/boost/container/pmr/flat_map.hpp +#usr/include/boost/container/pmr/flat_set.hpp +#usr/include/boost/container/pmr/global_resource.hpp +#usr/include/boost/container/pmr/list.hpp +#usr/include/boost/container/pmr/map.hpp +#usr/include/boost/container/pmr/memory_resource.hpp +#usr/include/boost/container/pmr/monotonic_buffer_resource.hpp +#usr/include/boost/container/pmr/polymorphic_allocator.hpp +#usr/include/boost/container/pmr/pool_options.hpp +#usr/include/boost/container/pmr/resource_adaptor.hpp +#usr/include/boost/container/pmr/set.hpp +#usr/include/boost/container/pmr/slist.hpp +#usr/include/boost/container/pmr/small_vector.hpp +#usr/include/boost/container/pmr/stable_vector.hpp +#usr/include/boost/container/pmr/string.hpp +#usr/include/boost/container/pmr/synchronized_pool_resource.hpp +#usr/include/boost/container/pmr/unsynchronized_pool_resource.hpp +#usr/include/boost/container/pmr/vector.hpp #usr/include/boost/container/scoped_allocator.hpp #usr/include/boost/container/scoped_allocator_fwd.hpp #usr/include/boost/container/set.hpp #usr/include/boost/container/slist.hpp +#usr/include/boost/container/small_vector.hpp #usr/include/boost/container/stable_vector.hpp #usr/include/boost/container/static_vector.hpp #usr/include/boost/container/string.hpp #usr/include/boost/container/throw_exception.hpp +#usr/include/boost/container/uses_allocator.hpp +#usr/include/boost/container/uses_allocator_fwd.hpp #usr/include/boost/container/vector.hpp #usr/include/boost/context #usr/include/boost/context/all.hpp +#usr/include/boost/context/continuation.hpp #usr/include/boost/context/detail +#usr/include/boost/context/detail/apply.hpp #usr/include/boost/context/detail/config.hpp +#usr/include/boost/context/detail/disable_overload.hpp +#usr/include/boost/context/detail/exception.hpp +#usr/include/boost/context/detail/exchange.hpp +#usr/include/boost/context/detail/fcontext.hpp #usr/include/boost/context/detail/fcontext_arm.hpp +#usr/include/boost/context/detail/fcontext_arm_mac.hpp +#usr/include/boost/context/detail/fcontext_arm_win.hpp #usr/include/boost/context/detail/fcontext_i386.hpp #usr/include/boost/context/detail/fcontext_i386_win.hpp #usr/include/boost/context/detail/fcontext_mips.hpp @@ -1137,57 +1616,140 @@ #usr/include/boost/context/detail/fcontext_sparc.hpp #usr/include/boost/context/detail/fcontext_x86_64.hpp #usr/include/boost/context/detail/fcontext_x86_64_win.hpp -#usr/include/boost/context/fcontext.hpp +#usr/include/boost/context/detail/index_sequence.hpp +#usr/include/boost/context/detail/invoke.hpp +#usr/include/boost/context/detail/tuple.hpp +#usr/include/boost/context/execution_context.hpp +#usr/include/boost/context/execution_context_v1.hpp +#usr/include/boost/context/execution_context_v2.hpp +#usr/include/boost/context/execution_context_v2_void.ipp +#usr/include/boost/context/fixedsize_stack.hpp +#usr/include/boost/context/flags.hpp +#usr/include/boost/context/pooled_fixedsize_stack.hpp +#usr/include/boost/context/posix +#usr/include/boost/context/posix/fixedsize_stack.hpp +#usr/include/boost/context/posix/protected_fixedsize_stack.hpp +#usr/include/boost/context/posix/segmented_stack.hpp +#usr/include/boost/context/preallocated.hpp +#usr/include/boost/context/protected_fixedsize_stack.hpp +#usr/include/boost/context/segmented_stack.hpp +#usr/include/boost/context/stack_context.hpp +#usr/include/boost/context/stack_traits.hpp +#usr/include/boost/context/windows +#usr/include/boost/context/windows/fixedsize_stack.hpp +#usr/include/boost/context/windows/protected_fixedsize_stack.hpp +#usr/include/boost/convert +#usr/include/boost/convert.hpp +#usr/include/boost/convert/base.hpp +#usr/include/boost/convert/detail +#usr/include/boost/convert/detail/boost_parameter_ext.hpp +#usr/include/boost/convert/detail/char.hpp +#usr/include/boost/convert/detail/forward.hpp +#usr/include/boost/convert/detail/has_member.hpp +#usr/include/boost/convert/detail/is_callable.hpp +#usr/include/boost/convert/detail/is_converter.hpp +#usr/include/boost/convert/detail/is_fun.hpp +#usr/include/boost/convert/detail/is_string.hpp +#usr/include/boost/convert/detail/range.hpp +#usr/include/boost/convert/lexical_cast.hpp +#usr/include/boost/convert/parameters.hpp +#usr/include/boost/convert/printf.hpp +#usr/include/boost/convert/spirit.hpp +#usr/include/boost/convert/stream.hpp +#usr/include/boost/convert/strtol.hpp +#usr/include/boost/core +#usr/include/boost/core/addressof.hpp +#usr/include/boost/core/checked_delete.hpp +#usr/include/boost/core/demangle.hpp +#usr/include/boost/core/enable_if.hpp +#usr/include/boost/core/explicit_operator_bool.hpp +#usr/include/boost/core/ignore_unused.hpp +#usr/include/boost/core/is_same.hpp +#usr/include/boost/core/lightweight_test.hpp +#usr/include/boost/core/lightweight_test_trait.hpp +#usr/include/boost/core/no_exceptions_support.hpp +#usr/include/boost/core/noncopyable.hpp +#usr/include/boost/core/null_deleter.hpp +#usr/include/boost/core/ref.hpp +#usr/include/boost/core/scoped_enum.hpp +#usr/include/boost/core/swap.hpp +#usr/include/boost/core/typeinfo.hpp +#usr/include/boost/core/underlying_type.hpp #usr/include/boost/coroutine #usr/include/boost/coroutine/all.hpp +#usr/include/boost/coroutine/asymmetric_coroutine.hpp #usr/include/boost/coroutine/attributes.hpp -#usr/include/boost/coroutine/checkpoint.hpp #usr/include/boost/coroutine/coroutine.hpp #usr/include/boost/coroutine/detail #usr/include/boost/coroutine/detail/config.hpp #usr/include/boost/coroutine/detail/coroutine_context.hpp -#usr/include/boost/coroutine/detail/exceptions.hpp +#usr/include/boost/coroutine/detail/data.hpp #usr/include/boost/coroutine/detail/flags.hpp -#usr/include/boost/coroutine/detail/holder.hpp -#usr/include/boost/coroutine/detail/param.hpp -#usr/include/boost/coroutine/detail/segmented_stack_allocator.hpp -#usr/include/boost/coroutine/detail/stack_tuple.hpp -#usr/include/boost/coroutine/detail/standard_stack_allocator.hpp +#usr/include/boost/coroutine/detail/parameters.hpp +#usr/include/boost/coroutine/detail/preallocated.hpp +#usr/include/boost/coroutine/detail/pull_coroutine_impl.hpp +#usr/include/boost/coroutine/detail/pull_coroutine_object.hpp +#usr/include/boost/coroutine/detail/pull_coroutine_synthesized.hpp +#usr/include/boost/coroutine/detail/push_coroutine_impl.hpp +#usr/include/boost/coroutine/detail/push_coroutine_object.hpp +#usr/include/boost/coroutine/detail/push_coroutine_synthesized.hpp +#usr/include/boost/coroutine/detail/setup.hpp +#usr/include/boost/coroutine/detail/symmetric_coroutine_call.hpp +#usr/include/boost/coroutine/detail/symmetric_coroutine_impl.hpp +#usr/include/boost/coroutine/detail/symmetric_coroutine_object.hpp +#usr/include/boost/coroutine/detail/symmetric_coroutine_yield.hpp #usr/include/boost/coroutine/detail/trampoline.hpp +#usr/include/boost/coroutine/detail/trampoline_pull.hpp +#usr/include/boost/coroutine/detail/trampoline_push.hpp #usr/include/boost/coroutine/exceptions.hpp #usr/include/boost/coroutine/flags.hpp +#usr/include/boost/coroutine/posix +#usr/include/boost/coroutine/posix/protected_stack_allocator.hpp +#usr/include/boost/coroutine/posix/segmented_stack_allocator.hpp +#usr/include/boost/coroutine/protected_stack_allocator.hpp +#usr/include/boost/coroutine/segmented_stack_allocator.hpp #usr/include/boost/coroutine/stack_allocator.hpp #usr/include/boost/coroutine/stack_context.hpp -#usr/include/boost/coroutine/v1 -#usr/include/boost/coroutine/v1/coroutine.hpp -#usr/include/boost/coroutine/v1/detail -#usr/include/boost/coroutine/v1/detail/arg.hpp -#usr/include/boost/coroutine/v1/detail/coroutine_base.hpp -#usr/include/boost/coroutine/v1/detail/coroutine_base_resume.hpp -#usr/include/boost/coroutine/v1/detail/coroutine_caller.hpp -#usr/include/boost/coroutine/v1/detail/coroutine_get.hpp -#usr/include/boost/coroutine/v1/detail/coroutine_object.hpp -#usr/include/boost/coroutine/v1/detail/coroutine_object_result_0.ipp -#usr/include/boost/coroutine/v1/detail/coroutine_object_result_1.ipp -#usr/include/boost/coroutine/v1/detail/coroutine_object_result_arity.ipp -#usr/include/boost/coroutine/v1/detail/coroutine_object_void_0.ipp -#usr/include/boost/coroutine/v1/detail/coroutine_object_void_1.ipp -#usr/include/boost/coroutine/v1/detail/coroutine_object_void_arity.ipp -#usr/include/boost/coroutine/v1/detail/coroutine_op.hpp -#usr/include/boost/coroutine/v2 -#usr/include/boost/coroutine/v2/coroutine.hpp -#usr/include/boost/coroutine/v2/detail -#usr/include/boost/coroutine/v2/detail/pull_coroutine_base.hpp -#usr/include/boost/coroutine/v2/detail/pull_coroutine_caller.hpp -#usr/include/boost/coroutine/v2/detail/pull_coroutine_object.hpp -#usr/include/boost/coroutine/v2/detail/push_coroutine_base.hpp -#usr/include/boost/coroutine/v2/detail/push_coroutine_caller.hpp -#usr/include/boost/coroutine/v2/detail/push_coroutine_object.hpp +#usr/include/boost/coroutine/stack_traits.hpp +#usr/include/boost/coroutine/standard_stack_allocator.hpp +#usr/include/boost/coroutine/symmetric_coroutine.hpp +#usr/include/boost/coroutine/windows +#usr/include/boost/coroutine/windows/protected_stack_allocator.hpp +#usr/include/boost/coroutine2 +#usr/include/boost/coroutine2/all.hpp +#usr/include/boost/coroutine2/coroutine.hpp +#usr/include/boost/coroutine2/detail +#usr/include/boost/coroutine2/detail/config.hpp +#usr/include/boost/coroutine2/detail/coroutine.hpp +#usr/include/boost/coroutine2/detail/create_control_block.ipp +#usr/include/boost/coroutine2/detail/decay_copy.hpp +#usr/include/boost/coroutine2/detail/disable_overload.hpp +#usr/include/boost/coroutine2/detail/forced_unwind.hpp +#usr/include/boost/coroutine2/detail/pull_control_block_cc.hpp +#usr/include/boost/coroutine2/detail/pull_control_block_cc.ipp +#usr/include/boost/coroutine2/detail/pull_control_block_ecv1.hpp +#usr/include/boost/coroutine2/detail/pull_control_block_ecv1.ipp +#usr/include/boost/coroutine2/detail/pull_coroutine.hpp +#usr/include/boost/coroutine2/detail/pull_coroutine.ipp +#usr/include/boost/coroutine2/detail/push_control_block_cc.hpp +#usr/include/boost/coroutine2/detail/push_control_block_cc.ipp +#usr/include/boost/coroutine2/detail/push_control_block_ecv1.hpp +#usr/include/boost/coroutine2/detail/push_control_block_ecv1.ipp +#usr/include/boost/coroutine2/detail/push_coroutine.hpp +#usr/include/boost/coroutine2/detail/push_coroutine.ipp +#usr/include/boost/coroutine2/detail/state.hpp +#usr/include/boost/coroutine2/detail/wrap.hpp +#usr/include/boost/coroutine2/fixedsize_stack.hpp +#usr/include/boost/coroutine2/pooled_fixedsize_stack.hpp +#usr/include/boost/coroutine2/protected_fixedsize_stack.hpp +#usr/include/boost/coroutine2/segmented_stack.hpp #usr/include/boost/crc.hpp #usr/include/boost/cregex.hpp +#usr/include/boost/cstdfloat.hpp #usr/include/boost/cstdint.hpp #usr/include/boost/cstdlib.hpp #usr/include/boost/current_function.hpp +#usr/include/boost/cxx11_char_types.hpp #usr/include/boost/date_time #usr/include/boost/date_time.hpp #usr/include/boost/date_time/adjust_functors.hpp @@ -1302,6 +1864,7 @@ #usr/include/boost/detail/atomic_count.hpp #usr/include/boost/detail/atomic_redef_macros.hpp #usr/include/boost/detail/atomic_undef_macros.hpp +#usr/include/boost/detail/basic_pointerbuf.hpp #usr/include/boost/detail/binary_search.hpp #usr/include/boost/detail/bitmask.hpp #usr/include/boost/detail/call_traits.hpp @@ -1315,7 +1878,6 @@ #usr/include/boost/detail/identifier.hpp #usr/include/boost/detail/indirect_traits.hpp #usr/include/boost/detail/interlocked.hpp -#usr/include/boost/detail/is_function_ref_tester.hpp #usr/include/boost/detail/is_incrementable.hpp #usr/include/boost/detail/is_sorted.hpp #usr/include/boost/detail/is_xxx.hpp @@ -1324,13 +1886,11 @@ #usr/include/boost/detail/lightweight_main.hpp #usr/include/boost/detail/lightweight_mutex.hpp #usr/include/boost/detail/lightweight_test.hpp +#usr/include/boost/detail/lightweight_test_report.hpp #usr/include/boost/detail/lightweight_thread.hpp -#usr/include/boost/detail/limits.hpp #usr/include/boost/detail/named_template_params.hpp #usr/include/boost/detail/no_exceptions_support.hpp -#usr/include/boost/detail/none_t.hpp #usr/include/boost/detail/numeric_traits.hpp -#usr/include/boost/detail/ob_call_traits.hpp #usr/include/boost/detail/ob_compressed_pair.hpp #usr/include/boost/detail/quick_allocator.hpp #usr/include/boost/detail/reference_content.hpp @@ -1346,39 +1906,127 @@ #usr/include/boost/detail/winapi/GetLastError.hpp #usr/include/boost/detail/winapi/GetProcessTimes.hpp #usr/include/boost/detail/winapi/GetThreadTimes.hpp -#usr/include/boost/detail/winapi/LocalFree.hpp +#usr/include/boost/detail/winapi/access_rights.hpp +#usr/include/boost/detail/winapi/apc.hpp #usr/include/boost/detail/winapi/basic_types.hpp +#usr/include/boost/detail/winapi/character_code_conversion.hpp +#usr/include/boost/detail/winapi/condition_variable.hpp +#usr/include/boost/detail/winapi/config.hpp +#usr/include/boost/detail/winapi/critical_section.hpp +#usr/include/boost/detail/winapi/crypt.hpp +#usr/include/boost/detail/winapi/dbghelp.hpp +#usr/include/boost/detail/winapi/detail +#usr/include/boost/detail/winapi/detail/cast_ptr.hpp #usr/include/boost/detail/winapi/directory_management.hpp #usr/include/boost/detail/winapi/dll.hpp +#usr/include/boost/detail/winapi/environment.hpp +#usr/include/boost/detail/winapi/error_codes.hpp #usr/include/boost/detail/winapi/error_handling.hpp +#usr/include/boost/detail/winapi/event.hpp #usr/include/boost/detail/winapi/file_management.hpp +#usr/include/boost/detail/winapi/file_mapping.hpp +#usr/include/boost/detail/winapi/get_current_process.hpp +#usr/include/boost/detail/winapi/get_current_process_id.hpp +#usr/include/boost/detail/winapi/get_current_thread.hpp +#usr/include/boost/detail/winapi/get_current_thread_id.hpp +#usr/include/boost/detail/winapi/get_last_error.hpp +#usr/include/boost/detail/winapi/get_process_times.hpp +#usr/include/boost/detail/winapi/get_system_directory.hpp +#usr/include/boost/detail/winapi/get_thread_times.hpp +#usr/include/boost/detail/winapi/handle_info.hpp #usr/include/boost/detail/winapi/handles.hpp +#usr/include/boost/detail/winapi/heap_memory.hpp +#usr/include/boost/detail/winapi/init_once.hpp +#usr/include/boost/detail/winapi/jobs.hpp +#usr/include/boost/detail/winapi/limits.hpp +#usr/include/boost/detail/winapi/local_memory.hpp #usr/include/boost/detail/winapi/memory.hpp +#usr/include/boost/detail/winapi/mutex.hpp +#usr/include/boost/detail/winapi/overlapped.hpp +#usr/include/boost/detail/winapi/page_protection_flags.hpp +#usr/include/boost/detail/winapi/pipes.hpp +#usr/include/boost/detail/winapi/priority_class.hpp #usr/include/boost/detail/winapi/process.hpp #usr/include/boost/detail/winapi/security.hpp +#usr/include/boost/detail/winapi/semaphore.hpp +#usr/include/boost/detail/winapi/shell.hpp +#usr/include/boost/detail/winapi/show_window.hpp +#usr/include/boost/detail/winapi/srw_lock.hpp #usr/include/boost/detail/winapi/synchronization.hpp #usr/include/boost/detail/winapi/system.hpp #usr/include/boost/detail/winapi/thread.hpp +#usr/include/boost/detail/winapi/thread_pool.hpp #usr/include/boost/detail/winapi/time.hpp #usr/include/boost/detail/winapi/timers.hpp +#usr/include/boost/detail/winapi/tls.hpp +#usr/include/boost/detail/winapi/wait.hpp +#usr/include/boost/detail/winapi/waitable_timer.hpp #usr/include/boost/detail/workaround.hpp +#usr/include/boost/dll +#usr/include/boost/dll.hpp +#usr/include/boost/dll/alias.hpp +#usr/include/boost/dll/detail +#usr/include/boost/dll/detail/aggressive_ptr_cast.hpp +#usr/include/boost/dll/detail/ctor_dtor.hpp +#usr/include/boost/dll/detail/demangling +#usr/include/boost/dll/detail/demangling/demangle_symbol.hpp +#usr/include/boost/dll/detail/demangling/itanium.hpp +#usr/include/boost/dll/detail/demangling/mangled_storage_base.hpp +#usr/include/boost/dll/detail/demangling/msvc.hpp +#usr/include/boost/dll/detail/elf_info.hpp +#usr/include/boost/dll/detail/get_mem_fn_type.hpp +#usr/include/boost/dll/detail/import_mangled_helpers.hpp +#usr/include/boost/dll/detail/macho_info.hpp +#usr/include/boost/dll/detail/pe_info.hpp +#usr/include/boost/dll/detail/posix +#usr/include/boost/dll/detail/posix/path_from_handle.hpp +#usr/include/boost/dll/detail/posix/program_location_impl.hpp +#usr/include/boost/dll/detail/posix/shared_library_impl.hpp +#usr/include/boost/dll/detail/system_error.hpp +#usr/include/boost/dll/detail/type_info.hpp +#usr/include/boost/dll/detail/windows +#usr/include/boost/dll/detail/windows/path_from_handle.hpp +#usr/include/boost/dll/detail/windows/shared_library_impl.hpp +#usr/include/boost/dll/detail/x_info_interface.hpp +#usr/include/boost/dll/import.hpp +#usr/include/boost/dll/import_class.hpp +#usr/include/boost/dll/import_mangled.hpp +#usr/include/boost/dll/library_info.hpp +#usr/include/boost/dll/runtime_symbol_info.hpp +#usr/include/boost/dll/shared_library.hpp +#usr/include/boost/dll/shared_library_load_mode.hpp +#usr/include/boost/dll/smart_library.hpp #usr/include/boost/dynamic_bitset #usr/include/boost/dynamic_bitset.hpp #usr/include/boost/dynamic_bitset/config.hpp #usr/include/boost/dynamic_bitset/dynamic_bitset.hpp +#usr/include/boost/dynamic_bitset/serialization.hpp #usr/include/boost/dynamic_bitset_fwd.hpp #usr/include/boost/enable_shared_from_this.hpp +#usr/include/boost/endian +#usr/include/boost/endian/arithmetic.hpp +#usr/include/boost/endian/buffers.hpp +#usr/include/boost/endian/conversion.hpp +#usr/include/boost/endian/detail +#usr/include/boost/endian/detail/config.hpp +#usr/include/boost/endian/detail/cover_operators.hpp +#usr/include/boost/endian/detail/disable_warnings.hpp +#usr/include/boost/endian/detail/disable_warnings_pop.hpp +#usr/include/boost/endian/detail/intrinsic.hpp +#usr/include/boost/endian/detail/lightweight_test.hpp +#usr/include/boost/endian/endian.hpp +#usr/include/boost/endian/std_pair.hpp #usr/include/boost/exception -#usr/include/boost/exception.hpp +#usr/include/boost/exception/N3757.hpp #usr/include/boost/exception/all.hpp #usr/include/boost/exception/current_exception_cast.hpp #usr/include/boost/exception/detail -#usr/include/boost/exception/detail/attribute_noreturn.hpp #usr/include/boost/exception/detail/clone_current_exception.hpp #usr/include/boost/exception/detail/error_info_impl.hpp #usr/include/boost/exception/detail/exception_ptr.hpp #usr/include/boost/exception/detail/is_output_streamable.hpp #usr/include/boost/exception/detail/object_hex_dump.hpp +#usr/include/boost/exception/detail/shared_ptr.hpp #usr/include/boost/exception/detail/type_info.hpp #usr/include/boost/exception/diagnostic_information.hpp #usr/include/boost/exception/enable_current_exception.hpp @@ -1399,22 +2047,83 @@ #usr/include/boost/exception/to_string.hpp #usr/include/boost/exception/to_string_stub.hpp #usr/include/boost/exception_ptr.hpp +#usr/include/boost/fiber +#usr/include/boost/fiber/algo +#usr/include/boost/fiber/algo/algorithm.hpp +#usr/include/boost/fiber/algo/round_robin.hpp +#usr/include/boost/fiber/algo/shared_work.hpp +#usr/include/boost/fiber/algo/work_stealing.hpp +#usr/include/boost/fiber/all.hpp +#usr/include/boost/fiber/barrier.hpp +#usr/include/boost/fiber/buffered_channel.hpp +#usr/include/boost/fiber/channel_op_status.hpp +#usr/include/boost/fiber/condition_variable.hpp +#usr/include/boost/fiber/context.hpp +#usr/include/boost/fiber/detail +#usr/include/boost/fiber/detail/config.hpp +#usr/include/boost/fiber/detail/context_spinlock_queue.hpp +#usr/include/boost/fiber/detail/context_spmc_queue.hpp +#usr/include/boost/fiber/detail/convert.hpp +#usr/include/boost/fiber/detail/cpu_relax.hpp +#usr/include/boost/fiber/detail/data.hpp +#usr/include/boost/fiber/detail/decay_copy.hpp +#usr/include/boost/fiber/detail/disable_overload.hpp +#usr/include/boost/fiber/detail/fss.hpp +#usr/include/boost/fiber/detail/futex.hpp +#usr/include/boost/fiber/detail/spinlock.hpp +#usr/include/boost/fiber/detail/spinlock_ttas.hpp +#usr/include/boost/fiber/detail/spinlock_ttas_adaptive.hpp +#usr/include/boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp +#usr/include/boost/fiber/detail/spinlock_ttas_futex.hpp +#usr/include/boost/fiber/detail/wrap.hpp +#usr/include/boost/fiber/exceptions.hpp +#usr/include/boost/fiber/fiber.hpp +#usr/include/boost/fiber/fixedsize_stack.hpp +#usr/include/boost/fiber/fss.hpp +#usr/include/boost/fiber/future +#usr/include/boost/fiber/future.hpp +#usr/include/boost/fiber/future/async.hpp +#usr/include/boost/fiber/future/detail +#usr/include/boost/fiber/future/detail/shared_state.hpp +#usr/include/boost/fiber/future/detail/shared_state_object.hpp +#usr/include/boost/fiber/future/detail/task_base.hpp +#usr/include/boost/fiber/future/detail/task_object.hpp +#usr/include/boost/fiber/future/future.hpp +#usr/include/boost/fiber/future/future_status.hpp +#usr/include/boost/fiber/future/packaged_task.hpp +#usr/include/boost/fiber/future/promise.hpp +#usr/include/boost/fiber/mutex.hpp +#usr/include/boost/fiber/operations.hpp +#usr/include/boost/fiber/policy.hpp +#usr/include/boost/fiber/pooled_fixedsize_stack.hpp +#usr/include/boost/fiber/properties.hpp +#usr/include/boost/fiber/protected_fixedsize_stack.hpp +#usr/include/boost/fiber/recursive_mutex.hpp +#usr/include/boost/fiber/recursive_timed_mutex.hpp +#usr/include/boost/fiber/scheduler.hpp +#usr/include/boost/fiber/segmented_stack.hpp +#usr/include/boost/fiber/timed_mutex.hpp +#usr/include/boost/fiber/type.hpp +#usr/include/boost/fiber/unbuffered_channel.hpp #usr/include/boost/filesystem #usr/include/boost/filesystem.hpp #usr/include/boost/filesystem/config.hpp #usr/include/boost/filesystem/convenience.hpp #usr/include/boost/filesystem/detail +#usr/include/boost/filesystem/detail/macro_value.hpp #usr/include/boost/filesystem/detail/utf8_codecvt_facet.hpp #usr/include/boost/filesystem/exception.hpp #usr/include/boost/filesystem/fstream.hpp #usr/include/boost/filesystem/operations.hpp #usr/include/boost/filesystem/path.hpp #usr/include/boost/filesystem/path_traits.hpp +#usr/include/boost/filesystem/string_file.hpp #usr/include/boost/flyweight #usr/include/boost/flyweight.hpp #usr/include/boost/flyweight/assoc_container_factory.hpp #usr/include/boost/flyweight/assoc_container_factory_fwd.hpp #usr/include/boost/flyweight/detail +#usr/include/boost/flyweight/detail/archive_constructed.hpp #usr/include/boost/flyweight/detail/default_value_policy.hpp #usr/include/boost/flyweight/detail/dyn_perfect_fwd.hpp #usr/include/boost/flyweight/detail/flyweight_core.hpp @@ -1424,6 +2133,7 @@ #usr/include/boost/flyweight/detail/perfect_fwd.hpp #usr/include/boost/flyweight/detail/pp_perfect_fwd.hpp #usr/include/boost/flyweight/detail/recursive_lw_mutex.hpp +#usr/include/boost/flyweight/detail/serialization_helper.hpp #usr/include/boost/flyweight/detail/value_tag.hpp #usr/include/boost/flyweight/factory_tag.hpp #usr/include/boost/flyweight/flyweight.hpp @@ -1442,6 +2152,7 @@ #usr/include/boost/flyweight/no_tracking_fwd.hpp #usr/include/boost/flyweight/refcounted.hpp #usr/include/boost/flyweight/refcounted_fwd.hpp +#usr/include/boost/flyweight/serialize.hpp #usr/include/boost/flyweight/set_factory.hpp #usr/include/boost/flyweight/set_factory_fwd.hpp #usr/include/boost/flyweight/simple_locking.hpp @@ -1616,6 +2327,8 @@ #usr/include/boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp #usr/include/boost/fusion/adapted/adt/detail #usr/include/boost/fusion/adapted/adt/detail/adapt_base.hpp +#usr/include/boost/fusion/adapted/adt/detail/adapt_base_assoc_attr_filler.hpp +#usr/include/boost/fusion/adapted/adt/detail/adapt_base_attr_filler.hpp #usr/include/boost/fusion/adapted/adt/detail/extension.hpp #usr/include/boost/fusion/adapted/array #usr/include/boost/fusion/adapted/array.hpp @@ -1649,12 +2362,16 @@ #usr/include/boost/fusion/adapted/boost_tuple/detail #usr/include/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp #usr/include/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp +#usr/include/boost/fusion/adapted/boost_tuple/detail/build_cons.hpp #usr/include/boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp +#usr/include/boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp #usr/include/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp #usr/include/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp #usr/include/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp #usr/include/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp #usr/include/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp +#usr/include/boost/fusion/adapted/boost_tuple/mpl +#usr/include/boost/fusion/adapted/boost_tuple/mpl/clear.hpp #usr/include/boost/fusion/adapted/boost_tuple/tag_of.hpp #usr/include/boost/fusion/adapted/mpl #usr/include/boost/fusion/adapted/mpl.hpp @@ -1670,18 +2387,36 @@ #usr/include/boost/fusion/adapted/mpl/detail/size_impl.hpp #usr/include/boost/fusion/adapted/mpl/detail/value_at_impl.hpp #usr/include/boost/fusion/adapted/mpl/mpl_iterator.hpp +#usr/include/boost/fusion/adapted/std_array +#usr/include/boost/fusion/adapted/std_array.hpp +#usr/include/boost/fusion/adapted/std_array/detail +#usr/include/boost/fusion/adapted/std_array/detail/array_size.hpp +#usr/include/boost/fusion/adapted/std_array/detail/at_impl.hpp +#usr/include/boost/fusion/adapted/std_array/detail/begin_impl.hpp +#usr/include/boost/fusion/adapted/std_array/detail/category_of_impl.hpp +#usr/include/boost/fusion/adapted/std_array/detail/end_impl.hpp +#usr/include/boost/fusion/adapted/std_array/detail/is_sequence_impl.hpp +#usr/include/boost/fusion/adapted/std_array/detail/is_view_impl.hpp +#usr/include/boost/fusion/adapted/std_array/detail/size_impl.hpp +#usr/include/boost/fusion/adapted/std_array/detail/value_at_impl.hpp +#usr/include/boost/fusion/adapted/std_array/std_array_iterator.hpp +#usr/include/boost/fusion/adapted/std_array/tag_of.hpp #usr/include/boost/fusion/adapted/std_pair.hpp #usr/include/boost/fusion/adapted/std_tuple #usr/include/boost/fusion/adapted/std_tuple.hpp #usr/include/boost/fusion/adapted/std_tuple/detail #usr/include/boost/fusion/adapted/std_tuple/detail/at_impl.hpp #usr/include/boost/fusion/adapted/std_tuple/detail/begin_impl.hpp +#usr/include/boost/fusion/adapted/std_tuple/detail/build_std_tuple.hpp #usr/include/boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp +#usr/include/boost/fusion/adapted/std_tuple/detail/convert_impl.hpp #usr/include/boost/fusion/adapted/std_tuple/detail/end_impl.hpp #usr/include/boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp #usr/include/boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp #usr/include/boost/fusion/adapted/std_tuple/detail/size_impl.hpp #usr/include/boost/fusion/adapted/std_tuple/detail/value_at_impl.hpp +#usr/include/boost/fusion/adapted/std_tuple/mpl +#usr/include/boost/fusion/adapted/std_tuple/mpl/clear.hpp #usr/include/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp #usr/include/boost/fusion/adapted/std_tuple/tag_of.hpp #usr/include/boost/fusion/adapted/struct @@ -1694,7 +2429,11 @@ #usr/include/boost/fusion/adapted/struct/define_struct.hpp #usr/include/boost/fusion/adapted/struct/define_struct_inline.hpp #usr/include/boost/fusion/adapted/struct/detail +#usr/include/boost/fusion/adapted/struct/detail/adapt_auto.hpp #usr/include/boost/fusion/adapted/struct/detail/adapt_base.hpp +#usr/include/boost/fusion/adapted/struct/detail/adapt_base_assoc_attr_filler.hpp +#usr/include/boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp +#usr/include/boost/fusion/adapted/struct/detail/adapt_is_tpl.hpp #usr/include/boost/fusion/adapted/struct/detail/at_impl.hpp #usr/include/boost/fusion/adapted/struct/detail/begin_impl.hpp #usr/include/boost/fusion/adapted/struct/detail/category_of_impl.hpp @@ -1708,6 +2447,8 @@ #usr/include/boost/fusion/adapted/struct/detail/is_view_impl.hpp #usr/include/boost/fusion/adapted/struct/detail/key_of_impl.hpp #usr/include/boost/fusion/adapted/struct/detail/namespace.hpp +#usr/include/boost/fusion/adapted/struct/detail/preprocessor +#usr/include/boost/fusion/adapted/struct/detail/preprocessor/is_seq.hpp #usr/include/boost/fusion/adapted/struct/detail/proxy_type.hpp #usr/include/boost/fusion/adapted/struct/detail/size_impl.hpp #usr/include/boost/fusion/adapted/struct/detail/value_at_impl.hpp @@ -1779,6 +2520,7 @@ #usr/include/boost/fusion/algorithm/transformation/erase_key.hpp #usr/include/boost/fusion/algorithm/transformation/filter.hpp #usr/include/boost/fusion/algorithm/transformation/filter_if.hpp +#usr/include/boost/fusion/algorithm/transformation/flatten.hpp #usr/include/boost/fusion/algorithm/transformation/insert.hpp #usr/include/boost/fusion/algorithm/transformation/insert_range.hpp #usr/include/boost/fusion/algorithm/transformation/join.hpp @@ -1860,9 +2602,14 @@ #usr/include/boost/fusion/container/generation/deque_tie.hpp #usr/include/boost/fusion/container/generation/detail #usr/include/boost/fusion/container/generation/detail/pp_deque_tie.hpp +#usr/include/boost/fusion/container/generation/detail/pp_list_tie.hpp #usr/include/boost/fusion/container/generation/detail/pp_make_deque.hpp +#usr/include/boost/fusion/container/generation/detail/pp_make_list.hpp #usr/include/boost/fusion/container/generation/detail/pp_make_map.hpp +#usr/include/boost/fusion/container/generation/detail/pp_make_set.hpp +#usr/include/boost/fusion/container/generation/detail/pp_make_vector.hpp #usr/include/boost/fusion/container/generation/detail/pp_map_tie.hpp +#usr/include/boost/fusion/container/generation/detail/pp_vector_tie.hpp #usr/include/boost/fusion/container/generation/detail/preprocessed #usr/include/boost/fusion/container/generation/detail/preprocessed/deque_tie.hpp #usr/include/boost/fusion/container/generation/detail/preprocessed/deque_tie10.hpp @@ -1940,39 +2687,44 @@ #usr/include/boost/fusion/container/list/detail/begin_impl.hpp #usr/include/boost/fusion/container/list/detail/build_cons.hpp #usr/include/boost/fusion/container/list/detail/convert_impl.hpp +#usr/include/boost/fusion/container/list/detail/cpp03 +#usr/include/boost/fusion/container/list/detail/cpp03/limits.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/list.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/list_fwd.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/list_to_cons.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10_fwd.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20_fwd.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30_fwd.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40_fwd.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50_fwd.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons10.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons20.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons30.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons40.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons50.hpp #usr/include/boost/fusion/container/list/detail/deref_impl.hpp #usr/include/boost/fusion/container/list/detail/empty_impl.hpp #usr/include/boost/fusion/container/list/detail/end_impl.hpp #usr/include/boost/fusion/container/list/detail/equal_to_impl.hpp -#usr/include/boost/fusion/container/list/detail/list_forward_ctor.hpp #usr/include/boost/fusion/container/list/detail/list_to_cons.hpp -#usr/include/boost/fusion/container/list/detail/list_to_cons_call.hpp #usr/include/boost/fusion/container/list/detail/next_impl.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed -#usr/include/boost/fusion/container/list/detail/preprocessed/list.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list10.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list10_fwd.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list20.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list20_fwd.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list30.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list30_fwd.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list40.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list40_fwd.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list50.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list50_fwd.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list_fwd.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list_to_cons.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp #usr/include/boost/fusion/container/list/detail/reverse_cons.hpp #usr/include/boost/fusion/container/list/detail/value_at_impl.hpp #usr/include/boost/fusion/container/list/detail/value_of_impl.hpp -#usr/include/boost/fusion/container/list/limits.hpp #usr/include/boost/fusion/container/list/list.hpp #usr/include/boost/fusion/container/list/list_fwd.hpp +#usr/include/boost/fusion/container/list/nil.hpp #usr/include/boost/fusion/container/map #usr/include/boost/fusion/container/map.hpp #usr/include/boost/fusion/container/map/convert.hpp @@ -2032,33 +2784,37 @@ #usr/include/boost/fusion/container/set/detail/as_set.hpp #usr/include/boost/fusion/container/set/detail/begin_impl.hpp #usr/include/boost/fusion/container/set/detail/convert_impl.hpp +#usr/include/boost/fusion/container/set/detail/cpp03 +#usr/include/boost/fusion/container/set/detail/cpp03/as_set.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/limits.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set10.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set20.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set30.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set40.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set50.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set10_fwd.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set20_fwd.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set30_fwd.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set40_fwd.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set50_fwd.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set_fwd.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/set.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/set_fwd.hpp #usr/include/boost/fusion/container/set/detail/deref_data_impl.hpp #usr/include/boost/fusion/container/set/detail/deref_impl.hpp #usr/include/boost/fusion/container/set/detail/end_impl.hpp #usr/include/boost/fusion/container/set/detail/key_of_impl.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed -#usr/include/boost/fusion/container/set/detail/preprocessed/as_set.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/as_set10.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/as_set20.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/as_set30.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/as_set40.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/as_set50.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set10.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set10_fwd.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set20.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set20_fwd.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set30.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set30_fwd.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set40.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set40_fwd.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set50.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set50_fwd.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set_fwd.hpp -#usr/include/boost/fusion/container/set/detail/set_forward_ctor.hpp #usr/include/boost/fusion/container/set/detail/value_of_data_impl.hpp #usr/include/boost/fusion/container/set/detail/value_of_impl.hpp -#usr/include/boost/fusion/container/set/limits.hpp #usr/include/boost/fusion/container/set/set.hpp #usr/include/boost/fusion/container/set/set_fwd.hpp #usr/include/boost/fusion/container/vector @@ -2069,65 +2825,76 @@ #usr/include/boost/fusion/container/vector/detail/as_vector.hpp #usr/include/boost/fusion/container/vector/detail/at_impl.hpp #usr/include/boost/fusion/container/vector/detail/begin_impl.hpp +#usr/include/boost/fusion/container/vector/detail/config.hpp #usr/include/boost/fusion/container/vector/detail/convert_impl.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03 +#usr/include/boost/fusion/container/vector/detail/cpp03/as_vector.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/limits.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector10.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector20.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector30.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector40.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector50.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector10.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector10_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector20.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector20_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector30.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector30_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector40.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector40_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector50.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector50_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser10.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser20.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser30.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser40.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser50.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector10.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector20.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector30.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector40.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector50.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector_n.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp #usr/include/boost/fusion/container/vector/detail/deref_impl.hpp #usr/include/boost/fusion/container/vector/detail/distance_impl.hpp #usr/include/boost/fusion/container/vector/detail/end_impl.hpp #usr/include/boost/fusion/container/vector/detail/equal_to_impl.hpp #usr/include/boost/fusion/container/vector/detail/next_impl.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed -#usr/include/boost/fusion/container/vector/detail/preprocessed/as_vector.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/as_vector10.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/as_vector20.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/as_vector30.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/as_vector40.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/as_vector50.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector10.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector10_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector20.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector20_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector30.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector30_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector40.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector40_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector50.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector50_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser10.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser20.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser30.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser40.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser50.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector10_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector20_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector30_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector40_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector50_fwd.hpp #usr/include/boost/fusion/container/vector/detail/prior_impl.hpp #usr/include/boost/fusion/container/vector/detail/value_at_impl.hpp #usr/include/boost/fusion/container/vector/detail/value_of_impl.hpp -#usr/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp -#usr/include/boost/fusion/container/vector/detail/vector_n.hpp -#usr/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp -#usr/include/boost/fusion/container/vector/limits.hpp #usr/include/boost/fusion/container/vector/vector.hpp #usr/include/boost/fusion/container/vector/vector10.hpp -#usr/include/boost/fusion/container/vector/vector10_fwd.hpp #usr/include/boost/fusion/container/vector/vector20.hpp -#usr/include/boost/fusion/container/vector/vector20_fwd.hpp #usr/include/boost/fusion/container/vector/vector30.hpp -#usr/include/boost/fusion/container/vector/vector30_fwd.hpp #usr/include/boost/fusion/container/vector/vector40.hpp -#usr/include/boost/fusion/container/vector/vector40_fwd.hpp #usr/include/boost/fusion/container/vector/vector50.hpp -#usr/include/boost/fusion/container/vector/vector50_fwd.hpp #usr/include/boost/fusion/container/vector/vector_fwd.hpp #usr/include/boost/fusion/container/vector/vector_iterator.hpp #usr/include/boost/fusion/functional @@ -2164,8 +2931,6 @@ #usr/include/boost/fusion/include/adapt_adt_named.hpp #usr/include/boost/fusion/include/adapt_assoc_adt.hpp #usr/include/boost/fusion/include/adapt_assoc_adt_named.hpp -#usr/include/boost/fusion/include/adapt_assoc_class.hpp -#usr/include/boost/fusion/include/adapt_assoc_class_named.hpp #usr/include/boost/fusion/include/adapt_assoc_struct.hpp #usr/include/boost/fusion/include/adapt_assoc_struct_named.hpp #usr/include/boost/fusion/include/adapt_struct.hpp @@ -2221,6 +2986,8 @@ #usr/include/boost/fusion/include/filter_view.hpp #usr/include/boost/fusion/include/find.hpp #usr/include/boost/fusion/include/find_if.hpp +#usr/include/boost/fusion/include/flatten.hpp +#usr/include/boost/fusion/include/flatten_view.hpp #usr/include/boost/fusion/include/fold.hpp #usr/include/boost/fusion/include/for_each.hpp #usr/include/boost/fusion/include/front.hpp @@ -2232,6 +2999,7 @@ #usr/include/boost/fusion/include/greater.hpp #usr/include/boost/fusion/include/greater_equal.hpp #usr/include/boost/fusion/include/has_key.hpp +#usr/include/boost/fusion/include/hash.hpp #usr/include/boost/fusion/include/ignore.hpp #usr/include/boost/fusion/include/in.hpp #usr/include/boost/fusion/include/insert.hpp @@ -2278,6 +3046,7 @@ #usr/include/boost/fusion/include/move.hpp #usr/include/boost/fusion/include/mpl.hpp #usr/include/boost/fusion/include/next.hpp +#usr/include/boost/fusion/include/nil.hpp #usr/include/boost/fusion/include/none.hpp #usr/include/boost/fusion/include/not_equal_to.hpp #usr/include/boost/fusion/include/nview.hpp @@ -2311,6 +3080,7 @@ #usr/include/boost/fusion/include/single_view.hpp #usr/include/boost/fusion/include/size.hpp #usr/include/boost/fusion/include/std_pair.hpp +#usr/include/boost/fusion/include/std_tuple.hpp #usr/include/boost/fusion/include/struct.hpp #usr/include/boost/fusion/include/support.hpp #usr/include/boost/fusion/include/swap.hpp @@ -2410,6 +3180,7 @@ #usr/include/boost/fusion/sequence/comparison/less_equal.hpp #usr/include/boost/fusion/sequence/comparison/not_equal_to.hpp #usr/include/boost/fusion/sequence/convert.hpp +#usr/include/boost/fusion/sequence/hash.hpp #usr/include/boost/fusion/sequence/intrinsic #usr/include/boost/fusion/sequence/intrinsic.hpp #usr/include/boost/fusion/sequence/intrinsic/at.hpp @@ -2446,13 +3217,18 @@ #usr/include/boost/fusion/support.hpp #usr/include/boost/fusion/support/as_const.hpp #usr/include/boost/fusion/support/category_of.hpp +#usr/include/boost/fusion/support/config.hpp #usr/include/boost/fusion/support/deduce.hpp #usr/include/boost/fusion/support/deduce_sequence.hpp #usr/include/boost/fusion/support/detail #usr/include/boost/fusion/support/detail/access.hpp +#usr/include/boost/fusion/support/detail/and.hpp #usr/include/boost/fusion/support/detail/as_fusion_element.hpp #usr/include/boost/fusion/support/detail/category_of.hpp +#usr/include/boost/fusion/support/detail/enabler.hpp +#usr/include/boost/fusion/support/detail/index_sequence.hpp #usr/include/boost/fusion/support/detail/is_mpl_sequence.hpp +#usr/include/boost/fusion/support/detail/is_same_size.hpp #usr/include/boost/fusion/support/detail/is_view.hpp #usr/include/boost/fusion/support/detail/mpl_iterator_category.hpp #usr/include/boost/fusion/support/detail/pp_round.hpp @@ -2473,6 +3249,7 @@ #usr/include/boost/fusion/tuple #usr/include/boost/fusion/tuple.hpp #usr/include/boost/fusion/tuple/detail +#usr/include/boost/fusion/tuple/detail/make_tuple.hpp #usr/include/boost/fusion/tuple/detail/preprocessed #usr/include/boost/fusion/tuple/detail/preprocessed/make_tuple.hpp #usr/include/boost/fusion/tuple/detail/preprocessed/make_tuple10.hpp @@ -2498,7 +3275,10 @@ #usr/include/boost/fusion/tuple/detail/preprocessed/tuple_tie30.hpp #usr/include/boost/fusion/tuple/detail/preprocessed/tuple_tie40.hpp #usr/include/boost/fusion/tuple/detail/preprocessed/tuple_tie50.hpp +#usr/include/boost/fusion/tuple/detail/tuple.hpp #usr/include/boost/fusion/tuple/detail/tuple_expand.hpp +#usr/include/boost/fusion/tuple/detail/tuple_fwd.hpp +#usr/include/boost/fusion/tuple/detail/tuple_tie.hpp #usr/include/boost/fusion/tuple/make_tuple.hpp #usr/include/boost/fusion/tuple/tuple.hpp #usr/include/boost/fusion/tuple/tuple_fwd.hpp @@ -2522,6 +3302,10 @@ #usr/include/boost/fusion/view/filter_view/detail/value_of_impl.hpp #usr/include/boost/fusion/view/filter_view/filter_view.hpp #usr/include/boost/fusion/view/filter_view/filter_view_iterator.hpp +#usr/include/boost/fusion/view/flatten_view +#usr/include/boost/fusion/view/flatten_view.hpp +#usr/include/boost/fusion/view/flatten_view/flatten_view.hpp +#usr/include/boost/fusion/view/flatten_view/flatten_view_iterator.hpp #usr/include/boost/fusion/view/iterator_range #usr/include/boost/fusion/view/iterator_range.hpp #usr/include/boost/fusion/view/iterator_range/detail @@ -2554,6 +3338,8 @@ #usr/include/boost/fusion/view/nview/detail/advance_impl.hpp #usr/include/boost/fusion/view/nview/detail/at_impl.hpp #usr/include/boost/fusion/view/nview/detail/begin_impl.hpp +#usr/include/boost/fusion/view/nview/detail/cpp03 +#usr/include/boost/fusion/view/nview/detail/cpp03/nview_impl.hpp #usr/include/boost/fusion/view/nview/detail/deref_impl.hpp #usr/include/boost/fusion/view/nview/detail/distance_impl.hpp #usr/include/boost/fusion/view/nview/detail/end_impl.hpp @@ -2663,67 +3449,244 @@ #usr/include/boost/geometry/algorithms/convex_hull.hpp #usr/include/boost/geometry/algorithms/correct.hpp #usr/include/boost/geometry/algorithms/covered_by.hpp +#usr/include/boost/geometry/algorithms/crosses.hpp #usr/include/boost/geometry/algorithms/detail #usr/include/boost/geometry/algorithms/detail/as_range.hpp #usr/include/boost/geometry/algorithms/detail/assign_box_corners.hpp #usr/include/boost/geometry/algorithms/detail/assign_indexed_point.hpp #usr/include/boost/geometry/algorithms/detail/assign_values.hpp +#usr/include/boost/geometry/algorithms/detail/azimuth.hpp +#usr/include/boost/geometry/algorithms/detail/buffer +#usr/include/boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp +#usr/include/boost/geometry/algorithms/detail/buffer/buffer_policies.hpp +#usr/include/boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp +#usr/include/boost/geometry/algorithms/detail/buffer/buffered_ring.hpp +#usr/include/boost/geometry/algorithms/detail/buffer/get_piece_turns.hpp +#usr/include/boost/geometry/algorithms/detail/buffer/line_line_intersection.hpp +#usr/include/boost/geometry/algorithms/detail/buffer/parallel_continue.hpp +#usr/include/boost/geometry/algorithms/detail/buffer/turn_in_original_visitor.hpp +#usr/include/boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp #usr/include/boost/geometry/algorithms/detail/calculate_null.hpp #usr/include/boost/geometry/algorithms/detail/calculate_sum.hpp +#usr/include/boost/geometry/algorithms/detail/centroid +#usr/include/boost/geometry/algorithms/detail/centroid/translating_transformer.hpp +#usr/include/boost/geometry/algorithms/detail/check_iterator_range.hpp +#usr/include/boost/geometry/algorithms/detail/closest_feature +#usr/include/boost/geometry/algorithms/detail/closest_feature/geometry_to_range.hpp +#usr/include/boost/geometry/algorithms/detail/closest_feature/point_to_range.hpp +#usr/include/boost/geometry/algorithms/detail/closest_feature/range_to_range.hpp +#usr/include/boost/geometry/algorithms/detail/comparable_distance +#usr/include/boost/geometry/algorithms/detail/comparable_distance/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/comparable_distance/interface.hpp #usr/include/boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp #usr/include/boost/geometry/algorithms/detail/convert_point_to_point.hpp -#usr/include/boost/geometry/algorithms/detail/disjoint.hpp +#usr/include/boost/geometry/algorithms/detail/counting.hpp +#usr/include/boost/geometry/algorithms/detail/course.hpp +#usr/include/boost/geometry/algorithms/detail/direction_code.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint +#usr/include/boost/geometry/algorithms/detail/disjoint/areal_areal.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/box_box.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/interface.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/linear_areal.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/linear_linear.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/multipoint_geometry.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/multirange_geometry.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/point_box.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/point_geometry.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/point_point.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/segment_box.hpp +#usr/include/boost/geometry/algorithms/detail/distance +#usr/include/boost/geometry/algorithms/detail/distance/backward_compatibility.hpp +#usr/include/boost/geometry/algorithms/detail/distance/box_to_box.hpp +#usr/include/boost/geometry/algorithms/detail/distance/default_strategies.hpp +#usr/include/boost/geometry/algorithms/detail/distance/geometry_to_segment_or_box.hpp +#usr/include/boost/geometry/algorithms/detail/distance/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/distance/interface.hpp +#usr/include/boost/geometry/algorithms/detail/distance/is_comparable.hpp +#usr/include/boost/geometry/algorithms/detail/distance/iterator_selector.hpp +#usr/include/boost/geometry/algorithms/detail/distance/linear_or_areal_to_areal.hpp +#usr/include/boost/geometry/algorithms/detail/distance/linear_to_linear.hpp +#usr/include/boost/geometry/algorithms/detail/distance/multipoint_to_geometry.hpp +#usr/include/boost/geometry/algorithms/detail/distance/point_to_geometry.hpp +#usr/include/boost/geometry/algorithms/detail/distance/range_to_geometry_rtree.hpp +#usr/include/boost/geometry/algorithms/detail/distance/segment_to_box.hpp +#usr/include/boost/geometry/algorithms/detail/distance/segment_to_segment.hpp +#usr/include/boost/geometry/algorithms/detail/envelope +#usr/include/boost/geometry/algorithms/detail/envelope/box.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/initialize.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/interface.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/intersects_antimeridian.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/linear.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/multipoint.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/point.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/range.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/range_of_boxes.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/segment.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/transform_units.hpp #usr/include/boost/geometry/algorithms/detail/equals #usr/include/boost/geometry/algorithms/detail/equals/collect_vectors.hpp +#usr/include/boost/geometry/algorithms/detail/equals/point_point.hpp +#usr/include/boost/geometry/algorithms/detail/expand +#usr/include/boost/geometry/algorithms/detail/expand/box.hpp +#usr/include/boost/geometry/algorithms/detail/expand/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/expand/indexed.hpp +#usr/include/boost/geometry/algorithms/detail/expand/interface.hpp +#usr/include/boost/geometry/algorithms/detail/expand/point.hpp +#usr/include/boost/geometry/algorithms/detail/expand/segment.hpp +#usr/include/boost/geometry/algorithms/detail/expand_by_epsilon.hpp +#usr/include/boost/geometry/algorithms/detail/extreme_points.hpp #usr/include/boost/geometry/algorithms/detail/for_each_range.hpp #usr/include/boost/geometry/algorithms/detail/get_left_turns.hpp +#usr/include/boost/geometry/algorithms/detail/get_max_size.hpp #usr/include/boost/geometry/algorithms/detail/has_self_intersections.hpp +#usr/include/boost/geometry/algorithms/detail/interior_iterator.hpp +#usr/include/boost/geometry/algorithms/detail/intersection +#usr/include/boost/geometry/algorithms/detail/intersection/box_box.hpp +#usr/include/boost/geometry/algorithms/detail/intersection/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/intersection/interface.hpp +#usr/include/boost/geometry/algorithms/detail/intersection/multi.hpp +#usr/include/boost/geometry/algorithms/detail/is_simple +#usr/include/boost/geometry/algorithms/detail/is_simple/always_simple.hpp +#usr/include/boost/geometry/algorithms/detail/is_simple/areal.hpp +#usr/include/boost/geometry/algorithms/detail/is_simple/debug_print_boundary_points.hpp +#usr/include/boost/geometry/algorithms/detail/is_simple/failure_policy.hpp +#usr/include/boost/geometry/algorithms/detail/is_simple/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/is_simple/interface.hpp +#usr/include/boost/geometry/algorithms/detail/is_simple/linear.hpp +#usr/include/boost/geometry/algorithms/detail/is_simple/multipoint.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid +#usr/include/boost/geometry/algorithms/detail/is_valid/box.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/complement_graph.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/debug_complement_graph.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/debug_print_turns.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/debug_validity_phase.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/has_duplicates.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/has_invalid_coordinate.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/has_spikes.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/has_valid_self_turns.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/interface.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/is_acceptable_turn.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/linear.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/multipolygon.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/pointlike.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/polygon.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/ring.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/segment.hpp +#usr/include/boost/geometry/algorithms/detail/max_interval_gap.hpp +#usr/include/boost/geometry/algorithms/detail/multi_modify.hpp +#usr/include/boost/geometry/algorithms/detail/multi_modify_with_predicate.hpp +#usr/include/boost/geometry/algorithms/detail/multi_sum.hpp +#usr/include/boost/geometry/algorithms/detail/normalize.hpp #usr/include/boost/geometry/algorithms/detail/not.hpp +#usr/include/boost/geometry/algorithms/detail/num_distinct_consecutive_points.hpp #usr/include/boost/geometry/algorithms/detail/occupation_info.hpp #usr/include/boost/geometry/algorithms/detail/overlay #usr/include/boost/geometry/algorithms/detail/overlay/add_rings.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/aggregate_operations.hpp #usr/include/boost/geometry/algorithms/detail/overlay/append_no_duplicates.hpp #usr/include/boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp #usr/include/boost/geometry/algorithms/detail/overlay/assign_parents.hpp #usr/include/boost/geometry/algorithms/detail/overlay/backtrack_check_si.hpp -#usr/include/boost/geometry/algorithms/detail/overlay/calculate_distance_policy.hpp #usr/include/boost/geometry/algorithms/detail/overlay/check_enrich.hpp #usr/include/boost/geometry/algorithms/detail/overlay/clip_linestring.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/cluster_info.hpp #usr/include/boost/geometry/algorithms/detail/overlay/convert_ring.hpp #usr/include/boost/geometry/algorithms/detail/overlay/copy_segment_point.hpp #usr/include/boost/geometry/algorithms/detail/overlay/copy_segments.hpp #usr/include/boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/do_reverse.hpp #usr/include/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp #usr/include/boost/geometry/algorithms/detail/overlay/enrichment_info.hpp #usr/include/boost/geometry/algorithms/detail/overlay/follow.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/follow_linear_linear.hpp #usr/include/boost/geometry/algorithms/detail/overlay/get_intersection_points.hpp #usr/include/boost/geometry/algorithms/detail/overlay/get_relative_order.hpp #usr/include/boost/geometry/algorithms/detail/overlay/get_ring.hpp #usr/include/boost/geometry/algorithms/detail/overlay/get_turn_info.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/get_turn_info_for_endpoint.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/get_turn_info_helpers.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/get_turn_info_la.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp #usr/include/boost/geometry/algorithms/detail/overlay/get_turns.hpp -#usr/include/boost/geometry/algorithms/detail/overlay/handle_tangencies.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/handle_colocations.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/inconsistent_turns_exception.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/intersection_box_box.hpp #usr/include/boost/geometry/algorithms/detail/overlay/intersection_insert.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/less_by_segment_ratio.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/linear_linear.hpp #usr/include/boost/geometry/algorithms/detail/overlay/overlay.hpp #usr/include/boost/geometry/algorithms/detail/overlay/overlay_type.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/pointlike_linear.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/pointlike_pointlike.hpp #usr/include/boost/geometry/algorithms/detail/overlay/ring_properties.hpp #usr/include/boost/geometry/algorithms/detail/overlay/segment_identifier.hpp #usr/include/boost/geometry/algorithms/detail/overlay/select_rings.hpp #usr/include/boost/geometry/algorithms/detail/overlay/self_turn_points.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/sort_by_side.hpp #usr/include/boost/geometry/algorithms/detail/overlay/stream_info.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/traversal.hpp #usr/include/boost/geometry/algorithms/detail/overlay/traversal_info.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/traversal_ring_creator.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/traversal_switch_detector.hpp #usr/include/boost/geometry/algorithms/detail/overlay/traverse.hpp #usr/include/boost/geometry/algorithms/detail/overlay/turn_info.hpp #usr/include/boost/geometry/algorithms/detail/overlay/visit_info.hpp #usr/include/boost/geometry/algorithms/detail/partition.hpp #usr/include/boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp #usr/include/boost/geometry/algorithms/detail/point_on_border.hpp +#usr/include/boost/geometry/algorithms/detail/recalculate.hpp +#usr/include/boost/geometry/algorithms/detail/relate +#usr/include/boost/geometry/algorithms/detail/relate/areal_areal.hpp +#usr/include/boost/geometry/algorithms/detail/relate/boundary_checker.hpp +#usr/include/boost/geometry/algorithms/detail/relate/de9im.hpp +#usr/include/boost/geometry/algorithms/detail/relate/follow_helpers.hpp +#usr/include/boost/geometry/algorithms/detail/relate/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/relate/interface.hpp +#usr/include/boost/geometry/algorithms/detail/relate/less.hpp +#usr/include/boost/geometry/algorithms/detail/relate/linear_areal.hpp +#usr/include/boost/geometry/algorithms/detail/relate/linear_linear.hpp +#usr/include/boost/geometry/algorithms/detail/relate/point_geometry.hpp +#usr/include/boost/geometry/algorithms/detail/relate/point_point.hpp +#usr/include/boost/geometry/algorithms/detail/relate/relate_impl.hpp +#usr/include/boost/geometry/algorithms/detail/relate/result.hpp +#usr/include/boost/geometry/algorithms/detail/relate/topology_check.hpp +#usr/include/boost/geometry/algorithms/detail/relate/turns.hpp +#usr/include/boost/geometry/algorithms/detail/relation +#usr/include/boost/geometry/algorithms/detail/relation/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/relation/interface.hpp #usr/include/boost/geometry/algorithms/detail/ring_identifier.hpp #usr/include/boost/geometry/algorithms/detail/sections #usr/include/boost/geometry/algorithms/detail/sections/range_by_section.hpp +#usr/include/boost/geometry/algorithms/detail/sections/section_box_policies.hpp +#usr/include/boost/geometry/algorithms/detail/sections/section_functions.hpp #usr/include/boost/geometry/algorithms/detail/sections/sectionalize.hpp +#usr/include/boost/geometry/algorithms/detail/signed_size_type.hpp +#usr/include/boost/geometry/algorithms/detail/single_geometry.hpp +#usr/include/boost/geometry/algorithms/detail/sub_range.hpp +#usr/include/boost/geometry/algorithms/detail/sweep.hpp #usr/include/boost/geometry/algorithms/detail/throw_on_empty_input.hpp +#usr/include/boost/geometry/algorithms/detail/turns +#usr/include/boost/geometry/algorithms/detail/turns/compare_turns.hpp +#usr/include/boost/geometry/algorithms/detail/turns/debug_turn.hpp +#usr/include/boost/geometry/algorithms/detail/turns/filter_continue_turns.hpp +#usr/include/boost/geometry/algorithms/detail/turns/print_turns.hpp +#usr/include/boost/geometry/algorithms/detail/turns/remove_duplicate_turns.hpp +#usr/include/boost/geometry/algorithms/detail/within +#usr/include/boost/geometry/algorithms/detail/within/point_in_geometry.hpp +#usr/include/boost/geometry/algorithms/detail/within/within_no_turns.hpp #usr/include/boost/geometry/algorithms/difference.hpp #usr/include/boost/geometry/algorithms/disjoint.hpp +#usr/include/boost/geometry/algorithms/dispatch +#usr/include/boost/geometry/algorithms/dispatch/disjoint.hpp +#usr/include/boost/geometry/algorithms/dispatch/distance.hpp +#usr/include/boost/geometry/algorithms/dispatch/envelope.hpp +#usr/include/boost/geometry/algorithms/dispatch/expand.hpp +#usr/include/boost/geometry/algorithms/dispatch/is_simple.hpp +#usr/include/boost/geometry/algorithms/dispatch/is_valid.hpp #usr/include/boost/geometry/algorithms/distance.hpp #usr/include/boost/geometry/algorithms/envelope.hpp #usr/include/boost/geometry/algorithms/equals.hpp @@ -2731,14 +3694,23 @@ #usr/include/boost/geometry/algorithms/for_each.hpp #usr/include/boost/geometry/algorithms/intersection.hpp #usr/include/boost/geometry/algorithms/intersects.hpp +#usr/include/boost/geometry/algorithms/is_convex.hpp +#usr/include/boost/geometry/algorithms/is_empty.hpp +#usr/include/boost/geometry/algorithms/is_simple.hpp +#usr/include/boost/geometry/algorithms/is_valid.hpp #usr/include/boost/geometry/algorithms/length.hpp #usr/include/boost/geometry/algorithms/make.hpp #usr/include/boost/geometry/algorithms/not_implemented.hpp #usr/include/boost/geometry/algorithms/num_geometries.hpp #usr/include/boost/geometry/algorithms/num_interior_rings.hpp #usr/include/boost/geometry/algorithms/num_points.hpp +#usr/include/boost/geometry/algorithms/num_segments.hpp #usr/include/boost/geometry/algorithms/overlaps.hpp #usr/include/boost/geometry/algorithms/perimeter.hpp +#usr/include/boost/geometry/algorithms/point_on_surface.hpp +#usr/include/boost/geometry/algorithms/relate.hpp +#usr/include/boost/geometry/algorithms/relation.hpp +#usr/include/boost/geometry/algorithms/remove_spikes.hpp #usr/include/boost/geometry/algorithms/reverse.hpp #usr/include/boost/geometry/algorithms/simplify.hpp #usr/include/boost/geometry/algorithms/sym_difference.hpp @@ -2746,13 +3718,17 @@ #usr/include/boost/geometry/algorithms/transform.hpp #usr/include/boost/geometry/algorithms/union.hpp #usr/include/boost/geometry/algorithms/unique.hpp +#usr/include/boost/geometry/algorithms/validity_failure_type.hpp #usr/include/boost/geometry/algorithms/within.hpp #usr/include/boost/geometry/arithmetic #usr/include/boost/geometry/arithmetic/arithmetic.hpp +#usr/include/boost/geometry/arithmetic/cross_product.hpp #usr/include/boost/geometry/arithmetic/determinant.hpp #usr/include/boost/geometry/arithmetic/dot_product.hpp +#usr/include/boost/geometry/arithmetic/normalize.hpp #usr/include/boost/geometry/core #usr/include/boost/geometry/core/access.hpp +#usr/include/boost/geometry/core/assert.hpp #usr/include/boost/geometry/core/closure.hpp #usr/include/boost/geometry/core/coordinate_dimension.hpp #usr/include/boost/geometry/core/coordinate_system.hpp @@ -2768,12 +3744,32 @@ #usr/include/boost/geometry/core/point_order.hpp #usr/include/boost/geometry/core/point_type.hpp #usr/include/boost/geometry/core/radian_access.hpp +#usr/include/boost/geometry/core/radius.hpp #usr/include/boost/geometry/core/reverse_dispatch.hpp #usr/include/boost/geometry/core/ring_type.hpp +#usr/include/boost/geometry/core/srs.hpp #usr/include/boost/geometry/core/tag.hpp #usr/include/boost/geometry/core/tag_cast.hpp #usr/include/boost/geometry/core/tags.hpp #usr/include/boost/geometry/core/topological_dimension.hpp +#usr/include/boost/geometry/formulas +#usr/include/boost/geometry/formulas/andoyer_inverse.hpp +#usr/include/boost/geometry/formulas/area_formulas.hpp +#usr/include/boost/geometry/formulas/differential_quantities.hpp +#usr/include/boost/geometry/formulas/eccentricity_sqr.hpp +#usr/include/boost/geometry/formulas/flattening.hpp +#usr/include/boost/geometry/formulas/geographic.hpp +#usr/include/boost/geometry/formulas/gnomonic_intersection.hpp +#usr/include/boost/geometry/formulas/gnomonic_spheroid.hpp +#usr/include/boost/geometry/formulas/result_direct.hpp +#usr/include/boost/geometry/formulas/result_inverse.hpp +#usr/include/boost/geometry/formulas/sjoberg_intersection.hpp +#usr/include/boost/geometry/formulas/spherical.hpp +#usr/include/boost/geometry/formulas/thomas_direct.hpp +#usr/include/boost/geometry/formulas/thomas_inverse.hpp +#usr/include/boost/geometry/formulas/vertex_latitude.hpp +#usr/include/boost/geometry/formulas/vincenty_direct.hpp +#usr/include/boost/geometry/formulas/vincenty_inverse.hpp #usr/include/boost/geometry/geometries #usr/include/boost/geometry/geometries/adapted #usr/include/boost/geometry/geometries/adapted/boost_array.hpp @@ -2796,24 +3792,36 @@ #usr/include/boost/geometry/geometries/adapted/boost_range/uniqued.hpp #usr/include/boost/geometry/geometries/adapted/boost_tuple.hpp #usr/include/boost/geometry/geometries/adapted/c_array.hpp +#usr/include/boost/geometry/geometries/adapted/std_array.hpp #usr/include/boost/geometry/geometries/adapted/std_pair_as_segment.hpp #usr/include/boost/geometry/geometries/box.hpp #usr/include/boost/geometry/geometries/concepts #usr/include/boost/geometry/geometries/concepts/box_concept.hpp #usr/include/boost/geometry/geometries/concepts/check.hpp #usr/include/boost/geometry/geometries/concepts/linestring_concept.hpp +#usr/include/boost/geometry/geometries/concepts/multi_linestring_concept.hpp +#usr/include/boost/geometry/geometries/concepts/multi_point_concept.hpp +#usr/include/boost/geometry/geometries/concepts/multi_polygon_concept.hpp #usr/include/boost/geometry/geometries/concepts/point_concept.hpp #usr/include/boost/geometry/geometries/concepts/polygon_concept.hpp #usr/include/boost/geometry/geometries/concepts/ring_concept.hpp #usr/include/boost/geometry/geometries/concepts/segment_concept.hpp #usr/include/boost/geometry/geometries/geometries.hpp +#usr/include/boost/geometry/geometries/helper_geometry.hpp #usr/include/boost/geometry/geometries/linestring.hpp +#usr/include/boost/geometry/geometries/multi_linestring.hpp +#usr/include/boost/geometry/geometries/multi_point.hpp +#usr/include/boost/geometry/geometries/multi_polygon.hpp #usr/include/boost/geometry/geometries/point.hpp #usr/include/boost/geometry/geometries/point_xy.hpp +#usr/include/boost/geometry/geometries/pointing_segment.hpp #usr/include/boost/geometry/geometries/polygon.hpp #usr/include/boost/geometry/geometries/register #usr/include/boost/geometry/geometries/register/box.hpp #usr/include/boost/geometry/geometries/register/linestring.hpp +#usr/include/boost/geometry/geometries/register/multi_linestring.hpp +#usr/include/boost/geometry/geometries/register/multi_point.hpp +#usr/include/boost/geometry/geometries/register/multi_polygon.hpp #usr/include/boost/geometry/geometries/register/point.hpp #usr/include/boost/geometry/geometries/register/ring.hpp #usr/include/boost/geometry/geometries/register/segment.hpp @@ -2836,21 +3844,25 @@ #usr/include/boost/geometry/index/detail/algorithms/is_valid.hpp #usr/include/boost/geometry/index/detail/algorithms/margin.hpp #usr/include/boost/geometry/index/detail/algorithms/minmaxdist.hpp +#usr/include/boost/geometry/index/detail/algorithms/nth_element.hpp #usr/include/boost/geometry/index/detail/algorithms/path_intersection.hpp #usr/include/boost/geometry/index/detail/algorithms/segment_intersection.hpp #usr/include/boost/geometry/index/detail/algorithms/smallest_for_indexable.hpp #usr/include/boost/geometry/index/detail/algorithms/sum_for_indexable.hpp #usr/include/boost/geometry/index/detail/algorithms/union_content.hpp #usr/include/boost/geometry/index/detail/assert.hpp +#usr/include/boost/geometry/index/detail/bounded_view.hpp #usr/include/boost/geometry/index/detail/config_begin.hpp #usr/include/boost/geometry/index/detail/config_end.hpp #usr/include/boost/geometry/index/detail/distance_predicates.hpp #usr/include/boost/geometry/index/detail/exception.hpp +#usr/include/boost/geometry/index/detail/is_bounding_geometry.hpp +#usr/include/boost/geometry/index/detail/is_indexable.hpp #usr/include/boost/geometry/index/detail/meta.hpp #usr/include/boost/geometry/index/detail/predicates.hpp -#usr/include/boost/geometry/index/detail/pushable_array.hpp #usr/include/boost/geometry/index/detail/rtree #usr/include/boost/geometry/index/detail/rtree/adaptors.hpp +#usr/include/boost/geometry/index/detail/rtree/iterators.hpp #usr/include/boost/geometry/index/detail/rtree/kmeans #usr/include/boost/geometry/index/detail/rtree/kmeans/kmeans.hpp #usr/include/boost/geometry/index/detail/rtree/kmeans/split.hpp @@ -2858,17 +3870,18 @@ #usr/include/boost/geometry/index/detail/rtree/linear/linear.hpp #usr/include/boost/geometry/index/detail/rtree/linear/redistribute_elements.hpp #usr/include/boost/geometry/index/detail/rtree/node -#usr/include/boost/geometry/index/detail/rtree/node/auto_deallocator.hpp #usr/include/boost/geometry/index/detail/rtree/node/concept.hpp -#usr/include/boost/geometry/index/detail/rtree/node/dynamic_visitor.hpp #usr/include/boost/geometry/index/detail/rtree/node/node.hpp -#usr/include/boost/geometry/index/detail/rtree/node/node_auto_ptr.hpp -#usr/include/boost/geometry/index/detail/rtree/node/node_d_mem_dynamic.hpp -#usr/include/boost/geometry/index/detail/rtree/node/node_d_mem_static.hpp -#usr/include/boost/geometry/index/detail/rtree/node/node_s_mem_dynamic.hpp -#usr/include/boost/geometry/index/detail/rtree/node/node_s_mem_static.hpp +#usr/include/boost/geometry/index/detail/rtree/node/node_elements.hpp #usr/include/boost/geometry/index/detail/rtree/node/pairs.hpp -#usr/include/boost/geometry/index/detail/rtree/node/static_visitor.hpp +#usr/include/boost/geometry/index/detail/rtree/node/scoped_deallocator.hpp +#usr/include/boost/geometry/index/detail/rtree/node/subtree_destroyer.hpp +#usr/include/boost/geometry/index/detail/rtree/node/variant_dynamic.hpp +#usr/include/boost/geometry/index/detail/rtree/node/variant_static.hpp +#usr/include/boost/geometry/index/detail/rtree/node/variant_visitor.hpp +#usr/include/boost/geometry/index/detail/rtree/node/weak_dynamic.hpp +#usr/include/boost/geometry/index/detail/rtree/node/weak_static.hpp +#usr/include/boost/geometry/index/detail/rtree/node/weak_visitor.hpp #usr/include/boost/geometry/index/detail/rtree/options.hpp #usr/include/boost/geometry/index/detail/rtree/pack_create.hpp #usr/include/boost/geometry/index/detail/rtree/quadratic @@ -2882,6 +3895,7 @@ #usr/include/boost/geometry/index/detail/rtree/rstar/rstar.hpp #usr/include/boost/geometry/index/detail/rtree/utilities #usr/include/boost/geometry/index/detail/rtree/utilities/are_boxes_ok.hpp +#usr/include/boost/geometry/index/detail/rtree/utilities/are_counts_ok.hpp #usr/include/boost/geometry/index/detail/rtree/utilities/are_levels_ok.hpp #usr/include/boost/geometry/index/detail/rtree/utilities/gl_draw.hpp #usr/include/boost/geometry/index/detail/rtree/utilities/print.hpp @@ -2895,6 +3909,7 @@ #usr/include/boost/geometry/index/detail/rtree/visitors/distance_query.hpp #usr/include/boost/geometry/index/detail/rtree/visitors/insert.hpp #usr/include/boost/geometry/index/detail/rtree/visitors/is_leaf.hpp +#usr/include/boost/geometry/index/detail/rtree/visitors/iterator.hpp #usr/include/boost/geometry/index/detail/rtree/visitors/remove.hpp #usr/include/boost/geometry/index/detail/rtree/visitors/spatial_query.hpp #usr/include/boost/geometry/index/detail/serialization.hpp @@ -2917,6 +3932,7 @@ #usr/include/boost/geometry/io/io.hpp #usr/include/boost/geometry/io/svg #usr/include/boost/geometry/io/svg/svg_mapper.hpp +#usr/include/boost/geometry/io/svg/write.hpp #usr/include/boost/geometry/io/svg/write_svg.hpp #usr/include/boost/geometry/io/svg/write_svg_multi.hpp #usr/include/boost/geometry/io/wkt @@ -2930,7 +3946,25 @@ #usr/include/boost/geometry/iterators #usr/include/boost/geometry/iterators/base.hpp #usr/include/boost/geometry/iterators/closing_iterator.hpp +#usr/include/boost/geometry/iterators/concatenate_iterator.hpp +#usr/include/boost/geometry/iterators/detail +#usr/include/boost/geometry/iterators/detail/point_iterator +#usr/include/boost/geometry/iterators/detail/point_iterator/inner_range_type.hpp +#usr/include/boost/geometry/iterators/detail/point_iterator/iterator_type.hpp +#usr/include/boost/geometry/iterators/detail/point_iterator/value_type.hpp +#usr/include/boost/geometry/iterators/detail/segment_iterator +#usr/include/boost/geometry/iterators/detail/segment_iterator/iterator_type.hpp +#usr/include/boost/geometry/iterators/detail/segment_iterator/range_segment_iterator.hpp +#usr/include/boost/geometry/iterators/detail/segment_iterator/value_type.hpp +#usr/include/boost/geometry/iterators/dispatch +#usr/include/boost/geometry/iterators/dispatch/point_iterator.hpp +#usr/include/boost/geometry/iterators/dispatch/segment_iterator.hpp #usr/include/boost/geometry/iterators/ever_circling_iterator.hpp +#usr/include/boost/geometry/iterators/flatten_iterator.hpp +#usr/include/boost/geometry/iterators/has_one_element.hpp +#usr/include/boost/geometry/iterators/point_iterator.hpp +#usr/include/boost/geometry/iterators/point_reverse_iterator.hpp +#usr/include/boost/geometry/iterators/segment_iterator.hpp #usr/include/boost/geometry/multi #usr/include/boost/geometry/multi/algorithms #usr/include/boost/geometry/multi/algorithms/append.hpp @@ -2941,6 +3975,7 @@ #usr/include/boost/geometry/multi/algorithms/correct.hpp #usr/include/boost/geometry/multi/algorithms/covered_by.hpp #usr/include/boost/geometry/multi/algorithms/detail +#usr/include/boost/geometry/multi/algorithms/detail/extreme_points.hpp #usr/include/boost/geometry/multi/algorithms/detail/for_each_range.hpp #usr/include/boost/geometry/multi/algorithms/detail/modify.hpp #usr/include/boost/geometry/multi/algorithms/detail/modify_with_predicate.hpp @@ -2950,7 +3985,6 @@ #usr/include/boost/geometry/multi/algorithms/detail/overlay/copy_segments.hpp #usr/include/boost/geometry/multi/algorithms/detail/overlay/get_ring.hpp #usr/include/boost/geometry/multi/algorithms/detail/overlay/get_turns.hpp -#usr/include/boost/geometry/multi/algorithms/detail/overlay/select_rings.hpp #usr/include/boost/geometry/multi/algorithms/detail/overlay/self_turn_points.hpp #usr/include/boost/geometry/multi/algorithms/detail/point_on_border.hpp #usr/include/boost/geometry/multi/algorithms/detail/sections @@ -2967,6 +4001,7 @@ #usr/include/boost/geometry/multi/algorithms/num_interior_rings.hpp #usr/include/boost/geometry/multi/algorithms/num_points.hpp #usr/include/boost/geometry/multi/algorithms/perimeter.hpp +#usr/include/boost/geometry/multi/algorithms/remove_spikes.hpp #usr/include/boost/geometry/multi/algorithms/reverse.hpp #usr/include/boost/geometry/multi/algorithms/simplify.hpp #usr/include/boost/geometry/multi/algorithms/transform.hpp @@ -3014,32 +4049,68 @@ #usr/include/boost/geometry/multi/views/detail/range_type.hpp #usr/include/boost/geometry/policies #usr/include/boost/geometry/policies/compare.hpp +#usr/include/boost/geometry/policies/disjoint_interrupt_policy.hpp +#usr/include/boost/geometry/policies/is_valid +#usr/include/boost/geometry/policies/is_valid/default_policy.hpp +#usr/include/boost/geometry/policies/is_valid/failing_reason_policy.hpp +#usr/include/boost/geometry/policies/is_valid/failure_type_policy.hpp +#usr/include/boost/geometry/policies/predicate_based_interrupt_policy.hpp #usr/include/boost/geometry/policies/relate -#usr/include/boost/geometry/policies/relate/de9im.hpp #usr/include/boost/geometry/policies/relate/direction.hpp #usr/include/boost/geometry/policies/relate/intersection_points.hpp +#usr/include/boost/geometry/policies/relate/intersection_ratios.hpp #usr/include/boost/geometry/policies/relate/tupled.hpp +#usr/include/boost/geometry/policies/robustness +#usr/include/boost/geometry/policies/robustness/get_rescale_policy.hpp +#usr/include/boost/geometry/policies/robustness/no_rescale_policy.hpp +#usr/include/boost/geometry/policies/robustness/rescale_policy.hpp +#usr/include/boost/geometry/policies/robustness/robust_point_type.hpp +#usr/include/boost/geometry/policies/robustness/robust_type.hpp +#usr/include/boost/geometry/policies/robustness/segment_ratio.hpp +#usr/include/boost/geometry/policies/robustness/segment_ratio_type.hpp #usr/include/boost/geometry/strategies #usr/include/boost/geometry/strategies/agnostic +#usr/include/boost/geometry/strategies/agnostic/buffer_distance_asymmetric.hpp +#usr/include/boost/geometry/strategies/agnostic/buffer_distance_symmetric.hpp #usr/include/boost/geometry/strategies/agnostic/hull_graham_andrew.hpp #usr/include/boost/geometry/strategies/agnostic/point_in_box_by_side.hpp +#usr/include/boost/geometry/strategies/agnostic/point_in_point.hpp #usr/include/boost/geometry/strategies/agnostic/point_in_poly_oriented_winding.hpp #usr/include/boost/geometry/strategies/agnostic/point_in_poly_winding.hpp #usr/include/boost/geometry/strategies/agnostic/simplify_douglas_peucker.hpp #usr/include/boost/geometry/strategies/area.hpp +#usr/include/boost/geometry/strategies/azimuth.hpp +#usr/include/boost/geometry/strategies/buffer.hpp #usr/include/boost/geometry/strategies/cartesian #usr/include/boost/geometry/strategies/cartesian/area_surveyor.hpp +#usr/include/boost/geometry/strategies/cartesian/azimuth.hpp #usr/include/boost/geometry/strategies/cartesian/box_in_box.hpp -#usr/include/boost/geometry/strategies/cartesian/cart_intersect.hpp +#usr/include/boost/geometry/strategies/cartesian/buffer_end_flat.hpp +#usr/include/boost/geometry/strategies/cartesian/buffer_end_round.hpp +#usr/include/boost/geometry/strategies/cartesian/buffer_join_miter.hpp +#usr/include/boost/geometry/strategies/cartesian/buffer_join_round.hpp +#usr/include/boost/geometry/strategies/cartesian/buffer_join_round_by_divide.hpp +#usr/include/boost/geometry/strategies/cartesian/buffer_point_circle.hpp +#usr/include/boost/geometry/strategies/cartesian/buffer_point_square.hpp +#usr/include/boost/geometry/strategies/cartesian/buffer_side_straight.hpp +#usr/include/boost/geometry/strategies/cartesian/centroid_average.hpp #usr/include/boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp #usr/include/boost/geometry/strategies/cartesian/centroid_weighted_length.hpp +#usr/include/boost/geometry/strategies/cartesian/disjoint_segment_box.hpp #usr/include/boost/geometry/strategies/cartesian/distance_projected_point.hpp +#usr/include/boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp #usr/include/boost/geometry/strategies/cartesian/distance_pythagoras.hpp +#usr/include/boost/geometry/strategies/cartesian/distance_pythagoras_box_box.hpp +#usr/include/boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp +#usr/include/boost/geometry/strategies/cartesian/envelope_segment.hpp +#usr/include/boost/geometry/strategies/cartesian/intersection.hpp #usr/include/boost/geometry/strategies/cartesian/point_in_box.hpp #usr/include/boost/geometry/strategies/cartesian/point_in_poly_crossings_multiply.hpp #usr/include/boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp #usr/include/boost/geometry/strategies/cartesian/side_by_triangle.hpp +#usr/include/boost/geometry/strategies/cartesian/side_of_intersection.hpp #usr/include/boost/geometry/strategies/centroid.hpp +#usr/include/boost/geometry/strategies/comparable_distance_result.hpp #usr/include/boost/geometry/strategies/compare.hpp #usr/include/boost/geometry/strategies/concepts #usr/include/boost/geometry/strategies/concepts/area_concept.hpp @@ -3052,18 +4123,45 @@ #usr/include/boost/geometry/strategies/convex_hull.hpp #usr/include/boost/geometry/strategies/covered_by.hpp #usr/include/boost/geometry/strategies/default_area_result.hpp +#usr/include/boost/geometry/strategies/default_comparable_distance_result.hpp #usr/include/boost/geometry/strategies/default_distance_result.hpp #usr/include/boost/geometry/strategies/default_length_result.hpp +#usr/include/boost/geometry/strategies/default_strategy.hpp +#usr/include/boost/geometry/strategies/disjoint.hpp #usr/include/boost/geometry/strategies/distance.hpp +#usr/include/boost/geometry/strategies/distance_result.hpp +#usr/include/boost/geometry/strategies/envelope.hpp +#usr/include/boost/geometry/strategies/geographic +#usr/include/boost/geometry/strategies/geographic/area.hpp +#usr/include/boost/geometry/strategies/geographic/azimuth.hpp +#usr/include/boost/geometry/strategies/geographic/distance.hpp +#usr/include/boost/geometry/strategies/geographic/distance_andoyer.hpp +#usr/include/boost/geometry/strategies/geographic/distance_thomas.hpp +#usr/include/boost/geometry/strategies/geographic/distance_vincenty.hpp +#usr/include/boost/geometry/strategies/geographic/envelope_segment.hpp +#usr/include/boost/geometry/strategies/geographic/intersection.hpp +#usr/include/boost/geometry/strategies/geographic/intersection_elliptic.hpp +#usr/include/boost/geometry/strategies/geographic/mapping_ssf.hpp +#usr/include/boost/geometry/strategies/geographic/parameters.hpp +#usr/include/boost/geometry/strategies/geographic/side.hpp +#usr/include/boost/geometry/strategies/geographic/side_andoyer.hpp +#usr/include/boost/geometry/strategies/geographic/side_thomas.hpp +#usr/include/boost/geometry/strategies/geographic/side_vincenty.hpp #usr/include/boost/geometry/strategies/intersection.hpp #usr/include/boost/geometry/strategies/intersection_result.hpp +#usr/include/boost/geometry/strategies/intersection_strategies.hpp +#usr/include/boost/geometry/strategies/relate.hpp #usr/include/boost/geometry/strategies/side.hpp #usr/include/boost/geometry/strategies/side_info.hpp #usr/include/boost/geometry/strategies/spherical -#usr/include/boost/geometry/strategies/spherical/area_huiller.hpp +#usr/include/boost/geometry/strategies/spherical/area.hpp +#usr/include/boost/geometry/strategies/spherical/azimuth.hpp #usr/include/boost/geometry/strategies/spherical/compare_circular.hpp #usr/include/boost/geometry/strategies/spherical/distance_cross_track.hpp +#usr/include/boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp #usr/include/boost/geometry/strategies/spherical/distance_haversine.hpp +#usr/include/boost/geometry/strategies/spherical/envelope_segment.hpp +#usr/include/boost/geometry/strategies/spherical/intersection.hpp #usr/include/boost/geometry/strategies/spherical/side_by_cross_track.hpp #usr/include/boost/geometry/strategies/spherical/ssf.hpp #usr/include/boost/geometry/strategies/strategies.hpp @@ -3080,22 +4178,40 @@ #usr/include/boost/geometry/util/bare_type.hpp #usr/include/boost/geometry/util/calculation_type.hpp #usr/include/boost/geometry/util/closure_as_bool.hpp +#usr/include/boost/geometry/util/combine_if.hpp +#usr/include/boost/geometry/util/compress_variant.hpp +#usr/include/boost/geometry/util/condition.hpp #usr/include/boost/geometry/util/coordinate_cast.hpp #usr/include/boost/geometry/util/for_each_coordinate.hpp +#usr/include/boost/geometry/util/has_infinite_coordinate.hpp +#usr/include/boost/geometry/util/has_nan_coordinate.hpp +#usr/include/boost/geometry/util/has_non_finite_coordinate.hpp #usr/include/boost/geometry/util/math.hpp +#usr/include/boost/geometry/util/normalize_spheroidal_box_coordinates.hpp +#usr/include/boost/geometry/util/normalize_spheroidal_coordinates.hpp #usr/include/boost/geometry/util/order_as_direction.hpp #usr/include/boost/geometry/util/parameter_type_of.hpp #usr/include/boost/geometry/util/promote_floating_point.hpp +#usr/include/boost/geometry/util/promote_integral.hpp +#usr/include/boost/geometry/util/range.hpp #usr/include/boost/geometry/util/rational.hpp #usr/include/boost/geometry/util/select_calculation_type.hpp #usr/include/boost/geometry/util/select_coordinate_type.hpp #usr/include/boost/geometry/util/select_most_precise.hpp +#usr/include/boost/geometry/util/transform_variant.hpp #usr/include/boost/geometry/views #usr/include/boost/geometry/views/box_view.hpp #usr/include/boost/geometry/views/closeable_view.hpp #usr/include/boost/geometry/views/detail +#usr/include/boost/geometry/views/detail/boundary_view +#usr/include/boost/geometry/views/detail/boundary_view.hpp +#usr/include/boost/geometry/views/detail/boundary_view/implementation.hpp +#usr/include/boost/geometry/views/detail/boundary_view/interface.hpp +#usr/include/boost/geometry/views/detail/indexed_point_view.hpp +#usr/include/boost/geometry/views/detail/normalized_view.hpp #usr/include/boost/geometry/views/detail/points_view.hpp #usr/include/boost/geometry/views/detail/range_type.hpp +#usr/include/boost/geometry/views/detail/two_dimensional_view.hpp #usr/include/boost/geometry/views/identity_view.hpp #usr/include/boost/geometry/views/reversible_view.hpp #usr/include/boost/geometry/views/segment_view.hpp @@ -3400,6 +4516,473 @@ #usr/include/boost/graph/visitors.hpp #usr/include/boost/graph/wavefront.hpp #usr/include/boost/graph/write_dimacs.hpp +#usr/include/boost/hana +#usr/include/boost/hana.hpp +#usr/include/boost/hana/accessors.hpp +#usr/include/boost/hana/adapt_adt.hpp +#usr/include/boost/hana/adapt_struct.hpp +#usr/include/boost/hana/adjust.hpp +#usr/include/boost/hana/adjust_if.hpp +#usr/include/boost/hana/all.hpp +#usr/include/boost/hana/all_of.hpp +#usr/include/boost/hana/and.hpp +#usr/include/boost/hana/any.hpp +#usr/include/boost/hana/any_of.hpp +#usr/include/boost/hana/ap.hpp +#usr/include/boost/hana/append.hpp +#usr/include/boost/hana/assert.hpp +#usr/include/boost/hana/at.hpp +#usr/include/boost/hana/at_key.hpp +#usr/include/boost/hana/back.hpp +#usr/include/boost/hana/basic_tuple.hpp +#usr/include/boost/hana/bool.hpp +#usr/include/boost/hana/cartesian_product.hpp +#usr/include/boost/hana/chain.hpp +#usr/include/boost/hana/comparing.hpp +#usr/include/boost/hana/concat.hpp +#usr/include/boost/hana/concept +#usr/include/boost/hana/concept.hpp +#usr/include/boost/hana/concept/applicative.hpp +#usr/include/boost/hana/concept/comonad.hpp +#usr/include/boost/hana/concept/comparable.hpp +#usr/include/boost/hana/concept/constant.hpp +#usr/include/boost/hana/concept/euclidean_ring.hpp +#usr/include/boost/hana/concept/foldable.hpp +#usr/include/boost/hana/concept/functor.hpp +#usr/include/boost/hana/concept/group.hpp +#usr/include/boost/hana/concept/hashable.hpp +#usr/include/boost/hana/concept/integral_constant.hpp +#usr/include/boost/hana/concept/iterable.hpp +#usr/include/boost/hana/concept/logical.hpp +#usr/include/boost/hana/concept/metafunction.hpp +#usr/include/boost/hana/concept/monad.hpp +#usr/include/boost/hana/concept/monad_plus.hpp +#usr/include/boost/hana/concept/monoid.hpp +#usr/include/boost/hana/concept/orderable.hpp +#usr/include/boost/hana/concept/product.hpp +#usr/include/boost/hana/concept/ring.hpp +#usr/include/boost/hana/concept/searchable.hpp +#usr/include/boost/hana/concept/sequence.hpp +#usr/include/boost/hana/concept/struct.hpp +#usr/include/boost/hana/config.hpp +#usr/include/boost/hana/contains.hpp +#usr/include/boost/hana/core +#usr/include/boost/hana/core.hpp +#usr/include/boost/hana/core/common.hpp +#usr/include/boost/hana/core/default.hpp +#usr/include/boost/hana/core/dispatch.hpp +#usr/include/boost/hana/core/is_a.hpp +#usr/include/boost/hana/core/make.hpp +#usr/include/boost/hana/core/tag_of.hpp +#usr/include/boost/hana/core/to.hpp +#usr/include/boost/hana/core/when.hpp +#usr/include/boost/hana/count.hpp +#usr/include/boost/hana/count_if.hpp +#usr/include/boost/hana/cycle.hpp +#usr/include/boost/hana/define_struct.hpp +#usr/include/boost/hana/detail +#usr/include/boost/hana/detail/algorithm.hpp +#usr/include/boost/hana/detail/any_of.hpp +#usr/include/boost/hana/detail/array.hpp +#usr/include/boost/hana/detail/canonical_constant.hpp +#usr/include/boost/hana/detail/concepts.hpp +#usr/include/boost/hana/detail/create.hpp +#usr/include/boost/hana/detail/decay.hpp +#usr/include/boost/hana/detail/dispatch_if.hpp +#usr/include/boost/hana/detail/ebo.hpp +#usr/include/boost/hana/detail/fast_and.hpp +#usr/include/boost/hana/detail/first_unsatisfied_index.hpp +#usr/include/boost/hana/detail/has_common_embedding.hpp +#usr/include/boost/hana/detail/has_duplicates.hpp +#usr/include/boost/hana/detail/hash_table.hpp +#usr/include/boost/hana/detail/index_if.hpp +#usr/include/boost/hana/detail/integral_constant.hpp +#usr/include/boost/hana/detail/intrinsics.hpp +#usr/include/boost/hana/detail/nested_by.hpp +#usr/include/boost/hana/detail/nested_by_fwd.hpp +#usr/include/boost/hana/detail/nested_than.hpp +#usr/include/boost/hana/detail/nested_than_fwd.hpp +#usr/include/boost/hana/detail/nested_to.hpp +#usr/include/boost/hana/detail/nested_to_fwd.hpp +#usr/include/boost/hana/detail/operators +#usr/include/boost/hana/detail/operators/adl.hpp +#usr/include/boost/hana/detail/operators/arithmetic.hpp +#usr/include/boost/hana/detail/operators/comparable.hpp +#usr/include/boost/hana/detail/operators/iterable.hpp +#usr/include/boost/hana/detail/operators/logical.hpp +#usr/include/boost/hana/detail/operators/monad.hpp +#usr/include/boost/hana/detail/operators/orderable.hpp +#usr/include/boost/hana/detail/operators/searchable.hpp +#usr/include/boost/hana/detail/preprocessor.hpp +#usr/include/boost/hana/detail/std_common_type.hpp +#usr/include/boost/hana/detail/struct_macros.erb.hpp +#usr/include/boost/hana/detail/struct_macros.hpp +#usr/include/boost/hana/detail/type_at.hpp +#usr/include/boost/hana/detail/type_foldl1.hpp +#usr/include/boost/hana/detail/type_foldr1.hpp +#usr/include/boost/hana/detail/unpack_flatten.hpp +#usr/include/boost/hana/detail/variadic +#usr/include/boost/hana/detail/variadic/at.hpp +#usr/include/boost/hana/detail/variadic/drop_into.hpp +#usr/include/boost/hana/detail/variadic/foldl1.hpp +#usr/include/boost/hana/detail/variadic/foldr1.hpp +#usr/include/boost/hana/detail/variadic/reverse_apply +#usr/include/boost/hana/detail/variadic/reverse_apply.hpp +#usr/include/boost/hana/detail/variadic/reverse_apply/flat.hpp +#usr/include/boost/hana/detail/variadic/reverse_apply/unrolled.hpp +#usr/include/boost/hana/detail/variadic/split_at.hpp +#usr/include/boost/hana/detail/variadic/take.hpp +#usr/include/boost/hana/detail/void_t.hpp +#usr/include/boost/hana/detail/wrong.hpp +#usr/include/boost/hana/difference.hpp +#usr/include/boost/hana/div.hpp +#usr/include/boost/hana/drop_back.hpp +#usr/include/boost/hana/drop_front.hpp +#usr/include/boost/hana/drop_front_exactly.hpp +#usr/include/boost/hana/drop_while.hpp +#usr/include/boost/hana/duplicate.hpp +#usr/include/boost/hana/empty.hpp +#usr/include/boost/hana/equal.hpp +#usr/include/boost/hana/erase_key.hpp +#usr/include/boost/hana/eval.hpp +#usr/include/boost/hana/eval_if.hpp +#usr/include/boost/hana/experimental +#usr/include/boost/hana/experimental/printable.hpp +#usr/include/boost/hana/experimental/type_name.hpp +#usr/include/boost/hana/experimental/types.hpp +#usr/include/boost/hana/experimental/view.hpp +#usr/include/boost/hana/ext +#usr/include/boost/hana/ext/boost +#usr/include/boost/hana/ext/boost.hpp +#usr/include/boost/hana/ext/boost/fusion +#usr/include/boost/hana/ext/boost/fusion.hpp +#usr/include/boost/hana/ext/boost/fusion/deque.hpp +#usr/include/boost/hana/ext/boost/fusion/detail +#usr/include/boost/hana/ext/boost/fusion/detail/common.hpp +#usr/include/boost/hana/ext/boost/fusion/list.hpp +#usr/include/boost/hana/ext/boost/fusion/tuple.hpp +#usr/include/boost/hana/ext/boost/fusion/vector.hpp +#usr/include/boost/hana/ext/boost/mpl +#usr/include/boost/hana/ext/boost/mpl.hpp +#usr/include/boost/hana/ext/boost/mpl/integral_c.hpp +#usr/include/boost/hana/ext/boost/mpl/list.hpp +#usr/include/boost/hana/ext/boost/mpl/vector.hpp +#usr/include/boost/hana/ext/boost/tuple.hpp +#usr/include/boost/hana/ext/std +#usr/include/boost/hana/ext/std.hpp +#usr/include/boost/hana/ext/std/array.hpp +#usr/include/boost/hana/ext/std/integer_sequence.hpp +#usr/include/boost/hana/ext/std/integral_constant.hpp +#usr/include/boost/hana/ext/std/pair.hpp +#usr/include/boost/hana/ext/std/ratio.hpp +#usr/include/boost/hana/ext/std/tuple.hpp +#usr/include/boost/hana/ext/std/vector.hpp +#usr/include/boost/hana/extend.hpp +#usr/include/boost/hana/extract.hpp +#usr/include/boost/hana/fill.hpp +#usr/include/boost/hana/filter.hpp +#usr/include/boost/hana/find.hpp +#usr/include/boost/hana/find_if.hpp +#usr/include/boost/hana/first.hpp +#usr/include/boost/hana/flatten.hpp +#usr/include/boost/hana/fold.hpp +#usr/include/boost/hana/fold_left.hpp +#usr/include/boost/hana/fold_right.hpp +#usr/include/boost/hana/for_each.hpp +#usr/include/boost/hana/front.hpp +#usr/include/boost/hana/functional +#usr/include/boost/hana/functional.hpp +#usr/include/boost/hana/functional/always.hpp +#usr/include/boost/hana/functional/apply.hpp +#usr/include/boost/hana/functional/arg.hpp +#usr/include/boost/hana/functional/capture.hpp +#usr/include/boost/hana/functional/compose.hpp +#usr/include/boost/hana/functional/curry.hpp +#usr/include/boost/hana/functional/demux.hpp +#usr/include/boost/hana/functional/fix.hpp +#usr/include/boost/hana/functional/flip.hpp +#usr/include/boost/hana/functional/id.hpp +#usr/include/boost/hana/functional/infix.hpp +#usr/include/boost/hana/functional/iterate.hpp +#usr/include/boost/hana/functional/lockstep.hpp +#usr/include/boost/hana/functional/on.hpp +#usr/include/boost/hana/functional/overload.hpp +#usr/include/boost/hana/functional/overload_linearly.hpp +#usr/include/boost/hana/functional/partial.hpp +#usr/include/boost/hana/functional/placeholder.hpp +#usr/include/boost/hana/functional/reverse_partial.hpp +#usr/include/boost/hana/fuse.hpp +#usr/include/boost/hana/fwd +#usr/include/boost/hana/fwd/accessors.hpp +#usr/include/boost/hana/fwd/adapt_adt.hpp +#usr/include/boost/hana/fwd/adapt_struct.hpp +#usr/include/boost/hana/fwd/adjust.hpp +#usr/include/boost/hana/fwd/adjust_if.hpp +#usr/include/boost/hana/fwd/all.hpp +#usr/include/boost/hana/fwd/all_of.hpp +#usr/include/boost/hana/fwd/and.hpp +#usr/include/boost/hana/fwd/any.hpp +#usr/include/boost/hana/fwd/any_of.hpp +#usr/include/boost/hana/fwd/ap.hpp +#usr/include/boost/hana/fwd/append.hpp +#usr/include/boost/hana/fwd/at.hpp +#usr/include/boost/hana/fwd/at_key.hpp +#usr/include/boost/hana/fwd/back.hpp +#usr/include/boost/hana/fwd/basic_tuple.hpp +#usr/include/boost/hana/fwd/bool.hpp +#usr/include/boost/hana/fwd/cartesian_product.hpp +#usr/include/boost/hana/fwd/chain.hpp +#usr/include/boost/hana/fwd/comparing.hpp +#usr/include/boost/hana/fwd/concat.hpp +#usr/include/boost/hana/fwd/concept +#usr/include/boost/hana/fwd/concept/applicative.hpp +#usr/include/boost/hana/fwd/concept/comonad.hpp +#usr/include/boost/hana/fwd/concept/comparable.hpp +#usr/include/boost/hana/fwd/concept/constant.hpp +#usr/include/boost/hana/fwd/concept/euclidean_ring.hpp +#usr/include/boost/hana/fwd/concept/foldable.hpp +#usr/include/boost/hana/fwd/concept/functor.hpp +#usr/include/boost/hana/fwd/concept/group.hpp +#usr/include/boost/hana/fwd/concept/hashable.hpp +#usr/include/boost/hana/fwd/concept/integral_constant.hpp +#usr/include/boost/hana/fwd/concept/iterable.hpp +#usr/include/boost/hana/fwd/concept/logical.hpp +#usr/include/boost/hana/fwd/concept/metafunction.hpp +#usr/include/boost/hana/fwd/concept/monad.hpp +#usr/include/boost/hana/fwd/concept/monad_plus.hpp +#usr/include/boost/hana/fwd/concept/monoid.hpp +#usr/include/boost/hana/fwd/concept/orderable.hpp +#usr/include/boost/hana/fwd/concept/product.hpp +#usr/include/boost/hana/fwd/concept/ring.hpp +#usr/include/boost/hana/fwd/concept/searchable.hpp +#usr/include/boost/hana/fwd/concept/sequence.hpp +#usr/include/boost/hana/fwd/concept/struct.hpp +#usr/include/boost/hana/fwd/contains.hpp +#usr/include/boost/hana/fwd/core +#usr/include/boost/hana/fwd/core.hpp +#usr/include/boost/hana/fwd/core/common.hpp +#usr/include/boost/hana/fwd/core/default.hpp +#usr/include/boost/hana/fwd/core/is_a.hpp +#usr/include/boost/hana/fwd/core/make.hpp +#usr/include/boost/hana/fwd/core/tag_of.hpp +#usr/include/boost/hana/fwd/core/to.hpp +#usr/include/boost/hana/fwd/core/when.hpp +#usr/include/boost/hana/fwd/count.hpp +#usr/include/boost/hana/fwd/count_if.hpp +#usr/include/boost/hana/fwd/cycle.hpp +#usr/include/boost/hana/fwd/define_struct.hpp +#usr/include/boost/hana/fwd/difference.hpp +#usr/include/boost/hana/fwd/div.hpp +#usr/include/boost/hana/fwd/drop_back.hpp +#usr/include/boost/hana/fwd/drop_front.hpp +#usr/include/boost/hana/fwd/drop_front_exactly.hpp +#usr/include/boost/hana/fwd/drop_while.hpp +#usr/include/boost/hana/fwd/duplicate.hpp +#usr/include/boost/hana/fwd/empty.hpp +#usr/include/boost/hana/fwd/equal.hpp +#usr/include/boost/hana/fwd/erase_key.hpp +#usr/include/boost/hana/fwd/eval.hpp +#usr/include/boost/hana/fwd/eval_if.hpp +#usr/include/boost/hana/fwd/extend.hpp +#usr/include/boost/hana/fwd/extract.hpp +#usr/include/boost/hana/fwd/fill.hpp +#usr/include/boost/hana/fwd/filter.hpp +#usr/include/boost/hana/fwd/find.hpp +#usr/include/boost/hana/fwd/find_if.hpp +#usr/include/boost/hana/fwd/first.hpp +#usr/include/boost/hana/fwd/flatten.hpp +#usr/include/boost/hana/fwd/fold.hpp +#usr/include/boost/hana/fwd/fold_left.hpp +#usr/include/boost/hana/fwd/fold_right.hpp +#usr/include/boost/hana/fwd/for_each.hpp +#usr/include/boost/hana/fwd/front.hpp +#usr/include/boost/hana/fwd/fuse.hpp +#usr/include/boost/hana/fwd/greater.hpp +#usr/include/boost/hana/fwd/greater_equal.hpp +#usr/include/boost/hana/fwd/group.hpp +#usr/include/boost/hana/fwd/hash.hpp +#usr/include/boost/hana/fwd/if.hpp +#usr/include/boost/hana/fwd/insert.hpp +#usr/include/boost/hana/fwd/insert_range.hpp +#usr/include/boost/hana/fwd/integral_constant.hpp +#usr/include/boost/hana/fwd/intersection.hpp +#usr/include/boost/hana/fwd/intersperse.hpp +#usr/include/boost/hana/fwd/is_disjoint.hpp +#usr/include/boost/hana/fwd/is_empty.hpp +#usr/include/boost/hana/fwd/is_subset.hpp +#usr/include/boost/hana/fwd/keys.hpp +#usr/include/boost/hana/fwd/lazy.hpp +#usr/include/boost/hana/fwd/length.hpp +#usr/include/boost/hana/fwd/less.hpp +#usr/include/boost/hana/fwd/less_equal.hpp +#usr/include/boost/hana/fwd/lexicographical_compare.hpp +#usr/include/boost/hana/fwd/lift.hpp +#usr/include/boost/hana/fwd/map.hpp +#usr/include/boost/hana/fwd/max.hpp +#usr/include/boost/hana/fwd/maximum.hpp +#usr/include/boost/hana/fwd/members.hpp +#usr/include/boost/hana/fwd/min.hpp +#usr/include/boost/hana/fwd/minimum.hpp +#usr/include/boost/hana/fwd/minus.hpp +#usr/include/boost/hana/fwd/mod.hpp +#usr/include/boost/hana/fwd/monadic_compose.hpp +#usr/include/boost/hana/fwd/monadic_fold_left.hpp +#usr/include/boost/hana/fwd/monadic_fold_right.hpp +#usr/include/boost/hana/fwd/mult.hpp +#usr/include/boost/hana/fwd/negate.hpp +#usr/include/boost/hana/fwd/none.hpp +#usr/include/boost/hana/fwd/none_of.hpp +#usr/include/boost/hana/fwd/not.hpp +#usr/include/boost/hana/fwd/not_equal.hpp +#usr/include/boost/hana/fwd/one.hpp +#usr/include/boost/hana/fwd/optional.hpp +#usr/include/boost/hana/fwd/or.hpp +#usr/include/boost/hana/fwd/ordering.hpp +#usr/include/boost/hana/fwd/pair.hpp +#usr/include/boost/hana/fwd/partition.hpp +#usr/include/boost/hana/fwd/permutations.hpp +#usr/include/boost/hana/fwd/plus.hpp +#usr/include/boost/hana/fwd/power.hpp +#usr/include/boost/hana/fwd/prefix.hpp +#usr/include/boost/hana/fwd/prepend.hpp +#usr/include/boost/hana/fwd/product.hpp +#usr/include/boost/hana/fwd/range.hpp +#usr/include/boost/hana/fwd/remove.hpp +#usr/include/boost/hana/fwd/remove_at.hpp +#usr/include/boost/hana/fwd/remove_if.hpp +#usr/include/boost/hana/fwd/remove_range.hpp +#usr/include/boost/hana/fwd/repeat.hpp +#usr/include/boost/hana/fwd/replace.hpp +#usr/include/boost/hana/fwd/replace_if.hpp +#usr/include/boost/hana/fwd/replicate.hpp +#usr/include/boost/hana/fwd/reverse.hpp +#usr/include/boost/hana/fwd/reverse_fold.hpp +#usr/include/boost/hana/fwd/scan_left.hpp +#usr/include/boost/hana/fwd/scan_right.hpp +#usr/include/boost/hana/fwd/second.hpp +#usr/include/boost/hana/fwd/set.hpp +#usr/include/boost/hana/fwd/size.hpp +#usr/include/boost/hana/fwd/slice.hpp +#usr/include/boost/hana/fwd/sort.hpp +#usr/include/boost/hana/fwd/span.hpp +#usr/include/boost/hana/fwd/string.hpp +#usr/include/boost/hana/fwd/suffix.hpp +#usr/include/boost/hana/fwd/sum.hpp +#usr/include/boost/hana/fwd/symmetric_difference.hpp +#usr/include/boost/hana/fwd/take_back.hpp +#usr/include/boost/hana/fwd/take_front.hpp +#usr/include/boost/hana/fwd/take_while.hpp +#usr/include/boost/hana/fwd/tap.hpp +#usr/include/boost/hana/fwd/then.hpp +#usr/include/boost/hana/fwd/transform.hpp +#usr/include/boost/hana/fwd/tuple.hpp +#usr/include/boost/hana/fwd/type.hpp +#usr/include/boost/hana/fwd/unfold_left.hpp +#usr/include/boost/hana/fwd/unfold_right.hpp +#usr/include/boost/hana/fwd/union.hpp +#usr/include/boost/hana/fwd/unique.hpp +#usr/include/boost/hana/fwd/unpack.hpp +#usr/include/boost/hana/fwd/value.hpp +#usr/include/boost/hana/fwd/while.hpp +#usr/include/boost/hana/fwd/zero.hpp +#usr/include/boost/hana/fwd/zip.hpp +#usr/include/boost/hana/fwd/zip_shortest.hpp +#usr/include/boost/hana/fwd/zip_shortest_with.hpp +#usr/include/boost/hana/fwd/zip_with.hpp +#usr/include/boost/hana/greater.hpp +#usr/include/boost/hana/greater_equal.hpp +#usr/include/boost/hana/group.hpp +#usr/include/boost/hana/hash.hpp +#usr/include/boost/hana/if.hpp +#usr/include/boost/hana/insert.hpp +#usr/include/boost/hana/insert_range.hpp +#usr/include/boost/hana/integral_constant.hpp +#usr/include/boost/hana/intersection.hpp +#usr/include/boost/hana/intersperse.hpp +#usr/include/boost/hana/is_disjoint.hpp +#usr/include/boost/hana/is_empty.hpp +#usr/include/boost/hana/is_subset.hpp +#usr/include/boost/hana/keys.hpp +#usr/include/boost/hana/lazy.hpp +#usr/include/boost/hana/length.hpp +#usr/include/boost/hana/less.hpp +#usr/include/boost/hana/less_equal.hpp +#usr/include/boost/hana/lexicographical_compare.hpp +#usr/include/boost/hana/lift.hpp +#usr/include/boost/hana/map.hpp +#usr/include/boost/hana/max.hpp +#usr/include/boost/hana/maximum.hpp +#usr/include/boost/hana/members.hpp +#usr/include/boost/hana/min.hpp +#usr/include/boost/hana/minimum.hpp +#usr/include/boost/hana/minus.hpp +#usr/include/boost/hana/mod.hpp +#usr/include/boost/hana/monadic_compose.hpp +#usr/include/boost/hana/monadic_fold_left.hpp +#usr/include/boost/hana/monadic_fold_right.hpp +#usr/include/boost/hana/mult.hpp +#usr/include/boost/hana/negate.hpp +#usr/include/boost/hana/none.hpp +#usr/include/boost/hana/none_of.hpp +#usr/include/boost/hana/not.hpp +#usr/include/boost/hana/not_equal.hpp +#usr/include/boost/hana/one.hpp +#usr/include/boost/hana/optional.hpp +#usr/include/boost/hana/or.hpp +#usr/include/boost/hana/ordering.hpp +#usr/include/boost/hana/pair.hpp +#usr/include/boost/hana/partition.hpp +#usr/include/boost/hana/permutations.hpp +#usr/include/boost/hana/plus.hpp +#usr/include/boost/hana/power.hpp +#usr/include/boost/hana/prefix.hpp +#usr/include/boost/hana/prepend.hpp +#usr/include/boost/hana/product.hpp +#usr/include/boost/hana/range.hpp +#usr/include/boost/hana/remove.hpp +#usr/include/boost/hana/remove_at.hpp +#usr/include/boost/hana/remove_if.hpp +#usr/include/boost/hana/remove_range.hpp +#usr/include/boost/hana/repeat.hpp +#usr/include/boost/hana/replace.hpp +#usr/include/boost/hana/replace_if.hpp +#usr/include/boost/hana/replicate.hpp +#usr/include/boost/hana/reverse.hpp +#usr/include/boost/hana/reverse_fold.hpp +#usr/include/boost/hana/scan_left.hpp +#usr/include/boost/hana/scan_right.hpp +#usr/include/boost/hana/second.hpp +#usr/include/boost/hana/set.hpp +#usr/include/boost/hana/size.hpp +#usr/include/boost/hana/slice.hpp +#usr/include/boost/hana/sort.hpp +#usr/include/boost/hana/span.hpp +#usr/include/boost/hana/string.hpp +#usr/include/boost/hana/suffix.hpp +#usr/include/boost/hana/sum.hpp +#usr/include/boost/hana/symmetric_difference.hpp +#usr/include/boost/hana/take_back.hpp +#usr/include/boost/hana/take_front.hpp +#usr/include/boost/hana/take_while.hpp +#usr/include/boost/hana/tap.hpp +#usr/include/boost/hana/then.hpp +#usr/include/boost/hana/traits.hpp +#usr/include/boost/hana/transform.hpp +#usr/include/boost/hana/tuple.hpp +#usr/include/boost/hana/type.hpp +#usr/include/boost/hana/unfold_left.hpp +#usr/include/boost/hana/unfold_right.hpp +#usr/include/boost/hana/union.hpp +#usr/include/boost/hana/unique.hpp +#usr/include/boost/hana/unpack.hpp +#usr/include/boost/hana/value.hpp +#usr/include/boost/hana/version.hpp +#usr/include/boost/hana/while.hpp +#usr/include/boost/hana/zero.hpp +#usr/include/boost/hana/zip.hpp +#usr/include/boost/hana/zip_shortest.hpp +#usr/include/boost/hana/zip_shortest_with.hpp +#usr/include/boost/hana/zip_with.hpp #usr/include/boost/heap #usr/include/boost/heap/binomial_heap.hpp #usr/include/boost/heap/d_ary_heap.hpp @@ -3540,6 +5123,10 @@ #usr/include/boost/indirect_reference.hpp #usr/include/boost/integer #usr/include/boost/integer.hpp +#usr/include/boost/integer/common_factor.hpp +#usr/include/boost/integer/common_factor_ct.hpp +#usr/include/boost/integer/common_factor_rt.hpp +#usr/include/boost/integer/integer_log2.hpp #usr/include/boost/integer/integer_mask.hpp #usr/include/boost/integer/static_log2.hpp #usr/include/boost/integer/static_min_max.hpp @@ -3598,18 +5185,19 @@ #usr/include/boost/interprocess/detail/min_max.hpp #usr/include/boost/interprocess/detail/move.hpp #usr/include/boost/interprocess/detail/mpl.hpp -#usr/include/boost/interprocess/detail/multi_segment_services.hpp #usr/include/boost/interprocess/detail/named_proxy.hpp +#usr/include/boost/interprocess/detail/nothrow.hpp #usr/include/boost/interprocess/detail/os_file_functions.hpp #usr/include/boost/interprocess/detail/os_thread_functions.hpp #usr/include/boost/interprocess/detail/pointer_type.hpp #usr/include/boost/interprocess/detail/portable_intermodule_singleton.hpp #usr/include/boost/interprocess/detail/posix_time_types_wrk.hpp -#usr/include/boost/interprocess/detail/preprocessor.hpp #usr/include/boost/interprocess/detail/ptime_wrk.hpp #usr/include/boost/interprocess/detail/robust_emulation.hpp #usr/include/boost/interprocess/detail/segment_manager_helper.hpp -#usr/include/boost/interprocess/detail/tmp_dir_helpers.hpp +#usr/include/boost/interprocess/detail/shared_dir_helpers.hpp +#usr/include/boost/interprocess/detail/simple_swap.hpp +#usr/include/boost/interprocess/detail/std_fwd.hpp #usr/include/boost/interprocess/detail/transform_iterator.hpp #usr/include/boost/interprocess/detail/type_traits.hpp #usr/include/boost/interprocess/detail/utilities.hpp @@ -3617,7 +5205,6 @@ #usr/include/boost/interprocess/detail/win32_api.hpp #usr/include/boost/interprocess/detail/windows_intermodule_singleton.hpp #usr/include/boost/interprocess/detail/workaround.hpp -#usr/include/boost/interprocess/detail/xsi_shared_memory_device.hpp #usr/include/boost/interprocess/detail/xsi_shared_memory_file_wrapper.hpp #usr/include/boost/interprocess/errors.hpp #usr/include/boost/interprocess/exceptions.hpp @@ -3642,8 +5229,6 @@ #usr/include/boost/interprocess/mem_algo #usr/include/boost/interprocess/mem_algo/detail #usr/include/boost/interprocess/mem_algo/detail/mem_algo_common.hpp -#usr/include/boost/interprocess/mem_algo/detail/multi_simple_seq_fit.hpp -#usr/include/boost/interprocess/mem_algo/detail/multi_simple_seq_fit_impl.hpp #usr/include/boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp #usr/include/boost/interprocess/mem_algo/rbtree_best_fit.hpp #usr/include/boost/interprocess/mem_algo/simple_seq_fit.hpp @@ -3670,6 +5255,7 @@ #usr/include/boost/interprocess/streams/vectorstream.hpp #usr/include/boost/interprocess/sync #usr/include/boost/interprocess/sync/detail +#usr/include/boost/interprocess/sync/detail/common_algorithms.hpp #usr/include/boost/interprocess/sync/detail/condition_algorithm_8a.hpp #usr/include/boost/interprocess/sync/detail/condition_any_algorithm.hpp #usr/include/boost/interprocess/sync/detail/locks.hpp @@ -3733,10 +5319,7 @@ #usr/include/boost/interprocess/sync/windows/sync_utils.hpp #usr/include/boost/interprocess/sync/windows/winapi_mutex_wrapper.hpp #usr/include/boost/interprocess/sync/windows/winapi_semaphore_wrapper.hpp -#usr/include/boost/interprocess/sync/xsi -#usr/include/boost/interprocess/sync/xsi/advanced_xsi_semaphore.hpp -#usr/include/boost/interprocess/sync/xsi/simple_xsi_semaphore.hpp -#usr/include/boost/interprocess/sync/xsi/xsi_named_mutex.hpp +#usr/include/boost/interprocess/sync/windows/winapi_wrapper_common.hpp #usr/include/boost/interprocess/windows_shared_memory.hpp #usr/include/boost/interprocess/xsi_key.hpp #usr/include/boost/interprocess/xsi_shared_memory.hpp @@ -3754,29 +5337,55 @@ #usr/include/boost/intrusive/circular_slist_algorithms.hpp #usr/include/boost/intrusive/derivation_value_traits.hpp #usr/include/boost/intrusive/detail +#usr/include/boost/intrusive/detail/algo_type.hpp +#usr/include/boost/intrusive/detail/algorithm.hpp #usr/include/boost/intrusive/detail/any_node_and_algorithms.hpp +#usr/include/boost/intrusive/detail/array_initializer.hpp #usr/include/boost/intrusive/detail/assert.hpp #usr/include/boost/intrusive/detail/avltree_node.hpp -#usr/include/boost/intrusive/detail/clear_on_destructor_base.hpp +#usr/include/boost/intrusive/detail/bstree_algorithms_base.hpp #usr/include/boost/intrusive/detail/common_slist_algorithms.hpp #usr/include/boost/intrusive/detail/config_begin.hpp #usr/include/boost/intrusive/detail/config_end.hpp +#usr/include/boost/intrusive/detail/default_header_holder.hpp #usr/include/boost/intrusive/detail/ebo_functor_holder.hpp +#usr/include/boost/intrusive/detail/empty_node_checker.hpp +#usr/include/boost/intrusive/detail/equal_to_value.hpp +#usr/include/boost/intrusive/detail/exception_disposer.hpp #usr/include/boost/intrusive/detail/function_detector.hpp #usr/include/boost/intrusive/detail/generic_hook.hpp +#usr/include/boost/intrusive/detail/get_value_traits.hpp #usr/include/boost/intrusive/detail/has_member_function_callable_with.hpp #usr/include/boost/intrusive/detail/hashtable_node.hpp +#usr/include/boost/intrusive/detail/hook_traits.hpp +#usr/include/boost/intrusive/detail/iiterator.hpp #usr/include/boost/intrusive/detail/is_stateful_value_traits.hpp +#usr/include/boost/intrusive/detail/iterator.hpp +#usr/include/boost/intrusive/detail/key_nodeptr_comp.hpp +#usr/include/boost/intrusive/detail/list_iterator.hpp #usr/include/boost/intrusive/detail/list_node.hpp -#usr/include/boost/intrusive/detail/memory_util.hpp +#usr/include/boost/intrusive/detail/math.hpp +#usr/include/boost/intrusive/detail/minimal_less_equal_header.hpp +#usr/include/boost/intrusive/detail/minimal_pair_header.hpp #usr/include/boost/intrusive/detail/mpl.hpp +#usr/include/boost/intrusive/detail/node_cloner_disposer.hpp +#usr/include/boost/intrusive/detail/node_holder.hpp +#usr/include/boost/intrusive/detail/node_to_value.hpp #usr/include/boost/intrusive/detail/parent_from_member.hpp -#usr/include/boost/intrusive/detail/preprocessor.hpp +#usr/include/boost/intrusive/detail/pointer_element.hpp #usr/include/boost/intrusive/detail/rbtree_node.hpp +#usr/include/boost/intrusive/detail/reverse_iterator.hpp +#usr/include/boost/intrusive/detail/simple_disposers.hpp +#usr/include/boost/intrusive/detail/size_holder.hpp +#usr/include/boost/intrusive/detail/slist_iterator.hpp #usr/include/boost/intrusive/detail/slist_node.hpp +#usr/include/boost/intrusive/detail/std_fwd.hpp +#usr/include/boost/intrusive/detail/to_raw_pointer.hpp #usr/include/boost/intrusive/detail/transform_iterator.hpp +#usr/include/boost/intrusive/detail/tree_iterator.hpp #usr/include/boost/intrusive/detail/tree_node.hpp -#usr/include/boost/intrusive/detail/utilities.hpp +#usr/include/boost/intrusive/detail/tree_value_compare.hpp +#usr/include/boost/intrusive/detail/uncast.hpp #usr/include/boost/intrusive/detail/workaround.hpp #usr/include/boost/intrusive/hashtable.hpp #usr/include/boost/intrusive/intrusive_fwd.hpp @@ -3786,8 +5395,10 @@ #usr/include/boost/intrusive/list_hook.hpp #usr/include/boost/intrusive/member_value_traits.hpp #usr/include/boost/intrusive/options.hpp +#usr/include/boost/intrusive/pack_options.hpp #usr/include/boost/intrusive/parent_from_member.hpp #usr/include/boost/intrusive/pointer_plus_bits.hpp +#usr/include/boost/intrusive/pointer_rebind.hpp #usr/include/boost/intrusive/pointer_traits.hpp #usr/include/boost/intrusive/priority_compare.hpp #usr/include/boost/intrusive/rbtree.hpp @@ -3800,7 +5411,6 @@ #usr/include/boost/intrusive/slist.hpp #usr/include/boost/intrusive/slist_hook.hpp #usr/include/boost/intrusive/splay_set.hpp -#usr/include/boost/intrusive/splay_set_hook.hpp #usr/include/boost/intrusive/splaytree.hpp #usr/include/boost/intrusive/splaytree_algorithms.hpp #usr/include/boost/intrusive/treap.hpp @@ -3901,10 +5511,6 @@ #usr/include/boost/iostreams/detail/system_failure.hpp #usr/include/boost/iostreams/detail/template_params.hpp #usr/include/boost/iostreams/detail/translate_int_type.hpp -#usr/include/boost/iostreams/detail/vc6 -#usr/include/boost/iostreams/detail/vc6/close.hpp -#usr/include/boost/iostreams/detail/vc6/read.hpp -#usr/include/boost/iostreams/detail/vc6/write.hpp #usr/include/boost/iostreams/detail/wrap_unwrap.hpp #usr/include/boost/iostreams/device #usr/include/boost/iostreams/device/array.hpp @@ -3975,6 +5581,7 @@ #usr/include/boost/iterator/iterator_concepts.hpp #usr/include/boost/iterator/iterator_facade.hpp #usr/include/boost/iterator/iterator_traits.hpp +#usr/include/boost/iterator/minimum_category.hpp #usr/include/boost/iterator/new_iterator_tests.hpp #usr/include/boost/iterator/permutation_iterator.hpp #usr/include/boost/iterator/reverse_iterator.hpp @@ -4017,7 +5624,20 @@ #usr/include/boost/lambda/numeric.hpp #usr/include/boost/lambda/switch.hpp #usr/include/boost/last_value.hpp +#usr/include/boost/lexical_cast #usr/include/boost/lexical_cast.hpp +#usr/include/boost/lexical_cast/bad_lexical_cast.hpp +#usr/include/boost/lexical_cast/detail +#usr/include/boost/lexical_cast/detail/converter_lexical.hpp +#usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp +#usr/include/boost/lexical_cast/detail/converter_numeric.hpp +#usr/include/boost/lexical_cast/detail/inf_nan.hpp +#usr/include/boost/lexical_cast/detail/is_character.hpp +#usr/include/boost/lexical_cast/detail/lcast_char_constants.hpp +#usr/include/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +#usr/include/boost/lexical_cast/detail/widest_char.hpp +#usr/include/boost/lexical_cast/lexical_cast_old.hpp +#usr/include/boost/lexical_cast/try_lexical_convert.hpp #usr/include/boost/limits.hpp #usr/include/boost/local_function #usr/include/boost/local_function.hpp @@ -4104,6 +5724,7 @@ #usr/include/boost/locale/format.hpp #usr/include/boost/locale/formatting.hpp #usr/include/boost/locale/generator.hpp +#usr/include/boost/locale/generic_codecvt.hpp #usr/include/boost/locale/gnu_gettext.hpp #usr/include/boost/locale/hold_ptr.hpp #usr/include/boost/locale/info.hpp @@ -4111,11 +5732,11 @@ #usr/include/boost/locale/message.hpp #usr/include/boost/locale/time_zone.hpp #usr/include/boost/locale/utf.hpp +#usr/include/boost/locale/utf8_codecvt.hpp #usr/include/boost/locale/util.hpp #usr/include/boost/lockfree #usr/include/boost/lockfree/detail #usr/include/boost/lockfree/detail/atomic.hpp -#usr/include/boost/lockfree/detail/branch_hints.hpp #usr/include/boost/lockfree/detail/copy_payload.hpp #usr/include/boost/lockfree/detail/freelist.hpp #usr/include/boost/lockfree/detail/parameter.hpp @@ -4123,6 +5744,7 @@ #usr/include/boost/lockfree/detail/tagged_ptr.hpp #usr/include/boost/lockfree/detail/tagged_ptr_dcas.hpp #usr/include/boost/lockfree/detail/tagged_ptr_ptrcompression.hpp +#usr/include/boost/lockfree/lockfree_forward.hpp #usr/include/boost/lockfree/policies.hpp #usr/include/boost/lockfree/queue.hpp #usr/include/boost/lockfree/spsc_queue.hpp @@ -4162,15 +5784,18 @@ #usr/include/boost/log/core/record.hpp #usr/include/boost/log/core/record_view.hpp #usr/include/boost/log/detail +#usr/include/boost/log/detail/adaptive_mutex.hpp #usr/include/boost/log/detail/asio_fwd.hpp #usr/include/boost/log/detail/attachable_sstream_buf.hpp #usr/include/boost/log/detail/attr_output_impl.hpp #usr/include/boost/log/detail/attr_output_terminal.hpp #usr/include/boost/log/detail/attribute_get_value_impl.hpp #usr/include/boost/log/detail/attribute_predicate.hpp +#usr/include/boost/log/detail/c_str.hpp #usr/include/boost/log/detail/cleanup_scope_guard.hpp #usr/include/boost/log/detail/code_conversion.hpp #usr/include/boost/log/detail/config.hpp +#usr/include/boost/log/detail/copy_cv.hpp #usr/include/boost/log/detail/custom_terminal_spec.hpp #usr/include/boost/log/detail/date_time_fmt_gen_traits_fwd.hpp #usr/include/boost/log/detail/date_time_format_parser.hpp @@ -4178,6 +5803,7 @@ #usr/include/boost/log/detail/deduce_char_type.hpp #usr/include/boost/log/detail/default_attribute_names.hpp #usr/include/boost/log/detail/embedded_string_type.hpp +#usr/include/boost/log/detail/enqueued_record.hpp #usr/include/boost/log/detail/event.hpp #usr/include/boost/log/detail/fake_mutex.hpp #usr/include/boost/log/detail/footer.hpp @@ -4186,22 +5812,24 @@ #usr/include/boost/log/detail/generate_overloads.hpp #usr/include/boost/log/detail/header.hpp #usr/include/boost/log/detail/id.hpp +#usr/include/boost/log/detail/is_character_type.hpp +#usr/include/boost/log/detail/is_ostream.hpp #usr/include/boost/log/detail/light_function.hpp #usr/include/boost/log/detail/light_function_pp.hpp #usr/include/boost/log/detail/light_rw_mutex.hpp #usr/include/boost/log/detail/locking_ptr.hpp #usr/include/boost/log/detail/locks.hpp -#usr/include/boost/log/detail/malloc_aligned.hpp #usr/include/boost/log/detail/named_scope_fmt_pp.hpp #usr/include/boost/log/detail/native_typeof.hpp #usr/include/boost/log/detail/parameter_tools.hpp +#usr/include/boost/log/detail/pause.hpp #usr/include/boost/log/detail/pp_identity.hpp #usr/include/boost/log/detail/process_id.hpp #usr/include/boost/log/detail/setup_config.hpp +#usr/include/boost/log/detail/sfinae_tools.hpp #usr/include/boost/log/detail/singleton.hpp #usr/include/boost/log/detail/sink_init_helpers.hpp #usr/include/boost/log/detail/snprintf.hpp -#usr/include/boost/log/detail/spin_mutex.hpp #usr/include/boost/log/detail/tagged_integer.hpp #usr/include/boost/log/detail/thread_id.hpp #usr/include/boost/log/detail/thread_specific.hpp @@ -4211,7 +5839,6 @@ #usr/include/boost/log/detail/unary_function_terminal.hpp #usr/include/boost/log/detail/unhandled_exception_count.hpp #usr/include/boost/log/detail/value_ref_visitation.hpp -#usr/include/boost/log/detail/visible_type.hpp #usr/include/boost/log/exceptions.hpp #usr/include/boost/log/expressions #usr/include/boost/log/expressions.hpp @@ -4227,6 +5854,7 @@ #usr/include/boost/log/expressions/formatters/date_time.hpp #usr/include/boost/log/expressions/formatters/format.hpp #usr/include/boost/log/expressions/formatters/if.hpp +#usr/include/boost/log/expressions/formatters/max_size_decorator.hpp #usr/include/boost/log/expressions/formatters/named_scope.hpp #usr/include/boost/log/expressions/formatters/stream.hpp #usr/include/boost/log/expressions/formatters/wrap_formatter.hpp @@ -4248,24 +5876,33 @@ #usr/include/boost/log/expressions/record.hpp #usr/include/boost/log/keywords #usr/include/boost/log/keywords/auto_flush.hpp +#usr/include/boost/log/keywords/block_size.hpp +#usr/include/boost/log/keywords/capacity.hpp #usr/include/boost/log/keywords/channel.hpp #usr/include/boost/log/keywords/delimiter.hpp #usr/include/boost/log/keywords/depth.hpp +#usr/include/boost/log/keywords/empty_marker.hpp +#usr/include/boost/log/keywords/enable_final_rotation.hpp #usr/include/boost/log/keywords/facility.hpp #usr/include/boost/log/keywords/file_name.hpp #usr/include/boost/log/keywords/filter.hpp #usr/include/boost/log/keywords/format.hpp #usr/include/boost/log/keywords/ident.hpp +#usr/include/boost/log/keywords/incomplete_marker.hpp #usr/include/boost/log/keywords/ip_version.hpp #usr/include/boost/log/keywords/iteration.hpp #usr/include/boost/log/keywords/log_name.hpp #usr/include/boost/log/keywords/log_source.hpp +#usr/include/boost/log/keywords/max_files.hpp #usr/include/boost/log/keywords/max_size.hpp #usr/include/boost/log/keywords/message_file.hpp #usr/include/boost/log/keywords/min_free_space.hpp +#usr/include/boost/log/keywords/name.hpp #usr/include/boost/log/keywords/open_mode.hpp #usr/include/boost/log/keywords/order.hpp #usr/include/boost/log/keywords/ordering_window.hpp +#usr/include/boost/log/keywords/overflow_policy.hpp +#usr/include/boost/log/keywords/permissions.hpp #usr/include/boost/log/keywords/registration.hpp #usr/include/boost/log/keywords/rotation_size.hpp #usr/include/boost/log/keywords/scan_method.hpp @@ -4293,6 +5930,7 @@ #usr/include/boost/log/sinks/syslog_backend.hpp #usr/include/boost/log/sinks/syslog_constants.hpp #usr/include/boost/log/sinks/text_file_backend.hpp +#usr/include/boost/log/sinks/text_ipc_message_queue_backend.hpp #usr/include/boost/log/sinks/text_multifile_backend.hpp #usr/include/boost/log/sinks/text_ostream_backend.hpp #usr/include/boost/log/sinks/unbounded_fifo_queue.hpp @@ -4317,12 +5955,11 @@ #usr/include/boost/log/support/regex.hpp #usr/include/boost/log/support/spirit_classic.hpp #usr/include/boost/log/support/spirit_qi.hpp +#usr/include/boost/log/support/std_regex.hpp #usr/include/boost/log/support/xpressive.hpp #usr/include/boost/log/trivial.hpp #usr/include/boost/log/utility -#usr/include/boost/log/utility/empty_deleter.hpp #usr/include/boost/log/utility/exception_handler.hpp -#usr/include/boost/log/utility/explicit_operator_bool.hpp #usr/include/boost/log/utility/formatting_ostream.hpp #usr/include/boost/log/utility/formatting_ostream_fwd.hpp #usr/include/boost/log/utility/functional @@ -4341,13 +5978,17 @@ #usr/include/boost/log/utility/functional/matches.hpp #usr/include/boost/log/utility/functional/nop.hpp #usr/include/boost/log/utility/functional/save_result.hpp -#usr/include/boost/log/utility/intrusive_ref_counter.hpp +#usr/include/boost/log/utility/ipc +#usr/include/boost/log/utility/ipc/object_name.hpp +#usr/include/boost/log/utility/ipc/reliable_message_queue.hpp #usr/include/boost/log/utility/manipulators #usr/include/boost/log/utility/manipulators.hpp #usr/include/boost/log/utility/manipulators/add_value.hpp #usr/include/boost/log/utility/manipulators/dump.hpp #usr/include/boost/log/utility/manipulators/to_log.hpp #usr/include/boost/log/utility/once_block.hpp +#usr/include/boost/log/utility/open_mode.hpp +#usr/include/boost/log/utility/permissions.hpp #usr/include/boost/log/utility/record_ordering.hpp #usr/include/boost/log/utility/setup #usr/include/boost/log/utility/setup.hpp @@ -4369,7 +6010,6 @@ #usr/include/boost/log/utility/type_dispatch/standard_types.hpp #usr/include/boost/log/utility/type_dispatch/static_type_dispatcher.hpp #usr/include/boost/log/utility/type_dispatch/type_dispatcher.hpp -#usr/include/boost/log/utility/type_info_wrapper.hpp #usr/include/boost/log/utility/unique_identifier_name.hpp #usr/include/boost/log/utility/unused_variable.hpp #usr/include/boost/log/utility/value_ref.hpp @@ -4378,7 +6018,9 @@ #usr/include/boost/logic/tribool.hpp #usr/include/boost/logic/tribool_fwd.hpp #usr/include/boost/logic/tribool_io.hpp +#usr/include/boost/make_default.hpp #usr/include/boost/make_shared.hpp +#usr/include/boost/make_unique.hpp #usr/include/boost/math #usr/include/boost/math/bindings #usr/include/boost/math/bindings/detail @@ -4409,10 +6051,17 @@ #usr/include/boost/math/constants #usr/include/boost/math/constants/calculate_constants.hpp #usr/include/boost/math/constants/constants.hpp -#usr/include/boost/math/constants/generate.hpp #usr/include/boost/math/constants/info.hpp +#usr/include/boost/math/cstdfloat +#usr/include/boost/math/cstdfloat/cstdfloat_cmath.hpp +#usr/include/boost/math/cstdfloat/cstdfloat_complex.hpp +#usr/include/boost/math/cstdfloat/cstdfloat_complex_std.hpp +#usr/include/boost/math/cstdfloat/cstdfloat_iostream.hpp +#usr/include/boost/math/cstdfloat/cstdfloat_limits.hpp +#usr/include/boost/math/cstdfloat/cstdfloat_types.hpp #usr/include/boost/math/distributions #usr/include/boost/math/distributions.hpp +#usr/include/boost/math/distributions/arcsine.hpp #usr/include/boost/math/distributions/bernoulli.hpp #usr/include/boost/math/distributions/beta.hpp #usr/include/boost/math/distributions/binomial.hpp @@ -4436,6 +6085,7 @@ #usr/include/boost/math/distributions/fwd.hpp #usr/include/boost/math/distributions/gamma.hpp #usr/include/boost/math/distributions/geometric.hpp +#usr/include/boost/math/distributions/hyperexponential.hpp #usr/include/boost/math/distributions/hypergeometric.hpp #usr/include/boost/math/distributions/inverse_chi_squared.hpp #usr/include/boost/math/distributions/inverse_gamma.hpp @@ -4468,13 +6118,17 @@ #usr/include/boost/math/special_functions/airy.hpp #usr/include/boost/math/special_functions/asinh.hpp #usr/include/boost/math/special_functions/atanh.hpp +#usr/include/boost/math/special_functions/bernoulli.hpp #usr/include/boost/math/special_functions/bessel.hpp +#usr/include/boost/math/special_functions/bessel_prime.hpp #usr/include/boost/math/special_functions/beta.hpp #usr/include/boost/math/special_functions/binomial.hpp #usr/include/boost/math/special_functions/cbrt.hpp #usr/include/boost/math/special_functions/cos_pi.hpp #usr/include/boost/math/special_functions/detail #usr/include/boost/math/special_functions/detail/airy_ai_bi_zero.hpp +#usr/include/boost/math/special_functions/detail/bernoulli_details.hpp +#usr/include/boost/math/special_functions/detail/bessel_derivatives_linear.hpp #usr/include/boost/math/special_functions/detail/bessel_i0.hpp #usr/include/boost/math/special_functions/detail/bessel_i1.hpp #usr/include/boost/math/special_functions/detail/bessel_ik.hpp @@ -4483,6 +6137,8 @@ #usr/include/boost/math/special_functions/detail/bessel_jn.hpp #usr/include/boost/math/special_functions/detail/bessel_jy.hpp #usr/include/boost/math/special_functions/detail/bessel_jy_asym.hpp +#usr/include/boost/math/special_functions/detail/bessel_jy_derivatives_asym.hpp +#usr/include/boost/math/special_functions/detail/bessel_jy_derivatives_series.hpp #usr/include/boost/math/special_functions/detail/bessel_jy_series.hpp #usr/include/boost/math/special_functions/detail/bessel_jy_zero.hpp #usr/include/boost/math/special_functions/detail/bessel_k0.hpp @@ -4501,16 +6157,20 @@ #usr/include/boost/math/special_functions/detail/igamma_large.hpp #usr/include/boost/math/special_functions/detail/lanczos_sse2.hpp #usr/include/boost/math/special_functions/detail/lgamma_small.hpp +#usr/include/boost/math/special_functions/detail/polygamma.hpp #usr/include/boost/math/special_functions/detail/round_fwd.hpp #usr/include/boost/math/special_functions/detail/t_distribution_inv.hpp +#usr/include/boost/math/special_functions/detail/unchecked_bernoulli.hpp #usr/include/boost/math/special_functions/detail/unchecked_factorial.hpp #usr/include/boost/math/special_functions/digamma.hpp #usr/include/boost/math/special_functions/ellint_1.hpp #usr/include/boost/math/special_functions/ellint_2.hpp #usr/include/boost/math/special_functions/ellint_3.hpp +#usr/include/boost/math/special_functions/ellint_d.hpp #usr/include/boost/math/special_functions/ellint_rc.hpp #usr/include/boost/math/special_functions/ellint_rd.hpp #usr/include/boost/math/special_functions/ellint_rf.hpp +#usr/include/boost/math/special_functions/ellint_rg.hpp #usr/include/boost/math/special_functions/ellint_rj.hpp #usr/include/boost/math/special_functions/erf.hpp #usr/include/boost/math/special_functions/expint.hpp @@ -4520,8 +6180,10 @@ #usr/include/boost/math/special_functions/gamma.hpp #usr/include/boost/math/special_functions/hankel.hpp #usr/include/boost/math/special_functions/hermite.hpp +#usr/include/boost/math/special_functions/heuman_lambda.hpp #usr/include/boost/math/special_functions/hypot.hpp #usr/include/boost/math/special_functions/jacobi_elliptic.hpp +#usr/include/boost/math/special_functions/jacobi_zeta.hpp #usr/include/boost/math/special_functions/laguerre.hpp #usr/include/boost/math/special_functions/lanczos.hpp #usr/include/boost/math/special_functions/legendre.hpp @@ -4531,9 +6193,11 @@ #usr/include/boost/math/special_functions/next.hpp #usr/include/boost/math/special_functions/nonfinite_num_facets.hpp #usr/include/boost/math/special_functions/owens_t.hpp +#usr/include/boost/math/special_functions/polygamma.hpp #usr/include/boost/math/special_functions/pow.hpp #usr/include/boost/math/special_functions/powm1.hpp #usr/include/boost/math/special_functions/prime.hpp +#usr/include/boost/math/special_functions/relative_difference.hpp #usr/include/boost/math/special_functions/round.hpp #usr/include/boost/math/special_functions/sign.hpp #usr/include/boost/math/special_functions/sin_pi.hpp @@ -4541,11 +6205,14 @@ #usr/include/boost/math/special_functions/sinhc.hpp #usr/include/boost/math/special_functions/spherical_harmonic.hpp #usr/include/boost/math/special_functions/sqrt1pm1.hpp +#usr/include/boost/math/special_functions/trigamma.hpp #usr/include/boost/math/special_functions/trunc.hpp +#usr/include/boost/math/special_functions/ulp.hpp #usr/include/boost/math/special_functions/zeta.hpp #usr/include/boost/math/tools #usr/include/boost/math/tools/big_constant.hpp #usr/include/boost/math/tools/config.hpp +#usr/include/boost/math/tools/convert_from_string.hpp #usr/include/boost/math/tools/detail #usr/include/boost/math/tools/detail/polynomial_horner1_10.hpp #usr/include/boost/math/tools/detail/polynomial_horner1_11.hpp @@ -4668,13 +6335,9 @@ #usr/include/boost/math/tools/promotion.hpp #usr/include/boost/math/tools/rational.hpp #usr/include/boost/math/tools/real_cast.hpp -#usr/include/boost/math/tools/remez.hpp #usr/include/boost/math/tools/roots.hpp #usr/include/boost/math/tools/series.hpp -#usr/include/boost/math/tools/solve.hpp #usr/include/boost/math/tools/stats.hpp -#usr/include/boost/math/tools/test.hpp -#usr/include/boost/math/tools/test_data.hpp #usr/include/boost/math/tools/toms748_solve.hpp #usr/include/boost/math/tools/traits.hpp #usr/include/boost/math/tools/tuple.hpp @@ -4685,18 +6348,326 @@ #usr/include/boost/math_fwd.hpp #usr/include/boost/mem_fn.hpp #usr/include/boost/memory_order.hpp +#usr/include/boost/metaparse +#usr/include/boost/metaparse.hpp +#usr/include/boost/metaparse/accept.hpp +#usr/include/boost/metaparse/accept_tag.hpp +#usr/include/boost/metaparse/accept_when.hpp +#usr/include/boost/metaparse/alphanum.hpp +#usr/include/boost/metaparse/always.hpp +#usr/include/boost/metaparse/always_c.hpp +#usr/include/boost/metaparse/build_parser.hpp +#usr/include/boost/metaparse/change_error_message.hpp +#usr/include/boost/metaparse/config.hpp +#usr/include/boost/metaparse/debug_parsing_error.hpp +#usr/include/boost/metaparse/define_error.hpp +#usr/include/boost/metaparse/digit.hpp +#usr/include/boost/metaparse/digit_val.hpp +#usr/include/boost/metaparse/empty.hpp +#usr/include/boost/metaparse/entire_input.hpp +#usr/include/boost/metaparse/error +#usr/include/boost/metaparse/error/digit_expected.hpp +#usr/include/boost/metaparse/error/end_of_input_expected.hpp +#usr/include/boost/metaparse/error/index_out_of_range.hpp +#usr/include/boost/metaparse/error/letter_expected.hpp +#usr/include/boost/metaparse/error/literal_expected.hpp +#usr/include/boost/metaparse/error/none_of_the_expected_cases_found.hpp +#usr/include/boost/metaparse/error/unexpected_character.hpp +#usr/include/boost/metaparse/error/unexpected_end_of_input.hpp +#usr/include/boost/metaparse/error/unpaired.hpp +#usr/include/boost/metaparse/error/whitespace_expected.hpp +#usr/include/boost/metaparse/except.hpp +#usr/include/boost/metaparse/fail.hpp +#usr/include/boost/metaparse/fail_at_first_char_expected.hpp +#usr/include/boost/metaparse/fail_tag.hpp +#usr/include/boost/metaparse/first_of.hpp +#usr/include/boost/metaparse/foldl.hpp +#usr/include/boost/metaparse/foldl1.hpp +#usr/include/boost/metaparse/foldl_reject_incomplete.hpp +#usr/include/boost/metaparse/foldl_reject_incomplete1.hpp +#usr/include/boost/metaparse/foldl_reject_incomplete_start_with_parser.hpp +#usr/include/boost/metaparse/foldl_start_with_parser.hpp +#usr/include/boost/metaparse/foldr.hpp +#usr/include/boost/metaparse/foldr1.hpp +#usr/include/boost/metaparse/foldr_reject_incomplete.hpp +#usr/include/boost/metaparse/foldr_reject_incomplete1.hpp +#usr/include/boost/metaparse/foldr_start_with_parser.hpp +#usr/include/boost/metaparse/get_col.hpp +#usr/include/boost/metaparse/get_line.hpp +#usr/include/boost/metaparse/get_message.hpp +#usr/include/boost/metaparse/get_position.hpp +#usr/include/boost/metaparse/get_prev_char.hpp +#usr/include/boost/metaparse/get_remaining.hpp +#usr/include/boost/metaparse/get_result.hpp +#usr/include/boost/metaparse/grammar.hpp +#usr/include/boost/metaparse/if_.hpp +#usr/include/boost/metaparse/int_.hpp +#usr/include/boost/metaparse/is_error.hpp +#usr/include/boost/metaparse/iterate.hpp +#usr/include/boost/metaparse/iterate_c.hpp +#usr/include/boost/metaparse/keyword.hpp +#usr/include/boost/metaparse/last_of.hpp +#usr/include/boost/metaparse/letter.hpp +#usr/include/boost/metaparse/limit_one_char_except_size.hpp +#usr/include/boost/metaparse/limit_one_of_size.hpp +#usr/include/boost/metaparse/limit_sequence_size.hpp +#usr/include/boost/metaparse/limit_string_size.hpp +#usr/include/boost/metaparse/lit.hpp +#usr/include/boost/metaparse/lit_c.hpp +#usr/include/boost/metaparse/look_ahead.hpp +#usr/include/boost/metaparse/middle_of.hpp +#usr/include/boost/metaparse/next_char.hpp +#usr/include/boost/metaparse/next_line.hpp +#usr/include/boost/metaparse/nth_of.hpp +#usr/include/boost/metaparse/nth_of_c.hpp +#usr/include/boost/metaparse/one_char.hpp +#usr/include/boost/metaparse/one_char_except.hpp +#usr/include/boost/metaparse/one_char_except_c.hpp +#usr/include/boost/metaparse/one_of.hpp +#usr/include/boost/metaparse/one_of_c.hpp +#usr/include/boost/metaparse/optional.hpp +#usr/include/boost/metaparse/range.hpp +#usr/include/boost/metaparse/range_c.hpp +#usr/include/boost/metaparse/reject.hpp +#usr/include/boost/metaparse/repeated.hpp +#usr/include/boost/metaparse/repeated1.hpp +#usr/include/boost/metaparse/repeated_one_of.hpp +#usr/include/boost/metaparse/repeated_one_of1.hpp +#usr/include/boost/metaparse/repeated_reject_incomplete.hpp +#usr/include/boost/metaparse/repeated_reject_incomplete1.hpp +#usr/include/boost/metaparse/return_.hpp +#usr/include/boost/metaparse/sequence.hpp +#usr/include/boost/metaparse/sequence_apply.hpp +#usr/include/boost/metaparse/source_position.hpp +#usr/include/boost/metaparse/source_position_tag.hpp +#usr/include/boost/metaparse/space.hpp +#usr/include/boost/metaparse/spaces.hpp +#usr/include/boost/metaparse/start.hpp +#usr/include/boost/metaparse/string.hpp +#usr/include/boost/metaparse/string_tag.hpp +#usr/include/boost/metaparse/token.hpp +#usr/include/boost/metaparse/transform.hpp +#usr/include/boost/metaparse/transform_error.hpp +#usr/include/boost/metaparse/transform_error_message.hpp +#usr/include/boost/metaparse/unless_error.hpp +#usr/include/boost/metaparse/util +#usr/include/boost/metaparse/util/digit_to_int.hpp +#usr/include/boost/metaparse/util/digit_to_int_c.hpp +#usr/include/boost/metaparse/util/in_range.hpp +#usr/include/boost/metaparse/util/in_range_c.hpp +#usr/include/boost/metaparse/util/int_to_digit.hpp +#usr/include/boost/metaparse/util/int_to_digit_c.hpp +#usr/include/boost/metaparse/util/is_digit.hpp +#usr/include/boost/metaparse/util/is_lcase_letter.hpp +#usr/include/boost/metaparse/util/is_letter.hpp +#usr/include/boost/metaparse/util/is_ucase_letter.hpp +#usr/include/boost/metaparse/util/is_whitespace.hpp +#usr/include/boost/metaparse/util/is_whitespace_c.hpp +#usr/include/boost/metaparse/v1 +#usr/include/boost/metaparse/v1/accept.hpp +#usr/include/boost/metaparse/v1/accept_tag.hpp +#usr/include/boost/metaparse/v1/accept_when.hpp +#usr/include/boost/metaparse/v1/alphanum.hpp +#usr/include/boost/metaparse/v1/always.hpp +#usr/include/boost/metaparse/v1/always_c.hpp +#usr/include/boost/metaparse/v1/build_parser.hpp +#usr/include/boost/metaparse/v1/change_error_message.hpp +#usr/include/boost/metaparse/v1/debug_parsing_error.hpp +#usr/include/boost/metaparse/v1/define_error.hpp +#usr/include/boost/metaparse/v1/digit.hpp +#usr/include/boost/metaparse/v1/digit_val.hpp +#usr/include/boost/metaparse/v1/empty.hpp +#usr/include/boost/metaparse/v1/entire_input.hpp +#usr/include/boost/metaparse/v1/error +#usr/include/boost/metaparse/v1/error/digit_expected.hpp +#usr/include/boost/metaparse/v1/error/end_of_input_expected.hpp +#usr/include/boost/metaparse/v1/error/expected_to_fail.hpp +#usr/include/boost/metaparse/v1/error/index_out_of_range.hpp +#usr/include/boost/metaparse/v1/error/letter_expected.hpp +#usr/include/boost/metaparse/v1/error/literal_expected.hpp +#usr/include/boost/metaparse/v1/error/none_of_the_expected_cases_found.hpp +#usr/include/boost/metaparse/v1/error/unexpected_character.hpp +#usr/include/boost/metaparse/v1/error/unexpected_end_of_input.hpp +#usr/include/boost/metaparse/v1/error/unpaired.hpp +#usr/include/boost/metaparse/v1/error/whitespace_expected.hpp +#usr/include/boost/metaparse/v1/except.hpp +#usr/include/boost/metaparse/v1/fail.hpp +#usr/include/boost/metaparse/v1/fail_at_first_char_expected.hpp +#usr/include/boost/metaparse/v1/fail_tag.hpp +#usr/include/boost/metaparse/v1/first_of.hpp +#usr/include/boost/metaparse/v1/foldl.hpp +#usr/include/boost/metaparse/v1/foldl1.hpp +#usr/include/boost/metaparse/v1/foldl_reject_incomplete.hpp +#usr/include/boost/metaparse/v1/foldl_reject_incomplete1.hpp +#usr/include/boost/metaparse/v1/foldl_reject_incomplete_start_with_parser.hpp +#usr/include/boost/metaparse/v1/foldl_start_with_parser.hpp +#usr/include/boost/metaparse/v1/foldr.hpp +#usr/include/boost/metaparse/v1/foldr1.hpp +#usr/include/boost/metaparse/v1/foldr_reject_incomplete.hpp +#usr/include/boost/metaparse/v1/foldr_reject_incomplete1.hpp +#usr/include/boost/metaparse/v1/foldr_start_with_parser.hpp +#usr/include/boost/metaparse/v1/fwd +#usr/include/boost/metaparse/v1/fwd/accept.hpp +#usr/include/boost/metaparse/v1/fwd/build_parser.hpp +#usr/include/boost/metaparse/v1/fwd/get_col.hpp +#usr/include/boost/metaparse/v1/fwd/get_line.hpp +#usr/include/boost/metaparse/v1/fwd/get_message.hpp +#usr/include/boost/metaparse/v1/fwd/get_position.hpp +#usr/include/boost/metaparse/v1/fwd/get_prev_char.hpp +#usr/include/boost/metaparse/v1/fwd/get_remaining.hpp +#usr/include/boost/metaparse/v1/fwd/get_result.hpp +#usr/include/boost/metaparse/v1/fwd/next_char.hpp +#usr/include/boost/metaparse/v1/fwd/next_line.hpp +#usr/include/boost/metaparse/v1/fwd/reject.hpp +#usr/include/boost/metaparse/v1/fwd/source_position.hpp +#usr/include/boost/metaparse/v1/fwd/string.hpp +#usr/include/boost/metaparse/v1/get_col.hpp +#usr/include/boost/metaparse/v1/get_line.hpp +#usr/include/boost/metaparse/v1/get_message.hpp +#usr/include/boost/metaparse/v1/get_position.hpp +#usr/include/boost/metaparse/v1/get_prev_char.hpp +#usr/include/boost/metaparse/v1/get_remaining.hpp +#usr/include/boost/metaparse/v1/get_result.hpp +#usr/include/boost/metaparse/v1/grammar.hpp +#usr/include/boost/metaparse/v1/if_.hpp +#usr/include/boost/metaparse/v1/impl +#usr/include/boost/metaparse/v1/impl/apply_parser.hpp +#usr/include/boost/metaparse/v1/impl/assert_string_length.hpp +#usr/include/boost/metaparse/v1/impl/at_c.hpp +#usr/include/boost/metaparse/v1/impl/back_inserter.hpp +#usr/include/boost/metaparse/v1/impl/concat.hpp +#usr/include/boost/metaparse/v1/impl/empty_string.hpp +#usr/include/boost/metaparse/v1/impl/front_inserter.hpp +#usr/include/boost/metaparse/v1/impl/fwd +#usr/include/boost/metaparse/v1/impl/fwd/iterate_impl.hpp +#usr/include/boost/metaparse/v1/impl/has_type.hpp +#usr/include/boost/metaparse/v1/impl/is_any.hpp +#usr/include/boost/metaparse/v1/impl/is_char_c.hpp +#usr/include/boost/metaparse/v1/impl/iterate_impl.hpp +#usr/include/boost/metaparse/v1/impl/iterate_impl_unchecked.hpp +#usr/include/boost/metaparse/v1/impl/later_result.hpp +#usr/include/boost/metaparse/v1/impl/next_digit.hpp +#usr/include/boost/metaparse/v1/impl/no_char.hpp +#usr/include/boost/metaparse/v1/impl/nth_of_c.hpp +#usr/include/boost/metaparse/v1/impl/nth_of_c_impl.hpp +#usr/include/boost/metaparse/v1/impl/one_char_except_not_used.hpp +#usr/include/boost/metaparse/v1/impl/one_of.hpp +#usr/include/boost/metaparse/v1/impl/one_of_fwd_op.hpp +#usr/include/boost/metaparse/v1/impl/pop_back.hpp +#usr/include/boost/metaparse/v1/impl/pop_front.hpp +#usr/include/boost/metaparse/v1/impl/push_back_c.hpp +#usr/include/boost/metaparse/v1/impl/push_front_c.hpp +#usr/include/boost/metaparse/v1/impl/remove_trailing_no_chars.hpp +#usr/include/boost/metaparse/v1/impl/returns.hpp +#usr/include/boost/metaparse/v1/impl/sequence.hpp +#usr/include/boost/metaparse/v1/impl/sequence_impl.hpp +#usr/include/boost/metaparse/v1/impl/size.hpp +#usr/include/boost/metaparse/v1/impl/skip_seq.hpp +#usr/include/boost/metaparse/v1/impl/split_at_c.hpp +#usr/include/boost/metaparse/v1/impl/string.hpp +#usr/include/boost/metaparse/v1/impl/string_at.hpp +#usr/include/boost/metaparse/v1/impl/string_iterator.hpp +#usr/include/boost/metaparse/v1/impl/string_iterator_tag.hpp +#usr/include/boost/metaparse/v1/impl/update_c.hpp +#usr/include/boost/metaparse/v1/impl/void_.hpp +#usr/include/boost/metaparse/v1/int_.hpp +#usr/include/boost/metaparse/v1/is_error.hpp +#usr/include/boost/metaparse/v1/iterate.hpp +#usr/include/boost/metaparse/v1/iterate_c.hpp +#usr/include/boost/metaparse/v1/keyword.hpp +#usr/include/boost/metaparse/v1/last_of.hpp +#usr/include/boost/metaparse/v1/letter.hpp +#usr/include/boost/metaparse/v1/lit.hpp +#usr/include/boost/metaparse/v1/lit_c.hpp +#usr/include/boost/metaparse/v1/look_ahead.hpp +#usr/include/boost/metaparse/v1/middle_of.hpp +#usr/include/boost/metaparse/v1/next_char.hpp +#usr/include/boost/metaparse/v1/next_line.hpp +#usr/include/boost/metaparse/v1/nth_of.hpp +#usr/include/boost/metaparse/v1/nth_of_c.hpp +#usr/include/boost/metaparse/v1/one_char.hpp +#usr/include/boost/metaparse/v1/one_char_except.hpp +#usr/include/boost/metaparse/v1/one_char_except_c.hpp +#usr/include/boost/metaparse/v1/one_of.hpp +#usr/include/boost/metaparse/v1/one_of_c.hpp +#usr/include/boost/metaparse/v1/optional.hpp +#usr/include/boost/metaparse/v1/range.hpp +#usr/include/boost/metaparse/v1/range_c.hpp +#usr/include/boost/metaparse/v1/reject.hpp +#usr/include/boost/metaparse/v1/repeated.hpp +#usr/include/boost/metaparse/v1/repeated1.hpp +#usr/include/boost/metaparse/v1/repeated_one_of.hpp +#usr/include/boost/metaparse/v1/repeated_one_of1.hpp +#usr/include/boost/metaparse/v1/repeated_reject_incomplete.hpp +#usr/include/boost/metaparse/v1/repeated_reject_incomplete1.hpp +#usr/include/boost/metaparse/v1/return_.hpp +#usr/include/boost/metaparse/v1/sequence.hpp +#usr/include/boost/metaparse/v1/sequence_apply.hpp +#usr/include/boost/metaparse/v1/source_position.hpp +#usr/include/boost/metaparse/v1/source_position_tag.hpp +#usr/include/boost/metaparse/v1/space.hpp +#usr/include/boost/metaparse/v1/spaces.hpp +#usr/include/boost/metaparse/v1/start.hpp +#usr/include/boost/metaparse/v1/string.hpp +#usr/include/boost/metaparse/v1/string_tag.hpp +#usr/include/boost/metaparse/v1/swap.hpp +#usr/include/boost/metaparse/v1/token.hpp +#usr/include/boost/metaparse/v1/transform.hpp +#usr/include/boost/metaparse/v1/transform_error.hpp +#usr/include/boost/metaparse/v1/transform_error_message.hpp +#usr/include/boost/metaparse/v1/unless_error.hpp +#usr/include/boost/metaparse/v1/util +#usr/include/boost/metaparse/v1/util/digit_to_int.hpp +#usr/include/boost/metaparse/v1/util/digit_to_int_c.hpp +#usr/include/boost/metaparse/v1/util/in_range.hpp +#usr/include/boost/metaparse/v1/util/in_range_c.hpp +#usr/include/boost/metaparse/v1/util/int_to_digit.hpp +#usr/include/boost/metaparse/v1/util/int_to_digit_c.hpp +#usr/include/boost/metaparse/v1/util/is_digit.hpp +#usr/include/boost/metaparse/v1/util/is_lcase_letter.hpp +#usr/include/boost/metaparse/v1/util/is_letter.hpp +#usr/include/boost/metaparse/v1/util/is_ucase_letter.hpp +#usr/include/boost/metaparse/v1/util/is_whitespace.hpp +#usr/include/boost/metaparse/v1/util/is_whitespace_c.hpp +#usr/include/boost/metaparse/version.hpp #usr/include/boost/move +#usr/include/boost/move/adl_move_swap.hpp +#usr/include/boost/move/algo +#usr/include/boost/move/algo/adaptive_merge.hpp +#usr/include/boost/move/algo/adaptive_sort.hpp +#usr/include/boost/move/algo/detail +#usr/include/boost/move/algo/detail/adaptive_sort_merge.hpp +#usr/include/boost/move/algo/detail/basic_op.hpp +#usr/include/boost/move/algo/detail/insertion_sort.hpp +#usr/include/boost/move/algo/detail/merge.hpp +#usr/include/boost/move/algo/detail/merge_sort.hpp +#usr/include/boost/move/algo/move.hpp #usr/include/boost/move/algorithm.hpp #usr/include/boost/move/core.hpp +#usr/include/boost/move/default_delete.hpp #usr/include/boost/move/detail #usr/include/boost/move/detail/config_begin.hpp #usr/include/boost/move/detail/config_end.hpp +#usr/include/boost/move/detail/destruct_n.hpp +#usr/include/boost/move/detail/fwd_macros.hpp +#usr/include/boost/move/detail/iterator_traits.hpp #usr/include/boost/move/detail/meta_utils.hpp +#usr/include/boost/move/detail/meta_utils_core.hpp #usr/include/boost/move/detail/move_helpers.hpp +#usr/include/boost/move/detail/placement_new.hpp +#usr/include/boost/move/detail/reverse_iterator.hpp +#usr/include/boost/move/detail/std_ns_begin.hpp +#usr/include/boost/move/detail/std_ns_end.hpp +#usr/include/boost/move/detail/type_traits.hpp +#usr/include/boost/move/detail/unique_ptr_meta_utils.hpp +#usr/include/boost/move/detail/workaround.hpp #usr/include/boost/move/iterator.hpp +#usr/include/boost/move/make_unique.hpp #usr/include/boost/move/move.hpp #usr/include/boost/move/traits.hpp +#usr/include/boost/move/unique_ptr.hpp #usr/include/boost/move/utility.hpp +#usr/include/boost/move/utility_core.hpp #usr/include/boost/mpi #usr/include/boost/mpi.hpp #usr/include/boost/mpi/allocator.hpp @@ -4707,9 +6678,11 @@ #usr/include/boost/mpi/collectives/all_to_all.hpp #usr/include/boost/mpi/collectives/broadcast.hpp #usr/include/boost/mpi/collectives/gather.hpp +#usr/include/boost/mpi/collectives/gatherv.hpp #usr/include/boost/mpi/collectives/reduce.hpp #usr/include/boost/mpi/collectives/scan.hpp #usr/include/boost/mpi/collectives/scatter.hpp +#usr/include/boost/mpi/collectives/scatterv.hpp #usr/include/boost/mpi/collectives_fwd.hpp #usr/include/boost/mpi/communicator.hpp #usr/include/boost/mpi/config.hpp @@ -4805,6 +6778,7 @@ #usr/include/boost/mpl/aux_/config/eti.hpp #usr/include/boost/mpl/aux_/config/forwarding.hpp #usr/include/boost/mpl/aux_/config/gcc.hpp +#usr/include/boost/mpl/aux_/config/gpu.hpp #usr/include/boost/mpl/aux_/config/has_apply.hpp #usr/include/boost/mpl/aux_/config/has_xxx.hpp #usr/include/boost/mpl/aux_/config/integral.hpp @@ -5610,6 +7584,7 @@ #usr/include/boost/mpl/map/aux_/has_key_impl.hpp #usr/include/boost/mpl/map/aux_/include_preprocessed.hpp #usr/include/boost/mpl/map/aux_/insert_impl.hpp +#usr/include/boost/mpl/map/aux_/insert_range_impl.hpp #usr/include/boost/mpl/map/aux_/item.hpp #usr/include/boost/mpl/map/aux_/iterator.hpp #usr/include/boost/mpl/map/aux_/key_type_impl.hpp @@ -5712,6 +7687,7 @@ #usr/include/boost/mpl/set/aux_/has_key_impl.hpp #usr/include/boost/mpl/set/aux_/include_preprocessed.hpp #usr/include/boost/mpl/set/aux_/insert_impl.hpp +#usr/include/boost/mpl/set/aux_/insert_range_impl.hpp #usr/include/boost/mpl/set/aux_/item.hpp #usr/include/boost/mpl/set/aux_/iterator.hpp #usr/include/boost/mpl/set/aux_/key_type_impl.hpp @@ -5929,6 +7905,7 @@ #usr/include/boost/multi_index/detail/base_type.hpp #usr/include/boost/multi_index/detail/bidir_node_iterator.hpp #usr/include/boost/multi_index/detail/bucket_array.hpp +#usr/include/boost/multi_index/detail/cons_stdtuple.hpp #usr/include/boost/multi_index/detail/converter.hpp #usr/include/boost/multi_index/detail/copy_map.hpp #usr/include/boost/multi_index/detail/do_not_copy_elements_tag.hpp @@ -5938,6 +7915,7 @@ #usr/include/boost/multi_index/detail/hash_index_iterator.hpp #usr/include/boost/multi_index/detail/hash_index_node.hpp #usr/include/boost/multi_index/detail/header_holder.hpp +#usr/include/boost/multi_index/detail/ignore_wstrict_aliasing.hpp #usr/include/boost/multi_index/detail/index_base.hpp #usr/include/boost/multi_index/detail/index_loader.hpp #usr/include/boost/multi_index/detail/index_matcher.hpp @@ -5945,21 +7923,25 @@ #usr/include/boost/multi_index/detail/index_saver.hpp #usr/include/boost/multi_index/detail/invariant_assert.hpp #usr/include/boost/multi_index/detail/is_index_list.hpp +#usr/include/boost/multi_index/detail/is_transparent.hpp #usr/include/boost/multi_index/detail/iter_adaptor.hpp #usr/include/boost/multi_index/detail/modify_key_adaptor.hpp -#usr/include/boost/multi_index/detail/msvc_index_specifier.hpp #usr/include/boost/multi_index/detail/no_duplicate_tags.hpp #usr/include/boost/multi_index/detail/node_type.hpp #usr/include/boost/multi_index/detail/ord_index_args.hpp +#usr/include/boost/multi_index/detail/ord_index_impl.hpp +#usr/include/boost/multi_index/detail/ord_index_impl_fwd.hpp #usr/include/boost/multi_index/detail/ord_index_node.hpp #usr/include/boost/multi_index/detail/ord_index_ops.hpp -#usr/include/boost/multi_index/detail/prevent_eti.hpp +#usr/include/boost/multi_index/detail/promotes_arg.hpp +#usr/include/boost/multi_index/detail/raw_ptr.hpp +#usr/include/boost/multi_index/detail/restore_wstrict_aliasing.hpp #usr/include/boost/multi_index/detail/rnd_index_loader.hpp #usr/include/boost/multi_index/detail/rnd_index_node.hpp #usr/include/boost/multi_index/detail/rnd_index_ops.hpp #usr/include/boost/multi_index/detail/rnd_index_ptr_array.hpp #usr/include/boost/multi_index/detail/rnd_node_iterator.hpp -#usr/include/boost/multi_index/detail/safe_ctr_proxy.hpp +#usr/include/boost/multi_index/detail/rnk_index_ops.hpp #usr/include/boost/multi_index/detail/safe_mode.hpp #usr/include/boost/multi_index/detail/scope_guard.hpp #usr/include/boost/multi_index/detail/seq_index_node.hpp @@ -5982,6 +7964,8 @@ #usr/include/boost/multi_index/ordered_index_fwd.hpp #usr/include/boost/multi_index/random_access_index.hpp #usr/include/boost/multi_index/random_access_index_fwd.hpp +#usr/include/boost/multi_index/ranked_index.hpp +#usr/include/boost/multi_index/ranked_index_fwd.hpp #usr/include/boost/multi_index/safe_mode_errors.hpp #usr/include/boost/multi_index/sequenced_index.hpp #usr/include/boost/multi_index/sequenced_index_fwd.hpp @@ -5991,6 +7975,10 @@ #usr/include/boost/multiprecision #usr/include/boost/multiprecision/concepts #usr/include/boost/multiprecision/concepts/mp_number_archetypes.hpp +#usr/include/boost/multiprecision/cpp_bin_float +#usr/include/boost/multiprecision/cpp_bin_float.hpp +#usr/include/boost/multiprecision/cpp_bin_float/io.hpp +#usr/include/boost/multiprecision/cpp_bin_float/transcendental.hpp #usr/include/boost/multiprecision/cpp_dec_float.hpp #usr/include/boost/multiprecision/cpp_int #usr/include/boost/multiprecision/cpp_int.hpp @@ -6000,6 +7988,7 @@ #usr/include/boost/multiprecision/cpp_int/comparison.hpp #usr/include/boost/multiprecision/cpp_int/cpp_int_config.hpp #usr/include/boost/multiprecision/cpp_int/divide.hpp +#usr/include/boost/multiprecision/cpp_int/import_export.hpp #usr/include/boost/multiprecision/cpp_int/limits.hpp #usr/include/boost/multiprecision/cpp_int/literals.hpp #usr/include/boost/multiprecision/cpp_int/misc.hpp @@ -6021,6 +8010,7 @@ #usr/include/boost/multiprecision/detail/functions/trig.hpp #usr/include/boost/multiprecision/detail/generic_interconvert.hpp #usr/include/boost/multiprecision/detail/integer_ops.hpp +#usr/include/boost/multiprecision/detail/min_max.hpp #usr/include/boost/multiprecision/detail/no_et_ops.hpp #usr/include/boost/multiprecision/detail/number_base.hpp #usr/include/boost/multiprecision/detail/number_compare.hpp @@ -6041,6 +8031,8 @@ #usr/include/boost/multiprecision/traits #usr/include/boost/multiprecision/traits/explicit_conversion.hpp #usr/include/boost/multiprecision/traits/extract_exponent_type.hpp +#usr/include/boost/multiprecision/traits/is_backend.hpp +#usr/include/boost/multiprecision/traits/is_byte_container.hpp #usr/include/boost/multiprecision/traits/is_restricted_conversion.hpp #usr/include/boost/next_prior.hpp #usr/include/boost/non_type.hpp @@ -6123,35 +8115,84 @@ #usr/include/boost/numeric/odeint #usr/include/boost/numeric/odeint.hpp #usr/include/boost/numeric/odeint/algebra +#usr/include/boost/numeric/odeint/algebra/algebra_dispatcher.hpp #usr/include/boost/numeric/odeint/algebra/array_algebra.hpp #usr/include/boost/numeric/odeint/algebra/default_operations.hpp #usr/include/boost/numeric/odeint/algebra/detail +#usr/include/boost/numeric/odeint/algebra/detail/extract_value_type.hpp #usr/include/boost/numeric/odeint/algebra/detail/for_each.hpp #usr/include/boost/numeric/odeint/algebra/detail/macros.hpp -#usr/include/boost/numeric/odeint/algebra/detail/reduce.hpp +#usr/include/boost/numeric/odeint/algebra/detail/norm_inf.hpp #usr/include/boost/numeric/odeint/algebra/fusion_algebra.hpp +#usr/include/boost/numeric/odeint/algebra/fusion_algebra_dispatcher.hpp +#usr/include/boost/numeric/odeint/algebra/multi_array_algebra.hpp +#usr/include/boost/numeric/odeint/algebra/norm_result_type.hpp +#usr/include/boost/numeric/odeint/algebra/operations_dispatcher.hpp #usr/include/boost/numeric/odeint/algebra/range_algebra.hpp #usr/include/boost/numeric/odeint/algebra/vector_space_algebra.hpp #usr/include/boost/numeric/odeint/config.hpp #usr/include/boost/numeric/odeint/external +#usr/include/boost/numeric/odeint/external/blaze +#usr/include/boost/numeric/odeint/external/blaze/blaze_algebra_dispatcher.hpp +#usr/include/boost/numeric/odeint/external/blaze/blaze_resize.hpp +#usr/include/boost/numeric/odeint/external/compute +#usr/include/boost/numeric/odeint/external/compute/compute.hpp +#usr/include/boost/numeric/odeint/external/compute/compute_algebra.hpp +#usr/include/boost/numeric/odeint/external/compute/compute_algebra_dispatcher.hpp +#usr/include/boost/numeric/odeint/external/compute/compute_operations.hpp +#usr/include/boost/numeric/odeint/external/compute/compute_operations_dispatcher.hpp +#usr/include/boost/numeric/odeint/external/compute/compute_resize.hpp +#usr/include/boost/numeric/odeint/external/eigen +#usr/include/boost/numeric/odeint/external/eigen/eigen.hpp +#usr/include/boost/numeric/odeint/external/eigen/eigen_algebra.hpp +#usr/include/boost/numeric/odeint/external/eigen/eigen_algebra_dispatcher.hpp +#usr/include/boost/numeric/odeint/external/eigen/eigen_resize.hpp #usr/include/boost/numeric/odeint/external/gsl #usr/include/boost/numeric/odeint/external/gsl/gsl_wrapper.hpp #usr/include/boost/numeric/odeint/external/mkl #usr/include/boost/numeric/odeint/external/mkl/mkl_operations.hpp +#usr/include/boost/numeric/odeint/external/mpi +#usr/include/boost/numeric/odeint/external/mpi/mpi.hpp +#usr/include/boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp +#usr/include/boost/numeric/odeint/external/mpi/mpi_state.hpp +#usr/include/boost/numeric/odeint/external/mpi/mpi_vector_state.hpp #usr/include/boost/numeric/odeint/external/mtl4 #usr/include/boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp +#usr/include/boost/numeric/odeint/external/mtl4/mtl4.hpp +#usr/include/boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp #usr/include/boost/numeric/odeint/external/mtl4/mtl4_resize.hpp +#usr/include/boost/numeric/odeint/external/nt2 +#usr/include/boost/numeric/odeint/external/nt2/nt2_algebra_dispatcher.hpp +#usr/include/boost/numeric/odeint/external/nt2/nt2_copy.hpp +#usr/include/boost/numeric/odeint/external/nt2/nt2_norm_inf.hpp +#usr/include/boost/numeric/odeint/external/nt2/nt2_resize.hpp +#usr/include/boost/numeric/odeint/external/openmp +#usr/include/boost/numeric/odeint/external/openmp/openmp.hpp +#usr/include/boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp +#usr/include/boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp +#usr/include/boost/numeric/odeint/external/openmp/openmp_state.hpp #usr/include/boost/numeric/odeint/external/thrust +#usr/include/boost/numeric/odeint/external/thrust/thrust.hpp #usr/include/boost/numeric/odeint/external/thrust/thrust_algebra.hpp +#usr/include/boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp #usr/include/boost/numeric/odeint/external/thrust/thrust_operations.hpp +#usr/include/boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp #usr/include/boost/numeric/odeint/external/thrust/thrust_resize.hpp #usr/include/boost/numeric/odeint/external/vexcl +#usr/include/boost/numeric/odeint/external/vexcl/vexcl.hpp +#usr/include/boost/numeric/odeint/external/vexcl/vexcl_abs.hpp +#usr/include/boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp +#usr/include/boost/numeric/odeint/external/vexcl/vexcl_copy.hpp +#usr/include/boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp #usr/include/boost/numeric/odeint/external/vexcl/vexcl_resize.hpp +#usr/include/boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp #usr/include/boost/numeric/odeint/external/viennacl #usr/include/boost/numeric/odeint/external/viennacl/viennacl_operations.hpp #usr/include/boost/numeric/odeint/external/viennacl/viennacl_resize.hpp #usr/include/boost/numeric/odeint/integrate +#usr/include/boost/numeric/odeint/integrate/check_adapter.hpp #usr/include/boost/numeric/odeint/integrate/detail +#usr/include/boost/numeric/odeint/integrate/detail/functors.hpp #usr/include/boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp #usr/include/boost/numeric/odeint/integrate/detail/integrate_const.hpp #usr/include/boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp @@ -6161,8 +8202,39 @@ #usr/include/boost/numeric/odeint/integrate/integrate_const.hpp #usr/include/boost/numeric/odeint/integrate/integrate_n_steps.hpp #usr/include/boost/numeric/odeint/integrate/integrate_times.hpp +#usr/include/boost/numeric/odeint/integrate/max_step_checker.hpp #usr/include/boost/numeric/odeint/integrate/null_observer.hpp #usr/include/boost/numeric/odeint/integrate/observer_collection.hpp +#usr/include/boost/numeric/odeint/iterator +#usr/include/boost/numeric/odeint/iterator/adaptive_iterator.hpp +#usr/include/boost/numeric/odeint/iterator/adaptive_time_iterator.hpp +#usr/include/boost/numeric/odeint/iterator/const_step_iterator.hpp +#usr/include/boost/numeric/odeint/iterator/const_step_time_iterator.hpp +#usr/include/boost/numeric/odeint/iterator/detail +#usr/include/boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp +#usr/include/boost/numeric/odeint/iterator/impl +#usr/include/boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp +#usr/include/boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp +#usr/include/boost/numeric/odeint/iterator/impl/n_step_iterator_impl.hpp +#usr/include/boost/numeric/odeint/iterator/impl/times_iterator_impl.hpp +#usr/include/boost/numeric/odeint/iterator/integrate +#usr/include/boost/numeric/odeint/iterator/integrate/detail +#usr/include/boost/numeric/odeint/iterator/integrate/detail/functors.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/detail/integrate_n_steps.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/detail/integrate_times.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/integrate.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/integrate_const.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/integrate_n_steps.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/integrate_times.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/null_observer.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/observer_collection.hpp +#usr/include/boost/numeric/odeint/iterator/n_step_iterator.hpp +#usr/include/boost/numeric/odeint/iterator/n_step_time_iterator.hpp +#usr/include/boost/numeric/odeint/iterator/times_iterator.hpp +#usr/include/boost/numeric/odeint/iterator/times_time_iterator.hpp #usr/include/boost/numeric/odeint/stepper #usr/include/boost/numeric/odeint/stepper/adams_bashforth.hpp #usr/include/boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp @@ -6190,6 +8262,7 @@ #usr/include/boost/numeric/odeint/stepper/euler.hpp #usr/include/boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp #usr/include/boost/numeric/odeint/stepper/explicit_generic_rk.hpp +#usr/include/boost/numeric/odeint/stepper/extrapolation_stepper.hpp #usr/include/boost/numeric/odeint/stepper/generation #usr/include/boost/numeric/odeint/stepper/generation.hpp #usr/include/boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp @@ -6216,6 +8289,7 @@ #usr/include/boost/numeric/odeint/stepper/symplectic_euler.hpp #usr/include/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp #usr/include/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_mclachlan.hpp +#usr/include/boost/numeric/odeint/stepper/velocity_verlet.hpp #usr/include/boost/numeric/odeint/util #usr/include/boost/numeric/odeint/util/bind.hpp #usr/include/boost/numeric/odeint/util/copy.hpp @@ -6224,11 +8298,17 @@ #usr/include/boost/numeric/odeint/util/detail/less_with_sign.hpp #usr/include/boost/numeric/odeint/util/is_pair.hpp #usr/include/boost/numeric/odeint/util/is_resizeable.hpp +#usr/include/boost/numeric/odeint/util/multi_array_adaption.hpp +#usr/include/boost/numeric/odeint/util/n_ary_helper.hpp +#usr/include/boost/numeric/odeint/util/odeint_error.hpp #usr/include/boost/numeric/odeint/util/resize.hpp #usr/include/boost/numeric/odeint/util/resizer.hpp #usr/include/boost/numeric/odeint/util/same_instance.hpp #usr/include/boost/numeric/odeint/util/same_size.hpp +#usr/include/boost/numeric/odeint/util/split.hpp +#usr/include/boost/numeric/odeint/util/split_adaptor.hpp #usr/include/boost/numeric/odeint/util/state_wrapper.hpp +#usr/include/boost/numeric/odeint/util/stepper_traits.hpp #usr/include/boost/numeric/odeint/util/ublas_wrapper.hpp #usr/include/boost/numeric/odeint/util/unit_helper.hpp #usr/include/boost/numeric/odeint/util/unwrap_reference.hpp @@ -6263,6 +8343,7 @@ #usr/include/boost/numeric/ublas/matrix_expression.hpp #usr/include/boost/numeric/ublas/matrix_proxy.hpp #usr/include/boost/numeric/ublas/matrix_sparse.hpp +#usr/include/boost/numeric/ublas/matrix_vector.hpp #usr/include/boost/numeric/ublas/operation #usr/include/boost/numeric/ublas/operation.hpp #usr/include/boost/numeric/ublas/operation/begin.hpp @@ -6290,8 +8371,18 @@ #usr/include/boost/numeric/ublas/vector_proxy.hpp #usr/include/boost/numeric/ublas/vector_sparse.hpp #usr/include/boost/operators.hpp +#usr/include/boost/operators_v1.hpp #usr/include/boost/optional #usr/include/boost/optional.hpp +#usr/include/boost/optional/bad_optional_access.hpp +#usr/include/boost/optional/detail +#usr/include/boost/optional/detail/old_optional_implementation.hpp +#usr/include/boost/optional/detail/optional_aligned_storage.hpp +#usr/include/boost/optional/detail/optional_config.hpp +#usr/include/boost/optional/detail/optional_factory_support.hpp +#usr/include/boost/optional/detail/optional_reference_spec.hpp +#usr/include/boost/optional/detail/optional_relops.hpp +#usr/include/boost/optional/detail/optional_swap.hpp #usr/include/boost/optional/optional.hpp #usr/include/boost/optional/optional_fwd.hpp #usr/include/boost/optional/optional_io.hpp @@ -6333,7 +8424,6 @@ #usr/include/boost/pending #usr/include/boost/pending/bucket_sorter.hpp #usr/include/boost/pending/container_traits.hpp -#usr/include/boost/pending/cstddef.hpp #usr/include/boost/pending/detail #usr/include/boost/pending/detail/disjoint_sets.hpp #usr/include/boost/pending/detail/int_iterator.hpp @@ -6363,41 +8453,45 @@ #usr/include/boost/phoenix/bind/bind_member_function.hpp #usr/include/boost/phoenix/bind/bind_member_variable.hpp #usr/include/boost/phoenix/bind/detail -#usr/include/boost/phoenix/bind/detail/function_ptr.hpp -#usr/include/boost/phoenix/bind/detail/member_function_ptr.hpp +#usr/include/boost/phoenix/bind/detail/cpp03 +#usr/include/boost/phoenix/bind/detail/cpp03/bind_function.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/bind_function_object.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/bind_member_function.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/function_ptr.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/member_function_ptr.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_10.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_20.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_30.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_40.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_50.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_10.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_20.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_30.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_40.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_50.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_10.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_20.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_30.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_40.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_50.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_10.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_20.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_30.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_40.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_50.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_10.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_20.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_30.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_40.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_50.hpp #usr/include/boost/phoenix/bind/detail/member_variable.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed -#usr/include/boost/phoenix/bind/detail/preprocessed/function_ptr.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/function_ptr_10.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/function_ptr_20.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/function_ptr_30.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/function_ptr_40.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/function_ptr_50.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/member_function_ptr.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/member_function_ptr_10.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/member_function_ptr_20.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/member_function_ptr_30.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/member_function_ptr_40.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/member_function_ptr_50.hpp -#usr/include/boost/phoenix/bind/preprocessed -#usr/include/boost/phoenix/bind/preprocessed/bind_function.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_10.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_20.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_30.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_40.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_50.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_object.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_object_10.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_object_20.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_object_30.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_object_40.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_object_50.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_member_function.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_member_function_10.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_member_function_20.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_member_function_30.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_member_function_40.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_member_function_50.hpp +#usr/include/boost/phoenix/config.hpp #usr/include/boost/phoenix/core #usr/include/boost/phoenix/core.hpp #usr/include/boost/phoenix/core/actor.hpp @@ -6405,85 +8499,99 @@ #usr/include/boost/phoenix/core/arity.hpp #usr/include/boost/phoenix/core/as_actor.hpp #usr/include/boost/phoenix/core/call.hpp +#usr/include/boost/phoenix/core/debug.hpp #usr/include/boost/phoenix/core/detail -#usr/include/boost/phoenix/core/detail/actor_operator.hpp -#usr/include/boost/phoenix/core/detail/actor_result_of.hpp #usr/include/boost/phoenix/core/detail/argument.hpp -#usr/include/boost/phoenix/core/detail/call.hpp +#usr/include/boost/phoenix/core/detail/cpp03 +#usr/include/boost/phoenix/core/detail/cpp03/actor_operator.hpp +#usr/include/boost/phoenix/core/detail/cpp03/actor_result_of.hpp +#usr/include/boost/phoenix/core/detail/cpp03/assign.hpp +#usr/include/boost/phoenix/core/detail/cpp03/call.hpp +#usr/include/boost/phoenix/core/detail/cpp03/expression.hpp +#usr/include/boost/phoenix/core/detail/cpp03/function_equal.hpp +#usr/include/boost/phoenix/core/detail/cpp03/function_eval.hpp +#usr/include/boost/phoenix/core/detail/cpp03/function_eval_expr.hpp +#usr/include/boost/phoenix/core/detail/cpp03/phx2_result.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_operator.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/assign.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/assign_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/assign_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/assign_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/assign_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/assign_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/call.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/call_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/call_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/call_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/call_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/call_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/expression.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/expression_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/expression_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/expression_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/expression_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/expression_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_equal.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_equal_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_equal_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_equal_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_equal_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_equal_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/phx2_result.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_50.hpp #usr/include/boost/phoenix/core/detail/expression.hpp #usr/include/boost/phoenix/core/detail/function_eval.hpp +#usr/include/boost/phoenix/core/detail/index_sequence.hpp #usr/include/boost/phoenix/core/detail/phx2_result.hpp -#usr/include/boost/phoenix/core/detail/preprocessed -#usr/include/boost/phoenix/core/detail/preprocessed/actor_operator.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_operator_10.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_operator_20.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_operator_30.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_operator_40.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_operator_50.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_result_of.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_result_of_10.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_result_of_20.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_result_of_30.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_result_of_40.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_result_of_50.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/call.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/call_10.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/call_20.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/call_30.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/call_40.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/call_50.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/function_eval.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/function_eval_10.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/function_eval_20.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/function_eval_30.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/function_eval_40.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/function_eval_50.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/phx2_result.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/phx2_result_10.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/phx2_result_20.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/phx2_result_30.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/phx2_result_40.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/phx2_result_50.hpp #usr/include/boost/phoenix/core/domain.hpp #usr/include/boost/phoenix/core/environment.hpp #usr/include/boost/phoenix/core/expression.hpp #usr/include/boost/phoenix/core/function_equal.hpp #usr/include/boost/phoenix/core/is_actor.hpp #usr/include/boost/phoenix/core/is_nullary.hpp +#usr/include/boost/phoenix/core/is_value.hpp #usr/include/boost/phoenix/core/limits.hpp #usr/include/boost/phoenix/core/meta_grammar.hpp #usr/include/boost/phoenix/core/nothing.hpp -#usr/include/boost/phoenix/core/preprocessed -#usr/include/boost/phoenix/core/preprocessed/actor.hpp -#usr/include/boost/phoenix/core/preprocessed/actor_10.hpp -#usr/include/boost/phoenix/core/preprocessed/actor_20.hpp -#usr/include/boost/phoenix/core/preprocessed/actor_30.hpp -#usr/include/boost/phoenix/core/preprocessed/actor_40.hpp -#usr/include/boost/phoenix/core/preprocessed/actor_50.hpp -#usr/include/boost/phoenix/core/preprocessed/argument.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_10.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_no_predefined_10.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_no_predefined_20.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_no_predefined_30.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_no_predefined_40.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_no_predefined_50.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_predefined_10.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_predefined_20.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_predefined_30.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_predefined_40.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_predefined_50.hpp -#usr/include/boost/phoenix/core/preprocessed/expression.hpp -#usr/include/boost/phoenix/core/preprocessed/expression_10.hpp -#usr/include/boost/phoenix/core/preprocessed/expression_20.hpp -#usr/include/boost/phoenix/core/preprocessed/expression_30.hpp -#usr/include/boost/phoenix/core/preprocessed/expression_40.hpp -#usr/include/boost/phoenix/core/preprocessed/expression_50.hpp -#usr/include/boost/phoenix/core/preprocessed/function_equal.hpp -#usr/include/boost/phoenix/core/preprocessed/function_equal_10.hpp -#usr/include/boost/phoenix/core/preprocessed/function_equal_20.hpp -#usr/include/boost/phoenix/core/preprocessed/function_equal_30.hpp -#usr/include/boost/phoenix/core/preprocessed/function_equal_40.hpp -#usr/include/boost/phoenix/core/preprocessed/function_equal_50.hpp #usr/include/boost/phoenix/core/reference.hpp #usr/include/boost/phoenix/core/terminal.hpp #usr/include/boost/phoenix/core/terminal_fwd.hpp @@ -6495,22 +8603,22 @@ #usr/include/boost/phoenix/function/adapt_callable.hpp #usr/include/boost/phoenix/function/adapt_function.hpp #usr/include/boost/phoenix/function/detail -#usr/include/boost/phoenix/function/detail/function_operator.hpp -#usr/include/boost/phoenix/function/detail/function_result_of.hpp -#usr/include/boost/phoenix/function/detail/preprocessed -#usr/include/boost/phoenix/function/detail/preprocessed/function_operator.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_operator_10.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_operator_20.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_operator_30.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_operator_40.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_operator_50.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_result_of.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_result_of_10.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_result_of_20.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_result_of_30.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_result_of_40.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_result_of_50.hpp +#usr/include/boost/phoenix/function/detail/cpp03 +#usr/include/boost/phoenix/function/detail/cpp03/function_operator.hpp +#usr/include/boost/phoenix/function/detail/cpp03/preprocessed +#usr/include/boost/phoenix/function/detail/cpp03/preprocessed/function_operator.hpp +#usr/include/boost/phoenix/function/detail/cpp03/preprocessed/function_operator_10.hpp +#usr/include/boost/phoenix/function/detail/cpp03/preprocessed/function_operator_20.hpp +#usr/include/boost/phoenix/function/detail/cpp03/preprocessed/function_operator_30.hpp +#usr/include/boost/phoenix/function/detail/cpp03/preprocessed/function_operator_40.hpp +#usr/include/boost/phoenix/function/detail/cpp03/preprocessed/function_operator_50.hpp #usr/include/boost/phoenix/function/function.hpp +#usr/include/boost/phoenix/function/lazy_list.hpp +#usr/include/boost/phoenix/function/lazy_operator.hpp +#usr/include/boost/phoenix/function/lazy_prelude.hpp +#usr/include/boost/phoenix/function/lazy_reuse.hpp +#usr/include/boost/phoenix/function/lazy_signature.hpp +#usr/include/boost/phoenix/function/lazy_smart.hpp #usr/include/boost/phoenix/fusion #usr/include/boost/phoenix/fusion.hpp #usr/include/boost/phoenix/fusion/at.hpp @@ -6520,35 +8628,50 @@ #usr/include/boost/phoenix/object/construct.hpp #usr/include/boost/phoenix/object/delete.hpp #usr/include/boost/phoenix/object/detail -#usr/include/boost/phoenix/object/detail/construct.hpp -#usr/include/boost/phoenix/object/detail/construct_eval.hpp -#usr/include/boost/phoenix/object/detail/new.hpp -#usr/include/boost/phoenix/object/detail/new_eval.hpp -#usr/include/boost/phoenix/object/detail/preprocessed -#usr/include/boost/phoenix/object/detail/preprocessed/construct.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_10.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_20.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_30.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_40.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_50.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_eval.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_eval_10.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_eval_20.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_eval_30.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_eval_40.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_eval_50.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_10.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_20.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_30.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_40.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_50.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_eval.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_eval_10.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_eval_20.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_eval_30.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_eval_40.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_eval_50.hpp +#usr/include/boost/phoenix/object/detail/cpp03 +#usr/include/boost/phoenix/object/detail/cpp03/construct.hpp +#usr/include/boost/phoenix/object/detail/cpp03/construct_eval.hpp +#usr/include/boost/phoenix/object/detail/cpp03/construct_expr.hpp +#usr/include/boost/phoenix/object/detail/cpp03/new.hpp +#usr/include/boost/phoenix/object/detail/cpp03/new_eval.hpp +#usr/include/boost/phoenix/object/detail/cpp03/new_expr.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_10.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_20.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_30.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_40.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_50.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_eval.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_10.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_20.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_30.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_40.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_50.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_expr.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_10.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_20.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_30.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_40.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_50.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_10.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_20.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_30.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_40.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_50.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_eval.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_eval_10.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_eval_20.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_eval_30.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_eval_40.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_eval_50.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_expr.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_expr_10.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_expr_20.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_expr_30.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_expr_40.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_expr_50.hpp #usr/include/boost/phoenix/object/detail/target.hpp #usr/include/boost/phoenix/object/dynamic_cast.hpp #usr/include/boost/phoenix/object/new.hpp @@ -6560,61 +8683,65 @@ #usr/include/boost/phoenix/operator/bitwise.hpp #usr/include/boost/phoenix/operator/comparison.hpp #usr/include/boost/phoenix/operator/detail +#usr/include/boost/phoenix/operator/detail/cpp03 +#usr/include/boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval_result_of.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/mem_fun_ptr_expr.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/mem_fun_ptr_gen.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_10.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_20.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_30.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_40.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_50.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_10.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_20.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_30.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_40.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_50.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_10.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_20.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_30.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_40.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_50.hpp #usr/include/boost/phoenix/operator/detail/define_operator.hpp -#usr/include/boost/phoenix/operator/detail/mem_fun_ptr_eval_result_of.hpp -#usr/include/boost/phoenix/operator/detail/mem_fun_ptr_gen.hpp -#usr/include/boost/phoenix/operator/detail/preprocessed -#usr/include/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen.hpp -#usr/include/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_10.hpp -#usr/include/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_20.hpp -#usr/include/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_30.hpp -#usr/include/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_40.hpp -#usr/include/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_50.hpp #usr/include/boost/phoenix/operator/detail/undef_operator.hpp #usr/include/boost/phoenix/operator/if_else.hpp #usr/include/boost/phoenix/operator/io.hpp #usr/include/boost/phoenix/operator/logical.hpp #usr/include/boost/phoenix/operator/member.hpp -#usr/include/boost/phoenix/operator/preprocessed -#usr/include/boost/phoenix/operator/preprocessed/member.hpp -#usr/include/boost/phoenix/operator/preprocessed/member_10.hpp -#usr/include/boost/phoenix/operator/preprocessed/member_20.hpp -#usr/include/boost/phoenix/operator/preprocessed/member_30.hpp -#usr/include/boost/phoenix/operator/preprocessed/member_40.hpp -#usr/include/boost/phoenix/operator/preprocessed/member_50.hpp #usr/include/boost/phoenix/operator/self.hpp #usr/include/boost/phoenix/phoenix.hpp #usr/include/boost/phoenix/scope #usr/include/boost/phoenix/scope.hpp #usr/include/boost/phoenix/scope/detail -#usr/include/boost/phoenix/scope/detail/dynamic.hpp +#usr/include/boost/phoenix/scope/detail/cpp03 +#usr/include/boost/phoenix/scope/detail/cpp03/dynamic.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/lambda.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/local_gen.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/dynamic.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_10.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_20.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_30.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_40.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_50.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/lambda.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/lambda_10.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/lambda_20.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/lambda_30.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/lambda_40.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/lambda_50.hpp #usr/include/boost/phoenix/scope/detail/local_gen.hpp #usr/include/boost/phoenix/scope/detail/local_variable.hpp -#usr/include/boost/phoenix/scope/detail/make_locals.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed -#usr/include/boost/phoenix/scope/detail/preprocessed/dynamic.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/dynamic_10.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/dynamic_20.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/dynamic_30.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/dynamic_40.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/dynamic_50.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/make_locals.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/make_locals_10.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/make_locals_20.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/make_locals_30.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/make_locals_40.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/make_locals_50.hpp #usr/include/boost/phoenix/scope/dynamic.hpp #usr/include/boost/phoenix/scope/lambda.hpp #usr/include/boost/phoenix/scope/let.hpp #usr/include/boost/phoenix/scope/local_variable.hpp -#usr/include/boost/phoenix/scope/preprocessed -#usr/include/boost/phoenix/scope/preprocessed/lambda.hpp -#usr/include/boost/phoenix/scope/preprocessed/lambda_10.hpp -#usr/include/boost/phoenix/scope/preprocessed/lambda_20.hpp -#usr/include/boost/phoenix/scope/preprocessed/lambda_30.hpp -#usr/include/boost/phoenix/scope/preprocessed/lambda_40.hpp -#usr/include/boost/phoenix/scope/preprocessed/lambda_50.hpp #usr/include/boost/phoenix/scope/scoped_environment.hpp #usr/include/boost/phoenix/scope/this.hpp #usr/include/boost/phoenix/statement @@ -6679,8 +8806,10 @@ #usr/include/boost/phoenix/stl/algorithm/detail/is_std_list.hpp #usr/include/boost/phoenix/stl/algorithm/detail/is_std_map.hpp #usr/include/boost/phoenix/stl/algorithm/detail/is_std_set.hpp +#usr/include/boost/phoenix/stl/algorithm/detail/is_unordered_set_or_map.hpp #usr/include/boost/phoenix/stl/algorithm/detail/std_hash_map_fwd.hpp #usr/include/boost/phoenix/stl/algorithm/detail/std_hash_set_fwd.hpp +#usr/include/boost/phoenix/stl/algorithm/detail/std_unordered_set_or_map_fwd.hpp #usr/include/boost/phoenix/stl/algorithm/iteration.hpp #usr/include/boost/phoenix/stl/algorithm/querying.hpp #usr/include/boost/phoenix/stl/algorithm/transformation.hpp @@ -6775,6 +8904,8 @@ #usr/include/boost/polygon/voronoi_builder.hpp #usr/include/boost/polygon/voronoi_diagram.hpp #usr/include/boost/polygon/voronoi_geometry_type.hpp +#usr/include/boost/polymorphic_cast.hpp +#usr/include/boost/polymorphic_pointer_cast.hpp #usr/include/boost/pool #usr/include/boost/pool/detail #usr/include/boost/pool/detail/guard.hpp @@ -6845,9 +8976,28 @@ #usr/include/boost/predef/detail #usr/include/boost/predef/detail/_cassert.h #usr/include/boost/predef/detail/_exception.h +#usr/include/boost/predef/detail/comp_detected.h #usr/include/boost/predef/detail/endian_compat.h #usr/include/boost/predef/detail/os_detected.h +#usr/include/boost/predef/detail/platform_detected.h #usr/include/boost/predef/detail/test.h +#usr/include/boost/predef/detail/test_def.h +#usr/include/boost/predef/hardware +#usr/include/boost/predef/hardware.h +#usr/include/boost/predef/hardware/simd +#usr/include/boost/predef/hardware/simd.h +#usr/include/boost/predef/hardware/simd/arm +#usr/include/boost/predef/hardware/simd/arm.h +#usr/include/boost/predef/hardware/simd/arm/versions.h +#usr/include/boost/predef/hardware/simd/ppc +#usr/include/boost/predef/hardware/simd/ppc.h +#usr/include/boost/predef/hardware/simd/ppc/versions.h +#usr/include/boost/predef/hardware/simd/x86 +#usr/include/boost/predef/hardware/simd/x86.h +#usr/include/boost/predef/hardware/simd/x86/versions.h +#usr/include/boost/predef/hardware/simd/x86_amd +#usr/include/boost/predef/hardware/simd/x86_amd.h +#usr/include/boost/predef/hardware/simd/x86_amd/versions.h #usr/include/boost/predef/language #usr/include/boost/predef/language.h #usr/include/boost/predef/language/objc.h @@ -6890,7 +9040,9 @@ #usr/include/boost/predef/os/bsd/net.h #usr/include/boost/predef/os/bsd/open.h #usr/include/boost/predef/os/cygwin.h +#usr/include/boost/predef/os/haiku.h #usr/include/boost/predef/os/hpux.h +#usr/include/boost/predef/os/ios.h #usr/include/boost/predef/os/irix.h #usr/include/boost/predef/os/linux.h #usr/include/boost/predef/os/macos.h @@ -6906,6 +9058,11 @@ #usr/include/boost/predef/platform #usr/include/boost/predef/platform.h #usr/include/boost/predef/platform/mingw.h +#usr/include/boost/predef/platform/windows_desktop.h +#usr/include/boost/predef/platform/windows_phone.h +#usr/include/boost/predef/platform/windows_runtime.h +#usr/include/boost/predef/platform/windows_store.h +#usr/include/boost/predef/version.h #usr/include/boost/predef/version_number.h #usr/include/boost/preprocessor #usr/include/boost/preprocessor.hpp @@ -6923,6 +9080,8 @@ #usr/include/boost/preprocessor/array #usr/include/boost/preprocessor/array.hpp #usr/include/boost/preprocessor/array/data.hpp +#usr/include/boost/preprocessor/array/detail +#usr/include/boost/preprocessor/array/detail/get_data.hpp #usr/include/boost/preprocessor/array/elem.hpp #usr/include/boost/preprocessor/array/enum.hpp #usr/include/boost/preprocessor/array/insert.hpp @@ -6996,6 +9155,8 @@ #usr/include/boost/preprocessor/facilities #usr/include/boost/preprocessor/facilities.hpp #usr/include/boost/preprocessor/facilities/apply.hpp +#usr/include/boost/preprocessor/facilities/detail +#usr/include/boost/preprocessor/facilities/detail/is_empty.hpp #usr/include/boost/preprocessor/facilities/empty.hpp #usr/include/boost/preprocessor/facilities/expand.hpp #usr/include/boost/preprocessor/facilities/identity.hpp @@ -7003,6 +9164,7 @@ #usr/include/boost/preprocessor/facilities/is_1.hpp #usr/include/boost/preprocessor/facilities/is_empty.hpp #usr/include/boost/preprocessor/facilities/is_empty_or_1.hpp +#usr/include/boost/preprocessor/facilities/is_empty_variadic.hpp #usr/include/boost/preprocessor/facilities/overload.hpp #usr/include/boost/preprocessor/for.hpp #usr/include/boost/preprocessor/identity.hpp @@ -7092,8 +9254,12 @@ #usr/include/boost/preprocessor/punctuation.hpp #usr/include/boost/preprocessor/punctuation/comma.hpp #usr/include/boost/preprocessor/punctuation/comma_if.hpp +#usr/include/boost/preprocessor/punctuation/detail +#usr/include/boost/preprocessor/punctuation/detail/is_begin_parens.hpp +#usr/include/boost/preprocessor/punctuation/is_begin_parens.hpp #usr/include/boost/preprocessor/punctuation/paren.hpp #usr/include/boost/preprocessor/punctuation/paren_if.hpp +#usr/include/boost/preprocessor/punctuation/remove_parens.hpp #usr/include/boost/preprocessor/repeat.hpp #usr/include/boost/preprocessor/repeat_2nd.hpp #usr/include/boost/preprocessor/repeat_3rd.hpp @@ -7135,7 +9301,9 @@ #usr/include/boost/preprocessor/seq/cat.hpp #usr/include/boost/preprocessor/seq/detail #usr/include/boost/preprocessor/seq/detail/binary_transform.hpp +#usr/include/boost/preprocessor/seq/detail/is_empty.hpp #usr/include/boost/preprocessor/seq/detail/split.hpp +#usr/include/boost/preprocessor/seq/detail/to_list_msvc.hpp #usr/include/boost/preprocessor/seq/elem.hpp #usr/include/boost/preprocessor/seq/enum.hpp #usr/include/boost/preprocessor/seq/filter.hpp @@ -7161,6 +9329,7 @@ #usr/include/boost/preprocessor/seq/to_list.hpp #usr/include/boost/preprocessor/seq/to_tuple.hpp #usr/include/boost/preprocessor/seq/transform.hpp +#usr/include/boost/preprocessor/seq/variadic_seq_to_seq.hpp #usr/include/boost/preprocessor/slot #usr/include/boost/preprocessor/slot.hpp #usr/include/boost/preprocessor/slot/counter.hpp @@ -7177,10 +9346,19 @@ #usr/include/boost/preprocessor/stringize.hpp #usr/include/boost/preprocessor/tuple #usr/include/boost/preprocessor/tuple.hpp +#usr/include/boost/preprocessor/tuple/detail +#usr/include/boost/preprocessor/tuple/detail/is_single_return.hpp #usr/include/boost/preprocessor/tuple/eat.hpp #usr/include/boost/preprocessor/tuple/elem.hpp #usr/include/boost/preprocessor/tuple/enum.hpp +#usr/include/boost/preprocessor/tuple/insert.hpp +#usr/include/boost/preprocessor/tuple/pop_back.hpp +#usr/include/boost/preprocessor/tuple/pop_front.hpp +#usr/include/boost/preprocessor/tuple/push_back.hpp +#usr/include/boost/preprocessor/tuple/push_front.hpp #usr/include/boost/preprocessor/tuple/rem.hpp +#usr/include/boost/preprocessor/tuple/remove.hpp +#usr/include/boost/preprocessor/tuple/replace.hpp #usr/include/boost/preprocessor/tuple/reverse.hpp #usr/include/boost/preprocessor/tuple/size.hpp #usr/include/boost/preprocessor/tuple/to_array.hpp @@ -7188,6 +9366,8 @@ #usr/include/boost/preprocessor/tuple/to_seq.hpp #usr/include/boost/preprocessor/variadic #usr/include/boost/preprocessor/variadic.hpp +#usr/include/boost/preprocessor/variadic/detail +#usr/include/boost/preprocessor/variadic/detail/is_single_return.hpp #usr/include/boost/preprocessor/variadic/elem.hpp #usr/include/boost/preprocessor/variadic/size.hpp #usr/include/boost/preprocessor/variadic/to_array.hpp @@ -7196,6 +9376,127 @@ #usr/include/boost/preprocessor/variadic/to_tuple.hpp #usr/include/boost/preprocessor/while.hpp #usr/include/boost/preprocessor/wstringize.hpp +#usr/include/boost/process +#usr/include/boost/process.hpp +#usr/include/boost/process/args.hpp +#usr/include/boost/process/async.hpp +#usr/include/boost/process/async_pipe.hpp +#usr/include/boost/process/async_system.hpp +#usr/include/boost/process/child.hpp +#usr/include/boost/process/cmd.hpp +#usr/include/boost/process/detail +#usr/include/boost/process/detail/async_handler.hpp +#usr/include/boost/process/detail/basic_cmd.hpp +#usr/include/boost/process/detail/child_decl.hpp +#usr/include/boost/process/detail/config.hpp +#usr/include/boost/process/detail/execute_impl.hpp +#usr/include/boost/process/detail/handler.hpp +#usr/include/boost/process/detail/handler_base.hpp +#usr/include/boost/process/detail/on_exit.hpp +#usr/include/boost/process/detail/posix +#usr/include/boost/process/detail/posix/asio_fwd.hpp +#usr/include/boost/process/detail/posix/async_handler.hpp +#usr/include/boost/process/detail/posix/async_in.hpp +#usr/include/boost/process/detail/posix/async_out.hpp +#usr/include/boost/process/detail/posix/async_pipe.hpp +#usr/include/boost/process/detail/posix/basic_cmd.hpp +#usr/include/boost/process/detail/posix/basic_pipe.hpp +#usr/include/boost/process/detail/posix/child_handle.hpp +#usr/include/boost/process/detail/posix/close_in.hpp +#usr/include/boost/process/detail/posix/close_out.hpp +#usr/include/boost/process/detail/posix/cmd.hpp +#usr/include/boost/process/detail/posix/compare_handles.hpp +#usr/include/boost/process/detail/posix/env_init.hpp +#usr/include/boost/process/detail/posix/environment.hpp +#usr/include/boost/process/detail/posix/exe.hpp +#usr/include/boost/process/detail/posix/executor.hpp +#usr/include/boost/process/detail/posix/fd.hpp +#usr/include/boost/process/detail/posix/file_descriptor.hpp +#usr/include/boost/process/detail/posix/file_in.hpp +#usr/include/boost/process/detail/posix/file_out.hpp +#usr/include/boost/process/detail/posix/group_handle.hpp +#usr/include/boost/process/detail/posix/group_ref.hpp +#usr/include/boost/process/detail/posix/handler.hpp +#usr/include/boost/process/detail/posix/io_service_ref.hpp +#usr/include/boost/process/detail/posix/is_running.hpp +#usr/include/boost/process/detail/posix/null_in.hpp +#usr/include/boost/process/detail/posix/null_out.hpp +#usr/include/boost/process/detail/posix/on_exit.hpp +#usr/include/boost/process/detail/posix/pipe_in.hpp +#usr/include/boost/process/detail/posix/pipe_out.hpp +#usr/include/boost/process/detail/posix/search_path.hpp +#usr/include/boost/process/detail/posix/shell_path.hpp +#usr/include/boost/process/detail/posix/signal.hpp +#usr/include/boost/process/detail/posix/start_dir.hpp +#usr/include/boost/process/detail/posix/terminate.hpp +#usr/include/boost/process/detail/posix/use_vfork.hpp +#usr/include/boost/process/detail/posix/wait_for_exit.hpp +#usr/include/boost/process/detail/posix/wait_group.hpp +#usr/include/boost/process/detail/throw_on_error.hpp +#usr/include/boost/process/detail/traits +#usr/include/boost/process/detail/traits.hpp +#usr/include/boost/process/detail/traits/async.hpp +#usr/include/boost/process/detail/traits/cmd_or_exe.hpp +#usr/include/boost/process/detail/traits/decl.hpp +#usr/include/boost/process/detail/traits/env.hpp +#usr/include/boost/process/detail/traits/error.hpp +#usr/include/boost/process/detail/traits/group.hpp +#usr/include/boost/process/detail/traits/wchar_t.hpp +#usr/include/boost/process/detail/windows +#usr/include/boost/process/detail/windows/asio_fwd.hpp +#usr/include/boost/process/detail/windows/async_handler.hpp +#usr/include/boost/process/detail/windows/async_in.hpp +#usr/include/boost/process/detail/windows/async_out.hpp +#usr/include/boost/process/detail/windows/async_pipe.hpp +#usr/include/boost/process/detail/windows/basic_cmd.hpp +#usr/include/boost/process/detail/windows/basic_pipe.hpp +#usr/include/boost/process/detail/windows/child_handle.hpp +#usr/include/boost/process/detail/windows/close_in.hpp +#usr/include/boost/process/detail/windows/close_out.hpp +#usr/include/boost/process/detail/windows/cmd.hpp +#usr/include/boost/process/detail/windows/compare_handles.hpp +#usr/include/boost/process/detail/windows/env_init.hpp +#usr/include/boost/process/detail/windows/environment.hpp +#usr/include/boost/process/detail/windows/executor.hpp +#usr/include/boost/process/detail/windows/file_descriptor.hpp +#usr/include/boost/process/detail/windows/file_in.hpp +#usr/include/boost/process/detail/windows/file_out.hpp +#usr/include/boost/process/detail/windows/group_handle.hpp +#usr/include/boost/process/detail/windows/group_ref.hpp +#usr/include/boost/process/detail/windows/handler.hpp +#usr/include/boost/process/detail/windows/io_service_ref.hpp +#usr/include/boost/process/detail/windows/is_running.hpp +#usr/include/boost/process/detail/windows/job_workaround.hpp +#usr/include/boost/process/detail/windows/locale.hpp +#usr/include/boost/process/detail/windows/null_in.hpp +#usr/include/boost/process/detail/windows/null_out.hpp +#usr/include/boost/process/detail/windows/on_exit.hpp +#usr/include/boost/process/detail/windows/pipe_in.hpp +#usr/include/boost/process/detail/windows/pipe_out.hpp +#usr/include/boost/process/detail/windows/search_path.hpp +#usr/include/boost/process/detail/windows/shell_path.hpp +#usr/include/boost/process/detail/windows/show_window.hpp +#usr/include/boost/process/detail/windows/start_dir.hpp +#usr/include/boost/process/detail/windows/terminate.hpp +#usr/include/boost/process/detail/windows/wait_for_exit.hpp +#usr/include/boost/process/detail/windows/wait_group.hpp +#usr/include/boost/process/env.hpp +#usr/include/boost/process/environment.hpp +#usr/include/boost/process/error.hpp +#usr/include/boost/process/exception.hpp +#usr/include/boost/process/exe.hpp +#usr/include/boost/process/extend.hpp +#usr/include/boost/process/group.hpp +#usr/include/boost/process/io.hpp +#usr/include/boost/process/locale.hpp +#usr/include/boost/process/pipe.hpp +#usr/include/boost/process/posix.hpp +#usr/include/boost/process/search_path.hpp +#usr/include/boost/process/shell.hpp +#usr/include/boost/process/spawn.hpp +#usr/include/boost/process/start_dir.hpp +#usr/include/boost/process/system.hpp +#usr/include/boost/process/windows.hpp #usr/include/boost/program_options #usr/include/boost/program_options.hpp #usr/include/boost/program_options/cmdline.hpp @@ -7223,12 +9524,20 @@ #usr/include/boost/property_map/dynamic_property_map.hpp #usr/include/boost/property_map/function_property_map.hpp #usr/include/boost/property_map/parallel +#usr/include/boost/property_map/parallel/basic_reduce.hpp #usr/include/boost/property_map/parallel/caching_property_map.hpp +#usr/include/boost/property_map/parallel/detail +#usr/include/boost/property_map/parallel/detail/untracked_pair.hpp #usr/include/boost/property_map/parallel/distributed_property_map.hpp #usr/include/boost/property_map/parallel/global_index_map.hpp #usr/include/boost/property_map/parallel/impl #usr/include/boost/property_map/parallel/impl/distributed_property_map.ipp #usr/include/boost/property_map/parallel/local_property_map.hpp +#usr/include/boost/property_map/parallel/parallel_property_maps.hpp +#usr/include/boost/property_map/parallel/process_group.hpp +#usr/include/boost/property_map/parallel/simple_trigger.hpp +#usr/include/boost/property_map/parallel/unsafe_serialize.hpp +#usr/include/boost/property_map/parallel/vector_property_map.hpp #usr/include/boost/property_map/property_map.hpp #usr/include/boost/property_map/property_map_iterator.hpp #usr/include/boost/property_map/shared_array_property_map.hpp @@ -7243,9 +9552,6 @@ #usr/include/boost/property_tree/detail/info_parser_utils.hpp #usr/include/boost/property_tree/detail/info_parser_write.hpp #usr/include/boost/property_tree/detail/info_parser_writer_settings.hpp -#usr/include/boost/property_tree/detail/json_parser_error.hpp -#usr/include/boost/property_tree/detail/json_parser_read.hpp -#usr/include/boost/property_tree/detail/json_parser_write.hpp #usr/include/boost/property_tree/detail/ptree_implementation.hpp #usr/include/boost/property_tree/detail/ptree_utils.hpp #usr/include/boost/property_tree/detail/rapidxml.hpp @@ -7259,7 +9565,16 @@ #usr/include/boost/property_tree/id_translator.hpp #usr/include/boost/property_tree/info_parser.hpp #usr/include/boost/property_tree/ini_parser.hpp +#usr/include/boost/property_tree/json_parser #usr/include/boost/property_tree/json_parser.hpp +#usr/include/boost/property_tree/json_parser/detail +#usr/include/boost/property_tree/json_parser/detail/narrow_encoding.hpp +#usr/include/boost/property_tree/json_parser/detail/parser.hpp +#usr/include/boost/property_tree/json_parser/detail/read.hpp +#usr/include/boost/property_tree/json_parser/detail/standard_callbacks.hpp +#usr/include/boost/property_tree/json_parser/detail/wide_encoding.hpp +#usr/include/boost/property_tree/json_parser/detail/write.hpp +#usr/include/boost/property_tree/json_parser/error.hpp #usr/include/boost/property_tree/ptree.hpp #usr/include/boost/property_tree/ptree_fwd.hpp #usr/include/boost/property_tree/ptree_serialization.hpp @@ -7576,7 +9891,6 @@ #usr/include/boost/python/detail/translate_exception.hpp #usr/include/boost/python/detail/type_list.hpp #usr/include/boost/python/detail/type_list_impl.hpp -#usr/include/boost/python/detail/type_list_impl_no_pts.hpp #usr/include/boost/python/detail/unwind_type.hpp #usr/include/boost/python/detail/unwrap_type_id.hpp #usr/include/boost/python/detail/unwrap_wrapper.hpp @@ -7611,6 +9925,17 @@ #usr/include/boost/python/module.hpp #usr/include/boost/python/module_init.hpp #usr/include/boost/python/numeric.hpp +#usr/include/boost/python/numpy +#usr/include/boost/python/numpy.hpp +#usr/include/boost/python/numpy/config.hpp +#usr/include/boost/python/numpy/dtype.hpp +#usr/include/boost/python/numpy/internal.hpp +#usr/include/boost/python/numpy/invoke_matching.hpp +#usr/include/boost/python/numpy/matrix.hpp +#usr/include/boost/python/numpy/ndarray.hpp +#usr/include/boost/python/numpy/numpy_object_mgr_traits.hpp +#usr/include/boost/python/numpy/scalars.hpp +#usr/include/boost/python/numpy/ufunc.hpp #usr/include/boost/python/object #usr/include/boost/python/object.hpp #usr/include/boost/python/object/add_to_namespace.hpp @@ -7691,10 +10016,83 @@ #usr/include/boost/python/type_id.hpp #usr/include/boost/python/with_custodian_and_ward.hpp #usr/include/boost/python/wrapper.hpp +#usr/include/boost/qvm +#usr/include/boost/qvm/all.hpp +#usr/include/boost/qvm/assert.hpp +#usr/include/boost/qvm/deduce_mat.hpp +#usr/include/boost/qvm/deduce_quat.hpp +#usr/include/boost/qvm/deduce_scalar.hpp +#usr/include/boost/qvm/deduce_vec.hpp +#usr/include/boost/qvm/detail +#usr/include/boost/qvm/detail/cofactor_impl.hpp +#usr/include/boost/qvm/detail/determinant_impl.hpp +#usr/include/boost/qvm/detail/remove_const.hpp +#usr/include/boost/qvm/detail/swizzle_traits.hpp +#usr/include/boost/qvm/detail/transp_impl.hpp +#usr/include/boost/qvm/enable_if.hpp +#usr/include/boost/qvm/error.hpp +#usr/include/boost/qvm/gen +#usr/include/boost/qvm/gen/mat_operations2.hpp +#usr/include/boost/qvm/gen/mat_operations3.hpp +#usr/include/boost/qvm/gen/mat_operations4.hpp +#usr/include/boost/qvm/gen/swizzle2.hpp +#usr/include/boost/qvm/gen/swizzle3.hpp +#usr/include/boost/qvm/gen/swizzle4.hpp +#usr/include/boost/qvm/gen/vec_mat_operations2.hpp +#usr/include/boost/qvm/gen/vec_mat_operations3.hpp +#usr/include/boost/qvm/gen/vec_mat_operations4.hpp +#usr/include/boost/qvm/gen/vec_operations2.hpp +#usr/include/boost/qvm/gen/vec_operations3.hpp +#usr/include/boost/qvm/gen/vec_operations4.hpp +#usr/include/boost/qvm/inline.hpp +#usr/include/boost/qvm/map.hpp +#usr/include/boost/qvm/map_mat_mat.hpp +#usr/include/boost/qvm/map_mat_vec.hpp +#usr/include/boost/qvm/map_vec_mat.hpp +#usr/include/boost/qvm/mat.hpp +#usr/include/boost/qvm/mat_access.hpp +#usr/include/boost/qvm/mat_operations.hpp +#usr/include/boost/qvm/mat_operations2.hpp +#usr/include/boost/qvm/mat_operations3.hpp +#usr/include/boost/qvm/mat_operations4.hpp +#usr/include/boost/qvm/mat_traits.hpp +#usr/include/boost/qvm/mat_traits_array.hpp +#usr/include/boost/qvm/mat_traits_defaults.hpp +#usr/include/boost/qvm/math.hpp +#usr/include/boost/qvm/operations.hpp +#usr/include/boost/qvm/quat.hpp +#usr/include/boost/qvm/quat_access.hpp +#usr/include/boost/qvm/quat_operations.hpp +#usr/include/boost/qvm/quat_traits.hpp +#usr/include/boost/qvm/quat_traits_array.hpp +#usr/include/boost/qvm/quat_traits_defaults.hpp +#usr/include/boost/qvm/quat_vec_operations.hpp +#usr/include/boost/qvm/scalar_traits.hpp +#usr/include/boost/qvm/static_assert.hpp +#usr/include/boost/qvm/swizzle.hpp +#usr/include/boost/qvm/swizzle2.hpp +#usr/include/boost/qvm/swizzle3.hpp +#usr/include/boost/qvm/swizzle4.hpp +#usr/include/boost/qvm/throw_exception.hpp +#usr/include/boost/qvm/to_string.hpp +#usr/include/boost/qvm/vec.hpp +#usr/include/boost/qvm/vec_access.hpp +#usr/include/boost/qvm/vec_mat_operations.hpp +#usr/include/boost/qvm/vec_mat_operations2.hpp +#usr/include/boost/qvm/vec_mat_operations3.hpp +#usr/include/boost/qvm/vec_mat_operations4.hpp +#usr/include/boost/qvm/vec_operations.hpp +#usr/include/boost/qvm/vec_operations2.hpp +#usr/include/boost/qvm/vec_operations3.hpp +#usr/include/boost/qvm/vec_operations4.hpp +#usr/include/boost/qvm/vec_traits.hpp +#usr/include/boost/qvm/vec_traits_array.hpp +#usr/include/boost/qvm/vec_traits_defaults.hpp #usr/include/boost/random #usr/include/boost/random.hpp #usr/include/boost/random/additive_combine.hpp #usr/include/boost/random/bernoulli_distribution.hpp +#usr/include/boost/random/beta_distribution.hpp #usr/include/boost/random/binomial_distribution.hpp #usr/include/boost/random/cauchy_distribution.hpp #usr/include/boost/random/chi_squared_distribution.hpp @@ -7706,10 +10104,12 @@ #usr/include/boost/random/detail/enable_warnings.hpp #usr/include/boost/random/detail/generator_bits.hpp #usr/include/boost/random/detail/generator_seed_seq.hpp +#usr/include/boost/random/detail/int_float_pair.hpp #usr/include/boost/random/detail/integer_log2.hpp #usr/include/boost/random/detail/iterator_mixin.hpp #usr/include/boost/random/detail/large_arithmetic.hpp #usr/include/boost/random/detail/operators.hpp +#usr/include/boost/random/detail/polynomial.hpp #usr/include/boost/random/detail/ptr_helper.hpp #usr/include/boost/random/detail/seed.hpp #usr/include/boost/random/detail/seed_impl.hpp @@ -7724,14 +10124,17 @@ #usr/include/boost/random/gamma_distribution.hpp #usr/include/boost/random/generate_canonical.hpp #usr/include/boost/random/geometric_distribution.hpp +#usr/include/boost/random/hyperexponential_distribution.hpp #usr/include/boost/random/independent_bits.hpp #usr/include/boost/random/inversive_congruential.hpp #usr/include/boost/random/lagged_fibonacci.hpp +#usr/include/boost/random/laplace_distribution.hpp #usr/include/boost/random/linear_congruential.hpp #usr/include/boost/random/linear_feedback_shift.hpp #usr/include/boost/random/lognormal_distribution.hpp #usr/include/boost/random/mersenne_twister.hpp #usr/include/boost/random/negative_binomial_distribution.hpp +#usr/include/boost/random/non_central_chi_squared_distribution.hpp #usr/include/boost/random/normal_distribution.hpp #usr/include/boost/random/piecewise_constant_distribution.hpp #usr/include/boost/random/piecewise_linear_distribution.hpp @@ -7745,6 +10148,7 @@ #usr/include/boost/random/student_t_distribution.hpp #usr/include/boost/random/subtract_with_carry.hpp #usr/include/boost/random/taus88.hpp +#usr/include/boost/random/traits.hpp #usr/include/boost/random/triangle_distribution.hpp #usr/include/boost/random/uniform_01.hpp #usr/include/boost/random/uniform_int.hpp @@ -7764,6 +10168,7 @@ #usr/include/boost/range/adaptor/copied.hpp #usr/include/boost/range/adaptor/define_adaptor.hpp #usr/include/boost/range/adaptor/filtered.hpp +#usr/include/boost/range/adaptor/formatted.hpp #usr/include/boost/range/adaptor/indexed.hpp #usr/include/boost/range/adaptor/indirected.hpp #usr/include/boost/range/adaptor/map.hpp @@ -7864,31 +10269,32 @@ #usr/include/boost/range/detail/begin.hpp #usr/include/boost/range/detail/collection_traits.hpp #usr/include/boost/range/detail/collection_traits_detail.hpp +#usr/include/boost/range/detail/combine_cxx03.hpp +#usr/include/boost/range/detail/combine_cxx11.hpp +#usr/include/boost/range/detail/combine_no_rvalue.hpp +#usr/include/boost/range/detail/combine_rvalue.hpp #usr/include/boost/range/detail/common.hpp -#usr/include/boost/range/detail/const_iterator.hpp +#usr/include/boost/range/detail/default_constructible_unary_fn.hpp #usr/include/boost/range/detail/demote_iterator_traversal_tag.hpp #usr/include/boost/range/detail/detail_str.hpp #usr/include/boost/range/detail/difference_type.hpp #usr/include/boost/range/detail/empty.hpp #usr/include/boost/range/detail/end.hpp #usr/include/boost/range/detail/extract_optional_type.hpp +#usr/include/boost/range/detail/has_member_size.hpp #usr/include/boost/range/detail/implementation_help.hpp -#usr/include/boost/range/detail/iterator.hpp #usr/include/boost/range/detail/join_iterator.hpp #usr/include/boost/range/detail/microsoft.hpp #usr/include/boost/range/detail/misc_concept.hpp +#usr/include/boost/range/detail/msvc_has_iterator_workaround.hpp #usr/include/boost/range/detail/range_return.hpp #usr/include/boost/range/detail/remove_extent.hpp #usr/include/boost/range/detail/safe_bool.hpp #usr/include/boost/range/detail/sfinae.hpp -#usr/include/boost/range/detail/size.hpp #usr/include/boost/range/detail/size_type.hpp #usr/include/boost/range/detail/sizer.hpp #usr/include/boost/range/detail/str_types.hpp #usr/include/boost/range/detail/value_type.hpp -#usr/include/boost/range/detail/vc6 -#usr/include/boost/range/detail/vc6/end.hpp -#usr/include/boost/range/detail/vc6/size.hpp #usr/include/boost/range/difference_type.hpp #usr/include/boost/range/distance.hpp #usr/include/boost/range/empty.hpp @@ -7900,13 +10306,16 @@ #usr/include/boost/range/iterator.hpp #usr/include/boost/range/iterator_range.hpp #usr/include/boost/range/iterator_range_core.hpp +#usr/include/boost/range/iterator_range_hash.hpp #usr/include/boost/range/iterator_range_io.hpp #usr/include/boost/range/join.hpp #usr/include/boost/range/metafunctions.hpp #usr/include/boost/range/mfc.hpp +#usr/include/boost/range/mfc_map.hpp #usr/include/boost/range/mutable_iterator.hpp #usr/include/boost/range/numeric.hpp #usr/include/boost/range/pointer.hpp +#usr/include/boost/range/range_fwd.hpp #usr/include/boost/range/rbegin.hpp #usr/include/boost/range/reference.hpp #usr/include/boost/range/rend.hpp @@ -7916,6 +10325,7 @@ #usr/include/boost/range/size.hpp #usr/include/boost/range/size_type.hpp #usr/include/boost/range/sub_range.hpp +#usr/include/boost/range/traversal.hpp #usr/include/boost/range/value_type.hpp #usr/include/boost/ratio #usr/include/boost/ratio.hpp @@ -7953,7 +10363,6 @@ #usr/include/boost/ratio/ratio.hpp #usr/include/boost/ratio/ratio_fwd.hpp #usr/include/boost/ratio/ratio_io.hpp -#usr/include/boost/ratio/ratio_static_string.hpp #usr/include/boost/rational.hpp #usr/include/boost/ref.hpp #usr/include/boost/regex @@ -8023,11 +10432,18 @@ #usr/include/boost/scoped_ptr.hpp #usr/include/boost/serialization #usr/include/boost/serialization/access.hpp +#usr/include/boost/serialization/archive_input_unordered_map.hpp +#usr/include/boost/serialization/archive_input_unordered_set.hpp #usr/include/boost/serialization/array.hpp +#usr/include/boost/serialization/array_optimization.hpp +#usr/include/boost/serialization/array_wrapper.hpp #usr/include/boost/serialization/assume_abstract.hpp #usr/include/boost/serialization/base_object.hpp #usr/include/boost/serialization/binary_object.hpp #usr/include/boost/serialization/bitset.hpp +#usr/include/boost/serialization/boost_array.hpp +#usr/include/boost/serialization/boost_unordered_map.hpp +#usr/include/boost/serialization/boost_unordered_set.hpp #usr/include/boost/serialization/collection_size_type.hpp #usr/include/boost/serialization/collection_traits.hpp #usr/include/boost/serialization/collections_load_imp.hpp @@ -8036,7 +10452,7 @@ #usr/include/boost/serialization/config.hpp #usr/include/boost/serialization/deque.hpp #usr/include/boost/serialization/detail -#usr/include/boost/serialization/detail/get_data.hpp +#usr/include/boost/serialization/detail/is_default_constructible.hpp #usr/include/boost/serialization/detail/shared_count_132.hpp #usr/include/boost/serialization/detail/shared_ptr_132.hpp #usr/include/boost/serialization/detail/shared_ptr_nmt_132.hpp @@ -8048,6 +10464,7 @@ #usr/include/boost/serialization/extended_type_info_typeid.hpp #usr/include/boost/serialization/factory.hpp #usr/include/boost/serialization/force_include.hpp +#usr/include/boost/serialization/forward_list.hpp #usr/include/boost/serialization/hash_collections_load_imp.hpp #usr/include/boost/serialization/hash_collections_save_imp.hpp #usr/include/boost/serialization/hash_map.hpp @@ -8060,17 +10477,20 @@ #usr/include/boost/serialization/map.hpp #usr/include/boost/serialization/nvp.hpp #usr/include/boost/serialization/optional.hpp -#usr/include/boost/serialization/pfto.hpp +#usr/include/boost/serialization/priority_queue.hpp +#usr/include/boost/serialization/queue.hpp #usr/include/boost/serialization/scoped_ptr.hpp #usr/include/boost/serialization/serialization.hpp #usr/include/boost/serialization/set.hpp #usr/include/boost/serialization/shared_ptr.hpp #usr/include/boost/serialization/shared_ptr_132.hpp +#usr/include/boost/serialization/shared_ptr_helper.hpp #usr/include/boost/serialization/singleton.hpp #usr/include/boost/serialization/slist.hpp #usr/include/boost/serialization/smart_cast.hpp #usr/include/boost/serialization/split_free.hpp #usr/include/boost/serialization/split_member.hpp +#usr/include/boost/serialization/stack.hpp #usr/include/boost/serialization/state_saver.hpp #usr/include/boost/serialization/static_warning.hpp #usr/include/boost/serialization/string.hpp @@ -8080,6 +10500,11 @@ #usr/include/boost/serialization/tracking_enum.hpp #usr/include/boost/serialization/traits.hpp #usr/include/boost/serialization/type_info_implementation.hpp +#usr/include/boost/serialization/unique_ptr.hpp +#usr/include/boost/serialization/unordered_collections_load_imp.hpp +#usr/include/boost/serialization/unordered_collections_save_imp.hpp +#usr/include/boost/serialization/unordered_map.hpp +#usr/include/boost/serialization/unordered_set.hpp #usr/include/boost/serialization/utility.hpp #usr/include/boost/serialization/valarray.hpp #usr/include/boost/serialization/variant.hpp @@ -8166,31 +10591,28 @@ #usr/include/boost/smart_ptr/allocate_shared_array.hpp #usr/include/boost/smart_ptr/bad_weak_ptr.hpp #usr/include/boost/smart_ptr/detail -#usr/include/boost/smart_ptr/detail/allocate_array_helper.hpp -#usr/include/boost/smart_ptr/detail/array_deleter.hpp -#usr/include/boost/smart_ptr/detail/array_traits.hpp -#usr/include/boost/smart_ptr/detail/array_utility.hpp #usr/include/boost/smart_ptr/detail/atomic_count.hpp #usr/include/boost/smart_ptr/detail/atomic_count_gcc.hpp #usr/include/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp -#usr/include/boost/smart_ptr/detail/atomic_count_pthreads.hpp +#usr/include/boost/smart_ptr/detail/atomic_count_nt.hpp +#usr/include/boost/smart_ptr/detail/atomic_count_pt.hpp #usr/include/boost/smart_ptr/detail/atomic_count_solaris.hpp +#usr/include/boost/smart_ptr/detail/atomic_count_spin.hpp +#usr/include/boost/smart_ptr/detail/atomic_count_std_atomic.hpp #usr/include/boost/smart_ptr/detail/atomic_count_sync.hpp #usr/include/boost/smart_ptr/detail/atomic_count_win32.hpp #usr/include/boost/smart_ptr/detail/lightweight_mutex.hpp #usr/include/boost/smart_ptr/detail/lwm_nop.hpp #usr/include/boost/smart_ptr/detail/lwm_pthreads.hpp #usr/include/boost/smart_ptr/detail/lwm_win32_cs.hpp -#usr/include/boost/smart_ptr/detail/make_array_helper.hpp #usr/include/boost/smart_ptr/detail/operator_bool.hpp #usr/include/boost/smart_ptr/detail/quick_allocator.hpp -#usr/include/boost/smart_ptr/detail/shared_array_nmt.hpp #usr/include/boost/smart_ptr/detail/shared_count.hpp -#usr/include/boost/smart_ptr/detail/shared_ptr_nmt.hpp #usr/include/boost/smart_ptr/detail/sp_convertible.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_aix.hpp +#usr/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp @@ -8203,19 +10625,23 @@ #usr/include/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_solaris.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_spin.hpp +#usr/include/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_sync.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_w32.hpp #usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp +#usr/include/boost/smart_ptr/detail/sp_disable_deprecated.hpp #usr/include/boost/smart_ptr/detail/sp_forward.hpp #usr/include/boost/smart_ptr/detail/sp_has_sync.hpp -#usr/include/boost/smart_ptr/detail/sp_if_array.hpp +#usr/include/boost/smart_ptr/detail/sp_interlocked.hpp +#usr/include/boost/smart_ptr/detail/sp_noexcept.hpp #usr/include/boost/smart_ptr/detail/sp_nullptr_t.hpp #usr/include/boost/smart_ptr/detail/spinlock.hpp #usr/include/boost/smart_ptr/detail/spinlock_gcc_arm.hpp #usr/include/boost/smart_ptr/detail/spinlock_nt.hpp #usr/include/boost/smart_ptr/detail/spinlock_pool.hpp #usr/include/boost/smart_ptr/detail/spinlock_pt.hpp +#usr/include/boost/smart_ptr/detail/spinlock_std_atomic.hpp #usr/include/boost/smart_ptr/detail/spinlock_sync.hpp #usr/include/boost/smart_ptr/detail/spinlock_w32.hpp #usr/include/boost/smart_ptr/detail/yield_k.hpp @@ -8226,12 +10652,26 @@ #usr/include/boost/smart_ptr/make_shared.hpp #usr/include/boost/smart_ptr/make_shared_array.hpp #usr/include/boost/smart_ptr/make_shared_object.hpp +#usr/include/boost/smart_ptr/make_unique.hpp #usr/include/boost/smart_ptr/owner_less.hpp #usr/include/boost/smart_ptr/scoped_array.hpp #usr/include/boost/smart_ptr/scoped_ptr.hpp #usr/include/boost/smart_ptr/shared_array.hpp #usr/include/boost/smart_ptr/shared_ptr.hpp #usr/include/boost/smart_ptr/weak_ptr.hpp +#usr/include/boost/sort +#usr/include/boost/sort/sort.hpp +#usr/include/boost/sort/spreadsort +#usr/include/boost/sort/spreadsort/detail +#usr/include/boost/sort/spreadsort/detail/constants.hpp +#usr/include/boost/sort/spreadsort/detail/float_sort.hpp +#usr/include/boost/sort/spreadsort/detail/integer_sort.hpp +#usr/include/boost/sort/spreadsort/detail/spreadsort_common.hpp +#usr/include/boost/sort/spreadsort/detail/string_sort.hpp +#usr/include/boost/sort/spreadsort/float_sort.hpp +#usr/include/boost/sort/spreadsort/integer_sort.hpp +#usr/include/boost/sort/spreadsort/spreadsort.hpp +#usr/include/boost/sort/spreadsort/string_sort.hpp #usr/include/boost/spirit #usr/include/boost/spirit.hpp #usr/include/boost/spirit/home @@ -8632,147 +11072,6 @@ #usr/include/boost/spirit/home/lex/reference.hpp #usr/include/boost/spirit/home/lex/tokenize_and_parse.hpp #usr/include/boost/spirit/home/lex/tokenize_and_parse_attr.hpp -#usr/include/boost/spirit/home/phoenix -#usr/include/boost/spirit/home/phoenix.hpp -#usr/include/boost/spirit/home/phoenix/algorithm.hpp -#usr/include/boost/spirit/home/phoenix/bind -#usr/include/boost/spirit/home/phoenix/bind.hpp -#usr/include/boost/spirit/home/phoenix/bind/bind_function.hpp -#usr/include/boost/spirit/home/phoenix/bind/bind_function_object.hpp -#usr/include/boost/spirit/home/phoenix/bind/bind_member_function.hpp -#usr/include/boost/spirit/home/phoenix/bind/bind_member_variable.hpp -#usr/include/boost/spirit/home/phoenix/bind/detail -#usr/include/boost/spirit/home/phoenix/bind/detail/bind_function.hpp -#usr/include/boost/spirit/home/phoenix/bind/detail/bind_function_object.hpp -#usr/include/boost/spirit/home/phoenix/bind/detail/bind_member_function.hpp -#usr/include/boost/spirit/home/phoenix/bind/detail/function_ptr.hpp -#usr/include/boost/spirit/home/phoenix/bind/detail/member_function_ptr.hpp -#usr/include/boost/spirit/home/phoenix/container.hpp -#usr/include/boost/spirit/home/phoenix/core -#usr/include/boost/spirit/home/phoenix/core.hpp -#usr/include/boost/spirit/home/phoenix/core/actor.hpp -#usr/include/boost/spirit/home/phoenix/core/argument.hpp -#usr/include/boost/spirit/home/phoenix/core/as_actor.hpp -#usr/include/boost/spirit/home/phoenix/core/basic_environment.hpp -#usr/include/boost/spirit/home/phoenix/core/compose.hpp -#usr/include/boost/spirit/home/phoenix/core/composite.hpp -#usr/include/boost/spirit/home/phoenix/core/detail -#usr/include/boost/spirit/home/phoenix/core/detail/actor.hpp -#usr/include/boost/spirit/home/phoenix/core/detail/basic_environment.hpp -#usr/include/boost/spirit/home/phoenix/core/detail/compose.hpp -#usr/include/boost/spirit/home/phoenix/core/detail/composite.hpp -#usr/include/boost/spirit/home/phoenix/core/detail/composite_eval.hpp -#usr/include/boost/spirit/home/phoenix/core/detail/composite_info.hpp -#usr/include/boost/spirit/home/phoenix/core/detail/function_eval.hpp -#usr/include/boost/spirit/home/phoenix/core/is_actor.hpp -#usr/include/boost/spirit/home/phoenix/core/limits.hpp -#usr/include/boost/spirit/home/phoenix/core/nothing.hpp -#usr/include/boost/spirit/home/phoenix/core/reference.hpp -#usr/include/boost/spirit/home/phoenix/core/value.hpp -#usr/include/boost/spirit/home/phoenix/detail -#usr/include/boost/spirit/home/phoenix/detail/local_reference.hpp -#usr/include/boost/spirit/home/phoenix/detail/type_deduction.hpp -#usr/include/boost/spirit/home/phoenix/function -#usr/include/boost/spirit/home/phoenix/function.hpp -#usr/include/boost/spirit/home/phoenix/function/detail -#usr/include/boost/spirit/home/phoenix/function/detail/function_call.hpp -#usr/include/boost/spirit/home/phoenix/function/function.hpp -#usr/include/boost/spirit/home/phoenix/fusion -#usr/include/boost/spirit/home/phoenix/fusion.hpp -#usr/include/boost/spirit/home/phoenix/fusion/at.hpp -#usr/include/boost/spirit/home/phoenix/object -#usr/include/boost/spirit/home/phoenix/object.hpp -#usr/include/boost/spirit/home/phoenix/object/const_cast.hpp -#usr/include/boost/spirit/home/phoenix/object/construct.hpp -#usr/include/boost/spirit/home/phoenix/object/delete.hpp -#usr/include/boost/spirit/home/phoenix/object/detail -#usr/include/boost/spirit/home/phoenix/object/detail/construct.hpp -#usr/include/boost/spirit/home/phoenix/object/detail/construct_eval.hpp -#usr/include/boost/spirit/home/phoenix/object/detail/new.hpp -#usr/include/boost/spirit/home/phoenix/object/detail/new_eval.hpp -#usr/include/boost/spirit/home/phoenix/object/dynamic_cast.hpp -#usr/include/boost/spirit/home/phoenix/object/new.hpp -#usr/include/boost/spirit/home/phoenix/object/reinterpret_cast.hpp -#usr/include/boost/spirit/home/phoenix/object/static_cast.hpp -#usr/include/boost/spirit/home/phoenix/operator -#usr/include/boost/spirit/home/phoenix/operator.hpp -#usr/include/boost/spirit/home/phoenix/operator/arithmetic.hpp -#usr/include/boost/spirit/home/phoenix/operator/bitwise.hpp -#usr/include/boost/spirit/home/phoenix/operator/comparison.hpp -#usr/include/boost/spirit/home/phoenix/operator/detail -#usr/include/boost/spirit/home/phoenix/operator/detail/binary_compose.hpp -#usr/include/boost/spirit/home/phoenix/operator/detail/binary_eval.hpp -#usr/include/boost/spirit/home/phoenix/operator/detail/io.hpp -#usr/include/boost/spirit/home/phoenix/operator/detail/mem_fun_ptr_eval.hpp -#usr/include/boost/spirit/home/phoenix/operator/detail/mem_fun_ptr_gen.hpp -#usr/include/boost/spirit/home/phoenix/operator/detail/mem_fun_ptr_return.hpp -#usr/include/boost/spirit/home/phoenix/operator/detail/unary_compose.hpp -#usr/include/boost/spirit/home/phoenix/operator/detail/unary_eval.hpp -#usr/include/boost/spirit/home/phoenix/operator/if_else.hpp -#usr/include/boost/spirit/home/phoenix/operator/io.hpp -#usr/include/boost/spirit/home/phoenix/operator/logical.hpp -#usr/include/boost/spirit/home/phoenix/operator/member.hpp -#usr/include/boost/spirit/home/phoenix/operator/self.hpp -#usr/include/boost/spirit/home/phoenix/scope -#usr/include/boost/spirit/home/phoenix/scope.hpp -#usr/include/boost/spirit/home/phoenix/scope/detail -#usr/include/boost/spirit/home/phoenix/scope/detail/local_gen.hpp -#usr/include/boost/spirit/home/phoenix/scope/detail/local_variable.hpp -#usr/include/boost/spirit/home/phoenix/scope/dynamic.hpp -#usr/include/boost/spirit/home/phoenix/scope/lambda.hpp -#usr/include/boost/spirit/home/phoenix/scope/let.hpp -#usr/include/boost/spirit/home/phoenix/scope/local_variable.hpp -#usr/include/boost/spirit/home/phoenix/scope/scoped_environment.hpp -#usr/include/boost/spirit/home/phoenix/statement -#usr/include/boost/spirit/home/phoenix/statement.hpp -#usr/include/boost/spirit/home/phoenix/statement/detail -#usr/include/boost/spirit/home/phoenix/statement/detail/catch_all_eval.hpp -#usr/include/boost/spirit/home/phoenix/statement/detail/catch_composite.hpp -#usr/include/boost/spirit/home/phoenix/statement/detail/catch_eval.hpp -#usr/include/boost/spirit/home/phoenix/statement/detail/switch.hpp -#usr/include/boost/spirit/home/phoenix/statement/detail/switch_eval.hpp -#usr/include/boost/spirit/home/phoenix/statement/detail/switch_eval.ipp -#usr/include/boost/spirit/home/phoenix/statement/do_while.hpp -#usr/include/boost/spirit/home/phoenix/statement/for.hpp -#usr/include/boost/spirit/home/phoenix/statement/if.hpp -#usr/include/boost/spirit/home/phoenix/statement/sequence.hpp -#usr/include/boost/spirit/home/phoenix/statement/switch.hpp -#usr/include/boost/spirit/home/phoenix/statement/throw.hpp -#usr/include/boost/spirit/home/phoenix/statement/try_catch.hpp -#usr/include/boost/spirit/home/phoenix/statement/while.hpp -#usr/include/boost/spirit/home/phoenix/stl -#usr/include/boost/spirit/home/phoenix/stl.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm -#usr/include/boost/spirit/home/phoenix/stl/algorithm.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/begin.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/decay_array.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/end.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_equal_range.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_find.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_lower_bound.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_remove.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_remove_if.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_reverse.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_sort.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_unique.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_upper_bound.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_hash_map.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_hash_set.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_list.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_map.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_set.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/std_hash_map_fwd.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/std_hash_set_fwd.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/iteration.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/querying.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/transformation.hpp -#usr/include/boost/spirit/home/phoenix/stl/container -#usr/include/boost/spirit/home/phoenix/stl/container.hpp -#usr/include/boost/spirit/home/phoenix/stl/container/container.hpp -#usr/include/boost/spirit/home/phoenix/stl/container/detail -#usr/include/boost/spirit/home/phoenix/stl/container/detail/container.hpp -#usr/include/boost/spirit/home/phoenix/version.hpp #usr/include/boost/spirit/home/qi #usr/include/boost/spirit/home/qi.hpp #usr/include/boost/spirit/home/qi/action @@ -8799,6 +11098,7 @@ #usr/include/boost/spirit/home/qi/char/char.hpp #usr/include/boost/spirit/home/qi/char/char_class.hpp #usr/include/boost/spirit/home/qi/char/char_parser.hpp +#usr/include/boost/spirit/home/qi/copy.hpp #usr/include/boost/spirit/home/qi/detail #usr/include/boost/spirit/home/qi/detail/alternative_function.hpp #usr/include/boost/spirit/home/qi/detail/assign_to.hpp @@ -8911,6 +11211,7 @@ #usr/include/boost/spirit/home/support/attributes.hpp #usr/include/boost/spirit/home/support/attributes_fwd.hpp #usr/include/boost/spirit/home/support/auto +#usr/include/boost/spirit/home/support/auto.hpp #usr/include/boost/spirit/home/support/auto/meta_create.hpp #usr/include/boost/spirit/home/support/auxiliary #usr/include/boost/spirit/home/support/auxiliary/attr_cast.hpp @@ -9048,6 +11349,143 @@ #usr/include/boost/spirit/home/support/utree/utree.hpp #usr/include/boost/spirit/home/support/utree/utree_traits.hpp #usr/include/boost/spirit/home/support/utree/utree_traits_fwd.hpp +#usr/include/boost/spirit/home/x3 +#usr/include/boost/spirit/home/x3.hpp +#usr/include/boost/spirit/home/x3/auxiliary +#usr/include/boost/spirit/home/x3/auxiliary.hpp +#usr/include/boost/spirit/home/x3/auxiliary/any_parser.hpp +#usr/include/boost/spirit/home/x3/auxiliary/attr.hpp +#usr/include/boost/spirit/home/x3/auxiliary/eoi.hpp +#usr/include/boost/spirit/home/x3/auxiliary/eol.hpp +#usr/include/boost/spirit/home/x3/auxiliary/eps.hpp +#usr/include/boost/spirit/home/x3/auxiliary/guard.hpp +#usr/include/boost/spirit/home/x3/binary +#usr/include/boost/spirit/home/x3/binary.hpp +#usr/include/boost/spirit/home/x3/binary/binary.hpp +#usr/include/boost/spirit/home/x3/char +#usr/include/boost/spirit/home/x3/char.hpp +#usr/include/boost/spirit/home/x3/char/any_char.hpp +#usr/include/boost/spirit/home/x3/char/char.hpp +#usr/include/boost/spirit/home/x3/char/char_class.hpp +#usr/include/boost/spirit/home/x3/char/char_class_tags.hpp +#usr/include/boost/spirit/home/x3/char/char_parser.hpp +#usr/include/boost/spirit/home/x3/char/char_set.hpp +#usr/include/boost/spirit/home/x3/char/detail +#usr/include/boost/spirit/home/x3/char/detail/cast_char.hpp +#usr/include/boost/spirit/home/x3/char/literal_char.hpp +#usr/include/boost/spirit/home/x3/char/negated_char_parser.hpp +#usr/include/boost/spirit/home/x3/char/unicode.hpp +#usr/include/boost/spirit/home/x3/core +#usr/include/boost/spirit/home/x3/core.hpp +#usr/include/boost/spirit/home/x3/core/action.hpp +#usr/include/boost/spirit/home/x3/core/call.hpp +#usr/include/boost/spirit/home/x3/core/detail +#usr/include/boost/spirit/home/x3/core/detail/parse_into_container.hpp +#usr/include/boost/spirit/home/x3/core/parse.hpp +#usr/include/boost/spirit/home/x3/core/parser.hpp +#usr/include/boost/spirit/home/x3/core/proxy.hpp +#usr/include/boost/spirit/home/x3/core/skip_over.hpp +#usr/include/boost/spirit/home/x3/directive +#usr/include/boost/spirit/home/x3/directive.hpp +#usr/include/boost/spirit/home/x3/directive/confix.hpp +#usr/include/boost/spirit/home/x3/directive/expect.hpp +#usr/include/boost/spirit/home/x3/directive/lexeme.hpp +#usr/include/boost/spirit/home/x3/directive/matches.hpp +#usr/include/boost/spirit/home/x3/directive/no_case.hpp +#usr/include/boost/spirit/home/x3/directive/no_skip.hpp +#usr/include/boost/spirit/home/x3/directive/omit.hpp +#usr/include/boost/spirit/home/x3/directive/raw.hpp +#usr/include/boost/spirit/home/x3/directive/repeat.hpp +#usr/include/boost/spirit/home/x3/directive/seek.hpp +#usr/include/boost/spirit/home/x3/directive/skip.hpp +#usr/include/boost/spirit/home/x3/directive/with.hpp +#usr/include/boost/spirit/home/x3/nonterminal +#usr/include/boost/spirit/home/x3/nonterminal.hpp +#usr/include/boost/spirit/home/x3/nonterminal/debug_handler_state.hpp +#usr/include/boost/spirit/home/x3/nonterminal/detail +#usr/include/boost/spirit/home/x3/nonterminal/detail/rule.hpp +#usr/include/boost/spirit/home/x3/nonterminal/detail/transform_attribute.hpp +#usr/include/boost/spirit/home/x3/nonterminal/rule.hpp +#usr/include/boost/spirit/home/x3/nonterminal/simple_trace.hpp +#usr/include/boost/spirit/home/x3/numeric +#usr/include/boost/spirit/home/x3/numeric.hpp +#usr/include/boost/spirit/home/x3/numeric/bool.hpp +#usr/include/boost/spirit/home/x3/numeric/bool_policies.hpp +#usr/include/boost/spirit/home/x3/numeric/int.hpp +#usr/include/boost/spirit/home/x3/numeric/real.hpp +#usr/include/boost/spirit/home/x3/numeric/real_policies.hpp +#usr/include/boost/spirit/home/x3/numeric/uint.hpp +#usr/include/boost/spirit/home/x3/operator +#usr/include/boost/spirit/home/x3/operator.hpp +#usr/include/boost/spirit/home/x3/operator/alternative.hpp +#usr/include/boost/spirit/home/x3/operator/and_predicate.hpp +#usr/include/boost/spirit/home/x3/operator/detail +#usr/include/boost/spirit/home/x3/operator/detail/alternative.hpp +#usr/include/boost/spirit/home/x3/operator/detail/sequence.hpp +#usr/include/boost/spirit/home/x3/operator/difference.hpp +#usr/include/boost/spirit/home/x3/operator/kleene.hpp +#usr/include/boost/spirit/home/x3/operator/list.hpp +#usr/include/boost/spirit/home/x3/operator/not_predicate.hpp +#usr/include/boost/spirit/home/x3/operator/optional.hpp +#usr/include/boost/spirit/home/x3/operator/plus.hpp +#usr/include/boost/spirit/home/x3/operator/sequence.hpp +#usr/include/boost/spirit/home/x3/string +#usr/include/boost/spirit/home/x3/string.hpp +#usr/include/boost/spirit/home/x3/string/detail +#usr/include/boost/spirit/home/x3/string/detail/no_case_string_parse.hpp +#usr/include/boost/spirit/home/x3/string/detail/string_parse.hpp +#usr/include/boost/spirit/home/x3/string/detail/tst.hpp +#usr/include/boost/spirit/home/x3/string/literal_string.hpp +#usr/include/boost/spirit/home/x3/string/symbols.hpp +#usr/include/boost/spirit/home/x3/string/tst.hpp +#usr/include/boost/spirit/home/x3/string/tst_map.hpp +#usr/include/boost/spirit/home/x3/support +#usr/include/boost/spirit/home/x3/support/ast +#usr/include/boost/spirit/home/x3/support/ast/position_tagged.hpp +#usr/include/boost/spirit/home/x3/support/ast/variant.hpp +#usr/include/boost/spirit/home/x3/support/context.hpp +#usr/include/boost/spirit/home/x3/support/no_case.hpp +#usr/include/boost/spirit/home/x3/support/numeric_utils +#usr/include/boost/spirit/home/x3/support/numeric_utils/detail +#usr/include/boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp +#usr/include/boost/spirit/home/x3/support/numeric_utils/extract_int.hpp +#usr/include/boost/spirit/home/x3/support/numeric_utils/extract_real.hpp +#usr/include/boost/spirit/home/x3/support/numeric_utils/pow10.hpp +#usr/include/boost/spirit/home/x3/support/numeric_utils/sign.hpp +#usr/include/boost/spirit/home/x3/support/subcontext.hpp +#usr/include/boost/spirit/home/x3/support/traits +#usr/include/boost/spirit/home/x3/support/traits/attribute_category.hpp +#usr/include/boost/spirit/home/x3/support/traits/attribute_of.hpp +#usr/include/boost/spirit/home/x3/support/traits/attribute_type.hpp +#usr/include/boost/spirit/home/x3/support/traits/container_traits.hpp +#usr/include/boost/spirit/home/x3/support/traits/handles_container.hpp +#usr/include/boost/spirit/home/x3/support/traits/has_attribute.hpp +#usr/include/boost/spirit/home/x3/support/traits/is_parser.hpp +#usr/include/boost/spirit/home/x3/support/traits/is_substitute.hpp +#usr/include/boost/spirit/home/x3/support/traits/is_variant.hpp +#usr/include/boost/spirit/home/x3/support/traits/make_attribute.hpp +#usr/include/boost/spirit/home/x3/support/traits/move_to.hpp +#usr/include/boost/spirit/home/x3/support/traits/numeric_traits.hpp +#usr/include/boost/spirit/home/x3/support/traits/optional_traits.hpp +#usr/include/boost/spirit/home/x3/support/traits/print_attribute.hpp +#usr/include/boost/spirit/home/x3/support/traits/print_token.hpp +#usr/include/boost/spirit/home/x3/support/traits/string_traits.hpp +#usr/include/boost/spirit/home/x3/support/traits/transform_attribute.hpp +#usr/include/boost/spirit/home/x3/support/traits/tuple_traits.hpp +#usr/include/boost/spirit/home/x3/support/traits/value_traits.hpp +#usr/include/boost/spirit/home/x3/support/traits/variant_find_substitute.hpp +#usr/include/boost/spirit/home/x3/support/traits/variant_has_substitute.hpp +#usr/include/boost/spirit/home/x3/support/unused.hpp +#usr/include/boost/spirit/home/x3/support/utility +#usr/include/boost/spirit/home/x3/support/utility/annotate_on_success.hpp +#usr/include/boost/spirit/home/x3/support/utility/error_reporting.hpp +#usr/include/boost/spirit/home/x3/support/utility/is_callable.hpp +#usr/include/boost/spirit/home/x3/support/utility/lambda_visitor.hpp +#usr/include/boost/spirit/home/x3/support/utility/sfinae.hpp +#usr/include/boost/spirit/home/x3/support/utility/testing.hpp +#usr/include/boost/spirit/home/x3/support/utility/unrefcv.hpp +#usr/include/boost/spirit/home/x3/support/utility/utf8.hpp +#usr/include/boost/spirit/home/x3/version.hpp #usr/include/boost/spirit/include #usr/include/boost/spirit/include/classic.hpp #usr/include/boost/spirit/include/classic_actions.hpp @@ -9288,6 +11726,7 @@ #usr/include/boost/spirit/include/qi_char.hpp #usr/include/boost/spirit/include/qi_char_.hpp #usr/include/boost/spirit/include/qi_char_class.hpp +#usr/include/boost/spirit/include/qi_copy.hpp #usr/include/boost/spirit/include/qi_core.hpp #usr/include/boost/spirit/include/qi_difference.hpp #usr/include/boost/spirit/include/qi_directive.hpp @@ -9343,6 +11782,7 @@ #usr/include/boost/spirit/include/support_ascii.hpp #usr/include/boost/spirit/include/support_attributes.hpp #usr/include/boost/spirit/include/support_attributes_fwd.hpp +#usr/include/boost/spirit/include/support_auto.hpp #usr/include/boost/spirit/include/support_char_class.hpp #usr/include/boost/spirit/include/support_container.hpp #usr/include/boost/spirit/include/support_extended_variant.hpp @@ -9453,18 +11893,45 @@ #usr/include/boost/statechart/termination.hpp #usr/include/boost/statechart/transition.hpp #usr/include/boost/static_assert.hpp -#usr/include/boost/strong_typedef.hpp #usr/include/boost/swap.hpp #usr/include/boost/system #usr/include/boost/system/api_config.hpp #usr/include/boost/system/config.hpp #usr/include/boost/system/cygwin_error.hpp +#usr/include/boost/system/detail +#usr/include/boost/system/detail/error_code.ipp +#usr/include/boost/system/detail/local_free_on_destruction.hpp #usr/include/boost/system/error_code.hpp #usr/include/boost/system/linux_error.hpp #usr/include/boost/system/system_error.hpp #usr/include/boost/system/windows_error.hpp #usr/include/boost/test #usr/include/boost/test/auto_unit_test.hpp +#usr/include/boost/test/data +#usr/include/boost/test/data/config.hpp +#usr/include/boost/test/data/dataset.hpp +#usr/include/boost/test/data/for_each_sample.hpp +#usr/include/boost/test/data/generators.hpp +#usr/include/boost/test/data/index_sequence.hpp +#usr/include/boost/test/data/monomorphic +#usr/include/boost/test/data/monomorphic.hpp +#usr/include/boost/test/data/monomorphic/array.hpp +#usr/include/boost/test/data/monomorphic/collection.hpp +#usr/include/boost/test/data/monomorphic/fwd.hpp +#usr/include/boost/test/data/monomorphic/generate.hpp +#usr/include/boost/test/data/monomorphic/generators +#usr/include/boost/test/data/monomorphic/generators.hpp +#usr/include/boost/test/data/monomorphic/generators/keywords.hpp +#usr/include/boost/test/data/monomorphic/generators/random.hpp +#usr/include/boost/test/data/monomorphic/generators/xrange.hpp +#usr/include/boost/test/data/monomorphic/grid.hpp +#usr/include/boost/test/data/monomorphic/initializer_list.hpp +#usr/include/boost/test/data/monomorphic/join.hpp +#usr/include/boost/test/data/monomorphic/sample_merge.hpp +#usr/include/boost/test/data/monomorphic/singleton.hpp +#usr/include/boost/test/data/monomorphic/zip.hpp +#usr/include/boost/test/data/size.hpp +#usr/include/boost/test/data/test_case.hpp #usr/include/boost/test/debug.hpp #usr/include/boost/test/debug_config.hpp #usr/include/boost/test/detail @@ -9473,10 +11940,10 @@ #usr/include/boost/test/detail/fwd_decl.hpp #usr/include/boost/test/detail/global_typedef.hpp #usr/include/boost/test/detail/log_level.hpp +#usr/include/boost/test/detail/pp_variadic.hpp #usr/include/boost/test/detail/suppress_warnings.hpp -#usr/include/boost/test/detail/unit_test_parameters.hpp +#usr/include/boost/test/detail/throw_exception.hpp #usr/include/boost/test/detail/workaround.hpp -#usr/include/boost/test/exception_safety.hpp #usr/include/boost/test/execution_monitor.hpp #usr/include/boost/test/floating_point_comparison.hpp #usr/include/boost/test/framework.hpp @@ -9484,35 +11951,33 @@ #usr/include/boost/test/impl/compiler_log_formatter.ipp #usr/include/boost/test/impl/cpp_main.ipp #usr/include/boost/test/impl/debug.ipp -#usr/include/boost/test/impl/exception_safety.ipp +#usr/include/boost/test/impl/decorator.ipp #usr/include/boost/test/impl/execution_monitor.ipp #usr/include/boost/test/impl/framework.ipp -#usr/include/boost/test/impl/interaction_based.ipp -#usr/include/boost/test/impl/logged_expectations.ipp +#usr/include/boost/test/impl/junit_log_formatter.ipp #usr/include/boost/test/impl/plain_report_formatter.ipp #usr/include/boost/test/impl/progress_monitor.ipp #usr/include/boost/test/impl/results_collector.ipp #usr/include/boost/test/impl/results_reporter.ipp #usr/include/boost/test/impl/test_main.ipp #usr/include/boost/test/impl/test_tools.ipp +#usr/include/boost/test/impl/test_tree.ipp #usr/include/boost/test/impl/unit_test_log.ipp #usr/include/boost/test/impl/unit_test_main.ipp #usr/include/boost/test/impl/unit_test_monitor.ipp #usr/include/boost/test/impl/unit_test_parameters.ipp -#usr/include/boost/test/impl/unit_test_suite.ipp #usr/include/boost/test/impl/xml_log_formatter.ipp #usr/include/boost/test/impl/xml_report_formatter.ipp #usr/include/boost/test/included +#usr/include/boost/test/included/execution_monitor.hpp #usr/include/boost/test/included/prg_exec_monitor.hpp #usr/include/boost/test/included/test_exec_monitor.hpp #usr/include/boost/test/included/unit_test.hpp #usr/include/boost/test/included/unit_test_framework.hpp -#usr/include/boost/test/interaction_based.hpp -#usr/include/boost/test/logged_expectations.hpp #usr/include/boost/test/minimal.hpp -#usr/include/boost/test/mock_object.hpp #usr/include/boost/test/output #usr/include/boost/test/output/compiler_log_formatter.hpp +#usr/include/boost/test/output/junit_log_formatter.hpp #usr/include/boost/test/output/plain_report_formatter.hpp #usr/include/boost/test/output/xml_log_formatter.hpp #usr/include/boost/test/output/xml_report_formatter.hpp @@ -9525,14 +11990,48 @@ #usr/include/boost/test/results_reporter.hpp #usr/include/boost/test/test_case_template.hpp #usr/include/boost/test/test_exec_monitor.hpp -#usr/include/boost/test/test_observer.hpp #usr/include/boost/test/test_tools.hpp +#usr/include/boost/test/tools +#usr/include/boost/test/tools/assertion.hpp +#usr/include/boost/test/tools/assertion_result.hpp +#usr/include/boost/test/tools/collection_comparison_op.hpp +#usr/include/boost/test/tools/context.hpp +#usr/include/boost/test/tools/cstring_comparison_op.hpp +#usr/include/boost/test/tools/detail +#usr/include/boost/test/tools/detail/bitwise_manip.hpp +#usr/include/boost/test/tools/detail/expression_holder.hpp +#usr/include/boost/test/tools/detail/fwd.hpp +#usr/include/boost/test/tools/detail/indirections.hpp +#usr/include/boost/test/tools/detail/it_pair.hpp +#usr/include/boost/test/tools/detail/lexicographic_manip.hpp +#usr/include/boost/test/tools/detail/per_element_manip.hpp +#usr/include/boost/test/tools/detail/print_helper.hpp +#usr/include/boost/test/tools/detail/tolerance_manip.hpp +#usr/include/boost/test/tools/floating_point_comparison.hpp +#usr/include/boost/test/tools/fpc_op.hpp +#usr/include/boost/test/tools/fpc_tolerance.hpp +#usr/include/boost/test/tools/interface.hpp +#usr/include/boost/test/tools/old +#usr/include/boost/test/tools/old/impl.hpp +#usr/include/boost/test/tools/old/interface.hpp +#usr/include/boost/test/tools/output_test_stream.hpp +#usr/include/boost/test/tree +#usr/include/boost/test/tree/auto_registration.hpp +#usr/include/boost/test/tree/decorator.hpp +#usr/include/boost/test/tree/fixture.hpp +#usr/include/boost/test/tree/global_fixture.hpp +#usr/include/boost/test/tree/observer.hpp +#usr/include/boost/test/tree/test_case_counter.hpp +#usr/include/boost/test/tree/test_case_template.hpp +#usr/include/boost/test/tree/test_unit.hpp +#usr/include/boost/test/tree/traverse.hpp +#usr/include/boost/test/tree/visitor.hpp #usr/include/boost/test/unit_test.hpp #usr/include/boost/test/unit_test_log.hpp #usr/include/boost/test/unit_test_log_formatter.hpp #usr/include/boost/test/unit_test_monitor.hpp +#usr/include/boost/test/unit_test_parameters.hpp #usr/include/boost/test/unit_test_suite.hpp -#usr/include/boost/test/unit_test_suite_impl.hpp #usr/include/boost/test/utils #usr/include/boost/test/utils/algorithm.hpp #usr/include/boost/test/utils/assign_op.hpp @@ -9542,15 +12041,13 @@ #usr/include/boost/test/utils/basic_cstring/bcs_char_traits.hpp #usr/include/boost/test/utils/basic_cstring/compare.hpp #usr/include/boost/test/utils/basic_cstring/io.hpp -#usr/include/boost/test/utils/callback.hpp #usr/include/boost/test/utils/class_properties.hpp #usr/include/boost/test/utils/custom_manip.hpp -#usr/include/boost/test/utils/fixed_mapping.hpp #usr/include/boost/test/utils/foreach.hpp +#usr/include/boost/test/utils/is_cstring.hpp +#usr/include/boost/test/utils/is_forward_iterable.hpp #usr/include/boost/test/utils/iterator -#usr/include/boost/test/utils/iterator/ifstream_line_iterator.hpp #usr/include/boost/test/utils/iterator/input_iterator_facade.hpp -#usr/include/boost/test/utils/iterator/istream_line_iterator.hpp #usr/include/boost/test/utils/iterator/token_iterator.hpp #usr/include/boost/test/utils/lazy_ostream.hpp #usr/include/boost/test/utils/named_params.hpp @@ -9558,74 +12055,79 @@ #usr/include/boost/test/utils/rtti.hpp #usr/include/boost/test/utils/runtime #usr/include/boost/test/utils/runtime/argument.hpp +#usr/include/boost/test/utils/runtime/argument_factory.hpp #usr/include/boost/test/utils/runtime/cla -#usr/include/boost/test/utils/runtime/cla/argument_factory.hpp #usr/include/boost/test/utils/runtime/cla/argv_traverser.hpp -#usr/include/boost/test/utils/runtime/cla/argv_traverser.ipp -#usr/include/boost/test/utils/runtime/cla/basic_parameter.hpp -#usr/include/boost/test/utils/runtime/cla/char_parameter.hpp -#usr/include/boost/test/utils/runtime/cla/char_parameter.ipp -#usr/include/boost/test/utils/runtime/cla/detail -#usr/include/boost/test/utils/runtime/cla/detail/argument_value_usage.hpp -#usr/include/boost/test/utils/runtime/cla/dual_name_parameter.hpp -#usr/include/boost/test/utils/runtime/cla/dual_name_parameter.ipp -#usr/include/boost/test/utils/runtime/cla/fwd.hpp -#usr/include/boost/test/utils/runtime/cla/id_policy.hpp -#usr/include/boost/test/utils/runtime/cla/id_policy.ipp -#usr/include/boost/test/utils/runtime/cla/iface -#usr/include/boost/test/utils/runtime/cla/iface/argument_factory.hpp -#usr/include/boost/test/utils/runtime/cla/iface/id_policy.hpp -#usr/include/boost/test/utils/runtime/cla/modifier.hpp -#usr/include/boost/test/utils/runtime/cla/named_parameter.hpp -#usr/include/boost/test/utils/runtime/cla/named_parameter.ipp -#usr/include/boost/test/utils/runtime/cla/parameter.hpp #usr/include/boost/test/utils/runtime/cla/parser.hpp -#usr/include/boost/test/utils/runtime/cla/parser.ipp -#usr/include/boost/test/utils/runtime/cla/positional_parameter.hpp -#usr/include/boost/test/utils/runtime/cla/typed_parameter.hpp -#usr/include/boost/test/utils/runtime/cla/validation.hpp -#usr/include/boost/test/utils/runtime/cla/validation.ipp -#usr/include/boost/test/utils/runtime/cla/value_generator.hpp -#usr/include/boost/test/utils/runtime/cla/value_handler.hpp -#usr/include/boost/test/utils/runtime/config.hpp -#usr/include/boost/test/utils/runtime/configuration.hpp #usr/include/boost/test/utils/runtime/env -#usr/include/boost/test/utils/runtime/env/environment.hpp -#usr/include/boost/test/utils/runtime/env/environment.ipp -#usr/include/boost/test/utils/runtime/env/fwd.hpp -#usr/include/boost/test/utils/runtime/env/modifier.hpp -#usr/include/boost/test/utils/runtime/env/variable.hpp -#usr/include/boost/test/utils/runtime/file -#usr/include/boost/test/utils/runtime/file/config_file.hpp -#usr/include/boost/test/utils/runtime/file/config_file_iterator.hpp +#usr/include/boost/test/utils/runtime/env/fetch.hpp +#usr/include/boost/test/utils/runtime/errors.hpp +#usr/include/boost/test/utils/runtime/finalize.hpp #usr/include/boost/test/utils/runtime/fwd.hpp -#usr/include/boost/test/utils/runtime/interpret_argument_value.hpp +#usr/include/boost/test/utils/runtime/modifier.hpp #usr/include/boost/test/utils/runtime/parameter.hpp -#usr/include/boost/test/utils/runtime/trace.hpp -#usr/include/boost/test/utils/runtime/validation.hpp +#usr/include/boost/test/utils/setcolor.hpp +#usr/include/boost/test/utils/string_cast.hpp #usr/include/boost/test/utils/trivial_singleton.hpp #usr/include/boost/test/utils/wrap_stringstream.hpp #usr/include/boost/test/utils/xml_printer.hpp #usr/include/boost/thread #usr/include/boost/thread.hpp #usr/include/boost/thread/barrier.hpp +#usr/include/boost/thread/caller_context.hpp #usr/include/boost/thread/completion_latch.hpp +#usr/include/boost/thread/concurrent_queues +#usr/include/boost/thread/concurrent_queues/deque_adaptor.hpp +#usr/include/boost/thread/concurrent_queues/deque_base.hpp +#usr/include/boost/thread/concurrent_queues/deque_views.hpp +#usr/include/boost/thread/concurrent_queues/detail +#usr/include/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +#usr/include/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +#usr/include/boost/thread/concurrent_queues/queue_adaptor.hpp +#usr/include/boost/thread/concurrent_queues/queue_base.hpp +#usr/include/boost/thread/concurrent_queues/queue_op_status.hpp +#usr/include/boost/thread/concurrent_queues/queue_views.hpp +#usr/include/boost/thread/concurrent_queues/sync_bounded_queue.hpp +#usr/include/boost/thread/concurrent_queues/sync_deque.hpp +#usr/include/boost/thread/concurrent_queues/sync_priority_queue.hpp +#usr/include/boost/thread/concurrent_queues/sync_queue.hpp +#usr/include/boost/thread/concurrent_queues/sync_timed_queue.hpp #usr/include/boost/thread/condition.hpp #usr/include/boost/thread/condition_variable.hpp +#usr/include/boost/thread/csbl +#usr/include/boost/thread/csbl/deque.hpp +#usr/include/boost/thread/csbl/devector.hpp +#usr/include/boost/thread/csbl/functional.hpp +#usr/include/boost/thread/csbl/list.hpp +#usr/include/boost/thread/csbl/memory +#usr/include/boost/thread/csbl/memory.hpp +#usr/include/boost/thread/csbl/memory/allocator_arg.hpp +#usr/include/boost/thread/csbl/memory/allocator_traits.hpp +#usr/include/boost/thread/csbl/memory/config.hpp +#usr/include/boost/thread/csbl/memory/default_delete.hpp +#usr/include/boost/thread/csbl/memory/pointer_traits.hpp +#usr/include/boost/thread/csbl/memory/scoped_allocator.hpp +#usr/include/boost/thread/csbl/memory/shared_ptr.hpp +#usr/include/boost/thread/csbl/memory/unique_ptr.hpp +#usr/include/boost/thread/csbl/queue.hpp +#usr/include/boost/thread/csbl/tuple.hpp +#usr/include/boost/thread/csbl/vector.hpp #usr/include/boost/thread/cv_status.hpp #usr/include/boost/thread/detail -#usr/include/boost/thread/detail/async_func.hpp #usr/include/boost/thread/detail/config.hpp #usr/include/boost/thread/detail/counter.hpp #usr/include/boost/thread/detail/delete.hpp #usr/include/boost/thread/detail/force_cast.hpp +#usr/include/boost/thread/detail/function_wrapper.hpp #usr/include/boost/thread/detail/invoke.hpp +#usr/include/boost/thread/detail/invoker.hpp #usr/include/boost/thread/detail/is_convertible.hpp #usr/include/boost/thread/detail/lockable_wrapper.hpp #usr/include/boost/thread/detail/log.hpp #usr/include/boost/thread/detail/make_tuple_indices.hpp #usr/include/boost/thread/detail/memory.hpp #usr/include/boost/thread/detail/move.hpp +#usr/include/boost/thread/detail/nullary_function.hpp #usr/include/boost/thread/detail/platform.hpp #usr/include/boost/thread/detail/singleton.hpp #usr/include/boost/thread/detail/thread.hpp @@ -9633,11 +12135,51 @@ #usr/include/boost/thread/detail/thread_heap_alloc.hpp #usr/include/boost/thread/detail/thread_interruption.hpp #usr/include/boost/thread/detail/tss_hooks.hpp +#usr/include/boost/thread/detail/variadic_footer.hpp +#usr/include/boost/thread/detail/variadic_header.hpp +#usr/include/boost/thread/exceptional_ptr.hpp #usr/include/boost/thread/exceptions.hpp +#usr/include/boost/thread/executor.hpp +#usr/include/boost/thread/executors +#usr/include/boost/thread/executors/basic_thread_pool.hpp +#usr/include/boost/thread/executors/detail +#usr/include/boost/thread/executors/detail/priority_executor_base.hpp +#usr/include/boost/thread/executors/detail/scheduled_executor_base.hpp +#usr/include/boost/thread/executors/executor.hpp +#usr/include/boost/thread/executors/executor_adaptor.hpp +#usr/include/boost/thread/executors/generic_executor_ref.hpp +#usr/include/boost/thread/executors/inline_executor.hpp +#usr/include/boost/thread/executors/loop_executor.hpp +#usr/include/boost/thread/executors/scheduled_thread_pool.hpp +#usr/include/boost/thread/executors/scheduler.hpp +#usr/include/boost/thread/executors/scheduling_adaptor.hpp +#usr/include/boost/thread/executors/serial_executor.hpp +#usr/include/boost/thread/executors/serial_executor_cont.hpp +#usr/include/boost/thread/executors/thread_executor.hpp +#usr/include/boost/thread/executors/work.hpp +#usr/include/boost/thread/experimental +#usr/include/boost/thread/experimental/config +#usr/include/boost/thread/experimental/config/inline_namespace.hpp +#usr/include/boost/thread/experimental/exception_list.hpp +#usr/include/boost/thread/experimental/parallel +#usr/include/boost/thread/experimental/parallel/v1 +#usr/include/boost/thread/experimental/parallel/v1/exception_list.hpp +#usr/include/boost/thread/experimental/parallel/v1/inline_namespace.hpp +#usr/include/boost/thread/experimental/parallel/v2 +#usr/include/boost/thread/experimental/parallel/v2/inline_namespace.hpp +#usr/include/boost/thread/experimental/parallel/v2/task_region.hpp +#usr/include/boost/thread/experimental/task_region.hpp #usr/include/boost/thread/externally_locked.hpp #usr/include/boost/thread/externally_locked_stream.hpp #usr/include/boost/thread/future.hpp -#usr/include/boost/thread/future_error_code.hpp +#usr/include/boost/thread/futures +#usr/include/boost/thread/futures/future_error.hpp +#usr/include/boost/thread/futures/future_error_code.hpp +#usr/include/boost/thread/futures/future_status.hpp +#usr/include/boost/thread/futures/is_future_type.hpp +#usr/include/boost/thread/futures/launch.hpp +#usr/include/boost/thread/futures/wait_for_all.hpp +#usr/include/boost/thread/futures/wait_for_any.hpp #usr/include/boost/thread/is_locked_by_this_thread.hpp #usr/include/boost/thread/latch.hpp #usr/include/boost/thread/lock_algorithms.hpp @@ -9654,6 +12196,7 @@ #usr/include/boost/thread/mutex.hpp #usr/include/boost/thread/null_mutex.hpp #usr/include/boost/thread/once.hpp +#usr/include/boost/thread/ostream_buffer.hpp #usr/include/boost/thread/poly_lockable.hpp #usr/include/boost/thread/poly_lockable_adapter.hpp #usr/include/boost/thread/poly_shared_lockable.hpp @@ -9685,8 +12228,10 @@ #usr/include/boost/thread/thread_functors.hpp #usr/include/boost/thread/thread_guard.hpp #usr/include/boost/thread/thread_only.hpp +#usr/include/boost/thread/thread_pool.hpp #usr/include/boost/thread/thread_time.hpp #usr/include/boost/thread/tss.hpp +#usr/include/boost/thread/user_scheduler.hpp #usr/include/boost/thread/v2 #usr/include/boost/thread/v2/shared_mutex.hpp #usr/include/boost/thread/v2/thread.hpp @@ -9703,6 +12248,7 @@ #usr/include/boost/thread/win32/thread_data.hpp #usr/include/boost/thread/win32/thread_heap_alloc.hpp #usr/include/boost/thread/win32/thread_primitives.hpp +#usr/include/boost/thread/with_lock_guard.hpp #usr/include/boost/thread/xtime.hpp #usr/include/boost/throw_exception.hpp #usr/include/boost/timer @@ -9824,7 +12370,6 @@ #usr/include/boost/tti #usr/include/boost/tti/detail #usr/include/boost/tti/detail/dcomp_mem_fun.hpp -#usr/include/boost/tti/detail/dcomp_static_mem_fun.hpp #usr/include/boost/tti/detail/ddata.hpp #usr/include/boost/tti/detail/ddeftype.hpp #usr/include/boost/tti/detail/dftclass.hpp @@ -9870,7 +12415,6 @@ #usr/include/boost/tuple #usr/include/boost/tuple/detail #usr/include/boost/tuple/detail/tuple_basic.hpp -#usr/include/boost/tuple/detail/tuple_basic_no_partial_spec.hpp #usr/include/boost/tuple/tuple.hpp #usr/include/boost/tuple/tuple_comparison.hpp #usr/include/boost/tuple/tuple_io.hpp @@ -9894,10 +12438,12 @@ #usr/include/boost/type_erasure/detail/access.hpp #usr/include/boost/type_erasure/detail/adapt_to_vtable.hpp #usr/include/boost/type_erasure/detail/any_base.hpp +#usr/include/boost/type_erasure/detail/auto_link.hpp #usr/include/boost/type_erasure/detail/check_call.hpp #usr/include/boost/type_erasure/detail/check_map.hpp #usr/include/boost/type_erasure/detail/const.hpp #usr/include/boost/type_erasure/detail/construct.hpp +#usr/include/boost/type_erasure/detail/dynamic_vtable.hpp #usr/include/boost/type_erasure/detail/extract_concept.hpp #usr/include/boost/type_erasure/detail/get_placeholders.hpp #usr/include/boost/type_erasure/detail/get_signature.hpp @@ -9909,6 +12455,8 @@ #usr/include/boost/type_erasure/detail/rebind_placeholders.hpp #usr/include/boost/type_erasure/detail/storage.hpp #usr/include/boost/type_erasure/detail/vtable.hpp +#usr/include/boost/type_erasure/dynamic_any_cast.hpp +#usr/include/boost/type_erasure/dynamic_binding.hpp #usr/include/boost/type_erasure/exception.hpp #usr/include/boost/type_erasure/free.hpp #usr/include/boost/type_erasure/is_empty.hpp @@ -9921,12 +12469,31 @@ #usr/include/boost/type_erasure/placeholder.hpp #usr/include/boost/type_erasure/placeholder_of.hpp #usr/include/boost/type_erasure/rebind_any.hpp +#usr/include/boost/type_erasure/register_binding.hpp #usr/include/boost/type_erasure/relaxed.hpp #usr/include/boost/type_erasure/require_match.hpp #usr/include/boost/type_erasure/same_type.hpp #usr/include/boost/type_erasure/static_binding.hpp #usr/include/boost/type_erasure/tuple.hpp #usr/include/boost/type_erasure/typeid_of.hpp +#usr/include/boost/type_index +#usr/include/boost/type_index.hpp +#usr/include/boost/type_index/ctti_type_index.hpp +#usr/include/boost/type_index/detail +#usr/include/boost/type_index/detail/compile_time_type_info.hpp +#usr/include/boost/type_index/detail/ctti_register_class.hpp +#usr/include/boost/type_index/detail/stl_register_class.hpp +#usr/include/boost/type_index/runtime_cast +#usr/include/boost/type_index/runtime_cast.hpp +#usr/include/boost/type_index/runtime_cast/boost_shared_ptr_cast.hpp +#usr/include/boost/type_index/runtime_cast/detail +#usr/include/boost/type_index/runtime_cast/detail/runtime_cast_impl.hpp +#usr/include/boost/type_index/runtime_cast/pointer_cast.hpp +#usr/include/boost/type_index/runtime_cast/reference_cast.hpp +#usr/include/boost/type_index/runtime_cast/register_runtime_class.hpp +#usr/include/boost/type_index/runtime_cast/std_shared_ptr_cast.hpp +#usr/include/boost/type_index/stl_type_index.hpp +#usr/include/boost/type_index/type_index_facade.hpp #usr/include/boost/type_traits #usr/include/boost/type_traits.hpp #usr/include/boost/type_traits/add_const.hpp @@ -9947,14 +12514,18 @@ #usr/include/boost/type_traits/conditional.hpp #usr/include/boost/type_traits/config.hpp #usr/include/boost/type_traits/conversion_traits.hpp +#usr/include/boost/type_traits/copy_cv.hpp #usr/include/boost/type_traits/cv_traits.hpp #usr/include/boost/type_traits/decay.hpp +#usr/include/boost/type_traits/declval.hpp #usr/include/boost/type_traits/detail #usr/include/boost/type_traits/detail/bool_trait_def.hpp #usr/include/boost/type_traits/detail/bool_trait_undef.hpp -#usr/include/boost/type_traits/detail/common_type_imp.hpp -#usr/include/boost/type_traits/detail/cv_traits_impl.hpp -#usr/include/boost/type_traits/detail/false_result.hpp +#usr/include/boost/type_traits/detail/common_arithmetic_type.hpp +#usr/include/boost/type_traits/detail/common_type_impl.hpp +#usr/include/boost/type_traits/detail/composite_member_pointer_type.hpp +#usr/include/boost/type_traits/detail/composite_pointer_type.hpp +#usr/include/boost/type_traits/detail/config.hpp #usr/include/boost/type_traits/detail/has_binary_operator.hpp #usr/include/boost/type_traits/detail/has_postfix_operator.hpp #usr/include/boost/type_traits/detail/has_prefix_operator.hpp @@ -9966,12 +12537,8 @@ #usr/include/boost/type_traits/detail/is_function_ptr_tester.hpp #usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp #usr/include/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp -#usr/include/boost/type_traits/detail/size_t_trait_def.hpp -#usr/include/boost/type_traits/detail/size_t_trait_undef.hpp +#usr/include/boost/type_traits/detail/mp_defer.hpp #usr/include/boost/type_traits/detail/template_arity_spec.hpp -#usr/include/boost/type_traits/detail/type_trait_def.hpp -#usr/include/boost/type_traits/detail/type_trait_undef.hpp -#usr/include/boost/type_traits/detail/wrap.hpp #usr/include/boost/type_traits/detail/yes_no_type.hpp #usr/include/boost/type_traits/extent.hpp #usr/include/boost/type_traits/floating_point_promotion.hpp @@ -10034,6 +12601,7 @@ #usr/include/boost/type_traits/is_abstract.hpp #usr/include/boost/type_traits/is_arithmetic.hpp #usr/include/boost/type_traits/is_array.hpp +#usr/include/boost/type_traits/is_assignable.hpp #usr/include/boost/type_traits/is_base_and_derived.hpp #usr/include/boost/type_traits/is_base_of.hpp #usr/include/boost/type_traits/is_base_of_tr1.hpp @@ -10041,10 +12609,15 @@ #usr/include/boost/type_traits/is_complex.hpp #usr/include/boost/type_traits/is_compound.hpp #usr/include/boost/type_traits/is_const.hpp +#usr/include/boost/type_traits/is_constructible.hpp #usr/include/boost/type_traits/is_convertible.hpp +#usr/include/boost/type_traits/is_copy_assignable.hpp #usr/include/boost/type_traits/is_copy_constructible.hpp +#usr/include/boost/type_traits/is_default_constructible.hpp +#usr/include/boost/type_traits/is_destructible.hpp #usr/include/boost/type_traits/is_empty.hpp #usr/include/boost/type_traits/is_enum.hpp +#usr/include/boost/type_traits/is_final.hpp #usr/include/boost/type_traits/is_float.hpp #usr/include/boost/type_traits/is_floating_point.hpp #usr/include/boost/type_traits/is_function.hpp @@ -10073,16 +12646,7 @@ #usr/include/boost/type_traits/is_volatile.hpp #usr/include/boost/type_traits/make_signed.hpp #usr/include/boost/type_traits/make_unsigned.hpp -#usr/include/boost/type_traits/msvc -#usr/include/boost/type_traits/msvc/remove_all_extents.hpp -#usr/include/boost/type_traits/msvc/remove_bounds.hpp -#usr/include/boost/type_traits/msvc/remove_const.hpp -#usr/include/boost/type_traits/msvc/remove_cv.hpp -#usr/include/boost/type_traits/msvc/remove_extent.hpp -#usr/include/boost/type_traits/msvc/remove_pointer.hpp -#usr/include/boost/type_traits/msvc/remove_reference.hpp -#usr/include/boost/type_traits/msvc/remove_volatile.hpp -#usr/include/boost/type_traits/msvc/typeof.hpp +#usr/include/boost/type_traits/make_void.hpp #usr/include/boost/type_traits/object_traits.hpp #usr/include/boost/type_traits/promote.hpp #usr/include/boost/type_traits/rank.hpp @@ -10097,7 +12661,7 @@ #usr/include/boost/type_traits/remove_volatile.hpp #usr/include/boost/type_traits/same_traits.hpp #usr/include/boost/type_traits/transform_traits.hpp -#usr/include/boost/type_traits/transform_traits_spec.hpp +#usr/include/boost/type_traits/type_identity.hpp #usr/include/boost/type_traits/type_with_alignment.hpp #usr/include/boost/typeof #usr/include/boost/typeof/dmc @@ -10199,6 +12763,12 @@ #usr/include/boost/units/base_units/imperial/thou.hpp #usr/include/boost/units/base_units/imperial/ton.hpp #usr/include/boost/units/base_units/imperial/yard.hpp +#usr/include/boost/units/base_units/information +#usr/include/boost/units/base_units/information/bit.hpp +#usr/include/boost/units/base_units/information/byte.hpp +#usr/include/boost/units/base_units/information/hartley.hpp +#usr/include/boost/units/base_units/information/nat.hpp +#usr/include/boost/units/base_units/information/shannon.hpp #usr/include/boost/units/base_units/metric #usr/include/boost/units/base_units/metric/angstrom.hpp #usr/include/boost/units/base_units/metric/are.hpp @@ -10329,6 +12899,7 @@ #usr/include/boost/units/physical_dimensions/illuminance.hpp #usr/include/boost/units/physical_dimensions/impedance.hpp #usr/include/boost/units/physical_dimensions/inductance.hpp +#usr/include/boost/units/physical_dimensions/information.hpp #usr/include/boost/units/physical_dimensions/kinematic_viscosity.hpp #usr/include/boost/units/physical_dimensions/length.hpp #usr/include/boost/units/physical_dimensions/luminance.hpp @@ -10403,6 +12974,14 @@ #usr/include/boost/units/systems/cgs/wavenumber.hpp #usr/include/boost/units/systems/detail #usr/include/boost/units/systems/detail/constants.hpp +#usr/include/boost/units/systems/information +#usr/include/boost/units/systems/information.hpp +#usr/include/boost/units/systems/information/bit.hpp +#usr/include/boost/units/systems/information/byte.hpp +#usr/include/boost/units/systems/information/hartley.hpp +#usr/include/boost/units/systems/information/nat.hpp +#usr/include/boost/units/systems/information/prefixes.hpp +#usr/include/boost/units/systems/information/shannon.hpp #usr/include/boost/units/systems/si #usr/include/boost/units/systems/si.hpp #usr/include/boost/units/systems/si/absorbed_dose.hpp @@ -10484,14 +13063,10 @@ #usr/include/boost/units/units_fwd.hpp #usr/include/boost/unordered #usr/include/boost/unordered/detail -#usr/include/boost/unordered/detail/allocate.hpp -#usr/include/boost/unordered/detail/buckets.hpp -#usr/include/boost/unordered/detail/equivalent.hpp -#usr/include/boost/unordered/detail/extract_key.hpp #usr/include/boost/unordered/detail/fwd.hpp -#usr/include/boost/unordered/detail/table.hpp -#usr/include/boost/unordered/detail/unique.hpp -#usr/include/boost/unordered/detail/util.hpp +#usr/include/boost/unordered/detail/implementation.hpp +#usr/include/boost/unordered/detail/map.hpp +#usr/include/boost/unordered/detail/set.hpp #usr/include/boost/unordered/unordered_map.hpp #usr/include/boost/unordered/unordered_map_fwd.hpp #usr/include/boost/unordered/unordered_set.hpp @@ -10517,10 +13092,16 @@ #usr/include/boost/utility/result_of.hpp #usr/include/boost/utility/string_ref.hpp #usr/include/boost/utility/string_ref_fwd.hpp +#usr/include/boost/utility/string_view.hpp +#usr/include/boost/utility/string_view_fwd.hpp #usr/include/boost/utility/swap.hpp #usr/include/boost/utility/typed_in_place_factory.hpp #usr/include/boost/utility/value_init.hpp #usr/include/boost/uuid +#usr/include/boost/uuid/detail +#usr/include/boost/uuid/detail/config.hpp +#usr/include/boost/uuid/detail/uuid_generic.hpp +#usr/include/boost/uuid/detail/uuid_x86.hpp #usr/include/boost/uuid/name_generator.hpp #usr/include/boost/uuid/nil_generator.hpp #usr/include/boost/uuid/random_generator.hpp @@ -10540,18 +13121,21 @@ #usr/include/boost/variant/detail/apply_visitor_delayed.hpp #usr/include/boost/variant/detail/apply_visitor_unary.hpp #usr/include/boost/variant/detail/backup_holder.hpp -#usr/include/boost/variant/detail/bool_trait_def.hpp -#usr/include/boost/variant/detail/bool_trait_undef.hpp #usr/include/boost/variant/detail/cast_storage.hpp #usr/include/boost/variant/detail/config.hpp +#usr/include/boost/variant/detail/element_index.hpp #usr/include/boost/variant/detail/enable_recursive.hpp #usr/include/boost/variant/detail/enable_recursive_fwd.hpp #usr/include/boost/variant/detail/forced_return.hpp #usr/include/boost/variant/detail/generic_result_type.hpp +#usr/include/boost/variant/detail/has_result_type.hpp #usr/include/boost/variant/detail/hash_variant.hpp #usr/include/boost/variant/detail/initializer.hpp #usr/include/boost/variant/detail/make_variant_list.hpp #usr/include/boost/variant/detail/move.hpp +#usr/include/boost/variant/detail/multivisitors_cpp11_based.hpp +#usr/include/boost/variant/detail/multivisitors_cpp14_based.hpp +#usr/include/boost/variant/detail/multivisitors_preprocessor_based.hpp #usr/include/boost/variant/detail/over_sequence.hpp #usr/include/boost/variant/detail/substitute.hpp #usr/include/boost/variant/detail/substitute_fwd.hpp @@ -10559,6 +13143,7 @@ #usr/include/boost/variant/detail/visitation_impl.hpp #usr/include/boost/variant/get.hpp #usr/include/boost/variant/multivisitors.hpp +#usr/include/boost/variant/polymorphic_get.hpp #usr/include/boost/variant/recursive_variant.hpp #usr/include/boost/variant/recursive_wrapper.hpp #usr/include/boost/variant/recursive_wrapper_fwd.hpp @@ -10568,6 +13153,167 @@ #usr/include/boost/variant/visitor_ptr.hpp #usr/include/boost/version.hpp #usr/include/boost/visit_each.hpp +#usr/include/boost/vmd +#usr/include/boost/vmd/array +#usr/include/boost/vmd/array.hpp +#usr/include/boost/vmd/array/to_seq.hpp +#usr/include/boost/vmd/array/to_tuple.hpp +#usr/include/boost/vmd/assert.hpp +#usr/include/boost/vmd/assert_is_array.hpp +#usr/include/boost/vmd/assert_is_empty.hpp +#usr/include/boost/vmd/assert_is_identifier.hpp +#usr/include/boost/vmd/assert_is_list.hpp +#usr/include/boost/vmd/assert_is_number.hpp +#usr/include/boost/vmd/assert_is_seq.hpp +#usr/include/boost/vmd/assert_is_tuple.hpp +#usr/include/boost/vmd/assert_is_type.hpp +#usr/include/boost/vmd/detail +#usr/include/boost/vmd/detail/adjust_tuple_type.hpp +#usr/include/boost/vmd/detail/array.hpp +#usr/include/boost/vmd/detail/assert.hpp +#usr/include/boost/vmd/detail/data_equal.hpp +#usr/include/boost/vmd/detail/data_equal_common.hpp +#usr/include/boost/vmd/detail/empty_result.hpp +#usr/include/boost/vmd/detail/equal.hpp +#usr/include/boost/vmd/detail/equal_common.hpp +#usr/include/boost/vmd/detail/equal_type.hpp +#usr/include/boost/vmd/detail/identifier.hpp +#usr/include/boost/vmd/detail/identifier_concat.hpp +#usr/include/boost/vmd/detail/identifier_type.hpp +#usr/include/boost/vmd/detail/idprefix.hpp +#usr/include/boost/vmd/detail/is_array.hpp +#usr/include/boost/vmd/detail/is_array_common.hpp +#usr/include/boost/vmd/detail/is_empty.hpp +#usr/include/boost/vmd/detail/is_empty_array.hpp +#usr/include/boost/vmd/detail/is_empty_tuple.hpp +#usr/include/boost/vmd/detail/is_entire.hpp +#usr/include/boost/vmd/detail/is_identifier.hpp +#usr/include/boost/vmd/detail/is_list.hpp +#usr/include/boost/vmd/detail/is_number.hpp +#usr/include/boost/vmd/detail/is_seq.hpp +#usr/include/boost/vmd/detail/is_tuple.hpp +#usr/include/boost/vmd/detail/is_type.hpp +#usr/include/boost/vmd/detail/is_type_type.hpp +#usr/include/boost/vmd/detail/list.hpp +#usr/include/boost/vmd/detail/match_identifier.hpp +#usr/include/boost/vmd/detail/match_identifier_common.hpp +#usr/include/boost/vmd/detail/match_single_identifier.hpp +#usr/include/boost/vmd/detail/modifiers.hpp +#usr/include/boost/vmd/detail/mods.hpp +#usr/include/boost/vmd/detail/nil_registration.hpp +#usr/include/boost/vmd/detail/not_empty.hpp +#usr/include/boost/vmd/detail/number_registration.hpp +#usr/include/boost/vmd/detail/only_after.hpp +#usr/include/boost/vmd/detail/parens.hpp +#usr/include/boost/vmd/detail/parens_common.hpp +#usr/include/boost/vmd/detail/parens_split.hpp +#usr/include/boost/vmd/detail/recurse +#usr/include/boost/vmd/detail/recurse/data_equal +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_1.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_10.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_11.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_12.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_13.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_14.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_15.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_16.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_2.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_3.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_4.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_5.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_6.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_7.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_8.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_9.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_specific.hpp +#usr/include/boost/vmd/detail/recurse/equal +#usr/include/boost/vmd/detail/recurse/equal/equal_1.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_10.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_11.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_12.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_13.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_14.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_15.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_16.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_2.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_3.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_4.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_5.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_6.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_7.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_8.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_9.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_headers.hpp +#usr/include/boost/vmd/detail/seq.hpp +#usr/include/boost/vmd/detail/sequence_arity.hpp +#usr/include/boost/vmd/detail/sequence_common.hpp +#usr/include/boost/vmd/detail/sequence_elem.hpp +#usr/include/boost/vmd/detail/sequence_enum.hpp +#usr/include/boost/vmd/detail/sequence_size.hpp +#usr/include/boost/vmd/detail/sequence_to_array.hpp +#usr/include/boost/vmd/detail/sequence_to_list.hpp +#usr/include/boost/vmd/detail/sequence_to_seq.hpp +#usr/include/boost/vmd/detail/sequence_to_tuple.hpp +#usr/include/boost/vmd/detail/sequence_type.hpp +#usr/include/boost/vmd/detail/setup.hpp +#usr/include/boost/vmd/detail/tuple.hpp +#usr/include/boost/vmd/detail/type_registration.hpp +#usr/include/boost/vmd/detail/variadic_pop_front.hpp +#usr/include/boost/vmd/elem.hpp +#usr/include/boost/vmd/empty.hpp +#usr/include/boost/vmd/enum.hpp +#usr/include/boost/vmd/equal.hpp +#usr/include/boost/vmd/get_type.hpp +#usr/include/boost/vmd/identity.hpp +#usr/include/boost/vmd/is_array.hpp +#usr/include/boost/vmd/is_empty.hpp +#usr/include/boost/vmd/is_empty_array.hpp +#usr/include/boost/vmd/is_empty_list.hpp +#usr/include/boost/vmd/is_identifier.hpp +#usr/include/boost/vmd/is_list.hpp +#usr/include/boost/vmd/is_multi.hpp +#usr/include/boost/vmd/is_number.hpp +#usr/include/boost/vmd/is_parens_empty.hpp +#usr/include/boost/vmd/is_seq.hpp +#usr/include/boost/vmd/is_tuple.hpp +#usr/include/boost/vmd/is_type.hpp +#usr/include/boost/vmd/is_unary.hpp +#usr/include/boost/vmd/list +#usr/include/boost/vmd/list.hpp +#usr/include/boost/vmd/list/to_seq.hpp +#usr/include/boost/vmd/list/to_tuple.hpp +#usr/include/boost/vmd/not_equal.hpp +#usr/include/boost/vmd/seq +#usr/include/boost/vmd/seq.hpp +#usr/include/boost/vmd/seq/is_vmd_seq.hpp +#usr/include/boost/vmd/seq/pop_back.hpp +#usr/include/boost/vmd/seq/pop_front.hpp +#usr/include/boost/vmd/seq/push_back.hpp +#usr/include/boost/vmd/seq/push_front.hpp +#usr/include/boost/vmd/seq/remove.hpp +#usr/include/boost/vmd/seq/size.hpp +#usr/include/boost/vmd/seq/to_array.hpp +#usr/include/boost/vmd/seq/to_list.hpp +#usr/include/boost/vmd/seq/to_tuple.hpp +#usr/include/boost/vmd/size.hpp +#usr/include/boost/vmd/to_array.hpp +#usr/include/boost/vmd/to_list.hpp +#usr/include/boost/vmd/to_seq.hpp +#usr/include/boost/vmd/to_tuple.hpp +#usr/include/boost/vmd/tuple +#usr/include/boost/vmd/tuple.hpp +#usr/include/boost/vmd/tuple/is_vmd_tuple.hpp +#usr/include/boost/vmd/tuple/pop_back.hpp +#usr/include/boost/vmd/tuple/pop_front.hpp +#usr/include/boost/vmd/tuple/push_back.hpp +#usr/include/boost/vmd/tuple/push_front.hpp +#usr/include/boost/vmd/tuple/remove.hpp +#usr/include/boost/vmd/tuple/size.hpp +#usr/include/boost/vmd/tuple/to_array.hpp +#usr/include/boost/vmd/tuple/to_list.hpp +#usr/include/boost/vmd/tuple/to_seq.hpp +#usr/include/boost/vmd/vmd.hpp #usr/include/boost/wave #usr/include/boost/wave.hpp #usr/include/boost/wave/cpp_context.hpp @@ -10769,170 +13515,185 @@ #usr/include/boost/xpressive/xpressive_typeof.hpp #usr/lib/libboost_atomic-mt.a #usr/lib/libboost_atomic-mt.so -usr/lib/libboost_atomic-mt.so.1.55.0 +usr/lib/libboost_atomic-mt.so.1.64.0 #usr/lib/libboost_chrono-mt.a #usr/lib/libboost_chrono-mt.so -usr/lib/libboost_chrono-mt.so.1.55.0 +usr/lib/libboost_chrono-mt.so.1.64.0 #usr/lib/libboost_chrono.a #usr/lib/libboost_chrono.so -usr/lib/libboost_chrono.so.1.55.0 +usr/lib/libboost_chrono.so.1.64.0 +#usr/lib/libboost_container-mt.a +#usr/lib/libboost_container-mt.so +usr/lib/libboost_container-mt.so.1.64.0 +#usr/lib/libboost_container.a +#usr/lib/libboost_container.so +usr/lib/libboost_container.so.1.64.0 #usr/lib/libboost_context-mt.a #usr/lib/libboost_context-mt.so -usr/lib/libboost_context-mt.so.1.55.0 -#usr/lib/libboost_context.a -#usr/lib/libboost_context.so -usr/lib/libboost_context.so.1.55.0 +usr/lib/libboost_context-mt.so.1.64.0 #usr/lib/libboost_coroutine-mt.a #usr/lib/libboost_coroutine-mt.so -usr/lib/libboost_coroutine-mt.so.1.55.0 +usr/lib/libboost_coroutine-mt.so.1.64.0 #usr/lib/libboost_coroutine.a #usr/lib/libboost_coroutine.so -usr/lib/libboost_coroutine.so.1.55.0 +usr/lib/libboost_coroutine.so.1.64.0 #usr/lib/libboost_date_time-mt.a #usr/lib/libboost_date_time-mt.so -usr/lib/libboost_date_time-mt.so.1.55.0 +usr/lib/libboost_date_time-mt.so.1.64.0 #usr/lib/libboost_date_time.a #usr/lib/libboost_date_time.so -usr/lib/libboost_date_time.so.1.55.0 +usr/lib/libboost_date_time.so.1.64.0 #usr/lib/libboost_exception-mt.a #usr/lib/libboost_exception.a +#usr/lib/libboost_fiber-mt.a +#usr/lib/libboost_fiber-mt.so +usr/lib/libboost_fiber-mt.so.1.64.0 #usr/lib/libboost_filesystem-mt.a #usr/lib/libboost_filesystem-mt.so -usr/lib/libboost_filesystem-mt.so.1.55.0 +usr/lib/libboost_filesystem-mt.so.1.64.0 #usr/lib/libboost_filesystem.a #usr/lib/libboost_filesystem.so -usr/lib/libboost_filesystem.so.1.55.0 +usr/lib/libboost_filesystem.so.1.64.0 #usr/lib/libboost_graph-mt.a #usr/lib/libboost_graph-mt.so -usr/lib/libboost_graph-mt.so.1.55.0 +usr/lib/libboost_graph-mt.so.1.64.0 #usr/lib/libboost_graph.a #usr/lib/libboost_graph.so -usr/lib/libboost_graph.so.1.55.0 +usr/lib/libboost_graph.so.1.64.0 #usr/lib/libboost_iostreams-mt.a #usr/lib/libboost_iostreams-mt.so -usr/lib/libboost_iostreams-mt.so.1.55.0 +usr/lib/libboost_iostreams-mt.so.1.64.0 #usr/lib/libboost_iostreams.a #usr/lib/libboost_iostreams.so -usr/lib/libboost_iostreams.so.1.55.0 +usr/lib/libboost_iostreams.so.1.64.0 #usr/lib/libboost_locale-mt.a #usr/lib/libboost_locale-mt.so -usr/lib/libboost_locale-mt.so.1.55.0 +usr/lib/libboost_locale-mt.so.1.64.0 #usr/lib/libboost_log-mt.a #usr/lib/libboost_log-mt.so -usr/lib/libboost_log-mt.so.1.55.0 +usr/lib/libboost_log-mt.so.1.64.0 #usr/lib/libboost_log.a #usr/lib/libboost_log.so -usr/lib/libboost_log.so.1.55.0 +usr/lib/libboost_log.so.1.64.0 #usr/lib/libboost_log_setup-mt.a #usr/lib/libboost_log_setup-mt.so -usr/lib/libboost_log_setup-mt.so.1.55.0 +usr/lib/libboost_log_setup-mt.so.1.64.0 #usr/lib/libboost_log_setup.a #usr/lib/libboost_log_setup.so -usr/lib/libboost_log_setup.so.1.55.0 +usr/lib/libboost_log_setup.so.1.64.0 #usr/lib/libboost_math_c99-mt.a #usr/lib/libboost_math_c99-mt.so -usr/lib/libboost_math_c99-mt.so.1.55.0 +usr/lib/libboost_math_c99-mt.so.1.64.0 #usr/lib/libboost_math_c99.a #usr/lib/libboost_math_c99.so -usr/lib/libboost_math_c99.so.1.55.0 +usr/lib/libboost_math_c99.so.1.64.0 #usr/lib/libboost_math_c99f-mt.a #usr/lib/libboost_math_c99f-mt.so -usr/lib/libboost_math_c99f-mt.so.1.55.0 +usr/lib/libboost_math_c99f-mt.so.1.64.0 #usr/lib/libboost_math_c99f.a #usr/lib/libboost_math_c99f.so -usr/lib/libboost_math_c99f.so.1.55.0 +usr/lib/libboost_math_c99f.so.1.64.0 #usr/lib/libboost_math_c99l-mt.a #usr/lib/libboost_math_c99l-mt.so -usr/lib/libboost_math_c99l-mt.so.1.55.0 +usr/lib/libboost_math_c99l-mt.so.1.64.0 #usr/lib/libboost_math_c99l.a #usr/lib/libboost_math_c99l.so -#usr/lib/libboost_math_c99l.so.1.55.0 +usr/lib/libboost_math_c99l.so.1.64.0 #usr/lib/libboost_math_tr1-mt.a #usr/lib/libboost_math_tr1-mt.so -usr/lib/libboost_math_tr1-mt.so.1.55.0 +usr/lib/libboost_math_tr1-mt.so.1.64.0 #usr/lib/libboost_math_tr1.a #usr/lib/libboost_math_tr1.so -usr/lib/libboost_math_tr1.so.1.55.0 +usr/lib/libboost_math_tr1.so.1.64.0 #usr/lib/libboost_math_tr1f-mt.a #usr/lib/libboost_math_tr1f-mt.so -usr/lib/libboost_math_tr1f-mt.so.1.55.0 +usr/lib/libboost_math_tr1f-mt.so.1.64.0 #usr/lib/libboost_math_tr1f.a #usr/lib/libboost_math_tr1f.so -usr/lib/libboost_math_tr1f.so.1.55.0 +usr/lib/libboost_math_tr1f.so.1.64.0 #usr/lib/libboost_math_tr1l-mt.a #usr/lib/libboost_math_tr1l-mt.so -usr/lib/libboost_math_tr1l-mt.so.1.55.0 +usr/lib/libboost_math_tr1l-mt.so.1.64.0 #usr/lib/libboost_math_tr1l.a #usr/lib/libboost_math_tr1l.so -usr/lib/libboost_math_tr1l.so.1.55.0 +usr/lib/libboost_math_tr1l.so.1.64.0 #usr/lib/libboost_prg_exec_monitor-mt.a #usr/lib/libboost_prg_exec_monitor-mt.so -usr/lib/libboost_prg_exec_monitor-mt.so.1.55.0 +usr/lib/libboost_prg_exec_monitor-mt.so.1.64.0 #usr/lib/libboost_prg_exec_monitor.a #usr/lib/libboost_prg_exec_monitor.so -usr/lib/libboost_prg_exec_monitor.so.1.55.0 +usr/lib/libboost_prg_exec_monitor.so.1.64.0 #usr/lib/libboost_program_options-mt.a #usr/lib/libboost_program_options-mt.so -usr/lib/libboost_program_options-mt.so.1.55.0 +usr/lib/libboost_program_options-mt.so.1.64.0 #usr/lib/libboost_program_options.a #usr/lib/libboost_program_options.so -usr/lib/libboost_program_options.so.1.55.0 +usr/lib/libboost_program_options.so.1.64.0 +#usr/lib/libboost_python-mt.a +#usr/lib/libboost_python-mt.so +usr/lib/libboost_python-mt.so.1.64.0 +#usr/lib/libboost_python.a +#usr/lib/libboost_python.so +usr/lib/libboost_python.so.1.64.0 #usr/lib/libboost_random-mt.a #usr/lib/libboost_random-mt.so -usr/lib/libboost_random-mt.so.1.55.0 +usr/lib/libboost_random-mt.so.1.64.0 #usr/lib/libboost_random.a #usr/lib/libboost_random.so -usr/lib/libboost_random.so.1.55.0 +usr/lib/libboost_random.so.1.64.0 #usr/lib/libboost_regex-mt.a #usr/lib/libboost_regex-mt.so -usr/lib/libboost_regex-mt.so.1.55.0 +usr/lib/libboost_regex-mt.so.1.64.0 #usr/lib/libboost_regex.a #usr/lib/libboost_regex.so -usr/lib/libboost_regex.so.1.55.0 +usr/lib/libboost_regex.so.1.64.0 #usr/lib/libboost_serialization-mt.a #usr/lib/libboost_serialization-mt.so -usr/lib/libboost_serialization-mt.so.1.55.0 +usr/lib/libboost_serialization-mt.so.1.64.0 #usr/lib/libboost_serialization.a #usr/lib/libboost_serialization.so -usr/lib/libboost_serialization.so.1.55.0 +usr/lib/libboost_serialization.so.1.64.0 #usr/lib/libboost_signals-mt.a #usr/lib/libboost_signals-mt.so -usr/lib/libboost_signals-mt.so.1.55.0 +usr/lib/libboost_signals-mt.so.1.64.0 #usr/lib/libboost_signals.a #usr/lib/libboost_signals.so -usr/lib/libboost_signals.so.1.55.0 +usr/lib/libboost_signals.so.1.64.0 #usr/lib/libboost_system-mt.a #usr/lib/libboost_system-mt.so -usr/lib/libboost_system-mt.so.1.55.0 +usr/lib/libboost_system-mt.so.1.64.0 #usr/lib/libboost_system.a #usr/lib/libboost_system.so -usr/lib/libboost_system.so.1.55.0 +usr/lib/libboost_system.so.1.64.0 #usr/lib/libboost_test_exec_monitor-mt.a #usr/lib/libboost_test_exec_monitor.a #usr/lib/libboost_thread-mt.a #usr/lib/libboost_thread-mt.so -usr/lib/libboost_thread-mt.so.1.55.0 +usr/lib/libboost_thread-mt.so.1.64.0 #usr/lib/libboost_timer-mt.a #usr/lib/libboost_timer-mt.so -usr/lib/libboost_timer-mt.so.1.55.0 +usr/lib/libboost_timer-mt.so.1.64.0 #usr/lib/libboost_timer.a #usr/lib/libboost_timer.so -usr/lib/libboost_timer.so.1.55.0 +usr/lib/libboost_timer.so.1.64.0 +#usr/lib/libboost_type_erasure-mt.a +#usr/lib/libboost_type_erasure-mt.so +usr/lib/libboost_type_erasure-mt.so.1.64.0 +#usr/lib/libboost_type_erasure.a +#usr/lib/libboost_type_erasure.so +usr/lib/libboost_type_erasure.so.1.64.0 #usr/lib/libboost_unit_test_framework-mt.a #usr/lib/libboost_unit_test_framework-mt.so -usr/lib/libboost_unit_test_framework-mt.so.1.55.0 +usr/lib/libboost_unit_test_framework-mt.so.1.64.0 #usr/lib/libboost_unit_test_framework.a #usr/lib/libboost_unit_test_framework.so -usr/lib/libboost_unit_test_framework.so.1.55.0 +usr/lib/libboost_unit_test_framework.so.1.64.0 #usr/lib/libboost_wave-mt.a #usr/lib/libboost_wave-mt.so -usr/lib/libboost_wave-mt.so.1.55.0 -#usr/lib/libboost_wave.a -#usr/lib/libboost_wave.so -usr/lib/libboost_wave.so.1.55.0 +usr/lib/libboost_wave-mt.so.1.64.0 #usr/lib/libboost_wserialization-mt.a #usr/lib/libboost_wserialization-mt.so -usr/lib/libboost_wserialization-mt.so.1.55.0 +usr/lib/libboost_wserialization-mt.so.1.64.0 #usr/lib/libboost_wserialization.a #usr/lib/libboost_wserialization.so -usr/lib/libboost_wserialization.so.1.55.0 +usr/lib/libboost_wserialization.so.1.64.0 diff --git a/config/rootfiles/common/cpio b/config/rootfiles/common/cpio index 53bb1e0..26ca6f3 100644 --- a/config/rootfiles/common/cpio +++ b/config/rootfiles/common/cpio @@ -1,32 +1,28 @@ bin/cpio -bin/mt #usr/share/info/cpio.info #usr/share/locale/da/LC_MESSAGES/cpio.mo #usr/share/locale/de/LC_MESSAGES/cpio.mo #usr/share/locale/es/LC_MESSAGES/cpio.mo #usr/share/locale/fi/LC_MESSAGES/cpio.mo #usr/share/locale/fr/LC_MESSAGES/cpio.mo -#usr/share/locale/ga -#usr/share/locale/ga/LC_MESSAGES #usr/share/locale/ga/LC_MESSAGES/cpio.mo #usr/share/locale/gl/LC_MESSAGES/cpio.mo +#usr/share/locale/hr/LC_MESSAGES/cpio.mo #usr/share/locale/hu/LC_MESSAGES/cpio.mo -#usr/share/locale/id -#usr/share/locale/id/LC_MESSAGES #usr/share/locale/id/LC_MESSAGES/cpio.mo +#usr/share/locale/it/LC_MESSAGES/cpio.mo +#usr/share/locale/ja/LC_MESSAGES/cpio.mo #usr/share/locale/ko/LC_MESSAGES/cpio.mo #usr/share/locale/nl/LC_MESSAGES/cpio.mo #usr/share/locale/pl/LC_MESSAGES/cpio.mo #usr/share/locale/pt_BR/LC_MESSAGES/cpio.mo #usr/share/locale/ro/LC_MESSAGES/cpio.mo #usr/share/locale/ru/LC_MESSAGES/cpio.mo +#usr/share/locale/sr/LC_MESSAGES/cpio.mo #usr/share/locale/sv/LC_MESSAGES/cpio.mo #usr/share/locale/tr/LC_MESSAGES/cpio.mo #usr/share/locale/uk/LC_MESSAGES/cpio.mo -#usr/share/locale/vi -#usr/share/locale/vi/LC_MESSAGES #usr/share/locale/vi/LC_MESSAGES/cpio.mo #usr/share/locale/zh_CN/LC_MESSAGES/cpio.mo #usr/share/locale/zh_TW/LC_MESSAGES/cpio.mo #usr/share/man/man1/cpio.1 -#usr/share/man/man1/mt.1 diff --git a/config/rootfiles/common/paxctl b/config/rootfiles/common/paxctl deleted file mode 100644 index c9135a8..0000000 --- a/config/rootfiles/common/paxctl +++ /dev/null @@ -1,2 +0,0 @@ -sbin/paxctl -#usr/share/man/man1/paxctl.1 diff --git a/config/rootfiles/packages/dfb++ b/config/rootfiles/packages/dfb++ deleted file mode 100644 index 04a323d..0000000 --- a/config/rootfiles/packages/dfb++ +++ /dev/null @@ -1,22 +0,0 @@ -usr/bin/dfb++-config -usr/bin/dfbshow -usr/bin/dfbswitch -#usr/include/dfb++ -#usr/include/dfb++/dfb++.h -#usr/include/dfb++/idirectfb.h -#usr/include/dfb++/idirectfbdatabuffer.h -#usr/include/dfb++/idirectfbdisplaylayer.h -#usr/include/dfb++/idirectfbeventbuffer.h -#usr/include/dfb++/idirectfbfont.h -#usr/include/dfb++/idirectfbimageprovider.h -#usr/include/dfb++/idirectfbinputdevice.h -#usr/include/dfb++/idirectfbpalette.h -#usr/include/dfb++/idirectfbscreen.h -#usr/include/dfb++/idirectfbsurface.h -#usr/include/dfb++/idirectfbvideoprovider.h -#usr/include/dfb++/idirectfbwindow.h -usr/lib/libdfb++-1.0.so.0 -usr/lib/libdfb++-1.0.so.0.0.0 -#usr/lib/libdfb++.la -usr/lib/libdfb++.so -#usr/lib/pkgconfig/dfb++.pc diff --git a/config/rootfiles/packages/iftop b/config/rootfiles/packages/iftop deleted file mode 100644 index 03b1118..0000000 --- a/config/rootfiles/packages/iftop +++ /dev/null @@ -1,2 +0,0 @@ -#usr/man/man8/iftop.8 -usr/sbin/iftop diff --git a/config/rootfiles/packages/tcpick b/config/rootfiles/packages/tcpick deleted file mode 100644 index f447d21..0000000 --- a/config/rootfiles/packages/tcpick +++ /dev/null @@ -1,3 +0,0 @@ -usr/bin/tcpick -#usr/man/man8/tcpick.8 -#usr/man/man8/tcpick_italian.8 diff --git a/config/rootfiles/packages/vdr_vnsiserver5 b/config/rootfiles/packages/vdr_vnsiserver5 deleted file mode 100644 index 9b27e97..0000000 --- a/config/rootfiles/packages/vdr_vnsiserver5 +++ /dev/null @@ -1,4 +0,0 @@ -etc/sysconfig/vdr-plugins.d/vnsiserver5.conf -etc/vdr/plugins/vnsiserver5 -etc/vdr/plugins/vnsiserver5/allowed_hosts.conf -usr/lib/vdr/libvdr-vnsiserver5.so.2.0.0 diff --git a/config/vdr/plugins.d/vnsiserver3.conf b/config/vdr/plugins.d/vnsiserver3.conf deleted file mode 100644 index 7c9706d..0000000 --- a/config/vdr/plugins.d/vnsiserver3.conf +++ /dev/null @@ -1,5 +0,0 @@ -# Configuration snippet for vdr-vnsiserver3 -*- sh -*- -# -# Add command line options to pass to the vnsiserver3 plugin to PLUGIN_OPTIONS. - -PLUGIN_OPTIONS="" diff --git a/config/vdr/plugins.d/vnsiserver5.conf b/config/vdr/plugins.d/vnsiserver5.conf deleted file mode 100644 index 561552d..0000000 --- a/config/vdr/plugins.d/vnsiserver5.conf +++ /dev/null @@ -1,5 +0,0 @@ -# Configuration snippet for vdr-vnsiserver5 -*- sh -*- -# -# Add command line options to pass to the vnsiserver5 plugin to PLUGIN_OPTIONS. - -PLUGIN_OPTIONS="" diff --git a/lfs/Config b/lfs/Config index 3101d8b..d7d2a24 100644 --- a/lfs/Config +++ b/lfs/Config @@ -30,6 +30,17 @@ # # ###############################################################################
+# Cleanup environment from any variables +unexport BUILD_ARCH BUILD_PLATFORM BUILDTARGET CROSSTARGET TOOLCHAIN + +ifeq "$(BUILD_ARCH)" "aarch64" + IS_64BIT = 1 +endif + +ifeq "$(BUILD_ARCH)" "x86_64" + IS_64BIT = 1 +endif + # URLs that are common sources of downloads. If you're having trouble with # a site you should change its URL to that of a suitable mirror site. # @@ -117,13 +128,13 @@ define POSTBUILD if [ -s "$(TARGET)_diff" ]; then \ LFS_SCRIPT=$(firstword $(MAKEFILE_LIST))$(KCFG); \ echo $(LFS_SCRIPT); \ - ROOTFILE=$$(find $(DIR_SRC)/config/rootfiles/{common,packages}/{$(MACHINE),} -maxdepth 1 -type f -name $$LFS_SCRIPT 2>/dev/null | head -1); \ + ROOTFILE=$$(find $(DIR_SRC)/config/rootfiles/{common,packages}/{$(BUILD_ARCH),} -maxdepth 1 -type f -name $$LFS_SCRIPT 2>/dev/null | head -1); \ if [ "$$ROOTFILE" = "" ]; then \ touch $(TARGET)_missing_rootfile; \ ROOTFILE=$(TARGET)_missing_rootfile ; \ echo "error $$LFS_SCRIPT not found in config/rootfiles"; \ fi; \ - sed -e "s/BUILDTARGET/$(BUILDTARGET)/g" -e "s/KVER/$(KVER)/g" -e "s/MACHINE/$(MACHINE)/g" $$ROOTFILE > $(TARGET)_rootfile; \ + sed -e "s/BUILDTARGET/$(BUILDTARGET)/g" -e "s/KVER/$(KVER)/g" -e "s/MACHINE/$(BUILD_ARCH)/g" $$ROOTFILE > $(TARGET)_rootfile; \ for line in `cat $(TARGET)_diff`; do \ if grep -qG "^#$$line$$" $(TARGET)_rootfile; then echo "#$$line" >> $(TARGET); \ elif grep -qG "^$$line$$" $(TARGET)_rootfile ; then echo "$$line" >> $(TARGET); \ @@ -178,13 +189,13 @@ define PAK cp -f /usr/src/src/paks/default/{,un}install.sh /usr/src/src/paks/default/update.sh \ /install/packages/package; \ fi - for i in $(DIR_SRC)/config/rootfiles/packages/{$(MACHINE),}/$(PROG); do \ + for i in $(DIR_SRC)/config/rootfiles/packages/{$(BUILD_ARCH),}/$(PROG); do \ if [ -e "$${i}" ]; then \ cp -v $${i} /install/packages/package/ROOTFILES; \ break; \ fi; \ done - sed -e 's/BUILDTARGET/$(BUILDTARGET)/g' -e 's/KVER/$(KVER)/g' -e 's/MACHINE/$(MACHINE)/g' -i /install/packages/package/ROOTFILES + sed -e 's/BUILDTARGET/$(BUILDTARGET)/g' -e 's/KVER/$(KVER)/g' -e 's/MACHINE/$(BUILD_ARCH)/g' -i /install/packages/package/ROOTFILES sed -e 's/xxxKVERxxx/$(KVER)/g' -i /install/packages/package/install.sh chmod 755 /install/packages/package/{{,un}install,update}.sh cd / && tar cf /install/packages/package/files.tmp --files-from=/install/packages/package/ROOTFILES --exclude='#*' \ diff --git a/lfs/backports b/lfs/backports index 5706b75..5f43ff4 100644 --- a/lfs/backports +++ b/lfs/backports @@ -34,7 +34,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP)-kmod-$(KVER)-$(VERSUFIX)
-#ifeq "$(MACHINE_TYPE)" "arm" +#ifeq "$(BUILD_PLATFORM)" "arm" CFLAGS += -fno-PIC #endif
@@ -87,7 +87,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports-3.18.1-1-ipfire-build.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports-4.2.6-1-grsecurity.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports-4.2.6-1-add_usbnet_modules.patch -ifeq "$(MACHINE)" "x86_64" +ifeq "$(BUILD_ARCH)" "x86_64" cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports-3.18.1-1_no_dma_sgtable_on_x86_64.patch endif
@@ -126,7 +126,7 @@ endif cd $(DIR_APP) && sed -i -e "s/CPTCFG_CFG80211_DEFAULT_PS=y/# CPTCFG_CFG80211_DEFAULT_PS is not set/g" .config cd $(DIR_APP) && sed -i -e "s/CPTCFG_NFC=m/# CPTCFG_NFC is not set/g" .config
-ifeq "$(MACHINE)" "x86_64" +ifeq "$(BUILD_ARCH)" "x86_64" cd $(DIR_APP) && sed -i -e "s/CPTCFG_LIBERTAS_UAP=m/# CPTCFG_LIBERTAS_UAP is not set/g" .config endif
diff --git a/lfs/binutils b/lfs/binutils index 5afaeec..db59d97 100644 --- a/lfs/binutils +++ b/lfs/binutils @@ -24,10 +24,10 @@
include Config
-VER = 2.24 +VER = 2.28
THISAPP = binutils-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP)
@@ -38,50 +38,46 @@ ifeq "$(ROOT)" "" EXTRA_CONFIG = \ --prefix=/usr \ --enable-shared \ - --disable-nls \ - --disable-werror + --with-system-zlib \ + --enable-plugins \ + --enable-ld=default \ + --disable-gold EXTRA_MAKE = tooldir=/usr EXTRA_INSTALL = tooldir=/usr else ifeq "$(PASS)" "1" - CFLAGS := $(patsubst -march=%,,$(CFLAGS)) - CFLAGS := $(patsubst -mfloat-abi=%,,$(CFLAGS)) - CFLAGS := $(patsubst -fstack-protector-strong,-fstack-protector-all,$(CFLAGS)) TARGET = $(DIR_INFO)/$(THISAPP)-tools1 EXTRA_CONFIG = \ --target=$(CROSSTARGET) \ --prefix=/tools \ --with-sysroot=$(ROOT) \ - --with-lib-path=/tools/lib \ - --disable-nls \ - --disable-werror + --with-lib-path=/tools/lib EXTRA_MAKE = EXTRA_INSTALL = else TARGET = $(DIR_INFO)/$(THISAPP)-tools2 EXTRA_ENV = \ - CC="$(CROSSTARGET)-gcc -B/tools/lib/" \ + CC="$(CROSSTARGET)-gcc" \ AR="$(CROSSTARGET)-ar" \ RANLIB="$(CROSSTARGET)-ranlib" EXTRA_CONFIG = \ --host=$(BUILDTARGET) \ --build=$(BUILDTARGET) \ --prefix=/tools \ - --with-lib-path=/tools/lib \ - --disable-nls \ - --disable-werror + --with-lib-path=/tools/lib EXTRA_MAKE = EXTRA_INSTALL = endif endif
-ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_ARCH)" "armv5tel" EXTRA_CONFIG += \ --with-abi=aapcs-linux \ --with-float=soft endif
EXTRA_CONFIG += \ + --disable-werror \ --enable-64-bit-bfd
############################################################################### @@ -92,7 +88,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = e0f71a7b2ddab0f8612336ac81d9636b +$(DL_FILE)_MD5 = d5d270fd0b698ed59ca5ade8e1b5059c
install : $(TARGET)
@@ -121,25 +117,26 @@ $(subst %,%_MD5,$(objects)) :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) $(DIR_SRC)/binutils-build && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/binutils-2.24-pt-pax-flags-20131231.patch - + @rm -rf $(DIR_APP) $(DIR_SRC)/binutils-build && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) @mkdir $(DIR_SRC)/binutils-build
# Prevent installing libiberty to lib64. cd $(DIR_APP) && sed -i 's%(^MULTIOSDIR = ).*%\1 ../lib%' libiberty/Makefile.in
- cd $(DIR_SRC)/binutils-build && $(EXTRA_ENV) MACHINE= $(DIR_APP)/configure $(EXTRA_CONFIG) - cd $(DIR_SRC)/binutils-build && make $(EXTRA_MAKE) $(MAKETUNING) MACHINE= - cd $(DIR_SRC)/binutils-build && make $(EXTRA_INSTALL) install MACHINE= + cd $(DIR_SRC)/binutils-build && $(EXTRA_ENV) $(DIR_APP)/configure $(EXTRA_CONFIG) + cd $(DIR_SRC)/binutils-build && make $(EXTRA_MAKE) $(MAKETUNING) + cd $(DIR_SRC)/binutils-build && make $(EXTRA_INSTALL) install ifeq "$(ROOT)" "" cp -v $(DIR_APP)/include/libiberty.h /usr/include -else -ifeq "$(PASS)" "2" - cd $(DIR_SRC)/binutils-build && make -C ld clean MACHINE= - cd $(DIR_SRC)/binutils-build && make -C ld LIB_PATH=/usr/lib:/lib MACHINE= - cd $(DIR_SRC)/binutils-build && cp -v ld/ld-new /tools/bin endif + +ifeq "$(TOOLCHAIN)" "1" + ifeq "$(PASS)" "2" + cd $(DIR_SRC)/binutils-build && make -C ld clean + cd $(DIR_SRC)/binutils-build && make -C ld LIB_PATH=/usr/lib:/lib + cd $(DIR_SRC)/binutils-build && cp -v ld/ld-new /tools/bin + endif endif + @rm -rf $(DIR_APP) $(DIR_SRC)/binutils-build @$(POSTBUILD) diff --git a/lfs/boost b/lfs/boost index 12c0a5b..6c47f58 100644 --- a/lfs/boost +++ b/lfs/boost @@ -24,7 +24,7 @@
include Config
-VER = 1_55_0 +VER = 1_64_0
THISAPP = boost_$(VER) DL_FILE = $(THISAPP).tar.gz @@ -58,7 +58,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 93780777cfbf999a600f62883bd54b17 +$(DL_FILE)_MD5 = 319c6ffbbeccc366f14bb68767a6db79
install : $(TARGET)
diff --git a/lfs/ccache b/lfs/ccache index c35c670..9fbb728 100644 --- a/lfs/ccache +++ b/lfs/ccache @@ -35,7 +35,6 @@ TARGET = $(DIR_INFO)/$(THISAPP)-pass$(PASS) ifeq "$(PASS)" "1" CFLAGS := $(patsubst -march=%,,$(CFLAGS)) CFLAGS := $(patsubst -mfloat-abi=%,,$(CFLAGS)) - CFLAGS := $(patsubst -fstack-protector-strong,-fstack-protector-all,$(CFLAGS)) endif
# Set max cache size to 5GB diff --git a/lfs/cdrom b/lfs/cdrom index 79920b8..58e754f 100644 --- a/lfs/cdrom +++ b/lfs/cdrom @@ -29,7 +29,7 @@ VER = ipfire THISAPP = cdrom TARGET = $(DIR_INFO)/$(THISAPP)
-ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" TAR_OPTIONS = else TAR_OPTIONS = --lzma @@ -64,7 +64,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) echo > /etc/mtab
# Create filelist for packaging. - BUILDTARGET="$(BUILDTARGET)" MACHINE="$(MACHINE)" KVER="$(KVER)" \ + BUILDTARGET="$(BUILDTARGET)" BUILD_ARCH="$(BUILD_ARCH)" KVER="$(KVER)" \ $(DIR_SRC)/src/scripts/archive.files \ $(DIR_SRC)/config/rootfiles/common \ > /tmp/ROOTFILES @@ -89,7 +89,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) # Make the ISO mkdir -p /install/cdrom/boot/isolinux dd if=/dev/zero bs=1k count=2 > /install/cdrom/boot/isolinux/boot.catalog -ifneq "$(MACHINE_TYPE)" "arm" +ifneq "$(BUILD_PLATFORM)" "arm" cp /boot/vmlinuz-$(KVER)-ipfire /install/cdrom/boot/isolinux/vmlinuz dracut --force -a "installer" --strip --xz /install/cdrom/boot/isolinux/instroot $(KVER)-ipfire cp $(DIR_SRC)/config/syslinux/boot.png /install/cdrom/boot/isolinux/boot.png @@ -106,12 +106,12 @@ endif xargs md5sum > md5sum.txt
mkdir -p /install/images -ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" cd /install/cdrom && mkisofs -J -r -V "$(NAME)_$(VERSION)" \ - . > /install/images/$(SNAME)-$(VERSION).$(MACHINE)-full-core$(CORE).iso + . > /install/images/$(SNAME)-$(VERSION).$(BUILD_ARCH)-full-core$(CORE).iso else cd /install/cdrom && mkisofs -J -r -V "$(NAME)_$(VERSION)" \ -b boot/isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table \ - -c boot/isolinux/boot.catalog . > /install/images/$(SNAME)-$(VERSION).$(MACHINE)-full-core$(CORE).iso - isohybrid /install/images/$(SNAME)-$(VERSION).$(MACHINE)-full-core$(CORE).iso + -c boot/isolinux/boot.catalog . > /install/images/$(SNAME)-$(VERSION).$(BUILD_ARCH)-full-core$(CORE).iso + isohybrid /install/images/$(SNAME)-$(VERSION).$(BUILD_ARCH)-full-core$(CORE).iso endif diff --git a/lfs/clamav b/lfs/clamav index 650faec..a20922e 100644 --- a/lfs/clamav +++ b/lfs/clamav @@ -36,7 +36,7 @@ PAK_VER = 34
DEPS = ""
-ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" CONFIGURE_FLAGS = --disable-fanotify endif
@@ -97,10 +97,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) chown clamav:clamav /var/run/clamav #install initscripts $(call INSTALL_INITSCRIPT,clamav) - # Disable PaX mprotect for clamd, clamscan and freshclam - paxctl -cm /usr/sbin/clamd - paxctl -cm /usr/bin/clamscan - paxctl -cm /usr/bin/freshclam
@rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/cleanup-toolchain b/lfs/cleanup-toolchain index 9036988..91e056e 100644 --- a/lfs/cleanup-toolchain +++ b/lfs/cleanup-toolchain @@ -27,7 +27,12 @@ include Config VER = ipfire
THISAPP = cleanup-toolchain -TARGET = $(DIR_INFO)/$(THISAPP)-$(PASS)-tools + +ifeq "$(TOOLCHAIN)" "1" + TARGET = $(DIR_INFO)/$(THISAPP)-tools +else + TARGET = $(DIR_INFO)/$(THISAPP) +endif
GCC_VER = 4.1.2
@@ -51,13 +56,8 @@ md5 :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) -ifeq "$(PASS)" "1" - SPECS=$$(dirname $$(/tools/bin/$(CROSSTARGET)-gcc -print-libgcc-file-name))/specs; \ - /tools/bin/$(CROSSTARGET)-gcc -dumpspecs | sed \ - -e "/^*cpp:$$/{n;s,$$, -isystem /tools/include,}" > $$SPECS -endif
-ifeq "$(PASS)" "2" +ifeq "$(TOOLCHAIN)" "1" # Remove the first cross compiler which is not needed anymore. find /tools/ -name "$(CROSSTARGET)*" | xargs rm -rfv
@@ -72,9 +72,10 @@ ifeq "$(PASS)" "2"
# Update/create linker cache. /tools/sbin/ldconfig -endif
-ifeq "$(PASS)" "3" + # Set a marker when the toolchain was successfully built + touch /tools/.toolchain-successful +else mv -v /tools/bin/{ld,ld-old} mv -v /tools/$(BUILDTARGET)/bin/{ld,ld-old} mv -v /tools/bin/{ld-new,ld} @@ -86,4 +87,5 @@ ifeq "$(PASS)" "3" -e '/*cpp:/{n;s@$$@ -isystem /usr/include@}' > \ $$(dirname $$(gcc -print-libgcc-file-name))/specs endif + @$(POSTBUILD) diff --git a/lfs/core-updates b/lfs/core-updates index b40de13..75a8415 100644 --- a/lfs/core-updates +++ b/lfs/core-updates @@ -59,7 +59,7 @@ core/%: $(DIR_SRC)/src/scripts/archive.files \ $(DIR_SRC)/config/rootfiles/$@/filelists \ $(DIR_SRC)/config/rootfiles/$@/files \ - $(DIR_SRC)/config/rootfiles/$@/files.$(MACHINE) \ + $(DIR_SRC)/config/rootfiles/$@/files.$(BUILD_ARCH) \ > /tmp/ROOTFILES.tmp
#remove excluded files from ROOTFILES diff --git a/lfs/crda b/lfs/crda index 8bee258..621a6b5 100644 --- a/lfs/crda +++ b/lfs/crda @@ -71,6 +71,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && sed -e "s/-Werror//g" -i Makefile cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/lfs/dfb++ b/lfs/dfb++ deleted file mode 100644 index 56c01d1..0000000 --- a/lfs/dfb++ +++ /dev/null @@ -1,86 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see http://www.gnu.org/licenses/. # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 1.0.0 - -THISAPP = DFB++-$(VER) -DL_FILE = $(THISAPP).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) -PROG = dfb++ -PAK_VER = 1 - -DEPS = "directfb" - - - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = c7d0b98bcc648a25ff11bfc74635f4ca - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - @$(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/directfb b/lfs/directfb index 1b5d3a9..436fd92 100644 --- a/lfs/directfb +++ b/lfs/directfb @@ -24,7 +24,7 @@
include Config
-VER = 1.1.1 +VER = 1.7.7
THISAPP = DirectFB-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = directfb -PAK_VER = 2 +PAK_VER = 3
DEPS = ""
@@ -46,7 +46,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = c75255049ca8d5c69afe4db58f603028 +$(DL_FILE)_MD5 = 152cf1863b1a3a28aa1370e9053440bf
install : $(TARGET)
@@ -79,14 +79,12 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/directfb-1.1.1-fix-mknod.patch - cd $(DIR_APP) && sed -i "s/checkfor_matrox=yes/checkfor_matrox=no/g" configure - cd $(DIR_APP) && sed -i "s/checkfor_cle266=no/checkfor_cle266=yes/g" configure - cd $(DIR_APP) && sed -i "s/checkfor_omap=.*/checkfor_omap=no/g" configure - cd $(DIR_APP) && ./configure --prefix=/usr --disable-x11 --enable-sdl \ - --enable-video4linux2 + cd $(DIR_APP) && ./configure \ + --prefix=/usr \ + --disable-x11 \ + --enable-sdl \ + --enable-video4linux2 cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install - ln -s $(THISAPP) /usr/src/directfb @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/flash-images b/lfs/flash-images index 4a1a4d6..554c046 100644 --- a/lfs/flash-images +++ b/lfs/flash-images @@ -34,9 +34,9 @@ PART_BOOT = /dev/mapper/$(patsubst /dev/%,%,$(DEVICE))p1 PART_ROOT = /dev/mapper/$(patsubst /dev/%,%,$(DEVICE))p3
ifeq "$(SCON)" "1" - IMAGE_FILE = /install/images/$(SNAME)-$(VERSION).1gb-ext4-scon.$(MACHINE)-full-core$(CORE).img.gz + IMAGE_FILE = /install/images/$(SNAME)-$(VERSION).1gb-ext4-scon.$(BUILD_ARCH)-full-core$(CORE).img.gz else - IMAGE_FILE = /install/images/$(SNAME)-$(VERSION).1gb-ext4.$(MACHINE)-full-core$(CORE).img.gz + IMAGE_FILE = /install/images/$(SNAME)-$(VERSION).1gb-ext4.$(BUILD_ARCH)-full-core$(CORE).img.gz endif
FSTAB_FMT = UUID=%s %-8s %-4s %-10s %d %d\n @@ -60,7 +60,7 @@ MNThdd := /install/harddisk IMG := /install/images/image.img
# All sizes in blocks -ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" BOOTLOADER = S_OFFSET = 8192
@@ -117,7 +117,7 @@ endif mount $(PART_BOOT) $(MNThdd)/boot
# Install Pandaboard MLO and uboot first -ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" cp -v /boot/MLO $(MNThdd)/boot/ cp -v /boot/u-boot.img $(MNThdd)/boot/ cp -v /boot/zImage-ipfire-multi $(MNThdd)/boot/ @@ -135,7 +135,7 @@ ifeq "$(MACHINE_TYPE)" "arm" endif
# Install IPFire -ifneq "$(MACHINE_TYPE)" "arm" +ifneq "$(BUILD_PLATFORM)" "arm" tar -x --lzma -C $(MNThdd)/ -f /install/cdrom/distro.img else tar -x -C $(MNThdd)/ -f /install/cdrom/distro.img @@ -154,7 +154,7 @@ ifeq "$(SCON)" "1" sed -i -e "s|6:2345:respawn:|#6:2345:respawn:|g" $(MNThdd)/etc/inittab sed -i -e "s|#7:2345:respawn:|7:2345:respawn:|g" $(MNThdd)/etc/inittab
-ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" sed -i -e "s| console=tty1 | console=ttyAMA0,115200n8 |g" $(MNThdd)/boot/cmdline.txt sed -i -e "s| console=tty1 | console=ttyO2,115200n8 |g" $(MNThdd)/boot/uEnv.txt endif @@ -228,7 +228,7 @@ endif # not copied to a block device) dd if=/dev/zero bs=1M count=$(PADDING) >> $(IMG)
-ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" # Install u-boot for LeMaker Banana Pi into image 8KB dd if=/usr/share/u-boot/banana_pi/u-boot-sunxi-with-spl.bin of=$(IMG) bs=1K seek=8 conv=notrunc endif diff --git a/lfs/fontconfig b/lfs/fontconfig index 7867022..fbf7b44 100644 --- a/lfs/fontconfig +++ b/lfs/fontconfig @@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/fontconfig-avoid-conflicts-with-integer-width-macros-from-TS.patch cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \ --localstatedir=/var cd $(DIR_APP) && make $(MAKETUNING) diff --git a/lfs/fuse b/lfs/fuse index a875fb3..2639156 100644 --- a/lfs/fuse +++ b/lfs/fuse @@ -24,7 +24,7 @@
include Config
-VER = 2.9.3 +VER = 2.9.7
THISAPP = fuse-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 33cae22ca50311446400daf8a6255c6a +$(DL_FILE)_MD5 = 9bd4ce8184745fd3d000ca2692adacdb
install : $(TARGET)
@@ -73,6 +73,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/fuse-2.9.2-namespace-conflict-fix.patch cd $(DIR_APP) && ./configure --prefix=/usr --disable-kernel-module cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install diff --git a/lfs/gcc b/lfs/gcc index 8652416..f04e2df 100644 --- a/lfs/gcc +++ b/lfs/gcc @@ -24,14 +24,14 @@
include Config
-VER = 4.9.4 +VER = 6.3.0
GMP_VER = 5.0.5 MPFR_VER = 2.4.2 MPC_VER = 1.0.3
THISAPP = gcc-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP)
@@ -41,6 +41,14 @@ CFLAGS := $(patsubst -mfloat-abi=%,,$(CFLAGS)) CFLAGS := $(filter-out -fexceptions,$(CFLAGS)) CXXFLAGS := $(CFLAGS)
+ifeq "$(BUILD_ARCH)" "armv7hl" + FULL_BOOTSTRAP = 1 +endif + +ifeq "$(BUILD_ARCH)" "armv5tel" + FULL_BOOTSTRAP = 1 +endif + # Normal build or /tools build. # ifeq "$(ROOT)" "" @@ -59,15 +67,13 @@ ifeq "$(ROOT)" "" EXTRA_INSTALL = else ifeq "$(PASS)" "1" - CFLAGS := $(patsubst -fstack-protector-strong,-fstack-protector-all,$(CFLAGS)) - CXXFLAGS := $(patsubst -fstack-protector-strong,-fstack-protector-all,$(CXXFLAGS)) - CXXFLAGS += -std=gnu++98 - TARGET = $(DIR_INFO)/$(THISAPP)-tools1 EXTRA_CONFIG = \ --target=$(CROSSTARGET) \ --prefix=/tools \ --with-sysroot=$(ROOT) \ + --with-local-prefix=/tools \ + --with-native-system-header-dir=/tools/include \ --disable-nls \ --disable-shared \ --disable-decimal-float \ @@ -75,6 +81,7 @@ ifeq "$(PASS)" "1" --disable-libatomic \ --disable-libmudflap \ --disable-libssp \ + --disable-libmpx \ --disable-libgomp \ --disable-libquadmath \ --disable-libstdc++-v3 \ @@ -93,31 +100,31 @@ else ifeq "$(PASS)" "2" TARGET = $(DIR_INFO)/$(THISAPP)-tools2 EXTRA_ENV = \ - CC="$(CROSSTARGET)-gcc -B/tools/lib/" \ + CC="$(CROSSTARGET)-gcc" \ CXX="$(CROSSTARGET)-g++" \ AR="$(CROSSTARGET)-ar" \ RANLIB="$(CROSSTARGET)-ranlib" EXTRA_CONFIG = \ - --host=$(BUILDTARGET) \ --build=$(BUILDTARGET) \ - --target=$(BUILDTARGET) \ --prefix=/tools \ --with-local-prefix=/tools \ --with-native-system-header-dir=/tools/include \ - --enable-clocale=gnu \ - --enable-shared \ - --enable-threads=posix \ - --enable-__cxa_atexit \ --enable-languages=c,c++ \ --disable-libstdcxx-pch \ - --enable-bootstrap + --disable-libgomp EXTRA_MAKE = EXTRA_INSTALL = + + ifeq "$(FULL_BOOTSTRAP)" "1" + EXTRA_CONFIG += --enable-bootstrap + else + EXTRA_CONFIG += --disable-bootstrap + endif else # PASS=L # libstdc++-v3 TARGET = $(DIR_INFO)/$(THISAPP)-libstdc++ EXTRA_ENV = \ - CC="$(CROSSTARGET)-gcc -B/tools/lib/" \ + CC="$(CROSSTARGET)-gcc" \ AR="$(CROSSTARGET)-ar" \ RANLIB="$(CROSSTARGET)-ranlib" EXTRA_CONFIG = \ @@ -133,29 +140,27 @@ else EXTRA_INSTALL = endif endif +endif
- # Disable stack protection in toolchain. - CFLAGS += -fno-stack-protector +ifeq "$(BUILD_ARCH)" "armv7hl" + EXTRA_CONFIG += \ + --with-float=hard endif
-ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_ARCH)" "armv5tel" EXTRA_CONFIG += \ --with-float=soft \ --disable-sjlj-exceptions endif
-ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" EXTRA_CONFIG += \ --with-arch=i586 \ --with-tune=generic endif
-ifeq "$(MACHINE)" "x86_64" - EXTRA_CONFIG += \ - --disable-multilib -endif - EXTRA_CONFIG += \ + --disable-multilib \ --with-bugurl=http://bugtracker.ipfire.org \ --disable-libunwind-exceptions \ --enable-gnu-unique-object @@ -177,7 +182,7 @@ gmp-$(GMP_VER).tar.bz2 = $(DL_FROM)/gmp-$(GMP_VER).tar.bz2 mpfr-$(MPFR_VER).tar.bz2 = $(DL_FROM)/mpfr-$(MPFR_VER).tar.bz2 mpc-$(MPC_VER).tar.gz = $(DL_FROM)/mpc-$(MPC_VER).tar.gz
-$(DL_FILE)_MD5 = 87c24a4090c1577ba817ec6882602491 +$(DL_FILE)_MD5 = 6e5ea04789678f1250c1b30c4d9ec417 gmp-$(GMP_VER).tar.bz2_MD5 = 041487d25e9c230b0c42b106361055fe mpfr-$(MPFR_VER).tar.bz2_MD5 = 89e59fe665e2b3ad44a6789f40b059a0 mpc-$(MPC_VER).tar.gz_MD5 = d6a1d5f8ddea3abd2cc3e98f58352d26 @@ -212,15 +217,12 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) $(DIR_SRC)/gcc-build && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) @mkdir $(DIR_SRC)/gcc-build
- # Apply patches. - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc49-i386-libgomp.patch - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc49-libtool-no-rpath.patch - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc49-no-add-needed.patch - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc49-pr38757.patch - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc49-pr64336.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/gcc/gcc-fix-inlining-issues.patch + cd $(DIR_APP) && sed -i 's/install_to_$$(INSTALL_DEST) //' libiberty/Makefile.in + cd $(DIR_APP) && sed -i gcc/Makefile.in \ + -e 's@./fixinc.sh@-c true@' \ + -e 's/^T_CFLAGS =$$/& -fomit-frame-pointer/'
-ifneq "$(ROOT)" "" +ifeq "$(TOOLCHAIN)" "1" # Build gmp and mpfr internally in toolchain. cd $(DIR_APP) && tar xfa $(DIR_DL)/gmp-$(GMP_VER).tar.bz2 cd $(DIR_APP) && mv -v gmp-$(GMP_VER) gmp @@ -229,29 +231,13 @@ ifneq "$(ROOT)" "" cd $(DIR_APP) && tar xfa $(DIR_DL)/mpc-$(MPC_VER).tar.gz cd $(DIR_APP) && mv -v mpc-$(MPC_VER) mpc
-ifeq "$(PASS)" "1" - # GCC does not detect stack protection correctly, which causes problems - # for the build of libresolv_pic.a. - cd $(DIR_APP) && sed -i '/k prot/agcc_cv_libc_provides_ssp=yes' gcc/configure - - for file in $$(find $(DIR_APP)/gcc/config -name linux64.h -o -name linux.h \ - -o -name sysv4.h -o -name linux-eabi.h -o -name linux-elf.h); do \ - echo "Processing $${file}..."; \ - sed -i $${file} \ - -e 's@/lib(64)?(32)?/ld@/tools&@g' \ - -e 's@/usr@/tools@g'; \ - echo '#undef STANDARD_STARTFILE_PREFIX_1' >> $${file}; \ - echo '#undef STANDARD_STARTFILE_PREFIX_2' >> $${file}; \ - echo '#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"' >> $${file}; \ - echo '#define STANDARD_STARTFILE_PREFIX_2 ""' >> $${file}; \ - done -endif - -ifeq "$(PASS)" "2" +ifeq "$(PASS)" "2" cd $(DIR_APP) && cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \ `dirname $$(/tools/bin/$(CROSSTARGET)-gcc -print-libgcc-file-name)`/include-fixed/limits.h +endif + for file in $$(find $(DIR_APP)/gcc/config -name linux64.h -o -name linux.h \ - -o -name sysv4.h -o -name linux-eabi.h -o -name linux-elf.h); do \ + -o -name sysv4.h -o -name linux-eabi.h -o -name linux-elf.h -o -name aarch64-linux.h); do \ echo "Processing $${file}..."; \ sed -i $${file} \ -e 's@/lib(64)?(32)?/ld@/tools&@g' \ @@ -262,44 +248,48 @@ ifeq "$(PASS)" "2" echo '#define STANDARD_STARTFILE_PREFIX_2 ""' >> $${file}; \ done endif -endif
- cd $(DIR_APP) && sed -i 's/install_to_$$(INSTALL_DEST) //' libiberty/Makefile.in - cd $(DIR_APP) && sed -i gcc/Makefile.in \ - -e 's@./fixinc.sh@-c true@' \ - -e 's/^T_CFLAGS =$$/& -fomit-frame-pointer/' - -ifeq "$(PASS)" "L" +ifeq "$(PASS)" "L" # libstdc++ pass cd $(DIR_SRC)/gcc-build && \ $(EXTRA_ENV) \ $(DIR_APP)/libstdc++-v3/configure \ $(EXTRA_CONFIG) - cd $(DIR_SRC)/gcc-build && make $(MAKETUNING) $(EXTRA_MAKE) + cd $(DIR_SRC)/gcc-build && make $(EXTRA_MAKE) cd $(DIR_SRC)/gcc-build && make $(EXTRA_INSTALL) install + else # The actual build. cd $(DIR_SRC)/gcc-build && \ $(EXTRA_ENV) \ $(DIR_APP)/configure \ $(EXTRA_CONFIG) - cd $(DIR_SRC)/gcc-build && make $(MAKETUNING) $(EXTRA_MAKE) + cd $(DIR_SRC)/gcc-build && make $(EXTRA_MAKE) cd $(DIR_SRC)/gcc-build && make $(EXTRA_INSTALL) install endif
-ifeq "$(ROOT)" "" - ln -svf ../usr/bin/cpp /lib - ln -svf gcc /usr/bin/cc - # remove gdb python files from libdir - rm -rf /usr/lib/*-gdb.py -else -ifeq "$(PASS)" "1" +ifeq "$(TOOLCHAIN)" "1" + ifeq "$(PASS)" "1" ln -svf libgcc.a $$(/tools/bin/$(CROSSTARGET)-gcc -print-libgcc-file-name | sed 's/libgcc/&_eh/') -else + endif + + ifeq "$(PASS)" "2" ln -svf gcc /tools/bin/cc # remove gdb python files from libdir rm -rf /tools/lib/*-gdb.py + endif + + ifeq "$(PASS)" "L" + # Workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70936 + sed -e "s/^#include_next/#include/" -i /tools/$(CROSSTARGET)/include/c++/$(VER)/cstdlib + endif + +else # NON-TOOLCHAIN + ln -svf ../usr/bin/cpp /lib + ln -svf gcc /usr/bin/cc + # remove gdb python files from libdir + rm -rf /usr/lib/*-gdb.py endif -endif + @rm -rf $(DIR_APP) $(DIR_SRC)/gcc-build @$(POSTBUILD) diff --git a/lfs/ghostscript b/lfs/ghostscript index 4d82eb7..7ee1ce4 100644 --- a/lfs/ghostscript +++ b/lfs/ghostscript @@ -32,9 +32,9 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = ghostscript -PAK_VER = 2 +PAK_VER = 3
-DEPS = "dbus libtiff" +DEPS = "cups dbus libtiff"
############################################################################### # Top-level Rules @@ -83,6 +83,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && rm -rf expat freetype icclib jasper jpeg jpegxr \ + lcms lcms2 libpng openjpeg zlib cups/libs cd $(DIR_APP) && \ ./configure \ --prefix=/usr \ diff --git a/lfs/glibc b/lfs/glibc index c0af6fc..5f15ecf 100644 --- a/lfs/glibc +++ b/lfs/glibc @@ -24,11 +24,10 @@
include Config
-VER = 2.12-2-gc4ccff1 -PORTS_VER = 2.12.1 +VER = 2.25
THISAPP = glibc-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP)
@@ -39,9 +38,8 @@ ifeq "$(ROOT)" "" EXTRA_CONFIG = \ --build=$(BUILDTARGET) \ --prefix=/usr \ - --libexecdir=/usr/lib/glibc - EXTRA_MAKE = - EXTRA_INSTALL = + --libexecdir=/usr/lib/glibc \ + --enable-stack-protector=strong else TARGET = $(DIR_INFO)/$(THISAPP)-tools EXTRA_CONFIG = \ @@ -50,31 +48,31 @@ else --prefix=/tools \ --with-headers=/tools/include \ libc_cv_forced_unwind=yes \ - libc_cv_ctors_header=yes \ - libc_cv_c_cleanup=yes \ - CC=/tools/bin/$(CROSSTARGET)-gcc - EXTRA_MAKE = - EXTRA_INSTALL = + libc_cv_c_cleanup=yes endif
-# Enable some extra optimization for the glibc code. -CFLAGS = -O3 -DNDEBUG -fasynchronous-unwind-tables -fPIC -DPIC \ - -DNO_CTORS_DTORS_SECTIONS +# Enable some extra optimization for the glibc code +CFLAGS = -O3 -DNDEBUG -fasynchronous-unwind-tables -fPIC -DPIC
-ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "armv7hl" + CFLAGS += -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard +endif + +ifeq "$(BUILD_ARCH)" "i586" CFLAGS += -march=i586 -mtune=generic -mno-tls-direct-seg-refs endif
-ifeq "$(MACHINE_TYPE)" "arm" - # Disable hardware FP for ARM. +# Disable hardware FP for armv5tel +ifeq "$(BUILD_ARCH)" "armv5tel" EXTRA_CONFIG += \ --without-fp endif
# Add some general configuration flags EXTRA_CONFIG += \ + --enable-obsolete-rpc \ --disable-profile \ - --enable-kernel=2.6.0 \ + --enable-kernel=3.2 \ --enable-add-ons \ --without-selinux \ --enable-experimental-malloc \ @@ -88,14 +86,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 450958ad3d3b5a432b356376904c96b0 - -# ARM needs glibc-ports -ifeq "$(MACHINE_TYPE)" "arm" - objects += glibc-ports-$(PORTS_VER).tar.bz2 - glibc-ports-$(PORTS_VER).tar.bz2 = $(DL_FROM)/glibc-ports-$(PORTS_VER).tar.bz2 - glibc-ports-$(PORTS_VER).tar.bz2_MD5 = cb01ab976180e98287cef5079e35359e -endif +$(DL_FILE)_MD5 = 0c9f827298841dbf3bff3060f3d7f19c
install : $(TARGET)
@@ -124,296 +115,53 @@ $(subst %,%_MD5,$(objects)) :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) $(DIR_SRC)/glibc-build && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + @rm -rf $(DIR_APP) $(DIR_SRC)/glibc-build && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) @mkdir $(DIR_SRC)/glibc-build
-ifeq "$(MACHINE_TYPE)" "arm" - cd $(DIR_APP) && tar jxf $(DIR_DL)/glibc-ports-$(PORTS_VER).tar.bz2 - cd $(DIR_APP) && mv -v glibc-ports-$(PORTS_VER) ports - - # http://sourceware.org/bugzilla/show_bug.cgi?id=12354 - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-cfi-entry-not-closed.patch -endif - - # Apply all patches. - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-aliasing.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-fedora.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-getlogin-r.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-localedata.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-recvmmsg.patch - - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh587360.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh582738.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh593396.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh593686.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh607461.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh621959.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh607010.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh630801.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh631011.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh641128.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh642584.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh643822.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh645672.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh580498.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh615090.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh623187.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh646954.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh647448.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh615701.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh652661.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh656530.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh656014.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh661982.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh601686.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh676076.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh667974.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh625893.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh681054.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh689471.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh692177.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh692838.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh703480.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh705465.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh703481.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh694386.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh676591.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh711987.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh695595.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh695963.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh713134.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh714823.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh718057.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh688980.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh712248.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh731042.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh730379.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh700507.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh699724.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh736346.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh737778.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh738665.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh738763.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh739184.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh711927.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh688720.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh726517.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh752122.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh739971.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh751750.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh740506.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh757888.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh750531.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh749188.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh767746.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh767693.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh740506-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh696472.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh771342.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh657572.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh767693-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh782585.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh784402.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh697421.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh785984.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh767146.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh766513.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh789209.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh788959.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh789189.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh789238.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh794817.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh797094-1.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh797094-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh789238-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh795498.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh794817-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh804689.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh809602.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh808337.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh788959-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh808545.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh833717.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh823909.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh826149.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh841787.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh809726.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh806404.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh832516.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh830127.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh832694.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh843673.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh847932.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh837918.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh849203.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh849651.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh827362.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh837695.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh804686.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh848082.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh846342.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh852445.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh861167.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh863453.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh864322.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh929388.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh919562.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh886968.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh966775.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh834386.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh834386-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh862094.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh851470.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh868808.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh552960.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh663641.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh663641-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh848748.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh952422.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh663641-3.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh916986.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh970776.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh966778.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh863384.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh629823.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh629823-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh947882.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh905874.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh929302.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh928318.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh905575.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh988931.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh970090.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1008310.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1022022.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1043557.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1039988.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh995972.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh981942.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1032628.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1027101.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1025933.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh845218.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1044628.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1085273.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1074342.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1085289.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1082379.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1074353.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1019916.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1028285.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1099025.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1087833.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1027261.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh905941.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1054846.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1111460.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1099025-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1133810-1.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1133810-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1138769.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1171296.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1172044.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1154563.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1125307.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1176907.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1183534.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1159167.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1023306.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1085312.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1091915.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh859965.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1124204.patch -ifneq "$(MACHINE_TYPE)" "arm" - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh978098.patch -endif - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1144019.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1053178.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1144132.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1116050.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1116050-1.patch -ifneq "$(MACHINE_TYPE)" "arm" - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh867679.patch -endif - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1088301.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1195453-avx512.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1066724.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1209376.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1207236.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1217186.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1256812.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1256812-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1256812-3.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1256812-4.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1256890.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1256891.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1291270.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1296031.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1296031-0.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1299319-0.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1299319-1.patch - - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-resolv-stack_chk_fail.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-remove-ctors-dtors-output-sections.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-test-installation.pl-nss_test1.patch - - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-test-installation.pl-libgcc_s.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-2.12-accept-make-versions-4.0-and-greater.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-mq_open.patch - - # Fixes: - # Makefile:235: *** mixed implicit and normal rules. Stop. - cd $(DIR_APP) && sed -i 's/ot $$/ot:\n\ttouch $$@\n$$/' manual/Makefile - -ifeq "$(MACHINE_TYPE)" "arm" - # http://sourceware.org/ml/libc-ports/2011-09/msg00018.html - cd $(DIR_APP) && sed -e "s/PIC/SHARED/g" -i ports/sysdeps/arm/{,eabi/}{set,__long}jmp.S -endif - -ifeq "$(ROOT)" "" -ifeq "$(MACHINE_TYPE)" "arm" - cd $(DIR_APP) && sed -i 's|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=/lib/ld-linux.so.3 -o|' \ - scripts/test-installation.pl -else -ifeq "$(MACHINE)" "x86_64" +ifneq "$(TOOLCHAIN)" "1" + ifeq "$(BUILD_ARCH)" "x86_64" cd $(DIR_APP) && sed -i 's|libs -o|libs -L/usr/lib64 -Wl,-dynamic-linker=/lib64/ld-linux-x86-64.so.2 -o|' \ scripts/test-installation.pl -else + endif + + ifeq "$(BUILD_ARCH)" "i586" cd $(DIR_APP) && sed -i 's|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=/lib/ld-linux.so.2 -o|' \ scripts/test-installation.pl -endif -endif + endif + + ifeq "$(BUILD_ARCH)" "armv5tel" + cd $(DIR_APP) && sed -i 's|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=/lib/ld-linux.so.3 -o|' \ + scripts/test-installation.pl + endif endif
cd $(DIR_SRC)/glibc-build && \ CFLAGS="$(CFLAGS) -fno-asynchronous-unwind-tables" \ $(DIR_APP)/configure $(EXTRA_CONFIG)
- sed -i $(DIR_SRC)/glibc-build/config.make \ - -e "s/^build-pic-default=.*/build-pic-default=yes/" - - # Build the glibc libraries without stack protection (as this is not supported) - echo "build-programs=no" >> $(DIR_SRC)/glibc-build/configparms - cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=$(MAKETUNING) \ - CFLAGS="$(CFLAGS) -fno-stack-protector -U_FORTIFY_SOURCE" \ - CXXFLAGS="$(CXXFLAGS) -fno-stack-protector -U_FORTIFY_SOURCE" - - # Build the programs with hardening - : > $(DIR_SRC)/glibc-build/configparms cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=$(MAKETUNING) \ CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)"
- cd $(DIR_SRC)/glibc-build && make $(EXTRA_INSTALL) install + cd $(DIR_SRC)/glibc-build && make install
-ifeq "$(ROOT)" "" +ifneq "$(TOOLCHAIN)" "1" # Creating the locales mkdir -p /usr/lib/locale cd $(DIR_SRC)/glibc-build && make localedata/install-locales
# Timezone data will be shipped by tzdata. rm -rfv /usr/share/zoneinfo -else - ln -svf lib /tools/lib64 endif + +ifeq "$(TOOLCHAIN)" "1" + # Test the linker in toolchain + cd $(DIR_APP) && echo "int main() { return 0; }" > dummy.c + cd $(DIR_APP) && $(CROSSTARGET)-gcc dummy.c -o dummy + + # Must be using a runtime linker from /tools + cd $(DIR_APP) && readelf -l dummy | grep "Requesting program interpreter: /tools" + cd $(DIR_APP) && rm -vf dummy dummy.c +endif + @rm -rf $(DIR_APP) $(DIR_SRC)/glibc-build @$(POSTBUILD) diff --git a/lfs/gmp b/lfs/gmp index f8dd6bb..8dc9b73 100644 --- a/lfs/gmp +++ b/lfs/gmp @@ -32,9 +32,9 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP)
-ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" CONFIGURE_ARGS = ABI=32 - BUILDTARGET_PENTIUM4 = $(patsubst $(MACHINE)-%,pentium4-%,$(BUILDTARGET)) + BUILDTARGET_PENTIUM4 = $(patsubst $(BUILD_ARCH)-%,pentium4-%,$(BUILDTARGET)) endif
CONFIGURE_OPTIONS = \ @@ -89,7 +89,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install
-ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" # Build SSE/SSE2 optimised version for x86 cd $(DIR_APP) && make clean cd $(DIR_APP) && \ diff --git a/lfs/gmp-compat b/lfs/gmp-compat index 438e957..1e483f6 100644 --- a/lfs/gmp-compat +++ b/lfs/gmp-compat @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP)
-ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" CONFIGURE_ARGS = ABI=32 endif
diff --git a/lfs/grub b/lfs/grub index ba74408..a054b8e 100644 --- a/lfs/grub +++ b/lfs/grub @@ -79,6 +79,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-2.00_disable_vga_fallback.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/0001-Fix-CVE-2015-8370-Grub2-user-pass-vulnerability.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub2-remove-gets.patch cd $(DIR_APP) && \ ./configure \ --prefix=/usr \ @@ -99,10 +100,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) -mkdir -pv /etc/default install -m 644 $(DIR_SRC)/config/grub2/default /etc/default/grub
- # Disable hardening. - paxctl -mpes /usr/sbin/grub-bios-setup /usr/sbin/grub-probe - paxctl -mpexs /usr/bin/grub-script-check - # We don't need to install unifont just to generate a grub2 compatible # font archive for the graphical boot menu. The following command only # converts Latin-1, Latin Extended A+B, Arrows, Box and Block characters. diff --git a/lfs/iftop b/lfs/iftop deleted file mode 100644 index 68a0055..0000000 --- a/lfs/iftop +++ /dev/null @@ -1,84 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see http://www.gnu.org/licenses/. # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 0.17 - -THISAPP = iftop-$(VER) -DL_FILE = $(THISAPP).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) -PROG = iftop -PAK_VER = 1 - -DEPS = "" - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = 062bc8fb3856580319857326e0b8752d - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - @$(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/initscripts b/lfs/initscripts index ef7114c..7d07b8a 100644 --- a/lfs/initscripts +++ b/lfs/initscripts @@ -199,7 +199,7 @@ $(TARGET) : done
# ARM does not need acpid, intel no swconfig -ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" rm -vf /etc/rc.d/init.d/acpid ln -sf ../init.d/swconfig /etc/rc.d/rcsysinit.d/S73swconfig else diff --git a/lfs/installer b/lfs/installer index 3364a4d..347d90e 100644 --- a/lfs/installer +++ b/lfs/installer @@ -31,7 +31,7 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP)
SLOGAN = An Open Source Firewall Solution -DOWNLOAD_URL = http://downloads.ipfire.org/releases/ipfire-2.x/$(VERSION)-core$(CORE)/$(SNA... +DOWNLOAD_URL = http://downloads.ipfire.org/releases/ipfire-2.x/$(VERSION)-core$(CORE)/$(SNA...
############################################################################### # Top-level Rules diff --git a/lfs/iperf b/lfs/iperf index 38de994..07e437d 100644 --- a/lfs/iperf +++ b/lfs/iperf @@ -24,7 +24,7 @@
include Config
-VER = 2.0.5 +VER = 2.0.9
THISAPP = iperf-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = iperf -PAK_VER = 2 +PAK_VER = 3
DEPS = ""
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 44b5536b67719f4250faed632a3cd016 +$(DL_FILE)_MD5 = 351b018b71176b8cb25f20eef6a9e37c
install : $(TARGET)
diff --git a/lfs/ipset b/lfs/ipset index e92d43f..7c43b30 100644 --- a/lfs/ipset +++ b/lfs/ipset @@ -71,8 +71,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && ./autogen.sh - cd $(DIR_APP) && KSOURCEDIR=/usr/src/linux KBUILDDIR=/usr/src/linux ./configure \ + cd $(DIR_APP) && ./configure \ --prefix=/usr \ + --with-kmod=no \ --disable-static
# Add configuration directory diff --git a/lfs/lcr b/lfs/lcr index 7ada81d..9f5ab8c 100644 --- a/lfs/lcr +++ b/lfs/lcr @@ -36,6 +36,8 @@ PAK_VER = 6
DEPS = ""
+CXXFLAGS += -std=gnu++98 + ############################################################################### # Top-level Rules ############################################################################### diff --git a/lfs/libdvbpsi b/lfs/libdvbpsi index 68c7deb..01abb43 100644 --- a/lfs/libdvbpsi +++ b/lfs/libdvbpsi @@ -77,7 +77,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr + cd $(DIR_APP) && sed -e "s/-Werror//g" -i configure + cd $(DIR_APP) && ./configure --prefix=/usr --enable-release cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/lfs/linux b/lfs/linux index 3c85a23..270166c 100644 --- a/lfs/linux +++ b/lfs/linux @@ -40,15 +40,21 @@ CXXFLAGS = PAK_VER = 73 DEPS = ""
-ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" KERNEL_ARCH = i386 else - KERNEL_ARCH = $(MACHINE) + KERNEL_ARCH = $(BUILD_ARCH) +endif + +ifeq "$(BUILD_ARCH)" "aarch64" + HEADERS_ARCH = arm64 +else + HEADERS_ARCH = $(BUILD_PLATFORM) endif
VERSUFIX=ipfire$(KCFG)
-ifeq "$(TOOLS)" "1" +ifeq "$(TOOLCHAIN)" "1" TARGET = $(DIR_INFO)/linux-$(VER)-$(VERSUFIX)-tools HEADERS_PREFIX = /tools else @@ -56,22 +62,6 @@ else HEADERS_PREFIX = /usr endif
-ifeq "$(MACHINE)" "armv5tel" - HEADERS_ARCH=arm -endif - -ifeq "$(MACHINE)" "aarch64" - HEADERS_ARCH=arm64 -endif - -ifeq "$(MACHINE)" "x86_64" - HEADERS_ARCH=x86 -endif - -ifeq "$(MACHINE)" "i586" - HEADERS_ARCH=x86 -endif - ifeq "$(KCFG)" "" LASTKERNEL=1 endif @@ -79,6 +69,9 @@ ifeq "$(KCFG)" "-kirkwood" LASTKERNEL=1 endif
+# The buildsystem does not correctly detect if our compiler supports plugins +export DISABLE_PAX_PLUGINS=y + ############################################################################### # Top-level Rules ############################################################################### @@ -260,7 +253,7 @@ else drivers/video/logo/logo_linux_clut224.ppm
# Cleanup kernel source - cp $(DIR_SRC)/config/kernel/kernel.config.$(MACHINE)-$(VERSUFIX) $(DIR_APP)/.config + cp $(DIR_SRC)/config/kernel/kernel.config.$(BUILD_ARCH)-$(VERSUFIX) $(DIR_APP)/.config cd $(DIR_APP) && make oldconfig cd $(DIR_APP) && make clean cd $(DIR_APP) && sed -i -e 's/EXTRAVERSION\ =.*/EXTRAVERSION\ =\ -$(VERSUFIX)/' Makefile @@ -291,7 +284,7 @@ endif cd $(DIR_APP) && make $(MAKETUNING) modules_install cd $(DIR_APP) && make $(MAKETUNING) firmware_install
-ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" cd $(DIR_APP) && make $(MAKETUNING) dtbs cd $(DIR_APP) && for f in $$(find arch/arm/boot/dts/ -name *.dtb); do \ mkdir -p /boot/dtb-$(VER)-$(VERSUFIX) ; \ diff --git a/lfs/memtest b/lfs/memtest index c92fab6..a1d6e2c 100644 --- a/lfs/memtest +++ b/lfs/memtest @@ -76,7 +76,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) # gcc-4.9.3 produce a corrupted version of memtest # we use the precomp version at the moment
-#ifeq "$(MACHINE)" "i586" +#ifeq "$(BUILD_ARCH)" "i586" # # Enable SMP as default # cd $(DIR_APP) && sed -i -e "s|CONSERVATIVE_SMP 1|CONSERVATIVE_SMP 0|g" config.h # cd $(DIR_APP) && sed -i -e "s|scp |echo |g" Makefile diff --git a/lfs/mysql b/lfs/mysql index 089516e..8c739c2 100644 --- a/lfs/mysql +++ b/lfs/mysql @@ -34,7 +34,8 @@ TARGET = $(DIR_INFO)/$(THISAPP) PROG = mysql PAK_VER = 3
-CFLAGS += -fno-strict-aliasing +CFLAGS += -fno-strict-aliasing +CXXFLAGS += -std=gnu++98
############################################################################### # Top-level Rules @@ -77,6 +78,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + $(UPDATE_AUTOMAKE) cd $(DIR_APP) && ./configure --prefix=/usr \ --sysconfdir=/etc \ --libexecdir=/usr/sbin \ @@ -96,8 +98,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd /usr/lib && ln -v -sf mysql/libmysqlclient{,_r}.so* . install -v -m644 $(DIR_SRC)/config/mysql/my.cnf /etc/my.cnf mkdir -p /srv/mysql - mysql_install_db --user=mysql --force - chgrp -v mysql /srv/mysql{,/test,/mysql} chown mysql.mysql /srv/mysql/ install -v -m755 -o mysql -g mysql -d /var/run/mysql install -v -m 644 $(DIR_SRC)/config/backup/includes/mysql \ diff --git a/lfs/ncurses-compat b/lfs/ncurses-compat index 1c0fb04..09ec434 100644 --- a/lfs/ncurses-compat +++ b/lfs/ncurses-compat @@ -55,6 +55,8 @@ EXTRA_CONFIG += \ --with-termlib=tinfo \ --disable-nls
+export CPPFLAGS = -P + ############################################################################### # Top-level Rules ############################################################################### diff --git a/lfs/openssl b/lfs/openssl index cece007..d6be5a9 100644 --- a/lfs/openssl +++ b/lfs/openssl @@ -61,22 +61,29 @@ CONFIGURE_OPTIONS = \ no-mdc2 \ no-rc5 \ no-srp \ - -DSSL_FORBID_ENULL + -DSSL_FORBID_ENULL \ + $(OPENSSL_ARCH)
-ifeq "$(MACHINE)" "x86_64" - CONFIGURE_OPTIONS += linux-x86_64 +ifeq "$(IS_64BIT)" "1" + OPENSSL_ARCH = linux-generic64 +else + OPENSSL_ARCH = linux-generic32 endif
-ifeq "$(MACHINE)" "i586" - CONFIGURE_OPTIONS += linux-elf - -ifneq "$(KCFG)" "-sse2" - CONFIGURE_OPTIONS += no-sse2 +ifeq "$(BUILD_ARCH)" "aarch64" + OPENSSL_ARCH = linux-aarch64 endif + +ifeq "$(BUILD_ARCH)" "x86_64" + OPENSSL_ARCH = linux-x86_64 endif
-ifeq "$(MACHINE)" "armv5tel" - CONFIGURE_OPTIONS += linux-generic32 +ifeq "$(BUILD_ARCH)" "i586" + OPENSSL_ARCH = linux-elf + + ifneq "$(KCFG)" "-sse2" + OPENSSL_ARCH += no-sse2 + endif endif
############################################################################### @@ -123,7 +130,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/openssl-1.0.2g-disable-sslv2v3.patch
# i586 specific patches -ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/openssl-1.0.2a_auto_enable_padlock.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/openssl-1.0.2a_disable_ssse3_for_amd.patch endif diff --git a/lfs/pakfire b/lfs/pakfire index 00d1bb1..b584cc5 100644 --- a/lfs/pakfire +++ b/lfs/pakfire @@ -30,10 +30,10 @@ THISAPP = pakfire DIR_APP = /opt/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP)
-ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" PAKFIRE_VERSION = $(VERSION) else - PAKFIRE_VERSION = $(VERSION)-$(MACHINE) + PAKFIRE_VERSION = $(VERSION)-$(BUILD_ARCH) endif
############################################################################### diff --git a/lfs/pam b/lfs/pam index 75557a4..96e8956 100644 --- a/lfs/pam +++ b/lfs/pam @@ -70,6 +70,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + $(UPDATE_AUTOMAKE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/pam-0.99.10.0-rlimit-build-fix.patch cd $(DIR_APP) && ./configure --libdir=/usr/lib \ --sbindir=/lib/security \ --enable-securedir=/lib/security \ diff --git a/lfs/perl b/lfs/perl index c4ddc8e..9ab8efa 100644 --- a/lfs/perl +++ b/lfs/perl @@ -77,6 +77,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/perl-Fix-Errno.pm-generation-for-gcc-5.0.patch ifneq "$(ROOT)" "" cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-libc-2.patch endif diff --git a/lfs/php b/lfs/php index 1f33f0d..8717cca 100644 --- a/lfs/php +++ b/lfs/php @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP)
-ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" CFLAGS := $(patsubst -march=%,,$(CFLAGS)) endif
diff --git a/lfs/pkg-config b/lfs/pkg-config index 3c3b8b2..8523d8a 100644 --- a/lfs/pkg-config +++ b/lfs/pkg-config @@ -80,6 +80,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP)/glib && patch -Np1 < $(DIR_SRC)/src/patches/pkg-config-0.29-glib-compile-fix.patch ifeq "$(ROOT)" "" else mkdir -pv /tools/lib/pkgconfig diff --git a/lfs/python b/lfs/python index 013f9c1..14ccb69 100644 --- a/lfs/python +++ b/lfs/python @@ -24,7 +24,7 @@
include Config
-VER = 2.7.10 +VER = 2.7.13
THISAPP = Python-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = c685ef0b8e9f27b5e3db5db12b268ac6 +$(DL_FILE)_MD5 = 53b43534153bb2a0363f08bae8b9d990
install : $(TARGET)
@@ -71,6 +71,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar Jxf $(DIR_DL)/$(DL_FILE) rm -rf $(DIR_APP)/Modules/_ctypes/{darwin,libffi,libffi_arm_wince,libffi_msvc,libffi_osx} + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/python-2.7.13-getentropy.patch cd $(DIR_APP) && OPT="$(CFLAGS)" ./configure \ --prefix=/usr --enable-shared --with-system-ffi cd $(DIR_APP) && make $(MAKETUNING) diff --git a/lfs/qemu b/lfs/qemu index 57d79a3..4f827e8 100644 --- a/lfs/qemu +++ b/lfs/qemu @@ -88,13 +88,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) # install wrapper for old kvm parameter handling install -m 755 $(DIR_SRC)/config/qemu/qemu /usr/bin/qemu
- # disable PaX MPROTECT and RANDMMAP - paxctl -m -r /usr/bin/qemu-system-arm - paxctl -m -r /usr/bin/qemu-system-i386 - paxctl -m -r /usr/bin/qemu-system-x86_64 - paxctl -m -r /usr/bin/qemu-arm - paxctl -m -r /usr/bin/qemu-i386 - paxctl -m -r /usr/bin/qemu-x86_64 # install an udev script to set the permissions of /dev/kvm cp -avf $(DIR_SRC)/config/qemu/65-kvm.rules /lib/udev/rules.d/65-kvm.rules
diff --git a/lfs/sources-iso b/lfs/sources-iso index 9df159e..4f658cf 100644 --- a/lfs/sources-iso +++ b/lfs/sources-iso @@ -48,5 +48,5 @@ install : $(DIR_INFO)/_build.othersrc-list.log # make the sources CDROM iso cd /install/cdrom && mkisofs -J -r -V "$(NAME)_$(VERSION)" \ - . > /install/images/$(SNAME)-sources-cd-$(VERSION).$(MACHINE).iso + . > /install/images/$(SNAME)-sources-cd-$(VERSION).$(BUILD_ARCH).iso rm -rf /install/cdrom/* diff --git a/lfs/paxctl b/lfs/stage1 similarity index 67% rename from lfs/paxctl rename to lfs/stage1 index 387f384..c4c5784 100644 --- a/lfs/paxctl +++ b/lfs/stage1 @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2016 IPFire Team info@ipfire.org # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,56 +24,34 @@
include Config
-VER = 0.9 +VER = ipfire
-THISAPP = paxctl-$(VER) -DL_FILE = $(THISAPP).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) +THISAPP = stage1 TARGET = $(DIR_INFO)/$(THISAPP)
############################################################################### # Top-level Rules ###############################################################################
-objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = 9bea59b1987dc4e16c2d22d745374e64 - install : $(TARGET)
-check : $(patsubst %,$(DIR_CHK)/%,$(objects)) +check :
-download :$(patsubst %,$(DIR_DL)/%,$(objects)) +download :
-md5 : $(subst %,%_MD5,$(objects)) - -dist: - @$(PAK) +md5 :
############################################################################### -# Downloading, checking, md5sum +# Installation Details ###############################################################################
-$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) +$(TARGET) : + @$(PREBUILD)
-$(subst %,%_MD5,$(objects)) : - @$(MD5) + mkdir -pv /tools/lib
-############################################################################### -# Installation Details -############################################################################### +ifeq "$(IS_64BIT)" "1" + ln -svf lib /tools/lib64 +endif
-$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/stage2 b/lfs/stage2 index 1256fd3..b70bde7 100644 --- a/lfs/stage2 +++ b/lfs/stage2 @@ -64,7 +64,7 @@ $(TARGET) : # Symlink /var/run -> /run. ln -svf ../run /var/run
-ifeq "$(MACHINE)" "x86_64" +ifeq "$(IS_64BIT)" "1" ln -svf lib /lib64 ln -svf lib /usr/lib64 endif diff --git a/lfs/strongswan b/lfs/strongswan index 7f6a95b..32f5492 100644 --- a/lfs/strongswan +++ b/lfs/strongswan @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/strongswan-$(VER) TARGET = $(DIR_INFO)/$(THISAPP)
-ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" CONFIGURE_OPTIONS = \ --enable-padlock else diff --git a/lfs/sysklogd b/lfs/sysklogd index 75bde5f..58d1073 100644 --- a/lfs/sysklogd +++ b/lfs/sysklogd @@ -70,6 +70,10 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + + # Compile fix + cd $(DIR_APP) && sed -i "s/union wait/int/" syslogd.c + cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install touch /var/log/{dhcpcd.log,messages} diff --git a/lfs/tcpick b/lfs/tcpick deleted file mode 100644 index 52ba75b..0000000 --- a/lfs/tcpick +++ /dev/null @@ -1,84 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see http://www.gnu.org/licenses/. # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 0.2.1 - -THISAPP = tcpick-$(VER) -DL_FILE = $(THISAPP).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) -PROG = tcpick -PAK_VER = 1 - -DEPS = "" - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = bb94f2f9ea81aeb645619fbe9b3b9a29 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - @$(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/udev b/lfs/udev index 320f272..2d5c560 100644 --- a/lfs/udev +++ b/lfs/udev @@ -77,8 +77,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/udev-208_remove_systemd_log.patch
- cd $(DIR_APP)/udev-lfs-$(VER)-1 && sed -i "s/HANDLE_AT 1/HANDLE_AT 0/g" cfg.h - rm -rf /lib/udev/devices install -dv /lib/firmware
diff --git a/lfs/unzip b/lfs/unzip index 7853dd0..793890d 100644 --- a/lfs/unzip +++ b/lfs/unzip @@ -72,7 +72,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && make -f unix/Makefile clean cd $(DIR_APP)/unix && ./configure -ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" cd $(DIR_APP) && make -f unix/Makefile LOCAL_UNZIP=-D_FILE_OFFSET_BITS=64 generic else # ARM/x86_64 cannot use the x86 32 bit assembly code. diff --git a/lfs/vdr_dvbapi b/lfs/vdr_dvbapi index 2cf34e7..f9339e6 100644 --- a/lfs/vdr_dvbapi +++ b/lfs/vdr_dvbapi @@ -102,7 +102,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP)* && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
-ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" # Build an SSE enabled version. $(call BUILD,-sse) endif diff --git a/lfs/vdr_vnsiserver5 b/lfs/vdr_vnsiserver5 deleted file mode 100644 index 0416416..0000000 --- a/lfs/vdr_vnsiserver5 +++ /dev/null @@ -1,99 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007-2013 IPFire Team info@ipfire.org # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see http://www.gnu.org/licenses/. # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 1.0.0 -THISAPP = vdr-vnsiserver5-$(VER) -DL_FILE = $(THISAPP).tar.gz - -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) -PROG = vdr_vnsiserver5 -PAK_VER = 1 - -DEPS = "vdr" - -VDRPLUGVER = 2.0.0 - -EXTRA_FLAGS= -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -CFLAGS += $(EXTRA_FLAGS) -CXXFLAGS += $(EXTRA_FLAGS) - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = 3d1a0b21d11187e43a56f9e4cf7cb1c9 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download : $(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - @$(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - - cd $(DIR_APP) && make $(MAKE_TUNING) LIBDIR=. VDRDIR=/usr/lib/vdr \ - CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" \ - LOCALEDIR=$$(pwd)/locale all - - -mkdir -pv /etc/vdr/plugins/vnsiserver5 - cd $(DIR_APP) && install -m 755 libvdr-vnsiserver5.so \ - /usr/lib/vdr/libvdr-vnsiserver5.so.$(VDRPLUGVER) - ln -svf ../../svdrphosts.conf /etc/vdr/plugins/vnsiserver5/allowed_hosts.conf - install -m 644 $(DIR_SRC)/config/vdr/plugins.d/vnsiserver5.conf \ - /etc/sysconfig/vdr-plugins.d - - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/xen-image b/lfs/xen-image index d5a747b..78c242b 100644 --- a/lfs/xen-image +++ b/lfs/xen-image @@ -47,7 +47,7 @@ md5 : ############################################################################### # Installation Details ############################################################################### -IMGinst := /install/images/$(SNAME)-$(VERSION).xen.$(MACHINE)-downloader-core$(CORE).tar.bz2 +IMGinst := /install/images/$(SNAME)-$(VERSION).xen.$(BUILD_ARCH)-downloader-core$(CORE).tar.bz2
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) rm -rf /install/images/$(SNAME) $(IMGinst) && mkdir -p /install/images/$(SNAME) diff --git a/make.sh b/make.sh index e8af68a..9314ae9 100755 --- a/make.sh +++ b/make.sh @@ -36,11 +36,11 @@ BUILD_IMAGES=1 # Flash and Xen Downloader KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'` GIT_TAG=$(git tag | tail -1) # Git Tag GIT_LASTCOMMIT=$(git log | head -n1 | cut -d" " -f2 |head -c8) # Last commit -TOOLCHAINVER=12 + +TOOLCHAINVER=20170518
# New architecture variables -BUILD_ARCH="$(uname -m)" -BUILDMACHINE="${BUILD_ARCH}" +HOST_ARCH="$(uname -m)"
# Debian specific settings if [ ! -e /etc/debian_version ]; then @@ -69,10 +69,13 @@ if [ -f .config ]; then . .config fi
-if [ -n "${TARGET_ARCH}" ]; then - configure_target "${TARGET_ARCH}" +if [ -n "${BUILD_ARCH}" ]; then + configure_build "${BUILD_ARCH}" +elif [ -n "${TARGET_ARCH}" ]; then + configure_build "${TARGET_ARCH}" + unset TARGET_ARCH else - configure_target "default" + configure_build "default" fi
if [ -z $EDITOR ]; then @@ -221,13 +224,13 @@ prepareenv() { # Run LFS static binary creation scripts one by one export CCACHE_DIR=$BASEDIR/ccache export CCACHE_COMPRESS=1 - export CCACHE_COMPILERCHECK="string:toolchain-${TOOLCHAINVER} ${TARGET_ARCH}" + export CCACHE_COMPILERCHECK="string:toolchain-${TOOLCHAINVER} ${BUILD_ARCH}"
# Remove pre-install list of installed files in case user erase some files before rebuild rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null
# Prepare string for /etc/system-release. - SYSTEM_RELEASE="${NAME} ${VERSION} (${MACHINE})" + SYSTEM_RELEASE="${NAME} ${VERSION} (${BUILD_ARCH})" if [ "$(git status -s | wc -l)" == "0" ]; then GIT_STATUS="" else @@ -245,7 +248,7 @@ prepareenv() {
buildtoolchain() { local error=false - case "${TARGET_ARCH}:${BUILD_ARCH}" in + case "${BUILD_ARCH}:${HOST_ARCH}" in # x86_64 x86_64:x86_64) # This is working. @@ -260,6 +263,10 @@ buildtoolchain() { ;;
# ARM + arvm7hl:armv7hl|armv7hl:armv7l) + # These are working. + ;; + armv5tel:armv5tel|armv5tel:armv5tejl|armv5tel:armv6l|armv5tel:armv7l|armv5tel:aarch64) # These are working. ;; @@ -269,7 +276,7 @@ buildtoolchain() { esac
${error} && \ - exiterror "Cannot build ${MACHINE} toolchain on $(uname -m). Please use the download if any." + exiterror "Cannot build ${BUILD_ARCH} toolchain on $(uname -m). Please use the download if any."
local gcc=$(type -p gcc) if [ -z "${gcc}" ]; then @@ -279,12 +286,12 @@ buildtoolchain() { LOGFILE="$BASEDIR/log/_build.toolchain.log" export LOGFILE
+ lfsmake1 stage1 lfsmake1 ccache PASS=1 lfsmake1 binutils PASS=1 lfsmake1 gcc PASS=1 - lfsmake1 linux TOOLS=1 KCFG="-headers" + lfsmake1 linux KCFG="-headers" lfsmake1 glibc - lfsmake1 cleanup-toolchain PASS=1 lfsmake1 gcc PASS=L lfsmake1 binutils PASS=2 lfsmake1 gcc PASS=2 @@ -313,7 +320,7 @@ buildtoolchain() { lfsmake1 texinfo lfsmake1 xz lfsmake1 fake-environ - lfsmake1 cleanup-toolchain PASS=2 + lfsmake1 cleanup-toolchain }
buildbase() { @@ -324,7 +331,7 @@ buildbase() { lfsmake2 man-pages lfsmake2 glibc lfsmake2 tzdata - lfsmake2 cleanup-toolchain PASS=3 + lfsmake2 cleanup-toolchain lfsmake2 zlib lfsmake2 binutils lfsmake2 gmp @@ -334,9 +341,9 @@ buildbase() { lfsmake2 file lfsmake2 gcc lfsmake2 sed - lfsmake2 berkeley lfsmake2 autoconf lfsmake2 automake + lfsmake2 berkeley lfsmake2 coreutils lfsmake2 iana-etc lfsmake2 m4 @@ -383,518 +390,511 @@ buildbase() { lfsmake2 udev lfsmake2 vim lfsmake2 xz - lfsmake2 paxctl }
buildipfire() { LOGFILE="$BASEDIR/log/_build.ipfire.log" export LOGFILE - ipfiremake configroot - ipfiremake initscripts - ipfiremake backup - ipfiremake pkg-config - ipfiremake libusb - ipfiremake libusb-compat - ipfiremake libpcap - ipfiremake ppp - ipfiremake pptp - ipfiremake unzip - ipfiremake which - ipfiremake linux-firmware - ipfiremake ath10k-firmware - ipfiremake dvb-firmwares - ipfiremake mt7601u-firmware - ipfiremake zd1211-firmware - ipfiremake rpi-firmware - ipfiremake bc - ipfiremake u-boot - ipfiremake cpio - ipfiremake mdadm - ipfiremake dracut - ipfiremake lvm2 - ipfiremake multipath-tools - ipfiremake freetype - ipfiremake grub - ipfiremake libmnl - ipfiremake libnfnetlink - ipfiremake libnetfilter_queue - ipfiremake libnetfilter_conntrack - ipfiremake libnetfilter_cthelper - ipfiremake libnetfilter_cttimeout - ipfiremake iptables - - case "${TARGET_ARCH}" in + lfsmake2 configroot + lfsmake2 initscripts + lfsmake2 backup + lfsmake2 pkg-config + lfsmake2 libusb + lfsmake2 libusb-compat + lfsmake2 libpcap + lfsmake2 ppp + lfsmake2 pptp + lfsmake2 unzip + lfsmake2 which + lfsmake2 linux-firmware + lfsmake2 ath10k-firmware + lfsmake2 dvb-firmwares + lfsmake2 mt7601u-firmware + lfsmake2 zd1211-firmware + lfsmake2 rpi-firmware + lfsmake2 bc + lfsmake2 u-boot + lfsmake2 cpio + lfsmake2 mdadm + lfsmake2 dracut + lfsmake2 lvm2 + lfsmake2 multipath-tools + lfsmake2 freetype + lfsmake2 grub + lfsmake2 libmnl + lfsmake2 libnfnetlink + lfsmake2 libnetfilter_queue + lfsmake2 libnetfilter_conntrack + lfsmake2 libnetfilter_cthelper + lfsmake2 libnetfilter_cttimeout + lfsmake2 iptables + + case "${BUILD_ARCH}" in x86_64) - ipfiremake linux KCFG="" - ipfiremake backports KCFG="" - ipfiremake e1000e KCFG="" - ipfiremake igb KCFG="" - ipfiremake ixgbe KCFG="" - ipfiremake xtables-addons KCFG="" - ipfiremake linux-initrd KCFG="" + lfsmake2 linux KCFG="" + lfsmake2 backports KCFG="" + lfsmake2 e1000e KCFG="" + lfsmake2 igb KCFG="" + lfsmake2 ixgbe KCFG="" + lfsmake2 xtables-addons KCFG="" + lfsmake2 linux-initrd KCFG="" ;; i586) # x86-pae (Native and new XEN) kernel build - ipfiremake linux KCFG="-pae" - ipfiremake backports KCFG="-pae" - ipfiremake e1000e KCFG="-pae" - ipfiremake igb KCFG="-pae" - ipfiremake ixgbe KCFG="-pae" - ipfiremake xtables-addons KCFG="-pae" - ipfiremake linux-initrd KCFG="-pae" + lfsmake2 linux KCFG="-pae" + lfsmake2 backports KCFG="-pae" + lfsmake2 e1000e KCFG="-pae" + lfsmake2 igb KCFG="-pae" + lfsmake2 ixgbe KCFG="-pae" + lfsmake2 xtables-addons KCFG="-pae" + lfsmake2 linux-initrd KCFG="-pae"
# x86 kernel build - ipfiremake linux KCFG="" - ipfiremake backports KCFG="" - ipfiremake e1000e KCFG="" - ipfiremake igb KCFG="" - ipfiremake ixgbe KCFG="" - ipfiremake xtables-addons KCFG="" - ipfiremake linux-initrd KCFG="" + lfsmake2 linux KCFG="" + lfsmake2 backports KCFG="" + lfsmake2 e1000e KCFG="" + lfsmake2 igb KCFG="" + lfsmake2 ixgbe KCFG="" + lfsmake2 xtables-addons KCFG="" + lfsmake2 linux-initrd KCFG="" ;;
armv5tel) # arm-rpi (Raspberry Pi) kernel build - ipfiremake linux KCFG="-rpi" - ipfiremake backports KCFG="-rpi" - ipfiremake xtables-addons KCFG="-rpi" - ipfiremake linux-initrd KCFG="-rpi" + lfsmake2 linux KCFG="-rpi" + lfsmake2 backports KCFG="-rpi" + lfsmake2 xtables-addons KCFG="-rpi" + lfsmake2 linux-initrd KCFG="-rpi"
# arm multi platform (Panda, Wandboard ...) kernel build - ipfiremake linux KCFG="-multi" - ipfiremake backports KCFG="-multi" - ipfiremake e1000e KCFG="-multi" - ipfiremake igb KCFG="-multi" - ipfiremake ixgbe KCFG="-multi" - ipfiremake xtables-addons KCFG="-multi" - ipfiremake linux-initrd KCFG="-multi" + lfsmake2 linux KCFG="-multi" + lfsmake2 backports KCFG="-multi" + lfsmake2 e1000e KCFG="-multi" + lfsmake2 igb KCFG="-multi" + lfsmake2 ixgbe KCFG="-multi" + lfsmake2 xtables-addons KCFG="-multi" + lfsmake2 linux-initrd KCFG="-multi"
# arm-kirkwood (Dreamplug, ICY-Box ...) kernel build - ipfiremake linux KCFG="-kirkwood" - ipfiremake backports KCFG="-kirkwood" - ipfiremake e1000e KCFG="-kirkwood" - ipfiremake igb KCFG="-kirkwood" - ipfiremake ixgbe KCFG="-kirkwood" - ipfiremake xtables-addons KCFG="-kirkwood" - ipfiremake linux-initrd KCFG="-kirkwood" + lfsmake2 linux KCFG="-kirkwood" + lfsmake2 backports KCFG="-kirkwood" + lfsmake2 e1000e KCFG="-kirkwood" + lfsmake2 igb KCFG="-kirkwood" + lfsmake2 ixgbe KCFG="-kirkwood" + lfsmake2 xtables-addons KCFG="-kirkwood" + lfsmake2 linux-initrd KCFG="-kirkwood" ;; esac - ipfiremake xtables-addons USPACE="1" - ipfiremake openssl - [ "${TARGET_ARCH}" = "i586" ] && ipfiremake openssl KCFG='-sse2' - ipfiremake libgpg-error - ipfiremake libgcrypt - ipfiremake libassuan - ipfiremake nettle - ipfiremake libevent - ipfiremake libevent2 - ipfiremake libevent2-compat - ipfiremake expat - ipfiremake unbound - ipfiremake gnutls - ipfiremake bind - ipfiremake dhcp - ipfiremake dhcpcd - ipfiremake boost - ipfiremake linux-atm - ipfiremake gdbm - ipfiremake pam - ipfiremake curl - ipfiremake tcl - ipfiremake sqlite - ipfiremake libffi - ipfiremake python - ipfiremake python3 - ipfiremake ca-certificates - ipfiremake fireinfo - ipfiremake libnet - ipfiremake libnl - ipfiremake libnl-3 - ipfiremake libidn - ipfiremake nasm - ipfiremake libjpeg - ipfiremake libjpeg-compat - ipfiremake libexif - ipfiremake libpng - ipfiremake libtiff - ipfiremake libart - ipfiremake gd - ipfiremake popt - ipfiremake pcre - ipfiremake slang - ipfiremake newt - ipfiremake libsmooth - ipfiremake attr - ipfiremake acl - ipfiremake libcap - ipfiremake pciutils - ipfiremake usbutils - ipfiremake libxml2 - ipfiremake libxslt - ipfiremake BerkeleyDB - ipfiremake mysql - ipfiremake cyrus-sasl - ipfiremake openldap - ipfiremake apache2 - ipfiremake php - ipfiremake web-user-interface - ipfiremake flag-icons - ipfiremake jquery - ipfiremake arping - ipfiremake beep - ipfiremake dvdrtools - ipfiremake dosfstools - ipfiremake reiserfsprogs - ipfiremake xfsprogs - ipfiremake sysfsutils - ipfiremake fuse - ipfiremake ntfs-3g - ipfiremake ethtool - ipfiremake ez-ipupdate - ipfiremake fcron - ipfiremake perl-GD - ipfiremake GD-Graph - ipfiremake GD-TextUtil - ipfiremake perl-Device-SerialPort - ipfiremake perl-Device-Modem - ipfiremake perl-Apache-Htpasswd - ipfiremake gnupg - ipfiremake hdparm - ipfiremake sdparm - ipfiremake mtools - ipfiremake whatmask - ipfiremake conntrack-tools - ipfiremake libupnp - ipfiremake ipaddr - ipfiremake iputils - ipfiremake l7-protocols - ipfiremake mISDNuser - ipfiremake capi4k-utils - ipfiremake hwdata - ipfiremake logrotate - ipfiremake logwatch - ipfiremake misc-progs - ipfiremake nano - ipfiremake URI - ipfiremake HTML-Tagset - ipfiremake HTML-Parser - ipfiremake HTML-Template - ipfiremake Compress-Zlib - ipfiremake Digest - ipfiremake Digest-SHA1 - ipfiremake Digest-HMAC - ipfiremake libwww-perl - ipfiremake Net-DNS - ipfiremake Net-IPv4Addr - ipfiremake Net_SSLeay - ipfiremake IO-Stringy - ipfiremake IO-Socket-SSL - ipfiremake Unix-Syslog - ipfiremake Mail-Tools - ipfiremake MIME-Tools - ipfiremake Net-Server - ipfiremake Convert-TNEF - ipfiremake Convert-UUlib - ipfiremake Archive-Tar - ipfiremake Archive-Zip - ipfiremake Text-Tabs+Wrap - ipfiremake Locale-Country - ipfiremake XML-Parser - ipfiremake Crypt-PasswdMD5 - ipfiremake Net-Telnet - ipfiremake python-setuptools - ipfiremake python-clientform - ipfiremake python-mechanize - ipfiremake python-feedparser - ipfiremake python-rssdler - ipfiremake python-inotify - ipfiremake python-docutils - ipfiremake python-daemon - ipfiremake python-ipaddress - ipfiremake glib - ipfiremake GeoIP - ipfiremake fwhits - ipfiremake noip_updater - ipfiremake ntp - ipfiremake openssh - ipfiremake fontconfig - ipfiremake dejavu-fonts-ttf - ipfiremake freefont - ipfiremake pixman - ipfiremake cairo - ipfiremake pango - ipfiremake rrdtool - ipfiremake setserial - ipfiremake setup - ipfiremake libdnet - ipfiremake daq - ipfiremake snort - ipfiremake oinkmaster - ipfiremake squid - ipfiremake squidguard - ipfiremake calamaris - ipfiremake tcpdump - ipfiremake traceroute - ipfiremake vlan - ipfiremake wireless - ipfiremake pakfire - ipfiremake spandsp - ipfiremake lzo - ipfiremake openvpn - ipfiremake pammysql - ipfiremake mpage - ipfiremake dbus - ipfiremake intltool - ipfiremake libdaemon - ipfiremake cups - ipfiremake ghostscript - ipfiremake lcms2 - ipfiremake qpdf - ipfiremake poppler - ipfiremake cups-filters - ipfiremake epson-inkjet-printer-escpr - ipfiremake foomatic - ipfiremake hplip - ipfiremake cifs-utils - ipfiremake krb5 - ipfiremake samba - ipfiremake sudo - ipfiremake mc - ipfiremake wget - ipfiremake bridge-utils - ipfiremake screen - ipfiremake smartmontools - ipfiremake htop - ipfiremake chkconfig - ipfiremake postfix - ipfiremake fetchmail - ipfiremake cyrus-imapd - ipfiremake openmailadmin - ipfiremake clamav - ipfiremake spamassassin - ipfiremake amavisd - ipfiremake dma - ipfiremake alsa - ipfiremake mpfire - ipfiremake guardian - ipfiremake libid3tag - ipfiremake libmad - ipfiremake libogg - ipfiremake libvorbis - ipfiremake libdvbpsi - ipfiremake flac - ipfiremake lame - ipfiremake sox - ipfiremake libshout - ipfiremake xvid - ipfiremake libmpeg2 - ipfiremake libarchive - ipfiremake cmake - ipfiremake gnump3d - ipfiremake rsync - ipfiremake tcpwrapper - ipfiremake libtirpc - ipfiremake rpcbind - ipfiremake nfs - ipfiremake gnu-netcat - ipfiremake ncat - ipfiremake nmap - ipfiremake ncftp - ipfiremake etherwake - ipfiremake bwm-ng - ipfiremake sysstat - ipfiremake vsftpd - ipfiremake strongswan - ipfiremake rng-tools - ipfiremake lsof - ipfiremake br2684ctl - ipfiremake pcmciautils - ipfiremake lm_sensors - ipfiremake liboping - ipfiremake collectd - ipfiremake elinks - ipfiremake igmpproxy - ipfiremake fbset - ipfiremake opus - ipfiremake python-six - ipfiremake python-pyparsing - ipfiremake spice-protocol - ipfiremake spice - ipfiremake sdl - ipfiremake libusbredir - ipfiremake qemu - ipfiremake sane - ipfiremake netpbm - ipfiremake phpSANE - ipfiremake tunctl - ipfiremake netsnmpd - ipfiremake nagios - ipfiremake nagios_nrpe - ipfiremake icinga - ipfiremake ebtables - ipfiremake directfb - ipfiremake dfb++ - ipfiremake faad2 - ipfiremake ffmpeg - ipfiremake vdr - ipfiremake vdr_streamdev - ipfiremake vdr_vnsiserver5 - ipfiremake vdr_epgsearch - ipfiremake vdr_dvbapi - ipfiremake vdr_eepg - ipfiremake w_scan - ipfiremake icecast - ipfiremake icegenerator - ipfiremake mpd - ipfiremake libmpdclient - ipfiremake mpc - ipfiremake perl-Net-SMTP-SSL - ipfiremake perl-MIME-Base64 - ipfiremake perl-Authen-SASL - ipfiremake perl-MIME-Lite - ipfiremake perl-Email-Date-Format - ipfiremake git - ipfiremake squidclamav - ipfiremake vnstat - ipfiremake iw - ipfiremake wpa_supplicant - ipfiremake hostapd - ipfiremake pycurl - ipfiremake urlgrabber - ipfiremake syslinux - ipfiremake tftpd - ipfiremake cpufrequtils - ipfiremake bluetooth - ipfiremake gutenprint - ipfiremake apcupsd - ipfiremake iperf - ipfiremake iperf3 - ipfiremake 7zip - ipfiremake lynis - ipfiremake streamripper - ipfiremake sshfs - ipfiremake taglib - #ipfiremake mediatomb - ipfiremake sslh - ipfiremake perl-gettext - ipfiremake perl-Sort-Naturally - ipfiremake vdradmin - ipfiremake miau - ipfiremake perl-DBI - ipfiremake perl-DBD-mysql - ipfiremake perl-DBD-SQLite - ipfiremake perl-File-ReadBackwards - ipfiremake cacti - ipfiremake openvmtools - ipfiremake nagiosql - ipfiremake iftop - ipfiremake motion - ipfiremake joe - ipfiremake monit - ipfiremake nut - ipfiremake watchdog - ipfiremake libpri - ipfiremake libsrtp - ipfiremake asterisk - ipfiremake lcr - ipfiremake usb_modeswitch - ipfiremake usb_modeswitch_data - ipfiremake zerofree - ipfiremake pound - ipfiremake minicom - ipfiremake ddrescue - ipfiremake imspector - ipfiremake miniupnpd - ipfiremake client175 - ipfiremake powertop - ipfiremake parted - ipfiremake swig - ipfiremake python-m2crypto - ipfiremake wireless-regdb - ipfiremake crda - ipfiremake libsolv - ipfiremake python-distutils-extra - ipfiremake python-lzma - ipfiremake python-progressbar - ipfiremake python-xattr - ipfiremake ddns - ipfiremake transmission - ipfiremake dpfhack - ipfiremake lcd4linux - ipfiremake mtr - ipfiremake tcpick - ipfiremake minidlna - ipfiremake acpid - ipfiremake fping - ipfiremake telnet - ipfiremake xinetd - ipfiremake gpgme - ipfiremake pygpgme - ipfiremake pakfire3 - ipfiremake stress - ipfiremake libstatgrab - ipfiremake sarg - ipfiremake check_mk_agent - ipfiremake nginx - ipfiremake sendEmail - ipfiremake sysbench - ipfiremake strace - ipfiremake elfutils - ipfiremake ltrace - ipfiremake ipfire-netboot - ipfiremake lcdproc - ipfiremake bitstream - ipfiremake multicat - ipfiremake keepalived - ipfiremake ipvsadm - ipfiremake perl-Carp-Clan - ipfiremake perl-Date-Calc - ipfiremake perl-Date-Manip - ipfiremake perl-File-Tail - ipfiremake perl-TimeDate - ipfiremake swatch - ipfiremake tor - ipfiremake arm - ipfiremake wavemon - ipfiremake iptraf-ng - ipfiremake iotop - ipfiremake stunnel - ipfiremake sslscan - ipfiremake owncloud - ipfiremake bacula - ipfiremake batctl - ipfiremake perl-PDF-API2 - ipfiremake squid-accounting - ipfiremake pigz - ipfiremake tmux - ipfiremake perl-Text-CSV_XS - ipfiremake swconfig - ipfiremake haproxy - ipfiremake ipset - ipfiremake lua - ipfiremake dnsdist - ipfiremake bird - ipfiremake dmidecode - ipfiremake mcelog - ipfiremake rtpproxy - ipfiremake util-macros - ipfiremake libpciaccess - ipfiremake libyajl - ipfiremake libvirt - ipfiremake python3-libvirt - ipfiremake freeradius - ipfiremake perl-common-sense - ipfiremake perl-inotify2 - ipfiremake perl-Net-IP + lfsmake2 xtables-addons USPACE="1" + lfsmake2 openssl + [ "${BUILD_ARCH}" = "i586" ] && lfsmake2 openssl KCFG='-sse2' + lfsmake2 libgpg-error + lfsmake2 libgcrypt + lfsmake2 libassuan + lfsmake2 nettle + lfsmake2 libevent + lfsmake2 libevent2 + lfsmake2 expat + lfsmake2 unbound + lfsmake2 gnutls + lfsmake2 bind + lfsmake2 dhcp + lfsmake2 dhcpcd + lfsmake2 boost + lfsmake2 linux-atm + lfsmake2 gdbm + lfsmake2 pam + lfsmake2 curl + lfsmake2 tcl + lfsmake2 sqlite + lfsmake2 libffi + lfsmake2 python + lfsmake2 python3 + lfsmake2 ca-certificates + lfsmake2 fireinfo + lfsmake2 libnet + lfsmake2 libnl + lfsmake2 libnl-3 + lfsmake2 libidn + lfsmake2 nasm + lfsmake2 libjpeg + lfsmake2 libjpeg-compat + lfsmake2 libexif + lfsmake2 libpng + lfsmake2 libtiff + lfsmake2 libart + lfsmake2 gd + lfsmake2 popt + lfsmake2 pcre + lfsmake2 slang + lfsmake2 newt + lfsmake2 libsmooth + lfsmake2 attr + lfsmake2 acl + lfsmake2 libcap + lfsmake2 pciutils + lfsmake2 usbutils + lfsmake2 libxml2 + lfsmake2 libxslt + lfsmake2 BerkeleyDB + lfsmake2 mysql + lfsmake2 cyrus-sasl + lfsmake2 openldap + lfsmake2 apache2 + lfsmake2 php + lfsmake2 web-user-interface + lfsmake2 flag-icons + lfsmake2 jquery + lfsmake2 arping + lfsmake2 beep + lfsmake2 dvdrtools + lfsmake2 dosfstools + lfsmake2 reiserfsprogs + lfsmake2 xfsprogs + lfsmake2 sysfsutils + lfsmake2 fuse + lfsmake2 ntfs-3g + lfsmake2 ethtool + lfsmake2 ez-ipupdate + lfsmake2 fcron + lfsmake2 perl-GD + lfsmake2 GD-Graph + lfsmake2 GD-TextUtil + lfsmake2 perl-Device-SerialPort + lfsmake2 perl-Device-Modem + lfsmake2 perl-Apache-Htpasswd + lfsmake2 gnupg + lfsmake2 hdparm + lfsmake2 sdparm + lfsmake2 mtools + lfsmake2 whatmask + lfsmake2 conntrack-tools + lfsmake2 libupnp + lfsmake2 ipaddr + lfsmake2 iputils + lfsmake2 l7-protocols + lfsmake2 mISDNuser + lfsmake2 capi4k-utils + lfsmake2 hwdata + lfsmake2 logrotate + lfsmake2 logwatch + lfsmake2 misc-progs + lfsmake2 nano + lfsmake2 URI + lfsmake2 HTML-Tagset + lfsmake2 HTML-Parser + lfsmake2 HTML-Template + lfsmake2 Compress-Zlib + lfsmake2 Digest + lfsmake2 Digest-SHA1 + lfsmake2 Digest-HMAC + lfsmake2 libwww-perl + lfsmake2 Net-DNS + lfsmake2 Net-IPv4Addr + lfsmake2 Net_SSLeay + lfsmake2 IO-Stringy + lfsmake2 IO-Socket-SSL + lfsmake2 Unix-Syslog + lfsmake2 Mail-Tools + lfsmake2 MIME-Tools + lfsmake2 Net-Server + lfsmake2 Convert-TNEF + lfsmake2 Convert-UUlib + lfsmake2 Archive-Tar + lfsmake2 Archive-Zip + lfsmake2 Text-Tabs+Wrap + lfsmake2 Locale-Country + lfsmake2 XML-Parser + lfsmake2 Crypt-PasswdMD5 + lfsmake2 Net-Telnet + lfsmake2 python-setuptools + lfsmake2 python-clientform + lfsmake2 python-mechanize + lfsmake2 python-feedparser + lfsmake2 python-rssdler + lfsmake2 python-inotify + lfsmake2 python-docutils + lfsmake2 python-daemon + lfsmake2 python-ipaddress + lfsmake2 glib + lfsmake2 GeoIP + lfsmake2 fwhits + lfsmake2 noip_updater + lfsmake2 ntp + lfsmake2 openssh + lfsmake2 fontconfig + lfsmake2 dejavu-fonts-ttf + lfsmake2 freefont + lfsmake2 pixman + lfsmake2 cairo + lfsmake2 pango + lfsmake2 rrdtool + lfsmake2 setserial + lfsmake2 setup + lfsmake2 libdnet + lfsmake2 daq + lfsmake2 snort + lfsmake2 oinkmaster + lfsmake2 squid + lfsmake2 squidguard + lfsmake2 calamaris + lfsmake2 tcpdump + lfsmake2 traceroute + lfsmake2 vlan + lfsmake2 wireless + lfsmake2 pakfire + lfsmake2 spandsp + lfsmake2 lzo + lfsmake2 openvpn + lfsmake2 pammysql + lfsmake2 mpage + lfsmake2 dbus + lfsmake2 intltool + lfsmake2 libdaemon + lfsmake2 cups + lfsmake2 ghostscript + lfsmake2 lcms2 + lfsmake2 qpdf + lfsmake2 poppler + lfsmake2 cups-filters + lfsmake2 epson-inkjet-printer-escpr + lfsmake2 foomatic + lfsmake2 hplip + lfsmake2 cifs-utils + lfsmake2 krb5 + lfsmake2 samba + lfsmake2 sudo + lfsmake2 mc + lfsmake2 wget + lfsmake2 bridge-utils + lfsmake2 screen + lfsmake2 smartmontools + lfsmake2 htop + lfsmake2 chkconfig + lfsmake2 postfix + lfsmake2 fetchmail + lfsmake2 cyrus-imapd + lfsmake2 openmailadmin + lfsmake2 clamav + lfsmake2 spamassassin + lfsmake2 amavisd + lfsmake2 dma + lfsmake2 alsa + lfsmake2 mpfire + lfsmake2 guardian + lfsmake2 libid3tag + lfsmake2 libmad + lfsmake2 libogg + lfsmake2 libvorbis + lfsmake2 libdvbpsi + lfsmake2 flac + lfsmake2 lame + lfsmake2 sox + lfsmake2 libshout + lfsmake2 xvid + lfsmake2 libmpeg2 + lfsmake2 libarchive + lfsmake2 cmake + lfsmake2 gnump3d + lfsmake2 rsync + lfsmake2 tcpwrapper + lfsmake2 libtirpc + lfsmake2 rpcbind + lfsmake2 nfs + lfsmake2 gnu-netcat + lfsmake2 ncat + lfsmake2 nmap + lfsmake2 ncftp + lfsmake2 etherwake + lfsmake2 bwm-ng + lfsmake2 sysstat + lfsmake2 vsftpd + lfsmake2 strongswan + lfsmake2 rng-tools + lfsmake2 lsof + lfsmake2 br2684ctl + lfsmake2 pcmciautils + lfsmake2 lm_sensors + lfsmake2 liboping + lfsmake2 collectd + lfsmake2 elinks + lfsmake2 igmpproxy + lfsmake2 fbset + lfsmake2 opus + lfsmake2 python-six + lfsmake2 python-pyparsing + lfsmake2 spice-protocol + lfsmake2 spice + lfsmake2 sdl + lfsmake2 libusbredir + lfsmake2 qemu + lfsmake2 sane + lfsmake2 netpbm + lfsmake2 phpSANE + lfsmake2 tunctl + lfsmake2 netsnmpd + lfsmake2 nagios + lfsmake2 nagios_nrpe + lfsmake2 icinga + lfsmake2 ebtables + lfsmake2 directfb + lfsmake2 faad2 + lfsmake2 ffmpeg + lfsmake2 vdr + lfsmake2 vdr_streamdev + lfsmake2 vdr_epgsearch + lfsmake2 vdr_dvbapi + lfsmake2 vdr_eepg + lfsmake2 w_scan + lfsmake2 icecast + lfsmake2 icegenerator + lfsmake2 mpd + lfsmake2 libmpdclient + lfsmake2 mpc + lfsmake2 perl-Net-SMTP-SSL + lfsmake2 perl-MIME-Base64 + lfsmake2 perl-Authen-SASL + lfsmake2 perl-MIME-Lite + lfsmake2 perl-Email-Date-Format + lfsmake2 git + lfsmake2 squidclamav + lfsmake2 vnstat + lfsmake2 iw + lfsmake2 wpa_supplicant + lfsmake2 hostapd + lfsmake2 pycurl + lfsmake2 urlgrabber + lfsmake2 syslinux + lfsmake2 tftpd + lfsmake2 cpufrequtils + lfsmake2 bluetooth + lfsmake2 gutenprint + lfsmake2 apcupsd + lfsmake2 iperf + lfsmake2 iperf3 + lfsmake2 7zip + lfsmake2 lynis + lfsmake2 streamripper + lfsmake2 sshfs + lfsmake2 taglib + #lfsmake2 mediatomb + lfsmake2 sslh + lfsmake2 perl-gettext + lfsmake2 perl-Sort-Naturally + lfsmake2 vdradmin + lfsmake2 miau + lfsmake2 perl-DBI + lfsmake2 perl-DBD-mysql + lfsmake2 perl-DBD-SQLite + lfsmake2 perl-File-ReadBackwards + lfsmake2 cacti + lfsmake2 openvmtools + lfsmake2 nagiosql + lfsmake2 motion + lfsmake2 joe + lfsmake2 monit + lfsmake2 nut + lfsmake2 watchdog + lfsmake2 libpri + lfsmake2 libsrtp + lfsmake2 asterisk + lfsmake2 lcr + lfsmake2 usb_modeswitch + lfsmake2 usb_modeswitch_data + lfsmake2 zerofree + lfsmake2 pound + lfsmake2 minicom + lfsmake2 ddrescue + lfsmake2 imspector + lfsmake2 miniupnpd + lfsmake2 client175 + lfsmake2 powertop + lfsmake2 parted + lfsmake2 swig + lfsmake2 python-m2crypto + lfsmake2 wireless-regdb + lfsmake2 crda + lfsmake2 libsolv + lfsmake2 python-distutils-extra + lfsmake2 python-lzma + lfsmake2 python-progressbar + lfsmake2 python-xattr + lfsmake2 ddns + lfsmake2 transmission + lfsmake2 dpfhack + lfsmake2 lcd4linux + lfsmake2 mtr + lfsmake2 minidlna + lfsmake2 acpid + lfsmake2 fping + lfsmake2 telnet + lfsmake2 xinetd + lfsmake2 gpgme + lfsmake2 pygpgme + lfsmake2 pakfire3 + lfsmake2 stress + lfsmake2 libstatgrab + lfsmake2 sarg + lfsmake2 check_mk_agent + lfsmake2 nginx + lfsmake2 sendEmail + lfsmake2 sysbench + lfsmake2 strace + lfsmake2 elfutils + lfsmake2 ltrace + lfsmake2 ipfire-netboot + lfsmake2 lcdproc + lfsmake2 bitstream + lfsmake2 multicat + lfsmake2 keepalived + lfsmake2 ipvsadm + lfsmake2 perl-Carp-Clan + lfsmake2 perl-Date-Calc + lfsmake2 perl-Date-Manip + lfsmake2 perl-File-Tail + lfsmake2 perl-TimeDate + lfsmake2 swatch + lfsmake2 tor + lfsmake2 arm + lfsmake2 wavemon + lfsmake2 iptraf-ng + lfsmake2 iotop + lfsmake2 stunnel + lfsmake2 sslscan + lfsmake2 owncloud + lfsmake2 bacula + lfsmake2 batctl + lfsmake2 perl-PDF-API2 + lfsmake2 squid-accounting + lfsmake2 pigz + lfsmake2 tmux + lfsmake2 perl-Text-CSV_XS + lfsmake2 swconfig + lfsmake2 haproxy + lfsmake2 ipset + lfsmake2 lua + lfsmake2 dnsdist + lfsmake2 bird + lfsmake2 dmidecode + lfsmake2 mcelog + lfsmake2 rtpproxy + lfsmake2 util-macros + lfsmake2 libpciaccess + lfsmake2 libyajl + lfsmake2 libvirt + lfsmake2 freeradius + lfsmake2 perl-common-sense + lfsmake2 perl-inotify2 + lfsmake2 perl-Net-IP }
buildinstaller() { # Run installer scripts one by one LOGFILE="$BASEDIR/log/_build.installer.log" export LOGFILE - ipfiremake memtest - ipfiremake installer - installmake strip + lfsmake2 memtest + lfsmake2 installer + lfsmake2 strip }
buildpackages() { @@ -925,26 +925,26 @@ buildpackages() { git log -n 500 --no-merges --pretty=medium --shortstat $EXT > $BASEDIR/doc/ChangeLog
# Create images for install - ipfiremake cdrom + lfsmake2 cdrom
# Check if there is a loop device for building in virtual environments modprobe loop 2>/dev/null if [ $BUILD_IMAGES == 1 ] && ([ -e /dev/loop/0 ] || [ -e /dev/loop0 ] || [ -e "/dev/loop-control" ]); then - ipfiremake flash-images - ipfiremake flash-images SCON=1 + lfsmake2 flash-images + lfsmake2 flash-images SCON=1 fi
mv $LFS/install/images/{*.iso,*.tgz,*.img.gz,*.bz2} $BASEDIR >> $LOGFILE 2>&1
ipfirepackages
- ipfiremake xen-image + lfsmake2 xen-image mv $LFS/install/images/*.bz2 $BASEDIR >> $LOGFILE 2>&1
cd $BASEDIR
# remove not useable iso on armv5tel (needed to build flash images) - [ "${TARGET_ARCH}" = "armv5tel" ] && rm -rf *.iso + [ "${BUILD_ARCH}" = "armv5tel" ] && rm -rf *.iso
for i in `ls *.bz2 *.img.gz *.iso`; do md5sum $i > $i.md5 @@ -972,10 +972,10 @@ buildpackages() { }
ipfirepackages() { - ipfiremake core-updates + lfsmake2 core-updates
local i - for i in $(find $BASEDIR/config/rootfiles/packages{/${MACHINE},} -maxdepth 1 -type f); do + for i in $(find $BASEDIR/config/rootfiles/packages{/${BUILD_ARCH},} -maxdepth 1 -type f); do i=$(basename ${i}) if [ -e $BASEDIR/lfs/$i ]; then ipfiredist $i @@ -1009,9 +1009,9 @@ done case "$1" in build) clear - PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz 2> /dev/null | head -n 1` + PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.gz 2> /dev/null | head -n 1` #only restore on a clean disk - if [ ! -f log/cleanup-toolchain-2-tools ]; then + if [ ! -e "${BASEDIR}/build/tools/.toolchain-successful" ]; then if [ ! -n "$PACKAGE" ]; then beautify build_stage "Full toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`" prepareenv @@ -1103,7 +1103,7 @@ downloadsrc) if [ -f "$i" -a "$i" != "Config" ]; then lfsmakecommoncheck ${i} || continue
- make -s -f $i LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \ + make -s -f $i LFS_BASEDIR=$BASEDIR BUILD_ARCH="${BUILD_ARCH}" \ MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1 if [ $? -ne 0 ]; then beautify message FAIL @@ -1121,7 +1121,7 @@ downloadsrc) for i in *; do if [ -f "$i" -a "$i" != "Config" ]; then lfsmakecommoncheck ${i} > /dev/null || continue - make -s -f $i LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \ + make -s -f $i LFS_BASEDIR=$BASEDIR BUILD_ARCH="${BUILD_ARCH}" \ MESSAGE="$i\t " md5 >> $LOGFILE 2>&1 if [ $? -ne 0 ]; then echo -ne "MD5 difference in lfs/$i" @@ -1144,25 +1144,25 @@ toolchain) prepareenv beautify build_stage "Toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`" buildtoolchain - echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $MACHINE" | tee -a $LOGFILE + echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for ${BUILD_ARCH}" | tee -a $LOGFILE test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains - cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz \ + cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.gz \ build/tools build/bin/sh log >> $LOGFILE - md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz \ - > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.md5 + md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.gz \ + > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.md5 stdumount ;; gettoolchain) # arbitrary name to be updated in case of new toolchain package upload - PACKAGE=$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE + PACKAGE=$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH} if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then URL_TOOLCHAIN=`grep URL_TOOLCHAIN lfs/Config | awk '{ print $3 }'` test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains - echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $MACHINE" | tee -a $LOGFILE + echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for ${BUILD_ARCH}" | tee -a $LOGFILE cd $BASEDIR/cache/toolchains wget -U "IPFireSourceGrabber/2.x" $URL_TOOLCHAIN/$PACKAGE.tar.gz $URL_TOOLCHAIN/$PACKAGE.md5 >& /dev/null if [ $? -ne 0 ]; then - echo "`date -u '+%b %e %T'`: error downloading $PACKAGE toolchain for $MACHINE machine" | tee -a $LOGFILE + echo "`date -u '+%b %e %T'`: error downloading $PACKAGE toolchain for ${BUILD_ARCH} machine" | tee -a $LOGFILE else if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE @@ -1176,11 +1176,11 @@ gettoolchain) ;; othersrc) prepareenv - echo -ne "`date -u '+%b %e %T'`: Build sources iso for $MACHINE" | tee -a $LOGFILE + echo -ne "`date -u '+%b %e %T'`: Build sources iso for ${BUILD_ARCH}" | tee -a $LOGFILE chroot $LFS /tools/bin/env -i HOME=/root \ TERM=$TERM PS1='\u:\w$ ' \ PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \ - VERSION=$VERSION NAME="$NAME" SNAME="$SNAME" MACHINE=$MACHINE \ + VERSION=$VERSION NAME="$NAME" SNAME="$SNAME" BUILD_ARCH="${BUILD_ARCH}" \ /bin/bash -x -c "cd /usr/src/lfs && make -f sources-iso LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 mv $LFS/install/images/ipfire-* $BASEDIR >> $LOGFILE 2>&1 if [ $? -eq "0" ]; then diff --git a/src/paks/mysql/install.sh b/src/paks/mysql/install.sh index a27d09e..1653c9a 100644 --- a/src/paks/mysql/install.sh +++ b/src/paks/mysql/install.sh @@ -29,6 +29,9 @@ ln -svf ../init.d/mysql /etc/rc.d/rc0.d/K26mysql ln -svf ../init.d/mysql /etc/rc.d/rc3.d/S34mysql ln -svf ../init.d/mysql /etc/rc.d/rc6.d/K26mysql
+# Initialise database +mysql_install_db --user=mysql + restore_backup "${NAME}"
start_service "${NAME}" diff --git a/src/paks/vdr_vnsiserver5/install.sh b/src/paks/vdr_vnsiserver5/install.sh deleted file mode 100644 index 3bb613e..0000000 --- a/src/paks/vdr_vnsiserver5/install.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team info@ipfire.org. # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -stop_service vdr -extract_files -start_service --background vdr diff --git a/src/paks/vdr_vnsiserver5/uninstall.sh b/src/paks/vdr_vnsiserver5/uninstall.sh deleted file mode 100644 index cb55446..0000000 --- a/src/paks/vdr_vnsiserver5/uninstall.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team info@ipfire.org. # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -stop_service vdr -remove_files -start_service vdr --background diff --git a/src/paks/vdr_vnsiserver5/update.sh b/src/paks/vdr_vnsiserver5/update.sh deleted file mode 100644 index 89c40d0..0000000 --- a/src/paks/vdr_vnsiserver5/update.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team info@ipfire.org. # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -./uninstall.sh -./install.sh diff --git a/src/patches/binutils-2.24-pt-pax-flags-20131231.patch b/src/patches/binutils-2.24-pt-pax-flags-20131231.patch deleted file mode 100644 index cfb2035..0000000 --- a/src/patches/binutils-2.24-pt-pax-flags-20131231.patch +++ /dev/null @@ -1,1030 +0,0 @@ ---- binutils-2.24/bfd/elf-bfd.h -+++ binutils-2.24/bfd/elf-bfd.h -@@ -1577,6 +1577,9 @@ struct elf_obj_tdata - /* Segment flags for the PT_GNU_STACK segment. */ - unsigned int stack_flags; - -+ /* Segment flags for the PT_PAX_FLAGS segment. */ -+ unsigned int pax_flags; -+ - /* This is set to TRUE if the object was created by the backend - linker. */ - bfd_boolean linker; -@@ -1707,6 +1707,7 @@ - #define elf_eh_frame_hdr(bfd) (elf_tdata(bfd) -> o->eh_frame_hdr) - #define elf_linker(bfd) (elf_tdata(bfd) -> o->linker) - #define elf_stack_flags(bfd) (elf_tdata(bfd) -> o->stack_flags) -+#define elf_pax_flags(bfd) (elf_tdata(bfd) -> o->pax_flags) - #define elf_shstrtab(bfd) (elf_tdata(bfd) -> o->strtab_ptr) - #define elf_onesymtab(bfd) (elf_tdata(bfd) -> symtab_section) - #define elf_symtab_shndx(bfd) (elf_tdata(bfd) -> symtab_shndx_section) ---- binutils-2.24/bfd/elf.c -+++ binutils-2.24/bfd/elf.c -@@ -1158,6 +1158,7 @@ get_segment_type (unsigned int p_type) - case PT_GNU_EH_FRAME: pt = "EH_FRAME"; break; - case PT_GNU_STACK: pt = "STACK"; break; - case PT_GNU_RELRO: pt = "RELRO"; break; -+ case PT_PAX_FLAGS: pt = "PAX_FLAGS"; break; - default: pt = NULL; break; - } - return pt; -@@ -2477,6 +2478,9 @@ bfd_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int hdr_index) - case PT_GNU_RELRO: - return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "relro"); - -+ case PT_PAX_FLAGS: -+ return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "pax_flags"); -+ - default: - /* Check for any processor-specific program segment types. */ - bed = get_elf_backend_data (abfd); -@@ -3551,6 +3555,11 @@ get_program_header_size (bfd *abfd, struct bfd_link_info *info) - ++segs; - } - -+ { -+ /* We need a PT_PAX_FLAGS segment. */ -+ ++segs; -+ } -+ - for (s = abfd->sections; s != NULL; s = s->next) - { - if ((s->flags & SEC_LOAD) != 0 -@@ -4153,6 +4162,20 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info) - } - } - -+ { -+ amt = sizeof (struct elf_segment_map); -+ m = bfd_zalloc (abfd, amt); -+ if (m == NULL) -+ goto error_return; -+ m->next = NULL; -+ m->p_type = PT_PAX_FLAGS; -+ m->p_flags = elf_pax_flags (abfd); -+ m->p_flags_valid = 1; -+ -+ *pm = m; -+ pm = &m->next; -+ } -+ - free (sections); - elf_tdata (abfd)->segment_map = mfirst; - } -@@ -5417,7 +5440,8 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd) - 6. PT_TLS segment includes only SHF_TLS sections. - 7. SHF_TLS sections are only in PT_TLS or PT_LOAD segments. - 8. PT_DYNAMIC should not contain empty sections at the beginning -- (with the possible exception of .dynamic). */ -+ (with the possible exception of .dynamic). -+ 9. PT_PAX_FLAGS segments do not include any sections. */ - #define IS_SECTION_IN_INPUT_SEGMENT(section, segment, bed) \ - ((((segment->p_paddr \ - ? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr) \ -@@ -5425,6 +5449,7 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd) - && (section->flags & SEC_ALLOC) != 0) \ - || IS_NOTE (segment, section)) \ - && segment->p_type != PT_GNU_STACK \ -+ && segment->p_type != PT_PAX_FLAGS \ - && (segment->p_type != PT_TLS \ - || (section->flags & SEC_THREAD_LOCAL)) \ - && (segment->p_type == PT_LOAD \ ---- binutils-2.24/bfd/elflink.c -+++ binutils-2.24/bfd/elflink.c -@@ -5545,17 +5545,30 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd, - && ! (*bed->elf_backend_always_size_sections) (output_bfd, info)) - return FALSE; - -+ elf_pax_flags (output_bfd) = PF_NORANDEXEC; -+ if (info->execheap) -+ elf_pax_flags (output_bfd) |= PF_NOMPROTECT; -+ else if (info->noexecheap) -+ elf_pax_flags (output_bfd) |= PF_MPROTECT; -+ - /* Determine any GNU_STACK segment requirements, after the backend - has had a chance to set a default segment size. */ - if (info->execstack) -- elf_stack_flags (output_bfd) = PF_R | PF_W | PF_X; -+ { -+ elf_stack_flags (output_bfd) = PF_R | PF_W | PF_X; -+ elf_pax_flags (output_bfd) |= PF_EMUTRAMP; -+ } - else if (info->noexecstack) -- elf_stack_flags (output_bfd) = PF_R | PF_W; -+ { -+ elf_stack_flags (output_bfd) = PF_R | PF_W; -+ elf_pax_flags (output_bfd) |= PF_NOEMUTRAMP; -+ } - else - { - bfd *inputobj; - asection *notesec = NULL; - int exec = 0; - -+ elf_pax_flags (output_bfd) |= PF_NOEMUTRAMP; - for (inputobj = info->input_bfds; - inputobj; - inputobj = inputobj->link_next) -@@ -5567,7 +5581,11 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd, - if (s) - { - if (s->flags & SEC_CODE) -- exec = PF_X; -+ { -+ elf_pax_flags (output_bfd) &= ~PF_NOEMUTRAMP; -+ elf_pax_flags (output_bfd) |= PF_EMUTRAMP; -+ exec = PF_X; -+ } - notesec = s; - } - else if (bed->default_execstack) ---- binutils-2.24/binutils/readelf.c -+++ binutils-2.24/binutils/readelf.c -@@ -2740,6 +2740,7 @@ get_segment_type (unsigned long p_type) - return "GNU_EH_FRAME"; - case PT_GNU_STACK: return "GNU_STACK"; - case PT_GNU_RELRO: return "GNU_RELRO"; -+ case PT_PAX_FLAGS: return "PAX_FLAGS"; - - default: - if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC)) ---- binutils-2.24/include/bfdlink.h -+++ binutils-2.24/include/bfdlink.h -@@ -322,6 +322,14 @@ struct bfd_link_info - /* TRUE if PT_GNU_RELRO segment should be created. */ - unsigned int relro: 1; - -+ /* TRUE if PT_PAX_FLAGS segment should be created with PF_NOMPROTECT -+ flags. */ -+ unsigned int execheap: 1; -+ -+ /* TRUE if PT_PAX_FLAGS segment should be created with PF_MPROTECT -+ flags. */ -+ unsigned int noexecheap: 1; -+ - /* TRUE if .eh_frame_hdr section and PT_GNU_EH_FRAME ELF segment - should be created. */ - unsigned int eh_frame_hdr: 1; ---- binutils-2.24/include/elf/common.h -+++ binutils-2.24/include/elf/common.h -@@ -429,6 +429,7 @@ - #define PT_SUNW_EH_FRAME PT_GNU_EH_FRAME /* Solaris uses the same value */ - #define PT_GNU_STACK (PT_LOOS + 0x474e551) /* Stack flags */ - #define PT_GNU_RELRO (PT_LOOS + 0x474e552) /* Read-only after relocation */ -+#define PT_PAX_FLAGS (PT_LOOS + 0x5041580) /* PaX flags */ - - /* Program segment permissions, in program header p_flags field. */ - -@@ -439,6 +440,21 @@ - #define PF_MASKOS 0x0FF00000 /* New value, Oct 4, 1999 Draft */ - #define PF_MASKPROC 0xF0000000 /* Processor-specific reserved bits */ - -+/* Flags to control PaX behavior. */ -+ -+#define PF_PAGEEXEC (1 << 4) /* Enable PAGEEXEC */ -+#define PF_NOPAGEEXEC (1 << 5) /* Disable PAGEEXEC */ -+#define PF_SEGMEXEC (1 << 6) /* Enable SEGMEXEC */ -+#define PF_NOSEGMEXEC (1 << 7) /* Disable SEGMEXEC */ -+#define PF_MPROTECT (1 << 8) /* Enable MPROTECT */ -+#define PF_NOMPROTECT (1 << 9) /* Disable MPROTECT */ -+#define PF_RANDEXEC (1 << 10) /* Enable RANDEXEC */ -+#define PF_NORANDEXEC (1 << 11) /* Disable RANDEXEC */ -+#define PF_EMUTRAMP (1 << 12) /* Enable EMUTRAMP */ -+#define PF_NOEMUTRAMP (1 << 13) /* Disable EMUTRAMP */ -+#define PF_RANDMMAP (1 << 14) /* Enable RANDMMAP */ -+#define PF_NORANDMMAP (1 << 15) /* Disable RANDMMAP */ -+ - /* Values for section header, sh_type field. */ - - #define SHT_NULL 0 /* Section header table entry unused */ ---- binutils-2.24/ld/emultempl/elf32.em -+++ binutils-2.24/ld/emultempl/elf32.em -@@ -2285,6 +2285,16 @@ fragment <<EOF - link_info.noexecstack = TRUE; - link_info.execstack = FALSE; - } -+ else if (strcmp (optarg, "execheap") == 0) -+ { -+ link_info.execheap = TRUE; -+ link_info.noexecheap = FALSE; -+ } -+ else if (strcmp (optarg, "noexecheap") == 0) -+ { -+ link_info.noexecheap = TRUE; -+ link_info.execheap = FALSE; -+ } - EOF - if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then - fragment <<EOF -@@ -2368,6 +2378,8 @@ fragment <<EOF - -z defs Report unresolved symbols in object files.\n")); - fprintf (file, _("\ - -z execstack Mark executable as requiring executable stack\n")); -+ fprintf (file, _("\ -+ -z execheap Mark executable as requiring executable heap\n")); - EOF - - if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then -@@ -2391,6 +2403,8 @@ fragment <<EOF - fragment <<EOF - fprintf (file, _("\ - -z noexecstack Mark executable as not requiring executable stack\n")); -+ fprintf (file, _("\ -+ -z noexecheap Mark executable as not requiring executable heap\n")); - EOF - if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then - fragment <<EOF ---- binutils-2.24/ld/ldgram.y -+++ binutils-2.24/ld/ldgram.y -@@ -1119,6 +1119,8 @@ phdr_type: - $$ = exp_intop (0x6474e550); - else if (strcmp (s, "PT_GNU_STACK") == 0) - $$ = exp_intop (0x6474e551); -+ else if (strcmp (s, "PT_PAX_FLAGS") == 0) -+ $$ = exp_intop (0x65041580); - else - { - einfo (_("\ ---- binutils-2.24/ld/testsuite/ld-alpha/tlsbin.rd -+++ binutils-2.24/ld/testsuite/ld-alpha/tlsbin.rd -@@ -35,13 +35,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+ - - Program Headers: - Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align -- PHDR +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+150 R E 0x8 -+ PHDR +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+188 R E 0x8 - INTERP +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x1 - .*Requesting program interpreter.* - LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R E 0x10000 - LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x10000 - DYNAMIC +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW +0x8 - TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 3 entries: ---- binutils-2.24/ld/testsuite/ld-alpha/tlsbinr.rd -+++ binutils-2.24/ld/testsuite/ld-alpha/tlsbinr.rd -@@ -42,6 +42,7 @@ Program Headers: - +LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x10000 - +DYNAMIC +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW +0x8 - +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 2 entries: ---- binutils-2.24/ld/testsuite/ld-alpha/tlspic.rd -+++ binutils-2.24/ld/testsuite/ld-alpha/tlspic.rd -@@ -38,6 +38,7 @@ Program Headers: - +LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x10000 - +DYNAMIC +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW +0x8 - +TLS +0x0+10e0 0x0+110e0 0x0+110e0 0x0+60 0x0+80 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 7 entries: ---- binutils-2.24/ld/testsuite/ld-elf/eh1.d -+++ binutils-2.24/ld/testsuite/ld-elf/eh1.d -@@ -22,11 +22,11 @@ Contents of the .eh_frame section: - DW_CFA_nop - DW_CFA_nop - --0+0018 0+001c 0+001c FDE cie=0+0000 pc=0+400078..0+400078 -- DW_CFA_advance_loc: 0 to 0+400078 -+0+0018 0+001c 0+001c FDE cie=0+0000 pc=([0-9a-f]+)..\1 -+ DW_CFA_advance_loc: 0 to [0-9a-f]+ - DW_CFA_def_cfa_offset: 16 - DW_CFA_offset: r6 (rbp) at cfa-16 -- DW_CFA_advance_loc: 0 to 0+400078 -+ DW_CFA_advance_loc: 0 to [0-9a-f]+ - DW_CFA_def_cfa_register: r6 (rbp) - - 0+0038 ZERO terminator ---- binutils-2.24/ld/testsuite/ld-elf/eh2.d -+++ binutils-2.24/ld/testsuite/ld-elf/eh2.d -@@ -22,11 +22,11 @@ Contents of the .eh_frame section: - DW_CFA_nop - DW_CFA_nop - --0+0018 0+001c 0+001c FDE cie=0+0000 pc=0+400078..0+400078 -- DW_CFA_advance_loc: 0 to 0+400078 -+0+0018 0+001c 0+001c FDE cie=0+0000 pc=([0-9a-f]+)..\1 -+ DW_CFA_advance_loc: 0 to [0-9a-f]+ - DW_CFA_def_cfa_offset: 16 - DW_CFA_offset: r6 (rbp) at cfa-16 -- DW_CFA_advance_loc: 0 to 0+400078 -+ DW_CFA_advance_loc: 0 to [0-9a-f]+ - DW_CFA_def_cfa_register: r6 (rbp) - - 0+0038 ZERO terminator ---- binutils-2.24/ld/testsuite/ld-elf/eh3.d -+++ binutils-2.24/ld/testsuite/ld-elf/eh3.d -@@ -22,11 +22,11 @@ Contents of the .eh_frame section: - DW_CFA_nop - DW_CFA_nop - --0+0018 0+001c 0+001c FDE cie=0+0000 pc=0+400078..0+400078 -- DW_CFA_advance_loc: 0 to 0+400078 -+0+0018 0+001c 0+001c FDE cie=0+0000 pc=([0-9a-f]+)..\1 -+ DW_CFA_advance_loc: 0 to [0-9a-f]+ - DW_CFA_def_cfa_offset: 16 - DW_CFA_offset: r6 (rbp) at cfa-16 -- DW_CFA_advance_loc: 0 to 0+400078 -+ DW_CFA_advance_loc: 0 to [0-9a-f]+ - DW_CFA_def_cfa_register: r6 (rbp) - - 0+0038 ZERO terminator ---- binutils-2.24/ld/testsuite/ld-elf/orphan-region.d -+++ binutils-2.24/ld/testsuite/ld-elf/orphan-region.d -@@ -15,7 +15,9 @@ - Program Headers: - Type.* - LOAD[ \t]+0x[0-9a-f]+ 0x0*40000000 0x0*40000000 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x[0-9a-f]+ -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - Segment Sections... - 00 .text .rodata .moredata * -+ 01 + ---- binutils-2.24/ld/testsuite/ld-i386/tlsbin.rd -+++ binutils-2.24/ld/testsuite/ld-i386/tlsbin.rd -@@ -44,6 +44,7 @@ Program Headers: - +LOAD.* - +DYNAMIC.* - +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+a0 R +0x1000 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -53,6 +54,7 @@ Program Headers: - +03 +.tdata .dynamic .got .got.plt * - +04 +.dynamic * - +05 +.tdata .tbss * -+ +06 + - - Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 9 entries: - Offset +Info +Type +Sym.Value +Sym. Name ---- binutils-2.24/ld/testsuite/ld-i386/tlsbindesc.rd -+++ binutils-2.24/ld/testsuite/ld-i386/tlsbindesc.rd -@@ -42,6 +42,7 @@ Program Headers: - +LOAD.* - +DYNAMIC.* - +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+a0 R +0x1000 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -51,6 +52,7 @@ Program Headers: - +03 +.tdata .dynamic .got .got.plt * - +04 +.dynamic * - +05 +.tdata .tbss * -+ +06 + - - Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 9 entries: - Offset +Info +Type +Sym.Value +Sym. Name ---- binutils-2.24/ld/testsuite/ld-i386/tlsdesc.rd -+++ binutils-2.24/ld/testsuite/ld-i386/tlsdesc.rd -@@ -39,6 +39,7 @@ Program Headers: - +LOAD.* - +DYNAMIC.* - +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+80 R +0x1 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -46,6 +47,7 @@ Program Headers: - +01 +.tdata .dynamic .got .got.plt * - +02 +.dynamic * - +03 +.tdata .tbss * -+ +04 + - - Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 20 entries: - Offset +Info +Type +Sym.Value +Sym. Name ---- binutils-2.24/ld/testsuite/ld-i386/tlsgdesc.rd -+++ binutils-2.24/ld/testsuite/ld-i386/tlsgdesc.rd -@@ -36,12 +36,14 @@ Program Headers: - +LOAD.* - +LOAD.* - +DYNAMIC.* -+ +PAX_FLAGS.* - - Section to Segment mapping: - +Segment Sections... - +00 +.hash .dynsym .dynstr .rel.dyn .rel.plt .plt .text * - +01 +.dynamic .got .got.plt * - +02 +.dynamic * -+ +03 + - - Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 8 entries: - Offset +Info +Type +Sym.Value +Sym. Name ---- binutils-2.24/ld/testsuite/ld-i386/tlsnopic.rd -+++ binutils-2.24/ld/testsuite/ld-i386/tlsnopic.rd -@@ -37,6 +37,7 @@ Program Headers: - +LOAD.* - +DYNAMIC.* - +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+ 0x0+24 R +0x1 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -44,6 +45,7 @@ Program Headers: - +01 +.dynamic .got .got.plt * - +02 +.dynamic * - +03 +.tbss * -+ +04 + - - Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 20 entries: - Offset +Info +Type +Sym.Value +Sym. Name ---- binutils-2.24/ld/testsuite/ld-i386/tlspic.rd -+++ binutils-2.24/ld/testsuite/ld-i386/tlspic.rd -@@ -40,6 +40,7 @@ Program Headers: - +LOAD.* - +DYNAMIC.* - +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+80 R +0x1 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -47,6 +48,7 @@ Program Headers: - +01 +.tdata .dynamic .got .got.plt * - +02 +.dynamic * - +03 +.tdata .tbss * -+ +04 + - - Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 26 entries: - Offset +Info +Type +Sym.Value +Sym. Name ---- binutils-2.24/ld/testsuite/ld-ia64/merge1.d -+++ binutils-2.24/ld/testsuite/ld-ia64/merge1.d -@@ -4,7 +4,7 @@ - #objdump: -d - - #... --0+1e0 <.text>: -+[a-f0-9]+ <.text>: - [ ]*[a-f0-9]+: 0b 60 80 02 00 24 [MMI] addl r12=32,r1;; - [ ]*[a-f0-9]+: c0 c0 04 00 48 00 addl r12=24,r1 - [ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; ---- binutils-2.24/ld/testsuite/ld-ia64/merge2.d -+++ binutils-2.24/ld/testsuite/ld-ia64/merge2.d -@@ -4,7 +4,7 @@ - #objdump: -d - - #... --0+1e0 <.text>: -+[a-f0-9]+ <.text>: - [ ]*[a-f0-9]+: 0b 60 80 02 00 24 [MMI] addl r12=32,r1;; - [ ]*[a-f0-9]+: c0 c0 04 00 48 00 addl r12=24,r1 - [ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; ---- binutils-2.24/ld/testsuite/ld-ia64/merge3.d -+++ binutils-2.24/ld/testsuite/ld-ia64/merge3.d -@@ -4,7 +4,7 @@ - #objdump: -d - - #... --0+210 <.text>: -+[a-f0-9]+ <.text>: - [ ]*[a-f0-9]+: 0b 60 80 02 00 24 [MMI] addl r12=32,r1;; - [ ]*[a-f0-9]+: c0 40 05 00 48 00 addl r12=40,r1 - [ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; ---- binutils-2.24/ld/testsuite/ld-ia64/merge4.d -+++ binutils-2.24/ld/testsuite/ld-ia64/merge4.d -@@ -4,7 +4,7 @@ - #objdump: -d - - #... --0+240 <.text>: -+[a-f0-9]+ <.text>: - [ ]*[a-f0-9]+: 0b 60 80 02 00 24 [MMI] addl r12=32,r1;; - [ ]*[a-f0-9]+: c0 40 05 00 48 00 addl r12=40,r1 - [ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; ---- binutils-2.24/ld/testsuite/ld-ia64/merge5.d -+++ binutils-2.24/ld/testsuite/ld-ia64/merge5.d -@@ -4,7 +4,7 @@ - #objdump: -d - - #... --0+270 <.text>: -+[a-f0-9]+ <.text>: - [ ]*[a-f0-9]+: 0b 60 80 02 00 24 [MMI] addl r12=32,r1;; - [ ]*[a-f0-9]+: c0 40 05 00 48 00 addl r12=40,r1 - [ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; ---- binutils-2.24/ld/testsuite/ld-ia64/tlsbin.rd -+++ binutils-2.24/ld/testsuite/ld-ia64/tlsbin.rd -@@ -36,13 +36,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+ - - Program Headers: - +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align -- +PHDR +0x0+40 0x40+40 0x40+40 0x0+188 0x0+188 R E 0x8 -- +INTERP +0x0+1c8 0x40+1c8 0x40+1c8 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x1 -+ +PHDR +0x0+40 0x40+40 0x40+40 (0x[0-9a-f]+) \1 R E 0x8 -+ +INTERP +0x0+([0-9a-f]+) (0x40+\1) \2 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x1 - .*Requesting program interpreter.* - +LOAD +0x0+ 0x40+ 0x40+ 0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ R E 0x10000 - +LOAD +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+0[0-9a-f]+ 0x0+0[0-9a-f]+ RW +0x10000 - +DYNAMIC +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+150 0x0+150 RW +0x8 - +TLS +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+60 0x0+a0 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - +IA_64_UNWIND .* R +0x8 - #... - ---- binutils-2.24/ld/testsuite/ld-ia64/tlspic.rd -+++ binutils-2.24/ld/testsuite/ld-ia64/tlspic.rd -@@ -40,6 +40,7 @@ Program Headers: - +LOAD +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+0[0-9a-f]+ 0x0+0[0-9a-f]+ RW +0x10000 - +DYNAMIC +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+140 0x0+140 RW +0x8 - +TLS +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+60 0x0+80 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - +IA_64_UNWIND +0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ 0x0+18 0x0+18 R +0x8 - #... - ---- binutils-2.24/ld/testsuite/ld-mips-elf/multi-got-no-shared.d -+++ binutils-2.24/ld/testsuite/ld-mips-elf/multi-got-no-shared.d -@@ -8,9 +8,9 @@ - .*: +file format.* - - Disassembly of section .text: --004000b0 <[^>]*> 3c1c0043 lui gp,0x43 --004000b4 <[^>]*> 279c9ff0 addiu gp,gp,-24592 --004000b8 <[^>]*> afbc0008 sw gp,8(sp) -+004000d0 <[^>]*> 3c1c0043 lui gp,0x43 -+004000d4 <[^>]*> 279c9ff0 addiu gp,gp,-24592 -+004000d8 <[^>]*> afbc0008 sw gp,8(sp) - #... - 00408d60 <[^>]*> 3c1c0043 lui gp,0x43 - 00408d64 <[^>]*> 279c2c98 addiu gp,gp,11416 ---- binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-3a.sd -+++ binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-3a.sd -@@ -1,7 +1,7 @@ - - Elf file type is DYN (Shared object file) - Entry point .* --There are 5 program headers, starting at offset .* -+There are [0-9] program headers, starting at offset .* - - Program Headers: - * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align -@@ -9,6 +9,7 @@ Program Headers: - * LOAD * [^ ]+ * 0x0+00000 * 0x0+00000 [^ ]+ * [^ ]+ * R E * 0x.* - * LOAD * [^ ]+ * 0x0+10000 * 0x0+10000 [^ ]+ * [^ ]+ * RW * 0x.* - * DYNAMIC * [^ ]+ * 0x0+00400 * 0x0+00400 .* -+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - * NULL * .* - - *Section to Segment mapping: -@@ -18,3 +19,4 @@ Program Headers: - *0*2 * .data .got * - *0*3 * .dynamic * - *0*4 * -+ *0*5 * ---- binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-3b.sd -+++ binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-3b.sd -@@ -1,7 +1,7 @@ - - Elf file type is EXEC (Executable file) - Entry point 0x44000 --There are 8 program headers, starting at offset .* -+There are [0-9] program headers, starting at offset .* - - Program Headers: - * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align -@@ -13,6 +13,7 @@ Program Headers: - * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.* - * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.* - * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .* -+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - * NULL * .* - - *Section to Segment mapping: -@@ -25,3 +26,4 @@ Program Headers: - *0*5 *.got .data * - *0*6 *.dynamic * - *0*7 * -+ *0*8 * ---- binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-4b.sd -+++ binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-4b.sd -@@ -1,7 +1,7 @@ - - Elf file type is EXEC (Executable file) - Entry point 0x44000 --There are 8 program headers, starting at offset .* -+There are [0-9] program headers, starting at offset .* - - Program Headers: - * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align -@@ -13,6 +13,7 @@ Program Headers: - * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.* - * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.* - * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .* -+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - * NULL * .* - - *Section to Segment mapping: -@@ -25,3 +26,4 @@ Program Headers: - *0*5 * .got .data .bss * - *0*6 * .dynamic * - *0*7 * -+ *0*8 * ---- binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-5b.sd -+++ binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-5b.sd -@@ -1,7 +1,7 @@ - - Elf file type is EXEC (Executable file) - Entry point 0x44000 --There are 8 program headers, starting at offset .* -+There are [0-9] program headers, starting at offset .* - - Program Headers: - * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align -@@ -13,6 +13,7 @@ Program Headers: - * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.* - * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.* - * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .* -+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - * NULL * .* - - *Section to Segment mapping: -@@ -25,3 +26,4 @@ Program Headers: - *0*5 * .got .data .bss * - *0*6 * .dynamic * - *0*7 * -+ *0*8 * ---- binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n32.sd -+++ binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n32.sd -@@ -1,7 +1,7 @@ - - Elf file type is EXEC (Executable file) - Entry point 0x44000 --There are 8 program headers, starting at offset .* -+There are [0-9] program headers, starting at offset .* - - Program Headers: - * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align -@@ -13,6 +13,7 @@ Program Headers: - * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.* - * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.* - * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .* -+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - * NULL * .* - - *Section to Segment mapping: -@@ -25,3 +26,4 @@ Program Headers: - *0*5 * .got .data .bss * - *0*6 * .dynamic * - *0*7 * -+ *0*8 * ---- binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n64.sd -+++ binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n64.sd -@@ -1,7 +1,7 @@ - - Elf file type is EXEC (Executable file) - Entry point 0x44000 --There are 7 program headers, starting at offset .* -+There are [0-9] program headers, starting at offset .* - - Program Headers: - * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align -@@ -12,6 +12,7 @@ Program Headers: - * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.* - * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.* - * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .* -+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - * NULL * .* - - *Section to Segment mapping: -@@ -23,3 +24,4 @@ Program Headers: - *0*4 * .got .data .bss * - *0*5 * .dynamic * - *0*6 * -+ *0*7 * ---- binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-o32.sd -+++ binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-o32.sd -@@ -1,7 +1,7 @@ - - Elf file type is EXEC (Executable file) - Entry point 0x44000 --There are 8 program headers, starting at offset .* -+There are [0-9] program headers, starting at offset .* - - Program Headers: - * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align -@@ -13,6 +13,7 @@ Program Headers: - * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.* - * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.* - * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .* -+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - * NULL * .* - - *Section to Segment mapping: -@@ -25,3 +26,4 @@ Program Headers: - *0*5 * .got .data .bss * - *0*6 * .dynamic * - *0*7 * -+ *0*8 * ---- binutils-2.24/ld/testsuite/ld-powerpc/tlsexe32.r -+++ binutils-2.24/ld/testsuite/ld-powerpc/tlsexe32.r -@@ -33,13 +33,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+ - - Program Headers: - +Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align -- +PHDR +0x000034 0x01800034 0x01800034 0x000c0 0x000c0 R E 0x4 -- +INTERP +0x0000f4 0x018000f4 0x018000f4 0x00011 0x00011 R +0x1 -+ +PHDR +0x000034 0x01800034 0x01800034 (0x000[0-9a-f]{2}) \1 R E 0x4 -+ +INTERP +0x000([0-9a-f]{3}) 0x01800\1 0x01800\1 0x00011 0x00011 R +0x1 - +[Requesting program interpreter: .*] - +LOAD .* R E 0x10000 - +LOAD .* RWE 0x10000 - +DYNAMIC .* RW +0x4 - +TLS .* 0x0001c 0x00038 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -49,6 +50,7 @@ Program Headers: - +03 +.tdata .dynamic .got .plt - +04 +.dynamic - +05 +.tdata .tbss -+ +06 + - - Relocation section '.rela.dyn' at offset .* contains 2 entries: - Offset +Info +Type +Sym. Value +Symbol's Name + Addend ---- binutils-2.24/ld/testsuite/ld-powerpc/tlsso32.r -+++ binutils-2.24/ld/testsuite/ld-powerpc/tlsso32.r -@@ -35,6 +35,7 @@ Program Headers: - +LOAD .* RWE 0x10000 - +DYNAMIC .* RW +0x4 - +TLS .* 0x0+1c 0x0+38 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -42,6 +43,7 @@ Program Headers: - +01 +.tdata .dynamic .got .plt - +02 +.dynamic - +03 +.tdata .tbss -+ +04 + - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 18 entries: - Offset +Info +Type +Sym. Value +Symbol's Name + Addend -@@ -52,9 +54,9 @@ Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 18 entries: - [0-9a-f ]+R_PPC_TPREL16 +0+30 +le0 + 0 - [0-9a-f ]+R_PPC_TPREL16_HA +0+34 +le1 + 0 - [0-9a-f ]+R_PPC_TPREL16_LO +0+34 +le1 + 0 --[0-9a-f ]+R_PPC_TPREL16 +0+103d0 +.tdata + 103e4 --[0-9a-f ]+R_PPC_TPREL16_HA +0+103d0 +.tdata + 103e8 --[0-9a-f ]+R_PPC_TPREL16_LO +0+103d0 +.tdata + 103e8 -+[0-9a-f ]+R_PPC_TPREL16 +0+103[df]0 +.tdata + 10[0-9a-f]{3} -+[0-9a-f ]+R_PPC_TPREL16_HA +0+103[df]0 +.tdata + 10[0-9a-f]{3} -+[0-9a-f ]+R_PPC_TPREL16_LO +0+103[df]0 +.tdata + 10[0-9a-f]{3} - [0-9a-f ]+R_PPC_DTPMOD32 +0 - [0-9a-f ]+R_PPC_DTPREL32 +0 - [0-9a-f ]+R_PPC_DTPMOD32 +0 ---- binutils-2.24/ld/testsuite/ld-s390/tlsbin.rd -+++ binutils-2.24/ld/testsuite/ld-s390/tlsbin.rd -@@ -36,6 +36,7 @@ There are [0-9]+ program headers, starting at offset [0-9]+ - +LOAD .* RW +0x1000 - +DYNAMIC .* RW +0x4 - +TLS .* 0x0+60 0x0+a0 R +0x20 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -52,6 +53,7 @@ Program Headers: - +03 +.tdata .dynamic .got * - +04 +.dynamic * - +05 +.tdata .tbss * -+ +06 + - - Relocation section '.rela.dyn' at offset .* contains 4 entries: - Offset +Info +Type +Sym.Value +Sym. Name + Addend ---- binutils-2.24/ld/testsuite/ld-s390/tlsbin_64.rd -+++ binutils-2.24/ld/testsuite/ld-s390/tlsbin_64.rd -@@ -36,6 +36,7 @@ There are [0-9]+ program headers, starting at offset [0-9]+ - +LOAD .* RW +0x1000 - +DYNAMIC .* RW +0x8 - +TLS .* 0x0+60 0x0+a0 R +0x20 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -52,6 +53,7 @@ Program Headers: - +03 +.tdata .dynamic .got * - +04 +.dynamic * - +05 +.tdata .tbss * -+ +06 + - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries: - +Offset +Info +Type +Symbol's Value +Symbol's Name + Addend ---- binutils-2.24/ld/testsuite/ld-s390/tlspic.rd -+++ binutils-2.24/ld/testsuite/ld-s390/tlspic.rd -@@ -39,6 +39,7 @@ Program Headers: - +LOAD .* RW +0x1000 - +DYNAMIC .* RW +0x4 - +TLS .* 0x0+60 0x0+80 R +0x20 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -46,6 +47,7 @@ Program Headers: - +01 +.tdata .dynamic .got - +02 +.dynamic - +03 +.tdata .tbss -+ +04 + - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: - Offset +Info +Type +Sym.Value +Sym. Name + Addend ---- binutils-2.24/ld/testsuite/ld-s390/tlspic_64.rd -+++ binutils-2.24/ld/testsuite/ld-s390/tlspic_64.rd -@@ -39,6 +39,7 @@ Program Headers: - +LOAD .* RW +0x1000 - +DYNAMIC .* RW +0x8 - +TLS .* 0x0+60 0x0+80 R +0x20 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -46,6 +47,7 @@ Program Headers: - +01 +.tdata .dynamic .got * - +02 +.dynamic * - +03 +.tdata .tbss * -+ +04 + - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: - +Offset +Info +Type +Symbol's Value +Symbol's Name + Addend ---- binutils-2.24/ld/testsuite/ld-sh/tlsbin-2.d -+++ binutils-2.24/ld/testsuite/ld-sh/tlsbin-2.d -@@ -44,6 +44,7 @@ Program Headers: - +LOAD.* - +DYNAMIC.* - +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+18 0x0+28 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -53,6 +54,7 @@ Program Headers: - +03 +.tdata .dynamic .got * - +04 +.dynamic * - +05 +.tdata .tbss * -+ +06 + - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries: - Offset +Info +Type +Sym.Value +Sym. Name + Addend ---- binutils-2.24/ld/testsuite/ld-sh/tlspic-2.d -+++ binutils-2.24/ld/testsuite/ld-sh/tlspic-2.d -@@ -32,7 +32,7 @@ Key to Flags: - - Elf file type is DYN (Shared object file) - Entry point 0x[0-9a-f]+ --There are 4 program headers, starting at offset [0-9]+ -+There are [0-9] program headers, starting at offset [0-9]+ - - Program Headers: - +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align -@@ -40,6 +40,7 @@ Program Headers: - +LOAD.* - +DYNAMIC.* - +TLS .* 0x0+18 0x0+20 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -47,6 +48,7 @@ Program Headers: - +01 +.tdata .dynamic .got * - +02 +.dynamic * - +03 +.tdata .tbss * -+ +04 + - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 10 entries: - Offset +Info +Type +Sym.Value +Sym. Name + Addend ---- binutils-2.24/ld/testsuite/ld-sparc/gotop32.rd -+++ binutils-2.24/ld/testsuite/ld-sparc/gotop32.rd -@@ -31,6 +31,7 @@ Program Headers: - +LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x10000 - +LOAD +0x0+2000 0x0+12000 0x0+12000 0x0+2000 0x0+2000 RW +0x10000 - +DYNAMIC +0x0+2000 0x0+12000 0x0+12000 0x0+70 0x0+70 RW +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries: ---- binutils-2.24/ld/testsuite/ld-sparc/gotop64.rd -+++ binutils-2.24/ld/testsuite/ld-sparc/gotop64.rd -@@ -31,6 +31,7 @@ Program Headers: - +LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x100000 - +LOAD +0x0+2000 0x0+102000 0x0+102000 0x0+2000 0x0+2000 RW +0x100000 - +DYNAMIC +0x0+2000 0x0+102000 0x0+102000 0x0+e0 0x0+e0 RW +0x8 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries: ---- binutils-2.24/ld/testsuite/ld-sparc/tlssunbin32.rd -+++ binutils-2.24/ld/testsuite/ld-sparc/tlssunbin32.rd -@@ -30,13 +30,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+ - - Program Headers: - +Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align -- +PHDR +0x0+34 0x0+10034 0x0+10034 0x0+c0 0x0+c0 R E 0x4 -- +INTERP +0x0+f4 0x0+100f4 0x0+100f4 0x0+11 0x0+11 R +0x1 -+ +PHDR +0x0+34 0x0+10034 0x0+10034 (0x[0-9a-f]+) \1 R E 0x4 -+ +INTERP +(0x[0-9a-f]+ ){3}0x0+11 0x0+11 R +0x1 - .*Requesting program interpreter.* - +LOAD .* R E 0x10000 - +LOAD .* RW +0x10000 - +DYNAMIC .* RW +0x4 - +TLS .* 0x0+1060 0x0+10a0 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries: ---- binutils-2.24/ld/testsuite/ld-sparc/tlssunbin64.rd -+++ binutils-2.24/ld/testsuite/ld-sparc/tlssunbin64.rd -@@ -30,13 +30,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+ - - Program Headers: - +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align -- +PHDR +0x0+40 0x0+100040 0x0+100040 0x0+150 0x0+150 R E 0x8 -- +INTERP +0x0+190 0x0+100190 0x0+100190 0x0+19 0x0+19 R +0x1 -+ +PHDR +0x0+40 0x0+100040 0x0+100040 (0x[0-9a-f]+) \1 R E 0x8 -+ +INTERP +0x0+([0-9a-f]+) (0x0+10+\1) \2 0x0+19 0x0+19 R +0x1 - .*Requesting program interpreter.* - +LOAD .* R E 0x100000 - +LOAD .* RW +0x100000 - +DYNAMIC .* RW +0x8 - +TLS .* 0x0+60 0x0+a0 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries: ---- binutils-2.24/ld/testsuite/ld-sparc/tlssunnopic32.rd -+++ binutils-2.24/ld/testsuite/ld-sparc/tlssunnopic32.rd -@@ -32,6 +32,7 @@ Program Headers: - +LOAD .* RW +0x10000 - +DYNAMIC .* RW +0x4 - +TLS .* 0x0+ 0x0+24 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 12 entries: ---- binutils-2.24/ld/testsuite/ld-sparc/tlssunnopic64.rd -+++ binutils-2.24/ld/testsuite/ld-sparc/tlssunnopic64.rd -@@ -32,6 +32,7 @@ Program Headers: - +LOAD .* RW +0x100000 - +DYNAMIC .* RW +0x8 - +TLS .* 0x0+ 0x0+24 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: ---- binutils-2.24/ld/testsuite/ld-sparc/tlssunpic32.rd -+++ binutils-2.24/ld/testsuite/ld-sparc/tlssunpic32.rd -@@ -36,6 +36,7 @@ Program Headers: - +LOAD +0x0+2000 0x0+12000 0x0+12000 0x0+184 0x0+184 RWE 0x10000 - +DYNAMIC +0x0+2060 0x0+12060 0x0+12060 0x0+98 0x0+98 RW +0x4 - +TLS +0x0+2000 0x0+12000 0x0+12000 0x0+60 0x0+80 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: ---- binutils-2.24/ld/testsuite/ld-sparc/tlssunpic64.rd -+++ binutils-2.24/ld/testsuite/ld-sparc/tlssunpic64.rd -@@ -36,6 +36,7 @@ Program Headers: - +LOAD +0x0+2000 0x0+102000 0x0+102000 0x0+3a0 0x0+3a0 RWE 0x100000 - +DYNAMIC +0x0+2060 0x0+102060 0x0+102060 0x0+130 0x0+130 RW +0x8 - +TLS +0x0+2000 0x0+102000 0x0+102000 0x0+60 0x0+80 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: ---- binutils-2.24/ld/testsuite/ld-x86-64/tlsgdesc.rd -+++ binutils-2.24/ld/testsuite/ld-x86-64/tlsgdesc.rd -@@ -36,12 +36,14 @@ Program Headers: - +LOAD.* - +LOAD.* - +DYNAMIC.* -+ +PAX_FLAGS.* - - Section to Segment mapping: - +Segment Sections... - +00 +.hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text * - +01 +.dynamic .got .got.plt * - +02 +.dynamic * -+ +03 + - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 8 entries: - +Offset +Info +Type +Symbol's Value +Symbol's Name + Addend ---- binutils-2.24/ld/testsuite/ld-x86-64/tlspic.rd -+++ binutils-2.24/ld/testsuite/ld-x86-64/tlspic.rd -@@ -40,6 +40,7 @@ Program Headers: - +LOAD +0x0+131a 0x0+20131a 0x0+20131a 0x0+246 0x0+246 RW +0x200000 - +DYNAMIC +0x0+1380 0x0+201380 0x0+201380 0x0+130 0x0+130 RW +0x8 - +TLS +0x0+131a 0x0+20131a 0x0+20131a 0x0+60 0x0+80 R +0x1 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -47,6 +48,7 @@ Program Headers: - +01 +.tdata .dynamic .got .got.plt * - +02 +.dynamic * - +03 +.tdata .tbss * -+ +04 + - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: - +Offset +Info +Type +Symbol's Value +Symbol's Name + Addend diff --git a/src/patches/fontconfig-avoid-conflicts-with-integer-width-macros-from-TS.patch b/src/patches/fontconfig-avoid-conflicts-with-integer-width-macros-from-TS.patch new file mode 100644 index 0000000..cad7170 --- /dev/null +++ b/src/patches/fontconfig-avoid-conflicts-with-integer-width-macros-from-TS.patch @@ -0,0 +1,72 @@ +From 20cddc824c6501c2082cac41b162c34cd5fcc530 Mon Sep 17 00:00:00 2001 +From: Khem Raj raj.khem@gmail.com +Date: Sun, 11 Dec 2016 14:32:00 -0800 +Subject: [PATCH] Avoid conflicts with integer width macros from TS + 18661-1:2014 + +glibc 2.25+ has now defined these macros in <limits.h> +https://sourceware.org/git/?p=glibc.git;a=commit;h=5b17fd0da62bf923cb61d1bb7... + +Signed-off-by: Khem Raj raj.khem@gmail.com +--- +Upstream-Status: Submitted + + fontconfig/fontconfig.h | 2 +- + src/fcobjs.h | 2 +- + src/fcobjshash.gperf | 2 +- + src/fcobjshash.h | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +Index: fontconfig-2.12.1/fontconfig/fontconfig.h +=================================================================== +--- fontconfig-2.12.1.orig/fontconfig/fontconfig.h ++++ fontconfig-2.12.1/fontconfig/fontconfig.h +@@ -128,7 +128,8 @@ typedef int FcBool; + #define FC_USER_CACHE_FILE ".fonts.cache-" FC_CACHE_VERSION + + /* Adjust outline rasterizer */ +-#define FC_CHAR_WIDTH "charwidth" /* Int */ ++#define FC_CHARWIDTH "charwidth" /* Int */ ++#define FC_CHAR_WIDTH FC_CHARWIDTH + #define FC_CHAR_HEIGHT "charheight"/* Int */ + #define FC_MATRIX "matrix" /* FcMatrix */ + +Index: fontconfig-2.12.1/src/fcobjs.h +=================================================================== +--- fontconfig-2.12.1.orig/src/fcobjs.h ++++ fontconfig-2.12.1/src/fcobjs.h +@@ -51,7 +51,7 @@ FC_OBJECT (DPI, FcTypeDouble, NULL) + FC_OBJECT (RGBA, FcTypeInteger, NULL) + FC_OBJECT (SCALE, FcTypeDouble, NULL) + FC_OBJECT (MINSPACE, FcTypeBool, NULL) +-FC_OBJECT (CHAR_WIDTH, FcTypeInteger, NULL) ++FC_OBJECT (CHARWIDTH, FcTypeInteger, NULL) + FC_OBJECT (CHAR_HEIGHT, FcTypeInteger, NULL) + FC_OBJECT (MATRIX, FcTypeMatrix, NULL) + FC_OBJECT (CHARSET, FcTypeCharSet, FcCompareCharSet) +Index: fontconfig-2.12.1/src/fcobjshash.gperf +=================================================================== +--- fontconfig-2.12.1.orig/src/fcobjshash.gperf ++++ fontconfig-2.12.1/src/fcobjshash.gperf +@@ -44,7 +44,7 @@ int id; + "rgba",FC_RGBA_OBJECT + "scale",FC_SCALE_OBJECT + "minspace",FC_MINSPACE_OBJECT +-"charwidth",FC_CHAR_WIDTH_OBJECT ++"charwidth",FC_CHARWIDTH_OBJECT + "charheight",FC_CHAR_HEIGHT_OBJECT + "matrix",FC_MATRIX_OBJECT + "charset",FC_CHARSET_OBJECT +Index: fontconfig-2.12.1/src/fcobjshash.h +=================================================================== +--- fontconfig-2.12.1.orig/src/fcobjshash.h ++++ fontconfig-2.12.1/src/fcobjshash.h +@@ -284,7 +284,7 @@ FcObjectTypeLookup (register const char + {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str43,FC_CHARSET_OBJECT}, + {-1}, + #line 47 "fcobjshash.gperf" +- {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str45,FC_CHAR_WIDTH_OBJECT}, ++ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str45,FC_CHARWIDTH_OBJECT}, + #line 48 "fcobjshash.gperf" + {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str46,FC_CHAR_HEIGHT_OBJECT}, + #line 55 "fcobjshash.gperf" diff --git a/src/patches/fuse-2.9.2-namespace-conflict-fix.patch b/src/patches/fuse-2.9.2-namespace-conflict-fix.patch new file mode 100644 index 0000000..ae67e7d --- /dev/null +++ b/src/patches/fuse-2.9.2-namespace-conflict-fix.patch @@ -0,0 +1,21 @@ +diff -up fuse-2.9.2/include/fuse_kernel.h.conflictfix fuse-2.9.2/include/fuse_kernel.h +--- fuse-2.9.2/include/fuse_kernel.h.conflictfix 2013-06-26 09:31:57.862198038 -0400 ++++ fuse-2.9.2/include/fuse_kernel.h 2013-06-26 09:32:19.679198365 -0400 +@@ -88,12 +88,16 @@ + #ifndef _LINUX_FUSE_H + #define _LINUX_FUSE_H + +-#include <sys/types.h> ++#ifdef __linux__ ++#include <linux/types.h> ++#else ++#include <stdint.h> + #define __u64 uint64_t + #define __s64 int64_t + #define __u32 uint32_t + #define __s32 int32_t + #define __u16 uint16_t ++#endif + + /* + * Version negotiation: diff --git a/src/patches/gcc-4.4.3-startfiles_fix-1.patch b/src/patches/gcc-4.4.3-startfiles_fix-1.patch deleted file mode 100644 index a2eac9e..0000000 --- a/src/patches/gcc-4.4.3-startfiles_fix-1.patch +++ /dev/null @@ -1,33 +0,0 @@ -Submitted By: Jeremy Huntwork (jhuntwork AT linuxfromscratch DOT org) -Date: 2008-12-05 -Initial Package Version: 4.3.2 -Upstream Status: See below. -Origin: DIY Linux, See below. -Description: Original patch follows: - -# DIY Linux Patch -Date: 2008-09-09 -Author: Refer Origin. -Origin: Partial revert of http://gcc.gnu.org/ml/gcc-cvs/2006-11/msg00416.html -Maker: Greg Schafer gschafer@zip.com.au -Upstream Status: Not applicable. Tweak only for Temptools phase GCC-Pass2. -Description: Partially revert GCC driver to pre-GCC-4.3 state to allow startfiles to be - found in $prefix when GCC is configured for a non-standard prefix eg: /temptools. Full - background info in thread starting here: http://gcc.gnu.org/ml/gcc/2008-03/msg00095.html - and GCC bugzilla here: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35532 - -diff -Naur gcc-4.3.0-RC-20080222.orig/gcc/gcc.c gcc-4.3.0-RC-20080222/gcc/gcc.c ---- gcc-4.3.0-RC-20080222.orig/gcc/gcc.c 2008-01-24 18:57:12.000000000 +0000 -+++ gcc-4.3.0-RC-20080222/gcc/gcc.c 2008-03-02 06:07:36.000000000 +0000 -@@ -6370,6 +6370,11 @@ - machine_suffix, - standard_startfile_prefix, NULL), - NULL, PREFIX_PRIORITY_LAST, 0, 1); -+ add_prefix (&startfile_prefixes, -+ concat (standard_exec_prefix, -+ machine_suffix, -+ standard_startfile_prefix, NULL), -+ NULL, PREFIX_PRIORITY_LAST, 0, 1); - } - - /* Sysrooted prefixes are relocated because target_system_root is diff --git a/src/patches/gcc-4.4.7-texinfo-5.patch b/src/patches/gcc-4.4.7-texinfo-5.patch deleted file mode 100644 index 7b2e945..0000000 --- a/src/patches/gcc-4.4.7-texinfo-5.patch +++ /dev/null @@ -1,89 +0,0 @@ -diff -Naur gcc-4.4.7.org/gcc/doc/cppopts.texi gcc-4.4.7/gcc/doc/cppopts.texi ---- gcc-4.4.7.org/gcc/doc/cppopts.texi 2008-06-15 11:42:13.000000000 +0200 -+++ gcc-4.4.7/gcc/doc/cppopts.texi 2013-09-08 16:50:14.353507748 +0200 -@@ -758,7 +758,7 @@ - Enable special code to work around file systems which only permit very - short file names, such as MS-DOS@. - --@itemx --help -+@item --help - @itemx --target-help - @opindex help - @opindex target-help -diff -Naur gcc-4.4.7.org/gcc/doc/c-tree.texi gcc-4.4.7/gcc/doc/c-tree.texi ---- gcc-4.4.7.org/gcc/doc/c-tree.texi 2009-02-20 16:20:38.000000000 +0100 -+++ gcc-4.4.7/gcc/doc/c-tree.texi 2013-09-08 17:53:21.055167463 +0200 -@@ -2338,13 +2338,13 @@ - not matter. The type of the operands and that of the result are - always of @code{BOOLEAN_TYPE} or @code{INTEGER_TYPE}. - --@itemx POINTER_PLUS_EXPR -+@item POINTER_PLUS_EXPR - This node represents pointer arithmetic. The first operand is always - a pointer/reference type. The second operand is always an unsigned - integer type compatible with sizetype. This is the only binary - arithmetic operand that can operate on pointer types. - --@itemx PLUS_EXPR -+@item PLUS_EXPR - @itemx MINUS_EXPR - @itemx MULT_EXPR - These nodes represent various binary arithmetic operations. -diff -Naur gcc-4.4.7.org/gcc/doc/invoke.texi gcc-4.4.7/gcc/doc/invoke.texi ---- gcc-4.4.7.org/gcc/doc/invoke.texi 2011-03-23 23:02:12.000000000 +0100 -+++ gcc-4.4.7/gcc/doc/invoke.texi 2013-09-08 17:10:49.503066254 +0200 -@@ -4645,11 +4645,11 @@ - @option{-fdump-rtl-ce3} enable dumping after the three - if conversion passes. - --@itemx -fdump-rtl-cprop_hardreg -+@item -fdump-rtl-cprop_hardreg - @opindex fdump-rtl-cprop_hardreg - Dump after hard register copy propagation. - --@itemx -fdump-rtl-csa -+@item -fdump-rtl-csa - @opindex fdump-rtl-csa - Dump after combining stack adjustments. - -@@ -4660,11 +4660,11 @@ - @option{-fdump-rtl-cse1} and @option{-fdump-rtl-cse2} enable dumping after - the two common sub-expression elimination passes. - --@itemx -fdump-rtl-dce -+@item -fdump-rtl-dce - @opindex fdump-rtl-dce - Dump after the standalone dead code elimination passes. - --@itemx -fdump-rtl-dbr -+@item -fdump-rtl-dbr - @opindex fdump-rtl-dbr - Dump after delayed branch scheduling. - -@@ -4709,7 +4709,7 @@ - @opindex fdump-rtl-initvals - Dump after the computation of the initial value sets. - --@itemx -fdump-rtl-into_cfglayout -+@item -fdump-rtl-into_cfglayout - @opindex fdump-rtl-into_cfglayout - Dump after converting to cfglayout mode. - -@@ -4739,7 +4739,7 @@ - @opindex fdump-rtl-rnreg - Dump after register renumbering. - --@itemx -fdump-rtl-outof_cfglayout -+@item -fdump-rtl-outof_cfglayout - @opindex fdump-rtl-outof_cfglayout - Dump after converting from cfglayout mode. - -@@ -4751,7 +4751,7 @@ - @opindex fdump-rtl-postreload - Dump after post-reload optimizations. - --@itemx -fdump-rtl-pro_and_epilogue -+@item -fdump-rtl-pro_and_epilogue - @opindex fdump-rtl-pro_and_epilogue - Dump after generating the function pro and epilogues. - diff --git a/src/patches/gcc/gcc-fix-inlining-issues.patch b/src/patches/gcc/gcc-fix-inlining-issues.patch deleted file mode 100644 index 3c638e2..0000000 --- a/src/patches/gcc/gcc-fix-inlining-issues.patch +++ /dev/null @@ -1,1064 +0,0 @@ -From: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61164 - ---- trunk/libitm/local_atomic 2015/08/20 17:43:55 227039 -+++ trunk/libitm/local_atomic 2015/08/20 17:55:24 227040 -@@ -41,8 +41,7 @@ - #ifndef _GLIBCXX_ATOMIC - #define _GLIBCXX_ATOMIC 1 - --#undef __always_inline --#define __always_inline __attribute__((always_inline)) -+#define __libitm_always_inline __attribute__((always_inline)) - - // #pragma GCC system_header - -@@ -74,7 +73,7 @@ - memory_order_seq_cst - } memory_order; - -- inline __always_inline memory_order -+ inline __libitm_always_inline memory_order - __calculate_memory_order(memory_order __m) noexcept - { - const bool __cond1 = __m == memory_order_release; -@@ -84,13 +83,13 @@ - return __mo2; - } - -- inline __always_inline void -+ inline __libitm_always_inline void - atomic_thread_fence(memory_order __m) noexcept - { - __atomic_thread_fence (__m); - } - -- inline __always_inline void -+ inline __libitm_always_inline void - atomic_signal_fence(memory_order __m) noexcept - { - __atomic_thread_fence (__m); -@@ -280,19 +279,19 @@ - // Conversion to ATOMIC_FLAG_INIT. - atomic_flag(bool __i) noexcept : __atomic_flag_base({ __i }) { } - -- __always_inline bool -+ __libitm_always_inline bool - test_and_set(memory_order __m = memory_order_seq_cst) noexcept - { - return __atomic_test_and_set (&_M_i, __m); - } - -- __always_inline bool -+ __libitm_always_inline bool - test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept - { - return __atomic_test_and_set (&_M_i, __m); - } - -- __always_inline void -+ __libitm_always_inline void - clear(memory_order __m = memory_order_seq_cst) noexcept - { - // __glibcxx_assert(__m != memory_order_consume); -@@ -302,7 +301,7 @@ - __atomic_clear (&_M_i, __m); - } - -- __always_inline void -+ __libitm_always_inline void - clear(memory_order __m = memory_order_seq_cst) volatile noexcept - { - // __glibcxx_assert(__m != memory_order_consume); -@@ -455,7 +454,7 @@ - is_lock_free() const volatile noexcept - { return __atomic_is_lock_free (sizeof (_M_i), &_M_i); } - -- __always_inline void -+ __libitm_always_inline void - store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept - { - // __glibcxx_assert(__m != memory_order_acquire); -@@ -465,7 +464,7 @@ - __atomic_store_n(&_M_i, __i, __m); - } - -- __always_inline void -+ __libitm_always_inline void - store(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { -@@ -476,7 +475,7 @@ - __atomic_store_n(&_M_i, __i, __m); - } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - load(memory_order __m = memory_order_seq_cst) const noexcept - { - // __glibcxx_assert(__m != memory_order_release); -@@ -485,7 +484,7 @@ - return __atomic_load_n(&_M_i, __m); - } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - load(memory_order __m = memory_order_seq_cst) const volatile noexcept - { - // __glibcxx_assert(__m != memory_order_release); -@@ -494,21 +493,21 @@ - return __atomic_load_n(&_M_i, __m); - } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - exchange(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { - return __atomic_exchange_n(&_M_i, __i, __m); - } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - exchange(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { - return __atomic_exchange_n(&_M_i, __i, __m); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(__int_type& __i1, __int_type __i2, - memory_order __m1, memory_order __m2) noexcept - { -@@ -519,7 +518,7 @@ - return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(__int_type& __i1, __int_type __i2, - memory_order __m1, - memory_order __m2) volatile noexcept -@@ -531,7 +530,7 @@ - return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(__int_type& __i1, __int_type __i2, - memory_order __m = memory_order_seq_cst) noexcept - { -@@ -539,7 +538,7 @@ - __calculate_memory_order(__m)); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(__int_type& __i1, __int_type __i2, - memory_order __m = memory_order_seq_cst) volatile noexcept - { -@@ -547,7 +546,7 @@ - __calculate_memory_order(__m)); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__int_type& __i1, __int_type __i2, - memory_order __m1, memory_order __m2) noexcept - { -@@ -558,7 +557,7 @@ - return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__int_type& __i1, __int_type __i2, - memory_order __m1, - memory_order __m2) volatile noexcept -@@ -570,7 +569,7 @@ - return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__int_type& __i1, __int_type __i2, - memory_order __m = memory_order_seq_cst) noexcept - { -@@ -578,7 +577,7 @@ - __calculate_memory_order(__m)); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__int_type& __i1, __int_type __i2, - memory_order __m = memory_order_seq_cst) volatile noexcept - { -@@ -586,52 +585,52 @@ - __calculate_memory_order(__m)); - } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_add(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return __atomic_fetch_add(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_add(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __atomic_fetch_add(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_sub(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return __atomic_fetch_sub(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_sub(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __atomic_fetch_sub(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_and(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return __atomic_fetch_and(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_and(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __atomic_fetch_and(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_or(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return __atomic_fetch_or(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_or(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __atomic_fetch_or(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_xor(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return __atomic_fetch_xor(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_xor(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __atomic_fetch_xor(&_M_i, __i, __m); } -@@ -733,7 +732,7 @@ - is_lock_free() const volatile noexcept - { return __atomic_is_lock_free (sizeof (_M_p), &_M_p); } - -- __always_inline void -+ __libitm_always_inline void - store(__pointer_type __p, - memory_order __m = memory_order_seq_cst) noexcept - { -@@ -744,7 +743,7 @@ - __atomic_store_n(&_M_p, __p, __m); - } - -- __always_inline void -+ __libitm_always_inline void - store(__pointer_type __p, - memory_order __m = memory_order_seq_cst) volatile noexcept - { -@@ -755,7 +754,7 @@ - __atomic_store_n(&_M_p, __p, __m); - } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - load(memory_order __m = memory_order_seq_cst) const noexcept - { - // __glibcxx_assert(__m != memory_order_release); -@@ -764,7 +763,7 @@ - return __atomic_load_n(&_M_p, __m); - } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - load(memory_order __m = memory_order_seq_cst) const volatile noexcept - { - // __glibcxx_assert(__m != memory_order_release); -@@ -773,21 +772,21 @@ - return __atomic_load_n(&_M_p, __m); - } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - exchange(__pointer_type __p, - memory_order __m = memory_order_seq_cst) noexcept - { - return __atomic_exchange_n(&_M_p, __p, __m); - } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - exchange(__pointer_type __p, - memory_order __m = memory_order_seq_cst) volatile noexcept - { - return __atomic_exchange_n(&_M_p, __p, __m); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, - memory_order __m1, - memory_order __m2) noexcept -@@ -799,7 +798,7 @@ - return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, - memory_order __m1, - memory_order __m2) volatile noexcept -@@ -811,22 +810,22 @@ - return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2); - } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - fetch_add(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) noexcept - { return __atomic_fetch_add(&_M_p, __d, __m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - fetch_add(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __atomic_fetch_add(&_M_p, __d, __m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - fetch_sub(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) noexcept - { return __atomic_fetch_sub(&_M_p, __d, __m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - fetch_sub(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __atomic_fetch_sub(&_M_p, __d, __m); } -@@ -870,67 +869,67 @@ - bool - is_lock_free() const volatile noexcept { return _M_base.is_lock_free(); } - -- __always_inline void -+ __libitm_always_inline void - store(bool __i, memory_order __m = memory_order_seq_cst) noexcept - { _M_base.store(__i, __m); } - -- __always_inline void -+ __libitm_always_inline void - store(bool __i, memory_order __m = memory_order_seq_cst) volatile noexcept - { _M_base.store(__i, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - load(memory_order __m = memory_order_seq_cst) const noexcept - { return _M_base.load(__m); } - -- __always_inline bool -+ __libitm_always_inline bool - load(memory_order __m = memory_order_seq_cst) const volatile noexcept - { return _M_base.load(__m); } - -- __always_inline bool -+ __libitm_always_inline bool - exchange(bool __i, memory_order __m = memory_order_seq_cst) noexcept - { return _M_base.exchange(__i, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - exchange(bool __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _M_base.exchange(__i, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, - memory_order __m2) noexcept - { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, - memory_order __m2) volatile noexcept - { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(bool& __i1, bool __i2, - memory_order __m = memory_order_seq_cst) noexcept - { return _M_base.compare_exchange_weak(__i1, __i2, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(bool& __i1, bool __i2, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _M_base.compare_exchange_weak(__i1, __i2, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, - memory_order __m2) noexcept - { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, - memory_order __m2) volatile noexcept - { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(bool& __i1, bool __i2, - memory_order __m = memory_order_seq_cst) noexcept - { return _M_base.compare_exchange_strong(__i1, __i2, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(bool& __i1, bool __i2, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _M_base.compare_exchange_strong(__i1, __i2, __m); } -@@ -980,11 +979,11 @@ - store(_Tp __i, memory_order _m = memory_order_seq_cst) noexcept - { __atomic_store(&_M_i, &__i, _m); } - -- __always_inline void -+ __libitm_always_inline void - store(_Tp __i, memory_order _m = memory_order_seq_cst) volatile noexcept - { __atomic_store(&_M_i, &__i, _m); } - -- __always_inline _Tp -+ __libitm_always_inline _Tp - load(memory_order _m = memory_order_seq_cst) const noexcept - { - _Tp tmp; -@@ -992,7 +991,7 @@ - return tmp; - } - -- __always_inline _Tp -+ __libitm_always_inline _Tp - load(memory_order _m = memory_order_seq_cst) const volatile noexcept - { - _Tp tmp; -@@ -1000,7 +999,7 @@ - return tmp; - } - -- __always_inline _Tp -+ __libitm_always_inline _Tp - exchange(_Tp __i, memory_order _m = memory_order_seq_cst) noexcept - { - _Tp tmp; -@@ -1008,7 +1007,7 @@ - return tmp; - } - -- __always_inline _Tp -+ __libitm_always_inline _Tp - exchange(_Tp __i, - memory_order _m = memory_order_seq_cst) volatile noexcept - { -@@ -1017,50 +1016,50 @@ - return tmp; - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, - memory_order __f) noexcept - { - return __atomic_compare_exchange(&_M_i, &__e, &__i, true, __s, __f); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, - memory_order __f) volatile noexcept - { - return __atomic_compare_exchange(&_M_i, &__e, &__i, true, __s, __f); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(_Tp& __e, _Tp __i, - memory_order __m = memory_order_seq_cst) noexcept - { return compare_exchange_weak(__e, __i, __m, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(_Tp& __e, _Tp __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return compare_exchange_weak(__e, __i, __m, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, - memory_order __f) noexcept - { - return __atomic_compare_exchange(&_M_i, &__e, &__i, false, __s, __f); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, - memory_order __f) volatile noexcept - { - return __atomic_compare_exchange(&_M_i, &__e, &__i, false, __s, __f); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(_Tp& __e, _Tp __i, - memory_order __m = memory_order_seq_cst) noexcept - { return compare_exchange_strong(__e, __i, __m, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(_Tp& __e, _Tp __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return compare_exchange_strong(__e, __i, __m, __m); } -@@ -1153,46 +1152,46 @@ - is_lock_free() const volatile noexcept - { return _M_b.is_lock_free(); } - -- __always_inline void -+ __libitm_always_inline void - store(__pointer_type __p, - memory_order __m = memory_order_seq_cst) noexcept - { return _M_b.store(__p, __m); } - -- __always_inline void -+ __libitm_always_inline void - store(__pointer_type __p, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _M_b.store(__p, __m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - load(memory_order __m = memory_order_seq_cst) const noexcept - { return _M_b.load(__m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - load(memory_order __m = memory_order_seq_cst) const volatile noexcept - { return _M_b.load(__m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - exchange(__pointer_type __p, - memory_order __m = memory_order_seq_cst) noexcept - { return _M_b.exchange(__p, __m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - exchange(__pointer_type __p, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _M_b.exchange(__p, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, - memory_order __m1, memory_order __m2) noexcept - { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, - memory_order __m1, - memory_order __m2) volatile noexcept - { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, - memory_order __m = memory_order_seq_cst) noexcept - { -@@ -1200,7 +1199,7 @@ - __calculate_memory_order(__m)); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, - memory_order __m = memory_order_seq_cst) volatile noexcept - { -@@ -1208,18 +1207,18 @@ - __calculate_memory_order(__m)); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, - memory_order __m1, memory_order __m2) noexcept - { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, - memory_order __m1, - memory_order __m2) volatile noexcept - { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, - memory_order __m = memory_order_seq_cst) noexcept - { -@@ -1227,7 +1226,7 @@ - __calculate_memory_order(__m)); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, - memory_order __m = memory_order_seq_cst) volatile noexcept - { -@@ -1235,22 +1234,22 @@ - __calculate_memory_order(__m)); - } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - fetch_add(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) noexcept - { return _M_b.fetch_add(__d, __m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - fetch_add(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _M_b.fetch_add(__d, __m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - fetch_sub(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) noexcept - { return _M_b.fetch_sub(__d, __m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - fetch_sub(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _M_b.fetch_sub(__d, __m); } -@@ -1544,98 +1543,98 @@ - - - // Function definitions, atomic_flag operations. -- inline __always_inline bool -+ inline __libitm_always_inline bool - atomic_flag_test_and_set_explicit(atomic_flag* __a, - memory_order __m) noexcept - { return __a->test_and_set(__m); } - -- inline __always_inline bool -+ inline __libitm_always_inline bool - atomic_flag_test_and_set_explicit(volatile atomic_flag* __a, - memory_order __m) noexcept - { return __a->test_and_set(__m); } - -- inline __always_inline void -+ inline __libitm_always_inline void - atomic_flag_clear_explicit(atomic_flag* __a, memory_order __m) noexcept - { __a->clear(__m); } - -- inline __always_inline void -+ inline __libitm_always_inline void - atomic_flag_clear_explicit(volatile atomic_flag* __a, - memory_order __m) noexcept - { __a->clear(__m); } - -- inline __always_inline bool -+ inline __libitm_always_inline bool - atomic_flag_test_and_set(atomic_flag* __a) noexcept - { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } - -- inline __always_inline bool -+ inline __libitm_always_inline bool - atomic_flag_test_and_set(volatile atomic_flag* __a) noexcept - { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } - -- inline __always_inline void -+ inline __libitm_always_inline void - atomic_flag_clear(atomic_flag* __a) noexcept - { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } - -- inline __always_inline void -+ inline __libitm_always_inline void - atomic_flag_clear(volatile atomic_flag* __a) noexcept - { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } - - - // Function templates generally applicable to atomic types. - template<typename _ITp> -- __always_inline bool -+ __libitm_always_inline bool - atomic_is_lock_free(const atomic<_ITp>* __a) noexcept - { return __a->is_lock_free(); } - - template<typename _ITp> -- __always_inline bool -+ __libitm_always_inline bool - atomic_is_lock_free(const volatile atomic<_ITp>* __a) noexcept - { return __a->is_lock_free(); } - - template<typename _ITp> -- __always_inline void -+ __libitm_always_inline void - atomic_init(atomic<_ITp>* __a, _ITp __i) noexcept; - - template<typename _ITp> -- __always_inline void -+ __libitm_always_inline void - atomic_init(volatile atomic<_ITp>* __a, _ITp __i) noexcept; - - template<typename _ITp> -- __always_inline void -+ __libitm_always_inline void - atomic_store_explicit(atomic<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { __a->store(__i, __m); } - - template<typename _ITp> -- __always_inline void -+ __libitm_always_inline void - atomic_store_explicit(volatile atomic<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { __a->store(__i, __m); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept - { return __a->load(__m); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_load_explicit(const volatile atomic<_ITp>* __a, - memory_order __m) noexcept - { return __a->load(__m); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_exchange_explicit(atomic<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->exchange(__i, __m); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_exchange_explicit(volatile atomic<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->exchange(__i, __m); } - - template<typename _ITp> -- __always_inline bool -+ __libitm_always_inline bool - atomic_compare_exchange_weak_explicit(atomic<_ITp>* __a, - _ITp* __i1, _ITp __i2, - memory_order __m1, -@@ -1643,7 +1642,7 @@ - { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } - - template<typename _ITp> -- __always_inline bool -+ __libitm_always_inline bool - atomic_compare_exchange_weak_explicit(volatile atomic<_ITp>* __a, - _ITp* __i1, _ITp __i2, - memory_order __m1, -@@ -1651,7 +1650,7 @@ - { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } - - template<typename _ITp> -- __always_inline bool -+ __libitm_always_inline bool - atomic_compare_exchange_strong_explicit(atomic<_ITp>* __a, - _ITp* __i1, _ITp __i2, - memory_order __m1, -@@ -1659,7 +1658,7 @@ - { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } - - template<typename _ITp> -- __always_inline bool -+ __libitm_always_inline bool - atomic_compare_exchange_strong_explicit(volatile atomic<_ITp>* __a, - _ITp* __i1, _ITp __i2, - memory_order __m1, -@@ -1668,37 +1667,37 @@ - - - template<typename _ITp> -- __always_inline void -+ __libitm_always_inline void - atomic_store(atomic<_ITp>* __a, _ITp __i) noexcept - { atomic_store_explicit(__a, __i, memory_order_seq_cst); } - - template<typename _ITp> -- __always_inline void -+ __libitm_always_inline void - atomic_store(volatile atomic<_ITp>* __a, _ITp __i) noexcept - { atomic_store_explicit(__a, __i, memory_order_seq_cst); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_load(const atomic<_ITp>* __a) noexcept - { return atomic_load_explicit(__a, memory_order_seq_cst); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_load(const volatile atomic<_ITp>* __a) noexcept - { return atomic_load_explicit(__a, memory_order_seq_cst); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_exchange(atomic<_ITp>* __a, _ITp __i) noexcept - { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_exchange(volatile atomic<_ITp>* __a, _ITp __i) noexcept - { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } - - template<typename _ITp> -- __always_inline bool -+ __libitm_always_inline bool - atomic_compare_exchange_weak(atomic<_ITp>* __a, - _ITp* __i1, _ITp __i2) noexcept - { -@@ -1708,7 +1707,7 @@ - } - - template<typename _ITp> -- __always_inline bool -+ __libitm_always_inline bool - atomic_compare_exchange_weak(volatile atomic<_ITp>* __a, - _ITp* __i1, _ITp __i2) noexcept - { -@@ -1718,7 +1717,7 @@ - } - - template<typename _ITp> -- __always_inline bool -+ __libitm_always_inline bool - atomic_compare_exchange_strong(atomic<_ITp>* __a, - _ITp* __i1, _ITp __i2) noexcept - { -@@ -1728,7 +1727,7 @@ - } - - template<typename _ITp> -- __always_inline bool -+ __libitm_always_inline bool - atomic_compare_exchange_strong(volatile atomic<_ITp>* __a, - _ITp* __i1, _ITp __i2) noexcept - { -@@ -1742,158 +1741,158 @@ - // intergral types as specified in the standard, excluding address - // types. - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_add_explicit(__atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_add(__i, __m); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_add_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_add(__i, __m); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_sub_explicit(__atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_sub(__i, __m); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_sub_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_sub(__i, __m); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_and_explicit(__atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_and(__i, __m); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_and_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_and(__i, __m); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_or_explicit(__atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_or(__i, __m); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_or_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_or(__i, __m); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_xor_explicit(__atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_xor(__i, __m); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_xor_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_xor(__i, __m); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_add(__atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_add(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_sub(__atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_sub(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_and(__atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_and(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_or(__atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_or(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_xor(__atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } - - template<typename _ITp> -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_xor(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } - - - // Partial specializations for pointers. - template<typename _ITp> -- __always_inline _ITp* -+ __libitm_always_inline _ITp* - atomic_fetch_add_explicit(atomic<_ITp*>* __a, ptrdiff_t __d, - memory_order __m) noexcept - { return __a->fetch_add(__d, __m); } - - template<typename _ITp> -- __always_inline _ITp* -+ __libitm_always_inline _ITp* - atomic_fetch_add_explicit(volatile atomic<_ITp*>* __a, ptrdiff_t __d, - memory_order __m) noexcept - { return __a->fetch_add(__d, __m); } - - template<typename _ITp> -- __always_inline _ITp* -+ __libitm_always_inline _ITp* - atomic_fetch_add(volatile atomic<_ITp*>* __a, ptrdiff_t __d) noexcept - { return __a->fetch_add(__d); } - - template<typename _ITp> -- __always_inline _ITp* -+ __libitm_always_inline _ITp* - atomic_fetch_add(atomic<_ITp*>* __a, ptrdiff_t __d) noexcept - { return __a->fetch_add(__d); } - - template<typename _ITp> -- __always_inline _ITp* -+ __libitm_always_inline _ITp* - atomic_fetch_sub_explicit(volatile atomic<_ITp*>* __a, - ptrdiff_t __d, memory_order __m) noexcept - { return __a->fetch_sub(__d, __m); } - - template<typename _ITp> -- __always_inline _ITp* -+ __libitm_always_inline _ITp* - atomic_fetch_sub_explicit(atomic<_ITp*>* __a, ptrdiff_t __d, - memory_order __m) noexcept - { return __a->fetch_sub(__d, __m); } - - template<typename _ITp> -- __always_inline _ITp* -+ __libitm_always_inline _ITp* - atomic_fetch_sub(volatile atomic<_ITp*>* __a, ptrdiff_t __d) noexcept - { return __a->fetch_sub(__d); } - - template<typename _ITp> -- __always_inline _ITp* -+ __libitm_always_inline _ITp* - atomic_fetch_sub(atomic<_ITp*>* __a, ptrdiff_t __d) noexcept - { return __a->fetch_sub(__d); } - // @} group atomics diff --git a/src/patches/gcc/gcc49-i386-libgomp.patch b/src/patches/gcc/gcc49-i386-libgomp.patch deleted file mode 100644 index 520561e..0000000 --- a/src/patches/gcc/gcc49-i386-libgomp.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100 -+++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100 -@@ -67,7 +67,7 @@ if test $enable_linux_futex = yes; then - ;; - *) - if test -z "$with_arch"; then -- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}" -+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic" - fi - esac - ;; diff --git a/src/patches/gcc/gcc49-libtool-no-rpath.patch b/src/patches/gcc/gcc49-libtool-no-rpath.patch deleted file mode 100644 index 466c661..0000000 --- a/src/patches/gcc/gcc49-libtool-no-rpath.patch +++ /dev/null @@ -1,27 +0,0 @@ -libtool sucks. ---- ltmain.sh.jj 2007-12-07 14:53:21.000000000 +0100 -+++ ltmain.sh 2008-09-05 21:51:48.000000000 +0200 -@@ -5394,6 +5394,7 @@ EOF - rpath="$finalize_rpath" - test "$mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do -+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then -@@ -6071,6 +6072,7 @@ EOF - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do -+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then -@@ -6120,6 +6122,7 @@ EOF - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do -+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then diff --git a/src/patches/gcc/gcc49-no-add-needed.patch b/src/patches/gcc/gcc49-no-add-needed.patch deleted file mode 100644 index b6ca777..0000000 --- a/src/patches/gcc/gcc49-no-add-needed.patch +++ /dev/null @@ -1,50 +0,0 @@ -2010-02-08 Roland McGrath roland@redhat.com - - * config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the - linker. - * config/gnu-user.h (LINK_EH_SPEC): Likewise. - * config/alpha/elf.h (LINK_EH_SPEC): Likewise. - * config/ia64/linux.h (LINK_EH_SPEC): Likewise. - ---- gcc/config/alpha/elf.h.jj 2011-01-03 12:52:31.118056764 +0100 -+++ gcc/config/alpha/elf.h 2011-01-04 18:14:10.931874160 +0100 -@@ -165,5 +165,5 @@ extern int alpha_this_gpdisp_sequence_nu - I imagine that other systems will catch up. In the meantime, it - doesn't harm to make sure that the data exists to be used later. */ - #if defined(HAVE_LD_EH_FRAME_HDR) --#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -+#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} " - #endif ---- gcc/config/ia64/linux.h.jj 2011-01-03 13:02:11.462994522 +0100 -+++ gcc/config/ia64/linux.h 2011-01-04 18:14:10.931874160 +0100 -@@ -77,7 +77,7 @@ do { \ - Signalize that because we have fde-glibc, we don't need all C shared libs - linked against -lgcc_s. */ - #undef LINK_EH_SPEC --#define LINK_EH_SPEC "" -+#define LINK_EH_SPEC "--no-add-needed " - - /* Put all *tf routines in libgcc. */ - #undef LIBGCC2_HAS_TF_MODE ---- gcc/config/gnu-user.h.jj 2011-01-03 12:53:03.739057299 +0100 -+++ gcc/config/gnu-user.h 2011-01-04 18:14:10.932814884 +0100 -@@ -82,7 +82,7 @@ see the files COPYING3 and COPYING.RUNTI - #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC - - #if defined(HAVE_LD_EH_FRAME_HDR) --#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -+#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} " - #endif - - #undef LINK_GCC_C_SEQUENCE_SPEC ---- gcc/config/rs6000/sysv4.h.jj 2011-01-03 13:02:18.255994215 +0100 -+++ gcc/config/rs6000/sysv4.h 2011-01-04 18:14:10.933888871 +0100 -@@ -820,7 +820,7 @@ extern int fixuplabelno; - -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" - - #if defined(HAVE_LD_EH_FRAME_HDR) --# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -+# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} " - #endif - - #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \ diff --git a/src/patches/gcc/gcc49-pr38757.patch b/src/patches/gcc/gcc49-pr38757.patch deleted file mode 100644 index 4206584..0000000 --- a/src/patches/gcc/gcc49-pr38757.patch +++ /dev/null @@ -1,106 +0,0 @@ -2009-03-18 Jakub Jelinek jakub@redhat.com - - PR debug/38757 - * langhooks.h (struct lang_hooks): Add source_language langhook. - * langhooks-def.h (LANG_HOOKS_SOURCE_LANGUAGE): Define to NULL. - (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_SOURCE_LANGUAGE. - * dwarf2out.c (add_prototyped_attribute): Add DW_AT_prototype - also for DW_LANG_{C,C99,ObjC}. - (gen_compile_unit_die): Use lang_hooks.source_language () to - determine if DW_LANG_C99 or DW_LANG_C89 should be returned. -c/ - * c-lang.c (c_source_language): New function. - (LANG_HOOKS_SOURCE_LANGUAGE): Define. - ---- gcc/langhooks.h.jj 2011-01-03 12:53:05.125745450 +0100 -+++ gcc/langhooks.h 2011-01-04 17:59:43.166744926 +0100 -@@ -467,6 +467,10 @@ struct lang_hooks - gimplification. */ - bool deep_unsharing; - -+ /* Return year of the source language standard version if the FE supports -+ multiple versions of the standard. */ -+ int (*source_language) (void); -+ - /* Whenever you add entries here, make sure you adjust langhooks-def.h - and langhooks.c accordingly. */ - }; ---- gcc/langhooks-def.h.jj 2011-01-03 12:53:05.000000000 +0100 -+++ gcc/langhooks-def.h 2011-01-04 18:00:44.858851030 +0100 -@@ -118,6 +118,7 @@ extern void lhd_omp_firstprivatize_type_ - #define LANG_HOOKS_BLOCK_MAY_FALLTHRU hook_bool_const_tree_true - #define LANG_HOOKS_EH_USE_CXA_END_CLEANUP false - #define LANG_HOOKS_DEEP_UNSHARING false -+#define LANG_HOOKS_SOURCE_LANGUAGE NULL - - /* Attribute hooks. */ - #define LANG_HOOKS_ATTRIBUTE_TABLE NULL -@@ -303,7 +304,8 @@ extern void lhd_end_section (void); - LANG_HOOKS_EH_PROTECT_CLEANUP_ACTIONS, \ - LANG_HOOKS_BLOCK_MAY_FALLTHRU, \ - LANG_HOOKS_EH_USE_CXA_END_CLEANUP, \ -- LANG_HOOKS_DEEP_UNSHARING \ -+ LANG_HOOKS_DEEP_UNSHARING, \ -+ LANG_HOOKS_SOURCE_LANGUAGE \ - } - - #endif /* GCC_LANG_HOOKS_DEF_H */ ---- gcc/c/c-lang.c.jj 2011-01-03 12:53:05.376056936 +0100 -+++ gcc/c/c-lang.c 2011-01-04 17:59:43.167743798 +0100 -@@ -36,6 +36,12 @@ along with GCC; see the file COPYING3. - - enum c_language_kind c_language = clk_c; - -+static int -+c_source_language (void) -+{ -+ return flag_isoc99 ? 1999 : 1989; -+} -+ - /* Lang hooks common to C and ObjC are declared in c-objc-common.h; - consequently, there should be very few hooks below. */ - -@@ -45,6 +51,8 @@ enum c_language_kind c_language = clk_c; - #define LANG_HOOKS_INIT c_objc_common_init - #undef LANG_HOOKS_INIT_TS - #define LANG_HOOKS_INIT_TS c_common_init_ts -+#undef LANG_HOOKS_SOURCE_LANGUAGE -+#define LANG_HOOKS_SOURCE_LANGUAGE c_source_language - - /* Each front end provides its own lang hook initializer. */ - struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; ---- gcc/dwarf2out.c.jj 2011-01-03 12:53:05.102056475 +0100 -+++ gcc/dwarf2out.c 2011-01-04 18:03:14.534151763 +0100 -@@ -16109,9 +16109,18 @@ add_bit_size_attribute (dw_die_ref die, - static inline void - add_prototyped_attribute (dw_die_ref die, tree func_type) - { -- if (get_AT_unsigned (comp_unit_die (), DW_AT_language) == DW_LANG_C89 -- && prototype_p (func_type)) -- add_AT_flag (die, DW_AT_prototyped, 1); -+ switch (get_AT_unsigned (comp_unit_die (), DW_AT_language)) -+ { -+ case DW_LANG_C: -+ case DW_LANG_C89: -+ case DW_LANG_C99: -+ case DW_LANG_ObjC: -+ if (prototype_p (func_type)) -+ add_AT_flag (die, DW_AT_prototyped, 1); -+ break; -+ default: -+ break; -+ } - } - - /* Add an 'abstract_origin' attribute below a given DIE. The DIE is found -@@ -18915,6 +18924,10 @@ gen_compile_unit_die (const char *filena - if (strcmp (language_string, "GNU Go") == 0) - language = DW_LANG_Go; - } -+ else if (strcmp (language_string, "GNU C") == 0 -+ && lang_hooks.source_language -+ && lang_hooks.source_language () >= 1999) -+ language = DW_LANG_C99; - } - /* Use a degraded Fortran setting in strict DWARF2 so is_fortran works. */ - else if (strcmp (language_string, "GNU Fortran") == 0) diff --git a/src/patches/gcc/gcc49-pr64336.patch b/src/patches/gcc/gcc49-pr64336.patch deleted file mode 100644 index 86fddd5..0000000 --- a/src/patches/gcc/gcc49-pr64336.patch +++ /dev/null @@ -1,17 +0,0 @@ -2014-12-17 Jakub Jelinek jakub@redhat.com - - PR sanitizer/64336 - * tsan.c (instrument_expr): Ignore TREE_READONLY bit - on MEM_REFs. - ---- gcc/tsan.c.jj 2014-12-17 10:53:30.000000000 +0100 -+++ gcc/tsan.c 2014-12-17 11:55:12.793058159 +0100 -@@ -138,7 +138,7 @@ instrument_expr (gimple_stmt_iterator gs - return false; - } - -- if (TREE_READONLY (base) -+ if ((TREE_READONLY (base) && TREE_CODE (base) != MEM_REF) - || (TREE_CODE (base) == VAR_DECL - && DECL_HARD_REGISTER (base))) - return false; diff --git a/src/patches/glibc-2.12-accept-make-versions-4.0-and-greater.patch b/src/patches/glibc-2.12-accept-make-versions-4.0-and-greater.patch deleted file mode 100644 index 7faf857..0000000 --- a/src/patches/glibc-2.12-accept-make-versions-4.0-and-greater.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 28d708c44bc47b56f6551ff285f78edcf61c208a Mon Sep 17 00:00:00 2001 -From: Marc-Antoine Perennou Marc-Antoine@Perennou.com -Date: Thu, 31 Oct 2013 12:37:50 +1000 -Subject: Accept make versions 4.0 and greater - - -diff --git a/configure b/configure -index f382138..5e61abd 100755 ---- a/configure -+++ b/configure -@@ -4761,7 +4761,7 @@ $as_echo_n "checking version of $MAKE... " >&6; } - ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*([0-9][0-9.]*).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -- 3.79* | 3.[89]*) -+ 3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - -diff --git a/configure.in b/configure.in -index 49b70fd..6da8efd 100644 ---- a/configure.in -+++ b/configure.in -@@ -984,7 +984,7 @@ AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v, - critic_missing="$critic_missing gcc") - AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version, - [GNU Make[^0-9]*([0-9][0-9.]*)], -- [3.79* | 3.[89]*], critic_missing="$critic_missing make") -+ [3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make") - - AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version, - [GNU gettext.* ([0-9]*.[0-9.]*)], --- -cgit v0.10.2 - diff --git a/src/patches/glibc-cfi-entry-not-closed.patch b/src/patches/glibc-cfi-entry-not-closed.patch deleted file mode 100644 index 02cfe8f..0000000 --- a/src/patches/glibc-cfi-entry-not-closed.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- glibc-2.12.2/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S 2011-09-08 22:22:41.000000000 +0400 -+++ glibc-2.12.2/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S 2011-09-08 21:44:49.000000000 +0400 -@@ -18,16 +18,20 @@ - - #include <sysdep.h> - -+ .text -+ - /* If no SA_RESTORER function was specified by the application we use - one of these. This avoids the need for the kernel to synthesise a return - instruction on the stack, which would involve expensive cache flushes. */ - - ENTRY(__default_sa_restorer) - swi SYS_ify(sigreturn) -+PSEUDO_END (__default_sa_restorer) - - #ifdef __NR_rt_sigreturn - - ENTRY(__default_rt_sa_restorer) - swi SYS_ify(rt_sigreturn) -+PSEUDO_END (__default_rt_sa_restorer) - - #endif diff --git a/src/patches/glibc-remove-ctors-dtors-output-sections.patch b/src/patches/glibc-remove-ctors-dtors-output-sections.patch deleted file mode 100644 index 91155c9..0000000 --- a/src/patches/glibc-remove-ctors-dtors-output-sections.patch +++ /dev/null @@ -1,150 +0,0 @@ -From 4a531bb0b3b582cb693de9f76d2d97d970f9a5d5 Mon Sep 17 00:00:00 2001 -From: H.J. Lu hongjiu.lu@intel.com -Date: Fri, 24 Dec 2010 20:14:37 -0500 -Subject: [PATCH] Remove `.ctors' and `.dtors' output sections - ---- - config.h.in | 3 + - configure.in | 2 + - elf/sofini.c | 2 + - elf/soinit.c | 2 + - sysdeps/i386/init-first.c | 2 + - sysdeps/mach/hurd/i386/init-first.c | 2 +- - sysdeps/mach/hurd/powerpc/init-first.c | 2 +- - sysdeps/sh/init-first.c | 2 + - sysdeps/unix/sysv/linux/init-first.c | 2 +- - 9 files changed, 16 insertions(+), 3 deletions(-) - -diff --git a/config.h.in b/config.h.in -index 18bf01a..9e797eb 100644 ---- a/config.h.in -+++ b/config.h.in -@@ -201,6 +201,9 @@ - /* Define if multi-arch DSOs should be generated. */ - #undef USE_MULTIARCH - -+/* Define if `.ctors' and `.dtors' sections shouldn't be used. */ -+#undef NO_CTORS_DTORS_SECTIONS -+ - /* - */ - -diff --git a/configure.in b/configure.in -index d8cd5f1..ad25b9b 100644 ---- a/configure.in -+++ b/configure.in -@@ -1497,6 +1497,8 @@ EOF - rm -f conftest*]) - if test $libc_cv_initfini_array != yes; then - AC_MSG_ERROR([Need linker with .init_array/.fini_array support.]) -+ elif AC_TRY_COMMAND([${CC-cc} -Wl,--verbose 2>&1|grep SORT_BY_INIT_PRIORITY 1>&AS_MESSAGE_LOG_FD]); then -+ AC_DEFINE(NO_CTORS_DTORS_SECTIONS) - fi - - AC_CACHE_CHECK(for libunwind-support in compiler, -diff --git a/elf/sofini.c b/elf/sofini.c -index 5e06f0c..13e74b7 100644 ---- a/elf/sofini.c -+++ b/elf/sofini.c -@@ -1,12 +1,14 @@ - /* Finalizer module for ELF shared C library. This provides terminating - null pointer words in the `.ctors' and `.dtors' sections. */ - -+#ifndef NO_CTORS_DTORS_SECTIONS - static void (*const __CTOR_END__[1]) (void) - __attribute__ ((used, section (".ctors"))) - = { 0 }; - static void (*const __DTOR_END__[1]) (void) - __attribute__ ((used, section (".dtors"))) - = { 0 }; -+#endif - - /* Terminate the frame unwind info section with a 4byte 0 as a sentinel; - this would be the 'length' field in a real FDE. */ -diff --git a/elf/soinit.c b/elf/soinit.c -index 6fecbb5..1db676a 100644 ---- a/elf/soinit.c -+++ b/elf/soinit.c -@@ -3,6 +3,7 @@ - the `.ctors' and `.dtors' sections so the lists are terminated, and - calling those lists of functions. */ - -+#ifndef NO_CTORS_DTORS_SECTIONS - #include <libc-internal.h> - #include <stdlib.h> - -@@ -40,3 +41,4 @@ __libc_fini (void) - - void (*_fini_ptr) (void) __attribute__ ((section (".fini_array"))) - = &__libc_fini; -+#endif -diff --git a/sysdeps/i386/init-first.c b/sysdeps/i386/init-first.c -index c6355a8..2af042f 100644 ---- a/sysdeps/i386/init-first.c -+++ b/sysdeps/i386/init-first.c -@@ -59,7 +59,9 @@ _init (int argc, ...) - { - init (&argc); - -+#ifndef NO_CTORS_DTORS_SECTIONS - __libc_global_ctors (); -+#endif - } - #endif - -diff --git a/sysdeps/mach/hurd/i386/init-first.c b/sysdeps/mach/hurd/i386/init-first.c -index f9a7a58..60823bd 100644 ---- a/sysdeps/mach/hurd/i386/init-first.c -+++ b/sysdeps/mach/hurd/i386/init-first.c -@@ -92,7 +92,7 @@ posixland_init (int argc, char **argv, char **envp) - __getopt_clean_environment (envp); - #endif - --#ifdef SHARED -+#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS - __libc_global_ctors (); - #endif - } -diff --git a/sysdeps/mach/hurd/powerpc/init-first.c b/sysdeps/mach/hurd/powerpc/init-first.c -index 20fa1d4..21b5054 100644 ---- a/sysdeps/mach/hurd/powerpc/init-first.c -+++ b/sysdeps/mach/hurd/powerpc/init-first.c -@@ -82,7 +82,7 @@ posixland_init (int argc, char **argv, char **envp) - __getopt_clean_environment (__environ); - #endif - --#ifdef SHARED -+#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS - __libc_global_ctors (); - #endif - } -diff --git a/sysdeps/sh/init-first.c b/sysdeps/sh/init-first.c -index d816625..1f3a821 100644 ---- a/sysdeps/sh/init-first.c -+++ b/sysdeps/sh/init-first.c -@@ -59,7 +59,9 @@ _init (int argc, ...) - { - init (&argc); - -+#ifndef NO_CTORS_DTORS_SECTIONS - __libc_global_ctors (); -+#endif - } - #endif - -diff --git a/sysdeps/unix/sysv/linux/init-first.c b/sysdeps/unix/sysv/linux/init-first.c -index 7b2333d..a60212f 100644 ---- a/sysdeps/unix/sysv/linux/init-first.c -+++ b/sysdeps/unix/sysv/linux/init-first.c -@@ -93,7 +93,7 @@ _init (int argc, char **argv, char **envp) - __getopt_clean_environment (envp); - #endif - --#ifdef SHARED -+#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS - __libc_global_ctors (); - #endif - } --- -1.7.3.4 - diff --git a/src/patches/glibc-resolv-stack_chk_fail.patch b/src/patches/glibc-resolv-stack_chk_fail.patch deleted file mode 100644 index 00bb710..0000000 --- a/src/patches/glibc-resolv-stack_chk_fail.patch +++ /dev/null @@ -1,35 +0,0 @@ -From e057a1b5930ec538c2b8abbba700a436ef2c81d5 Mon Sep 17 00:00:00 2001 -From: Joseph Myers joseph@codesourcery.com -Date: Wed, 21 Sep 2011 13:27:50 -0700 -Subject: [PATCH] Link libresolv.so with ld.so for __stack_chk_guard. - ---- - resolv/Makefile | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -diff --git a/resolv/Makefile b/resolv/Makefile -index ec3788f..b4287de 100644 ---- a/resolv/Makefile -+++ b/resolv/Makefile -@@ -1,4 +1,5 @@ --# Copyright (C) 1994-2001,2003,2004,2007,2008 Free Software Foundation, Inc. -+# Copyright (C) 1994-2001,2003,2004,2007,2008,2011 -+# Free Software Foundation, Inc. - # This file is part of the GNU C Library. - - # The GNU C Library is free software; you can redistribute it and/or -@@ -88,6 +89,11 @@ CFLAGS-res_hconf.c = -fexceptions - # This ensures they will load libc.so for needed symbols if loaded by - # a statically-linked program that hasn't already loaded it. - $(objpfx)libresolv.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a -+# Some hosts need '__stack_chk_guard', so pull in the definition from -+# ld.so if required. -+ifeq (yesyes,$(have-ssp)$(elf)) -+LDLIBS-resolv.so += $(as-needed) $(elfobjdir)/ld.so $(no-as-needed) -+endif - - # The DNS NSS modules needs the resolver. - $(objpfx)libnss_dns.so: $(objpfx)libresolv.so $(common-objpfx)libc.so \ --- -1.7.3.4 - diff --git a/src/patches/glibc-test-installation.pl-libgcc_s.patch b/src/patches/glibc-test-installation.pl-libgcc_s.patch deleted file mode 100644 index 2221353..0000000 --- a/src/patches/glibc-test-installation.pl-libgcc_s.patch +++ /dev/null @@ -1,88 +0,0 @@ -diff -Naur glibc-2.12-2-gc4ccff1.org/nptl/sysdeps/pthread/unwind-forcedunwind.c glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/unwind-forcedunwind.c -index db56428..495f4b7 100644 ---- glibc-2.12-2-gc4ccff1.org/nptl/sysdeps/pthread/unwind-forcedunwind.c -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/unwind-forcedunwind.c -@@ -22,7 +22,7 @@ - #include <unwind.h> - #include <pthreadP.h> - #include <sysdep.h> --#include <libgcc_s.h> -+#include <gnu/lib-names.h> - - static void *libgcc_s_handle; - static void (*libgcc_s_resume) (struct _Unwind_Exception *exc); -diff -Naur glibc-2.12-2-gc4ccff1.org/scripts/test-installation.pl glibc-2.12-2-gc4ccff1/scripts/test-installation.pl -index 25a919b..3f409ab 100755 ---- glibc-2.12-2-gc4ccff1.org/scripts/test-installation.pl -+++ glibc-2.12-2-gc4ccff1/scripts/test-installation.pl -@@ -106,9 +106,10 @@ while (<SOVERSIONS>) { - # - libnss1_* from glibc-compat add-on - # - libthread_db since it contains unresolved references - # - it's just a test NSS module -+ # - We don't provide the libgcc so we don't test it - if ($name ne "nss_ldap" && $name ne "db1" - && !($name =~/^nss1_/) && $name ne "thread_db" -- && $name ne "nss_test1") { -+ && $name ne "nss_test1" && $name ne "libgcc_s") { - $link_libs .= " -l$name"; - $versions{$name} = $version; - } -diff -Naur glibc-2.12-2-gc4ccff1.org/shlib-versions glibc-2.12-2-gc4ccff1/shlib-versions -index d3e8407..ac98e49 100644 ---- glibc-2.12-2-gc4ccff1.org/shlib-versions -+++ glibc-2.12-2-gc4ccff1/shlib-versions -@@ -138,3 +138,7 @@ sparc64.*-.*-.* libBrokenLocale=1 GLIBC_2.2 - - # The asynchronous name lookup library. - .*-.*-.* libanl=1 -+ -+# This defines the libgcc soname version this glibc is to load for -+# asynchronous cancellation to work correctly. -+.*-.*-.* libgcc_s=1 -diff -Naur glibc-2.12-2-gc4ccff1.org/sysdeps/generic/framestate.c glibc-2.12-2-gc4ccff1/sysdeps/generic/framestate.c -index 80375bb..edc3539 100644 ---- glibc-2.12-2-gc4ccff1.org/sysdeps/generic/framestate.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/generic/framestate.c -@@ -1,5 +1,5 @@ - /* __frame_state_for unwinder helper function wrapper. -- Copyright (C) 2001, 2003 Free Software Foundation, Inc. -+ Copyright (C) 2001-2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek jakub@redhat.com, 2001. - -@@ -24,7 +24,7 @@ - #define __frame_state_for fallback_frame_state_for - #include <unwind-dw2.c> - #undef __frame_state_for --#include <libgcc_s.h> -+#include <gnu/lib-names.h> - - typedef struct frame_state * (*framesf)(void *pc, struct frame_state *); - struct frame_state *__frame_state_for (void *pc, -diff -Naur glibc-2.12-2-gc4ccff1.org/sysdeps/generic/libgcc_s.h glibc-2.12-2-gc4ccff1.org/sysdeps/generic/libgcc_s.h -deleted file mode 100644 -index e74a103..0000000 ---- glibc-2.12-2-gc4ccff1.org/sysdeps/generic/libgcc_s.h -+++ /dev/null -@@ -1,2 +0,0 @@ --/* Name of libgcc_s library provided by gcc. */ --#define LIBGCC_S_SO "libgcc_s.so.1" -diff -Naur glibc-2.12-2-gc4ccff1.org/sysdeps/gnu/unwind-resume.c glibc-2.12-2-gc4ccff1/sysdeps/gnu/unwind-resume.c -index f8ff0c4..dab4370 100644 ---- glibc-2.12-2-gc4ccff1.org/sysdeps/gnu/unwind-resume.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/gnu/unwind-resume.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2003 Free Software Foundation, Inc. -+/* Copyright (C) 2003-2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek jakub@redhat.com. - -@@ -22,7 +22,7 @@ - #include <unwind.h> - #include <pthreadP.h> - #include <sysdep.h> --#include <libgcc_s.h> -+#include <gnu/lib-names.h> - - static void *libgcc_s_handle; - static void (*libgcc_s_resume) (struct _Unwind_Exception *exc); diff --git a/src/patches/glibc-test-installation.pl-nss_test1.patch b/src/patches/glibc-test-installation.pl-nss_test1.patch deleted file mode 100644 index 8881d94..0000000 --- a/src/patches/glibc-test-installation.pl-nss_test1.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 9191c04a7e19fffbea0a08523e579cd8e55142df Mon Sep 17 00:00:00 2001 -From: Ulrich Drepper drepper@gmail.com -Date: Sat, 23 Jul 2011 15:28:31 -0400 -Subject: [PATCH] Adjust test for correct installation - -diff --git a/scripts/test-installation.pl b/scripts/test-installation.pl -index 90cd9d7..25a919b 100755 ---- a/scripts/test-installation.pl -+++ b/scripts/test-installation.pl -@@ -1,5 +1,5 @@ - #! /usr/bin/perl -w --# Copyright (C) 1997, 1998, 1999, 2004 Free Software Foundation, Inc. -+# Copyright (C) 1997, 1998, 1999, 2004, 2011 Free Software Foundation, Inc. - # This file is part of the GNU C Library. - # Contributed by Andreas Jaeger aj@arthur.rhein-neckar.de, 1997. - -@@ -105,8 +105,10 @@ while (<SOVERSIONS>) { - # - libdb1 since it conflicts with libdb - # - libnss1_* from glibc-compat add-on - # - libthread_db since it contains unresolved references -+ # - it's just a test NSS module - if ($name ne "nss_ldap" && $name ne "db1" -- && !($name =~/^nss1_/) && $name ne "thread_db") { -+ && !($name =~/^nss1_/) && $name ne "thread_db" -+ && $name ne "nss_test1") { - $link_libs .= " -l$name"; - $versions{$name} = $version; - } --- -1.7.3.4 - diff --git a/src/patches/glibc/glibc-aliasing.patch b/src/patches/glibc/glibc-aliasing.patch deleted file mode 100644 index 016a4d4..0000000 --- a/src/patches/glibc/glibc-aliasing.patch +++ /dev/null @@ -1,87 +0,0 @@ -Index: glibc-2.12-2-gc4ccff1/elf/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/Makefile -+++ glibc-2.12-2-gc4ccff1/elf/Makefile -@@ -129,6 +129,7 @@ include ../Makeconfig - ifeq ($(unwind-find-fde),yes) - routines += unwind-dw2-fde-glibc - shared-only-routines += unwind-dw2-fde-glibc -+CFLAGS-unwind-dw2-fde-glibc.c += -fno-strict-aliasing - endif - - before-compile = $(objpfx)trusted-dirs.h -Index: glibc-2.12-2-gc4ccff1/inet/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/inet/Makefile -+++ glibc-2.12-2-gc4ccff1/inet/Makefile -@@ -57,6 +57,8 @@ tests := htontest test_ifindex tst-ntoa - - include ../Rules - -+CFLAGS-tst-inet6_rth.c += -fno-strict-aliasing -+ - ifeq ($(have-thread-library),yes) - - CFLAGS-gethstbyad_r.c = -DUSE_NSCD=1 -fexceptions -Index: glibc-2.12-2-gc4ccff1/nis/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nis/Makefile -+++ glibc-2.12-2-gc4ccff1/nis/Makefile -@@ -69,6 +69,8 @@ libnss_nisplus-inhibit-o = $(filter-out - - include ../Rules - -+CFLAGS-nis_findserv.c += -fno-strict-aliasing -+CFLAGS-ypclnt.c += -fno-strict-aliasing - - $(objpfx)libnss_compat.so: $(objpfx)libnsl.so$(libnsl.so-version) - $(objpfx)libnss_nis.so: $(objpfx)libnsl.so$(libnsl.so-version) \ -Index: glibc-2.12-2-gc4ccff1/nss/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nss/Makefile -+++ glibc-2.12-2-gc4ccff1/nss/Makefile -@@ -74,6 +74,7 @@ endif - - include ../Rules - -+CFLAGS-files-hosts.c += -fno-strict-aliasing - - ifeq (yes,$(build-static-nss)) - $(objpfx)getent: $(objpfx)libnss_files.a -Index: glibc-2.12-2-gc4ccff1/resolv/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/Makefile -+++ glibc-2.12-2-gc4ccff1/resolv/Makefile -@@ -77,6 +77,7 @@ CPPFLAGS += -Dgethostbyname=res_gethostb - -Dgetnetbyaddr=res_getnetbyaddr - - CFLAGS-res_hconf.c = -fexceptions -+CFLAGS-res_send.c += -fno-strict-aliasing - - # The BIND code elicits some harmless warnings. - +cflags += -Wno-strict-prototypes -Wno-write-strings -Index: glibc-2.12-2-gc4ccff1/sunrpc/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sunrpc/Makefile -+++ glibc-2.12-2-gc4ccff1/sunrpc/Makefile -@@ -129,6 +129,10 @@ CFLAGS-openchild.c = -fexceptions - - CPPFLAGS += -D_RPC_THREAD_SAFE_ - -+CFLAGS-clnt_tcp.c += -fno-strict-aliasing -+CFLAGS-clnt_udp.c += -fno-strict-aliasing -+CFLAGS-clnt_unix.c += -fno-strict-aliasing -+ - include ../Rules - - $(objpfx)rpcgen: $(addprefix $(objpfx),$(rpcgen-objs)) \ -Index: glibc-2.12-2-gc4ccff1/sysdeps/powerpc/powerpc64/elf/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/powerpc/powerpc64/elf/Makefile -+++ glibc-2.12-2-gc4ccff1/sysdeps/powerpc/powerpc64/elf/Makefile -@@ -9,3 +9,5 @@ CFLAGS-rtld-mempcpy.os = $(no-special-re - CFLAGS-rtld-memmove.os = $(no-special-regs) - CFLAGS-rtld-memchr.os = $(no-special-regs) - CFLAGS-rtld-strnlen.os = $(no-special-regs) -+ -+CFLAGS-gmon-start.c += -fno-strict-aliasing diff --git a/src/patches/glibc/glibc-fedora.patch b/src/patches/glibc/glibc-fedora.patch deleted file mode 100644 index 5a7fce9..0000000 --- a/src/patches/glibc/glibc-fedora.patch +++ /dev/null @@ -1,2106 +0,0 @@ ---- glibc-2.12-2-gc4ccff1/ChangeLog -+++ glibc-2.12-1/ChangeLog -@@ -241,6 +241,12 @@ - - * Makerules (libc-abis): Fix search for libc-abis in add-ons. - -+2010-04-06 Ulrich Drepper drepper@redhat.com -+ -+ * sysdeps/posix/getaddrinfo.c (default_scopes): Assign global -+ scope to RFC 1918 addresses. -+ * posix/gai.conf: Document difference from RFC 3484. -+ - 2010-04-05 Thomas Schwinge thomas@schwinge.name - - * sysdeps/gnu/unwind-resume.c: New, moved from nptl/sysdeps/pthread/. -@@ -995,6 +1001,19 @@ - * sysdeps/x86_64/fpu/fegetenv.c: Likewise - * sysdeps/s390/fpu/fegetenv.c: Likewise. Remove unused headers. - -+2009-10-27 Aurelien Jarno aurelien@aurel32.net -+ -+ [BZ #10855] -+ * locale/programs/locarchive.c: use MMAP_SHARED to reserve memory -+ used later with MMAP_FIXED | MMAP_SHARED to cope with different -+ alignment restrictions. -+ -+2010-02-08 Andreas Schwab schwab@redhat.com -+ -+ [BZ #11155] -+ * sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c: Include i386 -+ version. -+ - 2010-02-05 H.J. Lu hongjiu.lu@intel.com - - [BZ #11230] -@@ -2938,6 +2957,11 @@ d2009-10-30 Ulrich Drepper <drepper@re - * sysdeps/generic/ldsodefs.h (struct rtld_global): The map element in - the unique symbol hash table should not be const. - -+2009-07-22 Jakub Jelinek jakub@redhat.com -+ -+ * Makeconfig (ASFLAGS): Append $(sysdep-ASFLAGS). -+ * sysdeps/i386/Makefile (sysdep-ASFLAGS): Add -U__i686. -+ - 2009-07-21 Ulrich Drepper drepper@redhat.com - - * sysdeps/x86_64/multiarch/strstr.c: Minor cleanups. Remove -@@ -3203,6 +3227,11 @@ d2009-10-30 Ulrich Drepper <drepper@re - out common code into new function get_common_indeces. Determine - extended family and model for Intel processors. - -+2009-06-26 Andreas Schwab aschwab@redhat.com -+ -+ * timezone/zic.c (stringzone): Don't try to generate a POSIX TZ -+ string when the timezone ends in DST. -+ - 2009-06-26 Ulrich Drepper drepper@redhat.com - - * resolv/resolv.h: Define RES_SNGLKUPREOP. -@@ -11896,6 +11925,10 @@ d2009-10-30 Ulrich Drepper <drepper@re - [BZ #4368] - * stdlib/stdlib.h: Remove obsolete part of comment for realpath. - -+2007-04-16 Jakub Jelinek jakub@redhat.com -+ -+ * locale/programs/locarchive.c (add_alias, insert_name): Remove static. -+ - 2007-04-16 Ulrich Drepper drepper@redhat.com - - [BZ #4364] -@@ -13153,6 +13186,15 @@ d2009-10-30 Ulrich Drepper <drepper@re - separators also if no non-zero digits found. - * stdlib/Makefile (tests): Add tst-strtod3. - -+2006-12-10 Jakub Jelinek jakub@redhat.com -+ -+ * sysdeps/unix/sysv/linux/netlinkaccess.h: Include linux/if_addr.h -+ if IFA_MAX is not defined. -+ (IFA_RTA, IFA_PAYLOAD, IFLA_RTA, IFLA_PAYLOAD): Define if not -+ defined. -+ * sysdeps/unix/sysv/linux/check_pf.c: Include netlinkaccess.h -+ instead of asm/types.h, linux/netlink.h and linux/rtnetlink.h. -+ - 2006-12-09 Ulrich Drepper drepper@redhat.com - - [BZ #3632] ---- glibc-2.12-2-gc4ccff1/ChangeLog.15 -+++ glibc-2.12-1/ChangeLog.15 -@@ -477,6 +477,14 @@ - - 2004-11-26 Jakub Jelinek jakub@redhat.com - -+ * posix/Makefile (generated: Add getconf.speclist. -+ ($(inst_libexecdir)/getconf): Use getconf.speclist instead of -+ getconf output. -+ ($(objpfx)getconf.speclist): New rule. -+ * posix/getconf.speclist.h: New file. -+ -+2004-11-26 Jakub Jelinek jakub@redhat.com -+ - * sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add GETCONF_DIR. - - 2004-11-26 Kaz Kojima kkojima@rr.iij4u.or.jp -@@ -1103,6 +1111,13 @@ - * sysdeps/generic/tempname.c (__path_search): Add missing argument - TRY_TMPDIR. - -+2004-11-02 Jakub Jelinek jakub@redhat.com -+ -+ * include/features.h (__USE_FORTIFY_LEVEL): Also set for Red Hat -+ GCC 3.4.x-RH >= 3.4.2-8. -+ * debug/tst-chk1.c (do_test): Deal with GCC 3.4.x-RH not -+ being able to recognize subobjects. -+ - 2004-10-31 Mariusz Mazur mmazur@kernel.pl - - * sysdeps/unix/sysv/linux/alpha/setregid.c: New file. -@@ -1443,6 +1458,11 @@ - * sysdeps/generic/readonly-area.c (__readonly_str): Renamed to ... - (__readonly_area): ... this. - -+2004-10-19 Jakub Jelinek jakub@redhat.com -+ -+ * include/features.h (__USE_FORTIFY_LEVEL): Enable even with -+ Red Hat gcc4 4.0.0 and above. -+ - 2004-10-18 Jakub Jelinek jakub@redhat.com - - * sysdeps/generic/strcpy_chk.c (__strcpy_chk): Speed up by checking -@@ -3182,6 +3202,23 @@ - before return type. - * locale/localename.c (__current_locale_name): Likewise. - -+2004-08-31 Jakub Jelinek jakub@redhat.com -+ -+ * elf/ldconfig.c (parse_conf): Add prefix argument, prepend it -+ before arguments to add_dir and pass to parse_conf_include. -+ (parse_conf_include): Add prefix argument, pass it down to -+ parse_conf. -+ (main): Call arch_startup. Adjust parse_conf caller. -+ Call add_arch_dirs. -+ * sysdeps/generic/dl-cache.h (arch_startup, add_arch_dirs): Define. -+ * sysdeps/unix/sysv/linux/i386/dl-cache.h: New file. -+ * sysdeps/unix/sysv/linux/ia64/dl-cache.h (EMUL_HACK, arch_startup, -+ add_arch_dirs): Define. -+ * sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed: Prepend -+ /emul/ia32-linux before the 32-bit ld.so pathname. -+ * sysdeps/unix/sysv/linux/ia64/dl-procinfo.c: New file. -+ * sysdeps/unix/sysv/linux/ia64/dl-procinfo.h: New file. -+ - 2004-08-30 Roland McGrath roland@frob.com - - * scripts/extract-abilist.awk: If `lastversion' variable defined, omit ---- glibc-2.12-2-gc4ccff1/ChangeLog.16 -+++ glibc-2.12-1/ChangeLog.16 -@@ -2042,6 +2042,9 @@ - (__MATHDECL_2): Use __REDIRECT_NTH instead of __REDIRECT - followed by __THROW. - -+ * sysdeps/unix/sysv/linux/futimesat.c (futimesat): If -+ file == NULL, use __futimes unconditionally. -+ - 2006-02-02 Ulrich Drepper drepper@redhat.com - - * sysdeps/unix/sysv/linux/futimesat.c [__NR_futimesat] -@@ -2101,6 +2104,11 @@ - * sysdeps/ieee754/ldbl-128/s_llrintl.c (__llrintl): Fix a typo. - * sysdeps/s390/fpu/libm-test-ulps: Remove llrint ulps. - -+2006-01-30 Jakub Jelinek jakub@redhat.com -+ -+ * include/bits/stdlib-ldbl.h: New file. -+ * include/bits/wchar-ldbl.h: New file. -+ - 2006-01-19 Thomas Schwinge tschwinge@gnu.org - - * libio/genops.c: Include <stdbool.h>. -@@ -8922,6 +8930,12 @@ - * argp/argp-help.c (__argp_error): __asprintf -> vasprintf. - (__argp_failure): Likewise. - -+2005-08-08 Jakub Jelinek jakub@redhat.com -+ -+ * sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_setup_stack_chk_guard): -+ Shift marked &errno down on big-endian instead of up. -+ * elf/tst-stackguard1.c (do_test): Fix a typo. -+ - 2005-08-08 Ulrich Drepper drepper@redhat.com - - * nscd/cache.c (cache_add): Commit hash table and header to disk. -@@ -9046,6 +9060,17 @@ - __syslog_chk. - * misc/Versions: Export __syslog_chk and __vsyslog_chk. - -+2005-07-29 Jakub Jelinek jakub@redhat.com -+ -+ * sysdeps/unix/sysv/linux/dl-osinfo.h: Include errno.h, hp-timing.h, -+ endian.h. -+ (_dl_setup_stack_chk_guard): Even without -+ --enable-stackguard-randomization attempt to do some guard -+ randomization using hp-timing (if available) and kernel stack and -+ mmap randomization. -+ * elf/tst-stackguard1.c (do_test): Don't fail if the poor man's -+ randomization doesn't work well enough. -+ - 2005-07-28 Thomas Schwinge schwinge@nic-nac-project.de - - [BZ #1137] ---- glibc-2.12-2-gc4ccff1/Makeconfig -+++ glibc-2.12-1/Makeconfig -@@ -789,12 +789,12 @@ endif - # The assembler can generate debug information too. - ifndef ASFLAGS - ifeq ($(have-cpp-asm-debuginfo),yes) --ASFLAGS := $(filter -g% -fdebug-prefix-map=%,$(CFLAGS)) -+ASFLAGS = $(filter -g% -fdebug-prefix-map=%,$(CFLAGS)) - else --ASFLAGS := -+ASFLAGS = - endif - endif --ASFLAGS += $(ASFLAGS-config) $(asflags-cpu) -+ASFLAGS += $(ASFLAGS-config) $(asflags-cpu) $(sysdep-ASFLAGS) - - ifndef BUILD_CC - BUILD_CC = $(CC) ---- glibc-2.12-2-gc4ccff1/csu/Makefile -+++ glibc-2.12-1/csu/Makefile -@@ -93,7 +93,8 @@ omit-deps += $(crtstuff) - $(crtstuff:%=$(objpfx)%.o): %.o: %.S $(objpfx)defs.h - $(compile.S) -g0 $(ASFLAGS-.os) -o $@ - --CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) -+CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) \ -+ -fno-asynchronous-unwind-tables - - vpath initfini.c $(sysdirs) - ---- glibc-2.12-2-gc4ccff1/csu/elf-init.c -+++ glibc-2.12-1/csu/elf-init.c -@@ -63,6 +63,23 @@ extern void (*__init_array_end []) (int, - extern void (*__fini_array_start []) (void) attribute_hidden; - extern void (*__fini_array_end []) (void) attribute_hidden; - -+#if defined HAVE_VISIBILITY_ATTRIBUTE \ -+ && (defined SHARED || defined LIBC_NONSHARED) -+# define hidden_undef_2(x) #x -+# define hidden_undef_1(x) hidden_undef_2 (x) -+# define hidden_undef(x) \ -+ __asm (hidden_undef_1 (ASM_GLOBAL_DIRECTIVE) " " #x); \ -+ __asm (".hidden " #x); -+#else -+# define hidden_undef(x) -+#endif -+ -+hidden_undef (__preinit_array_start) -+hidden_undef (__preinit_array_end) -+hidden_undef (__init_array_start) -+hidden_undef (__init_array_end) -+hidden_undef (__fini_array_start) -+hidden_undef (__fini_array_end) - - /* These function symbols are provided for the .init/.fini section entry - points automagically by the linker. */ ---- glibc-2.12-2-gc4ccff1/debug/tst-chk1.c -+++ glibc-2.12-1/debug/tst-chk1.c -@@ -17,6 +17,9 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -+/* Hack: make sure GCC doesn't know __chk_fail () will not return. */ -+#define __noreturn__ -+ - #include <assert.h> - #include <fcntl.h> - #include <locale.h> -@@ -242,7 +245,7 @@ do_test (void) - if (memcmp (a.buf1, "aabcdabcjj", 10)) - FAIL (); - --#if __USE_FORTIFY_LEVEL < 2 -+#if __USE_FORTIFY_LEVEL < 2 || !__GNUC_PREREQ (4, 0) - /* The following tests are supposed to crash with -D_FORTIFY_SOURCE=2 - and sufficient GCC support, as the string operations overflow - from a.buf1 into a.buf2. */ -@@ -357,7 +360,7 @@ do_test (void) - memset (a.buf1 + 9, 'j', l0 + 2); - CHK_FAIL_END - --# if __USE_FORTIFY_LEVEL >= 2 -+# if __USE_FORTIFY_LEVEL >= 2 && __GNUC_PREREQ (4, 0) - # define O 0 - # else - # define O 1 ---- glibc-2.12-2-gc4ccff1/elf/ldconfig.c -+++ glibc-2.12-1/elf/ldconfig.c -@@ -1031,17 +1031,19 @@ search_dirs (void) - - - static void parse_conf_include (const char *config_file, unsigned int lineno, -- bool do_chroot, const char *pattern); -+ const char *prefix, bool do_chroot, -+ const char *pattern); - - /* Parse configuration file. */ - static void --parse_conf (const char *filename, bool do_chroot) -+parse_conf (const char *filename, const char *prefix, bool do_chroot) - { - FILE *file = NULL; - char *line = NULL; - const char *canon; - size_t len = 0; - unsigned int lineno; -+ size_t prefix_len = prefix ? strlen (prefix) : 0; - - if (do_chroot && opt_chroot) - { -@@ -1102,7 +1104,14 @@ parse_conf (const char *filename, bool d - cp += 8; - while ((dir = strsep (&cp, " \t")) != NULL) - if (dir[0] != '\0') -- parse_conf_include (filename, lineno, do_chroot, dir); -+ parse_conf_include (filename, lineno, prefix, do_chroot, dir); -+ } -+ else if (prefix != NULL) -+ { -+ size_t cp_len = strlen (cp); -+ char new_cp [prefix_len + cp_len + 1]; -+ memcpy (mempcpy (new_cp, prefix, prefix_len), cp, cp_len + 1); -+ add_dir (new_cp); - } - else if (!strncasecmp (cp, "hwcap", 5) && isblank (cp[5])) - { -@@ -1165,7 +1174,7 @@ parse_conf (const char *filename, bool d - config files to read. */ - static void - parse_conf_include (const char *config_file, unsigned int lineno, -- bool do_chroot, const char *pattern) -+ const char *prefix, bool do_chroot, const char *pattern) - { - if (opt_chroot && pattern[0] != '/') - error (EXIT_FAILURE, 0, -@@ -1197,7 +1206,7 @@ parse_conf_include (const char *config_f - { - case 0: - for (size_t i = 0; i < gl.gl_pathc; ++i) -- parse_conf (gl.gl_pathv[i], false); -+ parse_conf (gl.gl_pathv[i], prefix, false); - globfree64 (&gl); - break; - -@@ -1240,6 +1249,8 @@ main (int argc, char **argv) - /* Set the text message domain. */ - textdomain (_libc_intl_domainname); - -+ arch_startup (argc, argv); -+ - /* Parse and process arguments. */ - int remaining; - argp_parse (&argp, argc, argv, 0, &remaining, NULL); -@@ -1349,12 +1360,14 @@ main (int argc, char **argv) - - if (!opt_only_cline) - { -- parse_conf (config_file, true); -+ parse_conf (config_file, NULL, true); - - /* Always add the standard search paths. */ - add_system_dir (SLIBDIR); - if (strcmp (SLIBDIR, LIBDIR)) - add_system_dir (LIBDIR); -+ -+ add_arch_dirs (config_file); - } - - char *aux_cache_file = _PATH_LDCONFIG_AUX_CACHE; ---- glibc-2.12-2-gc4ccff1/elf/tst-stackguard1.c -+++ glibc-2.12-1/elf/tst-stackguard1.c -@@ -160,17 +160,21 @@ do_test (void) - the 16 runs, something is very wrong. */ - int ndifferences = 0; - int ndefaults = 0; -+ int npartlyrandomized = 0; - for (i = 0; i < N; ++i) - { - if (child_stack_chk_guards[i] != child_stack_chk_guards[i+1]) - ndifferences++; - else if (child_stack_chk_guards[i] == default_guard) - ndefaults++; -+ else if (*(char *) &child_stack_chk_guards[i] == 0) -+ npartlyrandomized++; - } - -- printf ("differences %d defaults %d\n", ndifferences, ndefaults); -+ printf ("differences %d defaults %d partly randomized %d\n", -+ ndifferences, ndefaults, npartlyrandomized); - -- if (ndifferences < N / 2 && ndefaults < N / 2) -+ if ((ndifferences + ndefaults + npartlyrandomized) < 3 * N / 4) - { - puts ("stack guard canaries are not randomized enough"); - puts ("nor equal to the default canary value"); ---- glibc-2.12-2-gc4ccff1/include/bits/stdlib-ldbl.h -+++ glibc-2.12-1/include/bits/stdlib-ldbl.h -@@ -0,0 +1 @@ -+#include <stdlib/bits/stdlib-ldbl.h> ---- glibc-2.12-2-gc4ccff1/include/bits/wchar-ldbl.h -+++ glibc-2.12-1/include/bits/wchar-ldbl.h -@@ -0,0 +1 @@ -+#include <wcsmbs/bits/wchar-ldbl.h> ---- glibc-2.12-2-gc4ccff1/include/features.h -+++ glibc-2.12-1/include/features.h -@@ -308,8 +308,13 @@ - #endif - - #if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \ -- && __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0 --# if _FORTIFY_SOURCE > 1 -+ && defined __OPTIMIZE__ && __OPTIMIZE__ > 0 -+# if !__GNUC_PREREQ (4, 1) -+# ifdef __GNUC_RH_RELEASE__ -+# warning _FORTIFY_SOURCE supported only with GCC 4.1 and later -+# endif -+# define __USE_FORTIFY_LEVEL 0 -+# elif _FORTIFY_SOURCE > 1 - # define __USE_FORTIFY_LEVEL 2 - # else - # define __USE_FORTIFY_LEVEL 1 ---- glibc-2.12-2-gc4ccff1/intl/locale.alias -+++ glibc-2.12-1/intl/locale.alias -@@ -57,8 +57,6 @@ korean ko_KR.eucKR - korean.euc ko_KR.eucKR - ko_KR ko_KR.eucKR - lithuanian lt_LT.ISO-8859-13 --no_NO nb_NO.ISO-8859-1 --no_NO.ISO-8859-1 nb_NO.ISO-8859-1 - norwegian nb_NO.ISO-8859-1 - nynorsk nn_NO.ISO-8859-1 - polish pl_PL.ISO-8859-2 ---- glibc-2.12-2-gc4ccff1/libio/stdio.h -+++ glibc-2.12-1/libio/stdio.h -@@ -165,10 +165,12 @@ typedef _G_fpos64_t fpos64_t; - extern struct _IO_FILE *stdin; /* Standard input stream. */ - extern struct _IO_FILE *stdout; /* Standard output stream. */ - extern struct _IO_FILE *stderr; /* Standard error output stream. */ -+#ifdef __STDC__ - /* C89/C99 say they're macros. Make them happy. */ - #define stdin stdin - #define stdout stdout - #define stderr stderr -+#endif - - __BEGIN_NAMESPACE_STD - /* Remove file FILENAME. */ ---- glibc-2.12-2-gc4ccff1/locale/iso-4217.def -+++ glibc-2.12-1/locale/iso-4217.def -@@ -8,6 +8,7 @@ - * - * !!! The list has to be sorted !!! - */ -+DEFINE_INT_CURR("ADP") /* Andorran Peseta -> EUR */ - DEFINE_INT_CURR("AED") /* United Arab Emirates Dirham */ - DEFINE_INT_CURR("AFN") /* Afghanistan Afgani */ - DEFINE_INT_CURR("ALL") /* Albanian Lek */ -@@ -15,12 +16,14 @@ DEFINE_INT_CURR("AMD") /* Armenia Dram - DEFINE_INT_CURR("ANG") /* Netherlands Antilles */ - DEFINE_INT_CURR("AOA") /* Angolan Kwanza */ - DEFINE_INT_CURR("ARS") /* Argentine Peso */ -+DEFINE_INT_CURR("ATS") /* Austrian Schilling -> EUR */ - DEFINE_INT_CURR("AUD") /* Australian Dollar */ - DEFINE_INT_CURR("AWG") /* Aruba Guilder */ - DEFINE_INT_CURR("AZM") /* Azerbaijan Manat */ - DEFINE_INT_CURR("BAM") /* Bosnian and Herzegovina Convertible Mark */ - DEFINE_INT_CURR("BBD") /* Barbados Dollar */ - DEFINE_INT_CURR("BDT") /* Bangladesh Taka */ -+DEFINE_INT_CURR("BEF") /* Belgian Franc -> EUR */ - DEFINE_INT_CURR("BGN") /* Bulgarian Lev */ - DEFINE_INT_CURR("BHD") /* Bahraini Dinar */ - DEFINE_INT_CURR("BIF") /* Burundi Franc */ -@@ -44,6 +47,7 @@ DEFINE_INT_CURR("CUP") /* Cuban Peso * - DEFINE_INT_CURR("CVE") /* Cape Verde Escudo */ - DEFINE_INT_CURR("CYP") /* Cypriot Pound */ - DEFINE_INT_CURR("CZK") /* Czech Koruna */ -+DEFINE_INT_CURR("DEM") /* German Mark -> EUR */ - DEFINE_INT_CURR("DJF") /* Djibouti Franc */ - DEFINE_INT_CURR("DKK") /* Danish Krone (Faroe Islands, Greenland) */ - DEFINE_INT_CURR("DOP") /* Dominican Republic */ -@@ -51,16 +55,20 @@ DEFINE_INT_CURR("DZD") /* Algerian Dina - DEFINE_INT_CURR("EEK") /* Estonian Kroon */ - DEFINE_INT_CURR("EGP") /* Egyptian Pound */ - DEFINE_INT_CURR("ERN") /* Eritrean Nakfa */ -+DEFINE_INT_CURR("ESP") /* Spanish Peseta -> EUR */ - DEFINE_INT_CURR("ETB") /* Ethiopian Birr */ - DEFINE_INT_CURR("EUR") /* European Union Euro */ -+DEFINE_INT_CURR("FIM") /* Finnish Markka -> EUR */ - DEFINE_INT_CURR("FJD") /* Fiji Dollar */ - DEFINE_INT_CURR("FKP") /* Falkland Islands Pound (Malvinas) */ -+DEFINE_INT_CURR("FRF") /* French Franc -> EUR */ - DEFINE_INT_CURR("GBP") /* British Pound */ - DEFINE_INT_CURR("GEL") /* Georgia Lari */ - DEFINE_INT_CURR("GHC") /* Ghana Cedi */ - DEFINE_INT_CURR("GIP") /* Gibraltar Pound */ - DEFINE_INT_CURR("GMD") /* Gambian Dalasi */ - DEFINE_INT_CURR("GNF") /* Guinea Franc */ -+DEFINE_INT_CURR("GRD") /* Greek Drachma -> EUR */ - DEFINE_INT_CURR("GTQ") /* Guatemala Quetzal */ - DEFINE_INT_CURR("GYD") /* Guyana Dollar */ - DEFINE_INT_CURR("HKD") /* Hong Kong Dollar */ -@@ -69,12 +77,14 @@ DEFINE_INT_CURR("HRK") /* Croatia Kuna - DEFINE_INT_CURR("HTG") /* Haiti Gourde */ - DEFINE_INT_CURR("HUF") /* Hungarian Forint */ - DEFINE_INT_CURR("IDR") /* Indonesia Rupiah */ -+DEFINE_INT_CURR("IEP") /* Irish Pound -> EUR */ - DEFINE_INT_CURR("ILS") /* Israeli Shekel */ - DEFINE_INT_CURR("IMP") /* Isle of Man Pounds */ - DEFINE_INT_CURR("INR") /* Indian Rupee (Bhutan) */ - DEFINE_INT_CURR("IQD") /* Iraqi Dinar */ - DEFINE_INT_CURR("IRR") /* Iranian Rial */ - DEFINE_INT_CURR("ISK") /* Iceland Krona */ -+DEFINE_INT_CURR("ITL") /* Italian Lira -> EUR */ - DEFINE_INT_CURR("JEP") /* Jersey Pound */ - DEFINE_INT_CURR("JMD") /* Jamaican Dollar */ - DEFINE_INT_CURR("JOD") /* Jordanian Dinar */ -@@ -94,6 +104,7 @@ DEFINE_INT_CURR("LKR") /* Sri Lankan Ru - DEFINE_INT_CURR("LRD") /* Liberian Dollar */ - DEFINE_INT_CURR("LSL") /* Lesotho Maloti */ - DEFINE_INT_CURR("LTL") /* Lithuanian Litas */ -+DEFINE_INT_CURR("LUF") /* Luxembourg Franc -> EUR */ - DEFINE_INT_CURR("LVL") /* Latvia Lat */ - DEFINE_INT_CURR("LYD") /* Libyan Arab Jamahiriya Dinar */ - DEFINE_INT_CURR("MAD") /* Moroccan Dirham */ -@@ -114,6 +125,7 @@ DEFINE_INT_CURR("MZM") /* Mozambique Me - DEFINE_INT_CURR("NAD") /* Namibia Dollar */ - DEFINE_INT_CURR("NGN") /* Nigeria Naira */ - DEFINE_INT_CURR("NIO") /* Nicaragua Cordoba Oro */ -+DEFINE_INT_CURR("NLG") /* Netherlands Guilder -> EUR */ - DEFINE_INT_CURR("NOK") /* Norwegian Krone */ - DEFINE_INT_CURR("NPR") /* Nepalese Rupee */ - DEFINE_INT_CURR("NZD") /* New Zealand Dollar */ -@@ -124,6 +136,7 @@ DEFINE_INT_CURR("PGK") /* Papau New Gui - DEFINE_INT_CURR("PHP") /* Philippines Peso */ - DEFINE_INT_CURR("PKR") /* Pakistan Rupee */ - DEFINE_INT_CURR("PLN") /* Polish Zloty */ -+DEFINE_INT_CURR("PTE") /* Portugese Escudo -> EUR */ - DEFINE_INT_CURR("PYG") /* Paraguay Guarani */ - DEFINE_INT_CURR("QAR") /* Qatar Rial */ - DEFINE_INT_CURR("ROL") /* Romanian Leu */ ---- glibc-2.12-2-gc4ccff1/locale/programs/locarchive.c -+++ glibc-2.12-1/locale/programs/locarchive.c -@@ -134,7 +134,7 @@ create_archive (const char *archivefname - size_t reserved = RESERVE_MMAP_SIZE; - int xflags = 0; - if (total < reserved -- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, -+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, - -1, 0)) != MAP_FAILED)) - xflags = MAP_FIXED; - else -@@ -241,9 +241,9 @@ oldlocrecentcmp (const void *a, const vo - /* forward decls for below */ - static uint32_t add_locale (struct locarhandle *ah, const char *name, - locale_data_t data, bool replace); --static void add_alias (struct locarhandle *ah, const char *alias, -- bool replace, const char *oldname, -- uint32_t *locrec_offset_p); -+void add_alias (struct locarhandle *ah, const char *alias, -+ bool replace, const char *oldname, -+ uint32_t *locrec_offset_p); - - - static bool -@@ -396,7 +396,7 @@ enlarge_archive (struct locarhandle *ah, - size_t reserved = RESERVE_MMAP_SIZE; - int xflags = 0; - if (total < reserved -- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, -+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, - -1, 0)) != MAP_FAILED)) - xflags = MAP_FIXED; - else -@@ -614,7 +614,7 @@ open_archive (struct locarhandle *ah, bo - int xflags = 0; - void *p; - if (st.st_size < reserved -- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, -+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, - -1, 0)) != MAP_FAILED)) - xflags = MAP_FIXED; - else -@@ -649,7 +649,7 @@ close_archive (struct locarhandle *ah) - #include "../../intl/explodename.c" - #include "../../intl/l10nflist.c" - --static struct namehashent * -+struct namehashent * - insert_name (struct locarhandle *ah, - const char *name, size_t name_len, bool replace) - { -@@ -707,7 +707,7 @@ insert_name (struct locarhandle *ah, - return &namehashtab[idx]; - } - --static void -+void - add_alias (struct locarhandle *ah, const char *alias, bool replace, - const char *oldname, uint32_t *locrec_offset_p) - { ---- glibc-2.12-2-gc4ccff1/localedata/Makefile -+++ glibc-2.12-1/localedata/Makefile -@@ -227,6 +227,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-lo - echo -n '...'; \ - input=`echo $$locale | sed 's/([^.]*)[^@]*(.*)/\1\2/'`; \ - $(LOCALEDEF) --alias-file=../intl/locale.alias \ -+ --no-archive \ - -i locales/$$input -c -f charmaps/$$charset \ - $(addprefix --prefix=,$(install_root)) $$locale; \ - echo ' done'; \ ---- glibc-2.12-2-gc4ccff1/localedata/SUPPORTED -+++ glibc-2.12-1/localedata/SUPPORTED -@@ -85,6 +85,7 @@ cy_GB.UTF-8/UTF-8 \ - cy_GB/ISO-8859-14 \ - da_DK.UTF-8/UTF-8 \ - da_DK/ISO-8859-1 \ -+da_DK.ISO-8859-15/ISO-8859-15 \ - de_AT.UTF-8/UTF-8 \ - de_AT/ISO-8859-1 \ - de_AT@euro/ISO-8859-15 \ -@@ -116,6 +117,7 @@ en_DK.UTF-8/UTF-8 \ - en_DK/ISO-8859-1 \ - en_GB.UTF-8/UTF-8 \ - en_GB/ISO-8859-1 \ -+en_GB.ISO-8859-15/ISO-8859-15 \ - en_HK.UTF-8/UTF-8 \ - en_HK/ISO-8859-1 \ - en_IE.UTF-8/UTF-8 \ -@@ -131,6 +133,7 @@ en_SG.UTF-8/UTF-8 \ - en_SG/ISO-8859-1 \ - en_US.UTF-8/UTF-8 \ - en_US/ISO-8859-1 \ -+en_US.ISO-8859-15/ISO-8859-15 \ - en_ZA.UTF-8/UTF-8 \ - en_ZA/ISO-8859-1 \ - en_ZW.UTF-8/UTF-8 \ -@@ -307,6 +310,8 @@ nl_NL/ISO-8859-1 \ - nl_NL@euro/ISO-8859-15 \ - nn_NO.UTF-8/UTF-8 \ - nn_NO/ISO-8859-1 \ -+no_NO.UTF-8/UTF-8 \ -+no_NO/ISO-8859-1 \ - nr_ZA/UTF-8 \ - nso_ZA/UTF-8 \ - oc_FR.UTF-8/UTF-8 \ -@@ -367,6 +372,7 @@ sv_FI/ISO-8859-1 \ - sv_FI@euro/ISO-8859-15 \ - sv_SE.UTF-8/UTF-8 \ - sv_SE/ISO-8859-1 \ -+sv_SE.ISO-8859-15/ISO-8859-15 \ - ta_IN/UTF-8 \ - te_IN/UTF-8 \ - tg_TJ.UTF-8/UTF-8 \ ---- glibc-2.12-2-gc4ccff1/localedata/locales/cy_GB -+++ glibc-2.12-1/localedata/locales/cy_GB -@@ -248,8 +248,11 @@ mon "<U0049><U006F><U006E><U0061 - d_t_fmt "<U0044><U0079><U0064><U0064><U0020><U0025><U0041><U0020><U0025><U0064><U0020><U006d><U0069><U0073><U0020><U0025><U0042><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0079>" - t_fmt "<U0025><U0054>" --am_pm "";"" --t_fmt_ampm "" -+am_pm "<U0041><U004D>";"<U0050><U004D>" -+t_fmt_ampm "<U0025><U006C><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0050><U0020><U0025><U005A>" -+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/ -+<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/ -+<U0025><U005A><U0020><U0025><U0059>" - END LC_TIME - - LC_MESSAGES ---- glibc-2.12-2-gc4ccff1/localedata/locales/en_GB -+++ glibc-2.12-1/localedata/locales/en_GB -@@ -116,8 +116,8 @@ mon "<U004A><U0061><U006E><U0075 - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" - t_fmt "<U0025><U0054>" --am_pm "";"" --t_fmt_ampm "" -+am_pm "<U0041><U004D>";"<U0050><U004D>" -+t_fmt_ampm "<U0025><U006C><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0050><U0020><U0025><U005A>" - date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/ - <U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/ - <U0025><U005A><U0020><U0025><U0059>" ---- glibc-2.12-2-gc4ccff1/localedata/locales/no_NO -+++ glibc-2.12-1/localedata/locales/no_NO -@@ -0,0 +1,69 @@ -+escape_char / -+comment_char % -+ -+% Norwegian language locale for Norway -+% Source: Norsk Standardiseringsforbund -+% Address: University Library, -+% Drammensveien 41, N-9242 Oslo, Norge -+% Contact: Kolbjoern Aamboe -+% Tel: +47 - 22859109 -+% Fax: +47 - 22434497 -+% Email: kolbjorn.aambo@usit.uio.no -+% Language: no -+% Territory: NO -+% Revision: 4.3 -+% Date: 1996-10-15 -+% Application: general -+% Users: general -+% Repertoiremap: mnemonic.ds -+% Charset: ISO-8859-1 -+% Distribution and use is free, also -+% for commercial purposes. -+ -+LC_IDENTIFICATION -+copy "nb_NO" -+END LC_IDENTIFICATION -+ -+LC_COLLATE -+copy "nb_NO" -+END LC_COLLATE -+ -+LC_CTYPE -+copy "nb_NO" -+END LC_CTYPE -+ -+LC_MONETARY -+copy "nb_NO" -+END LC_MONETARY -+ -+LC_NUMERIC -+copy "nb_NO" -+END LC_NUMERIC -+ -+LC_TIME -+copy "nb_NO" -+END LC_TIME -+ -+LC_MESSAGES -+copy "nb_NO" -+END LC_MESSAGES -+ -+LC_PAPER -+copy "nb_NO" -+END LC_PAPER -+ -+LC_TELEPHONE -+copy "nb_NO" -+END LC_TELEPHONE -+ -+LC_MEASUREMENT -+copy "nb_NO" -+END LC_MEASUREMENT -+ -+LC_NAME -+copy "nb_NO" -+END LC_NAME -+ -+LC_ADDRESS -+copy "nb_NO" -+END LC_ADDRESS ---- glibc-2.12-2-gc4ccff1/localedata/locales/zh_TW -+++ glibc-2.12-1/localedata/locales/zh_TW -@@ -1,7 +1,7 @@ - comment_char % - escape_char / - % --% Chinese language locale for Taiwan R.O.C. -+% Chinese language locale for Taiwan - % charmap: BIG5-CP950 - % - % Original Author: -@@ -17,7 +17,7 @@ escape_char / - % Reference: http://wwwold.dkuug.dk/JTC1/SC22/WG20/docs/n690.pdf - - LC_IDENTIFICATION --title "Chinese locale for Taiwan R.O.C." -+title "Chinese locale for Taiwan" - source "" - address "" - contact "" -@@ -25,7 +25,7 @@ email "bug-glibc-locales@gnu.org" - tel "" - fax "" - language "Chinese" --territory "Taiwan R.O.C." -+territory "Taiwan" - revision "0.2" - date "2000-08-02" - % ---- glibc-2.12-2-gc4ccff1/malloc/mcheck.c -+++ glibc-2.12-1/malloc/mcheck.c -@@ -24,9 +24,25 @@ - # include <mcheck.h> - # include <stdint.h> - # include <stdio.h> -+# include <stdlib.h> - # include <libintl.h> - #endif - -+#ifdef _LIBC -+extern __typeof (malloc) __libc_malloc; -+extern __typeof (free) __libc_free; -+extern __typeof (realloc) __libc_realloc; -+libc_hidden_proto (__libc_malloc) -+libc_hidden_proto (__libc_realloc) -+libc_hidden_proto (__libc_free) -+libc_hidden_proto (__libc_memalign) -+#else -+# define __libc_malloc(sz) malloc (sz) -+# define __libc_free(ptr) free (ptr) -+# define __libc_realloc(ptr, sz) realloc (ptr, sz) -+# define __libc_memalign(al, sz) memalign (al, sz) -+#endif -+ - /* Old hook values. */ - static void (*old_free_hook) (__ptr_t ptr, __const __ptr_t); - static __ptr_t (*old_malloc_hook) (__malloc_size_t size, const __ptr_t); -@@ -197,7 +213,7 @@ freehook (__ptr_t ptr, const __ptr_t cal - if (old_free_hook != NULL) - (*old_free_hook) (ptr, caller); - else -- free (ptr); -+ __libc_free (ptr); - __free_hook = freehook; - } - -@@ -214,7 +230,7 @@ mallochook (__malloc_size_t size, const - hdr = (struct hdr *) (*old_malloc_hook) (sizeof (struct hdr) + size + 1, - caller); - else -- hdr = (struct hdr *) malloc (sizeof (struct hdr) + size + 1); -+ hdr = (struct hdr *) __libc_malloc (sizeof (struct hdr) + size + 1); - __malloc_hook = mallochook; - if (hdr == NULL) - return NULL; -@@ -245,7 +261,7 @@ memalignhook (__malloc_size_t alignment, - if (old_memalign_hook != NULL) - block = (*old_memalign_hook) (alignment, slop + size + 1, caller); - else -- block = memalign (alignment, slop + size + 1); -+ block = __libc_memalign (alignment, slop + size + 1); - __memalign_hook = memalignhook; - if (block == NULL) - return NULL; -@@ -300,8 +316,8 @@ reallochook (__ptr_t ptr, __malloc_size_ - sizeof (struct hdr) + size + 1, - caller); - else -- hdr = (struct hdr *) realloc ((__ptr_t) hdr, -- sizeof (struct hdr) + size + 1); -+ hdr = (struct hdr *) __libc_realloc ((__ptr_t) hdr, -+ sizeof (struct hdr) + size + 1); - __free_hook = freehook; - __malloc_hook = mallochook; - __memalign_hook = memalignhook; -@@ -361,8 +377,8 @@ mcheck (func) - if (__malloc_initialized <= 0 && !mcheck_used) - { - /* We call malloc() once here to ensure it is initialized. */ -- void *p = malloc (0); -- free (p); -+ void *p = __libc_malloc (0); -+ __libc_free (p); - - old_free_hook = __free_hook; - __free_hook = freehook; ---- glibc-2.12-2-gc4ccff1/manual/libc.texinfo -+++ glibc-2.12-1/manual/libc.texinfo -@@ -5,7 +5,7 @@ - @c setchapternewpage odd - - @comment Tell install-info what to do. --@dircategory Software libraries -+@dircategory Libraries - @direntry - * Libc: (libc). C library. - @end direntry ---- glibc-2.12-2-gc4ccff1/misc/sys/cdefs.h -+++ glibc-2.12-1/misc/sys/cdefs.h -@@ -132,7 +132,10 @@ - #define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) - #define __bos0(ptr) __builtin_object_size (ptr, 0) - --#if __GNUC_PREREQ (4,3) -+#if __GNUC_PREREQ (4,3) \ -+ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ -+ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ -+ && __GNUC_RH_RELEASE__ >= 31) - # define __warndecl(name, msg) \ - extern void name (void) __attribute__((__warning__ (msg))) - # define __warnattr(msg) __attribute__((__warning__ (msg))) -@@ -291,10 +294,16 @@ - - /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 - inline semantics, unless -fgnu89-inline is used. */ --#if !defined __cplusplus || __GNUC_PREREQ (4,3) -+#if !defined __cplusplus || __GNUC_PREREQ (4,3) \ -+ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ -+ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ -+ && __GNUC_RH_RELEASE__ >= 31) - # if defined __GNUC_STDC_INLINE__ || defined __cplusplus - # define __extern_inline extern __inline __attribute__ ((__gnu_inline__)) --# if __GNUC_PREREQ (4,3) -+# if __GNUC_PREREQ (4,3) \ -+ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ -+ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ -+ && __GNUC_RH_RELEASE__ >= 31) - # define __extern_always_inline \ - extern __always_inline __attribute__ ((__gnu_inline__, __artificial__)) - # else -@@ -314,7 +323,10 @@ - - /* GCC 4.3 and above allow passing all anonymous arguments of an - __extern_always_inline function to some other vararg function. */ --#if __GNUC_PREREQ (4,3) -+#if __GNUC_PREREQ (4,3) \ -+ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ -+ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ -+ && __GNUC_RH_RELEASE__ >= 31) - # define __va_arg_pack() __builtin_va_arg_pack () - # define __va_arg_pack_len() __builtin_va_arg_pack_len () - #endif ---- glibc-2.12-2-gc4ccff1/nis/nss -+++ glibc-2.12-1/nis/nss -@@ -25,7 +25,7 @@ - # memory with every getXXent() call. Otherwise each getXXent() call - # might result into a network communication with the server to get - # the next entry. --#SETENT_BATCH_READ=TRUE -+SETENT_BATCH_READ=TRUE - # - # ADJUNCT_AS_SHADOW - # If set to TRUE, the passwd routines in the NIS NSS module will not ---- glibc-2.12-2-gc4ccff1/nptl/ChangeLog -+++ glibc-2.12-1/nptl/ChangeLog -@@ -3884,6 +3884,15 @@ - Use __sigfillset. Document that sigfillset does the right thing wrt - to SIGSETXID. - -+2005-08-08 Jakub Jelinek jakub@redhat.com -+ -+ * tst-stackguard1.c (do_test): Likewise. -+ -+2005-07-29 Jakub Jelinek jakub@redhat.com -+ -+ * tst-stackguard1.c (do_test): Don't fail if the poor man's -+ randomization doesn't work well enough. -+ - 2005-07-11 Jakub Jelinek jakub@redhat.com - - [BZ #1102] -@@ -4620,6 +4629,11 @@ - Move definition inside libpthread, libc, librt check. Provide - definition for rtld. - -+2004-09-02 Jakub Jelinek jakub@redhat.com -+ -+ * pthread_cond_destroy.c (__pthread_cond_destroy): If there are -+ waiters, awake all waiters on the associated mutex. -+ - 2004-09-02 Ulrich Drepper drepper@redhat.com - - * sysdeps/alpha/jmpbuf-unwind.h: Define __libc_unwind_longjmp. -@@ -6694,6 +6708,11 @@ - - * Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules). - -+2003-07-22 Jakub Jelinek jakub@redhat.com -+ -+ * descr.h: Don't include lowlevellock.h, pthreaddef.h and dl-sysdep.h -+ if __need_struct_pthread_size, instead define lll_lock_t. -+ - 2003-07-25 Jakub Jelinek jakub@redhat.com - - * tst-cancel17.c (do_test): Check if aio_cancel failed. ---- glibc-2.12-2-gc4ccff1/nptl/Makefile -+++ glibc-2.12-1/nptl/Makefile -@@ -341,7 +341,8 @@ endif - extra-objs += $(crti-objs) $(crtn-objs) - omit-deps += crti crtn - --CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) -+CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) \ -+ -fno-asynchronous-unwind-tables - endif - - CFLAGS-flockfile.c = -D_IO_MTSAFE_IO -@@ -527,15 +528,19 @@ $(addprefix $(objpfx), \ - $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \ - $(objpfx)libpthread_nonshared.a - $(objpfx)tst-unload: $(common-objpfx)dlfcn/libdl.so --# $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so, -+# $(objpfx)linklibc.so is used instead of $(common-objpfx)libc.so, - # since otherwise libpthread.so comes before libc.so when linking. - $(addprefix $(objpfx), $(tests-reverse)): \ -- $(objpfx)../libc.so $(objpfx)libpthread.so \ -+ $(objpfx)linklibc.so $(objpfx)libpthread.so \ - $(objpfx)libpthread_nonshared.a - $(objpfx)../libc.so: $(common-objpfx)libc.so ; - $(addprefix $(objpfx),$(tests-static) $(xtests-static)): $(objpfx)libpthread.a - - $(objpfx)tst-atfork2.out: $(objpfx)tst-atfork2mod.so -+ -+$(objpfx)linklibc.so: $(common-objpfx)libc.so -+ ln -s ../libc.so $@ -+generated += libclink.so - else - $(addprefix $(objpfx),$(tests) $(test-srcs)): $(objpfx)libpthread.a - endif ---- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h -+++ glibc-2.12-1/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h -@@ -189,4 +189,7 @@ - /* Typed memory objects are not available. */ - #define _POSIX_TYPED_MEMORY_OBJECTS -1 - -+/* Streams are not available. */ -+#define _XOPEN_STREAMS -1 -+ - #endif /* bits/posix_opt.h */ ---- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/kernel-features.h -+++ glibc-2.12-1/nptl/sysdeps/unix/sysv/linux/kernel-features.h -@@ -0,0 +1,6 @@ -+#include_next <kernel-features.h> -+ -+/* NPTL can always assume all clone thread flags work. */ -+#ifndef __ASSUME_CLONE_THREAD_FLAGS -+# define __ASSUME_CLONE_THREAD_FLAGS 1 -+#endif ---- glibc-2.12-2-gc4ccff1/nptl/tst-stackguard1.c -+++ glibc-2.12-1/nptl/tst-stackguard1.c -@@ -190,17 +190,21 @@ do_test (void) - the 16 runs, something is very wrong. */ - int ndifferences = 0; - int ndefaults = 0; -+ int npartlyrandomized = 0; - for (i = 0; i < N; ++i) - { - if (child_stack_chk_guards[i] != child_stack_chk_guards[i+1]) - ndifferences++; - else if (child_stack_chk_guards[i] == default_guard) - ndefaults++; -+ else if (*(char *) &child_stack_chk_guards[i] == 0) -+ npartlyrandomized++; - } - -- printf ("differences %d defaults %d\n", ndifferences, ndefaults); -+ printf ("differences %d defaults %d partly randomized %d\n", -+ ndifferences, ndefaults, npartlyrandomized); - -- if (ndifferences < N / 2 && ndefaults < N / 2) -+ if ((ndifferences + ndefaults + npartlyrandomized) < 3 * N / 4) - { - puts ("stack guard canaries are not randomized enough"); - puts ("nor equal to the default canary value"); ---- glibc-2.12-2-gc4ccff1/nscd/nscd.conf -+++ glibc-2.12-1/nscd/nscd.conf -@@ -33,7 +33,7 @@ - # logfile /var/log/nscd.log - # threads 4 - # max-threads 32 --# server-user nobody -+ server-user nscd - # stat-user somebody - debug-level 0 - # reload-count 5 ---- glibc-2.12-2-gc4ccff1/nscd/nscd.init -+++ glibc-2.12-1/nscd/nscd.init -@@ -9,6 +9,7 @@ - # slow naming services like NIS, NIS+, LDAP, or hesiod. - # processname: /usr/sbin/nscd - # config: /etc/nscd.conf -+# config: /etc/sysconfig/nscd - # - ### BEGIN INIT INFO - # Provides: nscd -@@ -28,20 +29,8 @@ - # Source function library. - . /etc/init.d/functions - --# nscd does not run on any kernel lower than 2.2.0 because of threading --# problems, so we require that in first place. --case $(uname -r) in -- 2.[2-9].*) -- # this is okay -- ;; -- [3-9]*) -- # these are of course also okay -- ;; -- *) -- #this is not -- exit 1 -- ;; --esac -+# Source an auxiliary options file if we have one, and pick up NSCD_OPTIONS. -+[ -r /etc/sysconfig/nscd ] && . /etc/sysconfig/nscd - - RETVAL=0 - prog=nscd -@@ -50,7 +39,7 @@ start () { - [ -d /var/run/nscd ] || mkdir /var/run/nscd - [ -d /var/db/nscd ] || mkdir /var/db/nscd - echo -n $"Starting $prog: " -- daemon /usr/sbin/nscd -+ daemon /usr/sbin/nscd $NSCD_OPTIONS - RETVAL=$? - echo - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nscd -@@ -83,7 +72,7 @@ restart() { - # See how we were called. - case "$1" in - start) -- start -+ [ -e /var/lock/subsys/nscd ] || start - RETVAL=$? - ;; - stop) -@@ -99,14 +88,17 @@ case "$1" in - RETVAL=$? - ;; - try-restart | condrestart) -- [ -e /var/lock/subsys/nscd ] && restart -+ [ ! -e /var/lock/subsys/nscd ] || restart - RETVAL=$? - ;; - force-reload | reload) - echo -n $"Reloading $prog: " -- killproc /usr/sbin/nscd -HUP -- RETVAL=$? -- echo -+ RETVAL=0 -+ /usr/sbin/nscd -i passwd || RETVAL=$? -+ /usr/sbin/nscd -i group || RETVAL=$? -+ /usr/sbin/nscd -i hosts || RETVAL=$? -+ /usr/sbin/nscd -i services || RETVAL=$? -+ echo - ;; - *) - echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}" ---- glibc-2.12-2-gc4ccff1/posix/Makefile -+++ glibc-2.12-1/posix/Makefile -@@ -305,15 +305,8 @@ $(inst_libexecdir)/getconf: $(inst_bindi - mv -f $@/$$spec.new $@/$$spec; \ - done < $(objpfx)getconf.speclist - --$(objpfx)getconf.speclist: $(objpfx)getconf --ifeq (no,$(cross-compiling)) -- LC_ALL=C GETCONF_DIR=/dev/null \ -- $(run-program-prefix) $< _POSIX_V7_WIDTH_RESTRICTED_ENVS > $@.new -- LC_ALL=C GETCONF_DIR=/dev/null \ -- $(run-program-prefix) $< _POSIX_V6_WIDTH_RESTRICTED_ENVS >> $@.new -- LC_ALL=C GETCONF_DIR=/dev/null \ -- $(run-program-prefix) $< _XBS5_WIDTH_RESTRICTED_ENVS >> $@.new --else -- > $@.new --endif -+$(objpfx)getconf.speclist: getconf.speclist.h -+ $(CC) -E $(CFLAGS) $(CPPFLAGS) $< \ -+ | sed -n -e '/START_OF_STRINGS/,$${/(POSIX_V[67]|_XBS5)_/{s/^[^"]*"//;s/".*$$//;p}}' \ -+ > $@.new - mv -f $@.new $@ ---- glibc-2.12-2-gc4ccff1/posix/gai.conf -+++ glibc-2.12-1/posix/gai.conf -@@ -41,7 +41,7 @@ - # - # precedence <mask> <value> - # Add another rule to the RFC 3484 precedence table. See section 2.1 --# and 10.3 in RFC 3484. The default is: -+# and 10.3 in RFC 3484. The RFC requires: - # - #precedence ::1/128 50 - #precedence ::/0 40 -@@ -58,7 +58,7 @@ - # Add another rule to the RFC 3484 scope table for IPv4 addresses. - # By default the scope IDs described in section 3.2 in RFC 3484 are - # used. Changing these defaults should hardly ever be necessary. --# The defaults are equivalent to: -+# The definitions in RFC 1918 are equivalent to: - # - #scopev4 ::ffff:169.254.0.0/112 2 - #scopev4 ::ffff:127.0.0.0/104 2 -@@ -75,3 +75,5 @@ - #scopev4 ::ffff:169.254.0.0/112 2 - #scopev4 ::ffff:127.0.0.0/104 2 - #scopev4 ::ffff:0.0.0.0/96 14 -+# -+# This is what the Red Hat setting currently uses. ---- glibc-2.12-2-gc4ccff1/posix/getconf.speclist.h -+++ glibc-2.12-1/posix/getconf.speclist.h -@@ -0,0 +1,39 @@ -+#include <unistd.h> -+const char *START_OF_STRINGS = -+#if _POSIX_V7_ILP32_OFF32 == 1 -+"POSIX_V7_ILP32_OFF32" -+#endif -+#if _POSIX_V7_ILP32_OFFBIG == 1 -+"POSIX_V7_ILP32_OFFBIG" -+#endif -+#if _POSIX_V7_LP64_OFF64 == 1 -+"POSIX_V7_LP64_OFF64" -+#endif -+#if _POSIX_V7_LPBIG_OFFBIG == 1 -+"POSIX_V7_LPBIG_OFFBIG" -+#endif -+#if _POSIX_V6_ILP32_OFF32 == 1 -+"POSIX_V6_ILP32_OFF32" -+#endif -+#if _POSIX_V6_ILP32_OFFBIG == 1 -+"POSIX_V6_ILP32_OFFBIG" -+#endif -+#if _POSIX_V6_LP64_OFF64 == 1 -+"POSIX_V6_LP64_OFF64" -+#endif -+#if _POSIX_V6_LPBIG_OFFBIG == 1 -+"POSIX_V6_LPBIG_OFFBIG" -+#endif -+#if _XBS5_ILP32_OFF32 == 1 -+"XBS5_ILP32_OFF32" -+#endif -+#if _XBS5_ILP32_OFFBIG == 1 -+"XBS5_ILP32_OFFBIG" -+#endif -+#if _XBS5_LP64_OFF64 == 1 -+"XBS5_LP64_OFF64" -+#endif -+#if _XBS5_LPBIG_OFFBIG == 1 -+"XBS5_LPBIG_OFFBIG" -+#endif -+""; ---- glibc-2.12-2-gc4ccff1/streams/Makefile -+++ glibc-2.12-1/streams/Makefile -@@ -21,7 +21,7 @@ - # - subdir := streams - --headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h -+#headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h - routines = isastream getmsg getpmsg putmsg putpmsg fattach fdetach - - include ../Rules ---- glibc-2.12-2-gc4ccff1/sysdeps/generic/dl-cache.h -+++ glibc-2.12-1/sysdeps/generic/dl-cache.h -@@ -36,6 +36,14 @@ - # define add_system_dir(dir) add_dir (dir) - #endif - -+#ifndef arch_startup -+# define arch_startup(argc, argv) do { } while (0) -+#endif -+ -+#ifndef add_arch_dirs -+# define add_arch_dirs(config_file) do { } while (0) -+#endif -+ - #define CACHEMAGIC "ld.so-1.7.0" - - /* libc5 and glibc 2.0/2.1 use the same format. For glibc 2.2 another ---- glibc-2.12-2-gc4ccff1/sysdeps/i386/Makefile -+++ glibc-2.12-1/sysdeps/i386/Makefile -@@ -2,6 +2,8 @@ - # Every i386 port in use uses gas syntax (I think). - asm-CPPFLAGS += -DGAS_SYNTAX - -+sysdep-ASFLAGS += -U__i686 -+ - # The i386 `long double' is a distinct type we support. - long-double-fcts = yes - -@@ -64,6 +66,14 @@ endif - - ifneq (,$(filter -mno-tls-direct-seg-refs,$(CFLAGS))) - defines += -DNO_TLS_DIRECT_SEG_REFS -+else -+# .a libraries are not performance critical and so we -+# build them without direct TLS segment references -+# always. -+CPPFLAGS-.o += -DNO_TLS_DIRECT_SEG_REFS -+CFLAGS-.o += -mno-tls-direct-seg-refs -+CPPFLAGS-.oS += -DNO_TLS_DIRECT_SEG_REFS -+CFLAGS-.oS += -mno-tls-direct-seg-refs - endif - - ifeq ($(subdir),elf) ---- glibc-2.12-2-gc4ccff1/sysdeps/ia64/Makefile -+++ glibc-2.12-1/sysdeps/ia64/Makefile -@@ -12,8 +12,8 @@ elide-routines.os += hp-timing - - ifeq (yes,$(build-shared)) - # Compatibility --sysdep_routines += ia64libgcc --shared-only-routines += ia64libgcc -+sysdep_routines += libgcc-compat -+shared-only-routines += libgcc-compat - endif - endif - ---- glibc-2.12-2-gc4ccff1/sysdeps/ia64/ia64libgcc.S -+++ glibc-2.12-1/sysdeps/ia64/ia64libgcc.S -@@ -1,350 +0,0 @@ --/* From the Intel IA-64 Optimization Guide, choose the minimum latency -- alternative. */ -- --#include <sysdep.h> --#undef ret -- --#include <shlib-compat.h> -- --#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6) -- --/* __divtf3 -- Compute a 80-bit IEEE double-extended quotient. -- farg0 holds the dividend. farg1 holds the divisor. */ -- --ENTRY(___divtf3) -- cmp.eq p7, p0 = r0, r0 -- frcpa.s0 f10, p6 = farg0, farg1 -- ;; --(p6) cmp.ne p7, p0 = r0, r0 -- .pred.rel.mutex p6, p7 --(p6) fnma.s1 f11 = farg1, f10, f1 --(p6) fma.s1 f12 = farg0, f10, f0 -- ;; --(p6) fma.s1 f13 = f11, f11, f0 --(p6) fma.s1 f14 = f11, f11, f11 -- ;; --(p6) fma.s1 f11 = f13, f13, f11 --(p6) fma.s1 f13 = f14, f10, f10 -- ;; --(p6) fma.s1 f10 = f13, f11, f10 --(p6) fnma.s1 f11 = farg1, f12, farg0 -- ;; --(p6) fma.s1 f11 = f11, f10, f12 --(p6) fnma.s1 f12 = farg1, f10, f1 -- ;; --(p6) fma.s1 f10 = f12, f10, f10 --(p6) fnma.s1 f12 = farg1, f11, farg0 -- ;; --(p6) fma.s0 fret0 = f12, f10, f11 --(p7) mov fret0 = f10 -- br.ret.sptk rp --END(___divtf3) -- .symver ___divtf3, __divtf3@GLIBC_2.2 -- --/* __divdf3 -- Compute a 64-bit IEEE double quotient. -- farg0 holds the dividend. farg1 holds the divisor. */ -- --ENTRY(___divdf3) -- cmp.eq p7, p0 = r0, r0 -- frcpa.s0 f10, p6 = farg0, farg1 -- ;; --(p6) cmp.ne p7, p0 = r0, r0 -- .pred.rel.mutex p6, p7 --(p6) fmpy.s1 f11 = farg0, f10 --(p6) fnma.s1 f12 = farg1, f10, f1 -- ;; --(p6) fma.s1 f11 = f12, f11, f11 --(p6) fmpy.s1 f13 = f12, f12 -- ;; --(p6) fma.s1 f10 = f12, f10, f10 --(p6) fma.s1 f11 = f13, f11, f11 -- ;; --(p6) fmpy.s1 f12 = f13, f13 --(p6) fma.s1 f10 = f13, f10, f10 -- ;; --(p6) fma.d.s1 f11 = f12, f11, f11 --(p6) fma.s1 f10 = f12, f10, f10 -- ;; --(p6) fnma.d.s1 f8 = farg1, f11, farg0 -- ;; --(p6) fma.d fret0 = f8, f10, f11 --(p7) mov fret0 = f10 -- br.ret.sptk rp -- ;; --END(___divdf3) -- .symver ___divdf3, __divdf3@GLIBC_2.2 -- --/* __divsf3 -- Compute a 32-bit IEEE float quotient. -- farg0 holds the dividend. farg1 holds the divisor. */ -- --ENTRY(___divsf3) -- cmp.eq p7, p0 = r0, r0 -- frcpa.s0 f10, p6 = farg0, farg1 -- ;; --(p6) cmp.ne p7, p0 = r0, r0 -- .pred.rel.mutex p6, p7 --(p6) fmpy.s1 f8 = farg0, f10 --(p6) fnma.s1 f9 = farg1, f10, f1 -- ;; --(p6) fma.s1 f8 = f9, f8, f8 --(p6) fmpy.s1 f9 = f9, f9 -- ;; --(p6) fma.s1 f8 = f9, f8, f8 --(p6) fmpy.s1 f9 = f9, f9 -- ;; --(p6) fma.d.s1 f10 = f9, f8, f8 -- ;; --(p6) fnorm.s.s0 fret0 = f10 --(p7) mov fret0 = f10 -- br.ret.sptk rp -- ;; --END(___divsf3) -- .symver ___divsf3, __divsf3@GLIBC_2.2 -- --/* __divdi3 -- Compute a 64-bit integer quotient. -- in0 holds the dividend. in1 holds the divisor. */ -- --ENTRY(___divdi3) -- .regstk 2,0,0,0 -- /* Transfer inputs to FP registers. */ -- setf.sig f8 = in0 -- setf.sig f9 = in1 -- ;; -- /* Convert the inputs to FP, so that they won't be treated as -- unsigned. */ -- fcvt.xf f8 = f8 -- fcvt.xf f9 = f9 -- ;; -- /* Compute the reciprocal approximation. */ -- frcpa.s1 f10, p6 = f8, f9 -- ;; -- /* 3 Newton-Raphson iterations. */ --(p6) fnma.s1 f11 = f9, f10, f1 --(p6) fmpy.s1 f12 = f8, f10 -- ;; --(p6) fmpy.s1 f13 = f11, f11 --(p6) fma.s1 f12 = f11, f12, f12 -- ;; --(p6) fma.s1 f10 = f11, f10, f10 --(p6) fma.s1 f11 = f13, f12, f12 -- ;; --(p6) fma.s1 f10 = f13, f10, f10 --(p6) fnma.s1 f12 = f9, f11, f8 -- ;; --(p6) fma.s1 f10 = f12, f10, f11 -- ;; -- /* Round quotient to an integer. */ -- fcvt.fx.trunc.s1 f10 = f10 -- ;; -- /* Transfer result to GP registers. */ -- getf.sig ret0 = f10 -- br.ret.sptk rp -- ;; --END(___divdi3) -- .symver ___divdi3, __divdi3@GLIBC_2.2 -- --/* __moddi3 -- Compute a 64-bit integer modulus. -- in0 holds the dividend (a). in1 holds the divisor (b). */ -- --ENTRY(___moddi3) -- .regstk 2,0,0,0 -- /* Transfer inputs to FP registers. */ -- setf.sig f14 = in0 -- setf.sig f9 = in1 -- ;; -- /* Convert the inputs to FP, so that they won't be treated as -- unsigned. */ -- fcvt.xf f8 = f14 -- fcvt.xf f9 = f9 -- ;; -- /* Compute the reciprocal approximation. */ -- frcpa.s1 f10, p6 = f8, f9 -- ;; -- /* 3 Newton-Raphson iterations. */ --(p6) fmpy.s1 f12 = f8, f10 --(p6) fnma.s1 f11 = f9, f10, f1 -- ;; --(p6) fma.s1 f12 = f11, f12, f12 --(p6) fmpy.s1 f13 = f11, f11 -- ;; --(p6) fma.s1 f10 = f11, f10, f10 --(p6) fma.s1 f11 = f13, f12, f12 -- ;; -- sub in1 = r0, in1 --(p6) fma.s1 f10 = f13, f10, f10 --(p6) fnma.s1 f12 = f9, f11, f8 -- ;; -- setf.sig f9 = in1 --(p6) fma.s1 f10 = f12, f10, f11 -- ;; -- fcvt.fx.trunc.s1 f10 = f10 -- ;; -- /* r = q * (-b) + a */ -- xma.l f10 = f10, f9, f14 -- ;; -- /* Transfer result to GP registers. */ -- getf.sig ret0 = f10 -- br.ret.sptk rp -- ;; --END(___moddi3) -- .symver ___moddi3, __moddi3@GLIBC_2.2 -- --/* __udivdi3 -- Compute a 64-bit unsigned integer quotient. -- in0 holds the dividend. in1 holds the divisor. */ -- --ENTRY(___udivdi3) -- .regstk 2,0,0,0 -- /* Transfer inputs to FP registers. */ -- setf.sig f8 = in0 -- setf.sig f9 = in1 -- ;; -- /* Convert the inputs to FP, to avoid FP software-assist faults. */ -- fcvt.xuf.s1 f8 = f8 -- fcvt.xuf.s1 f9 = f9 -- ;; -- /* Compute the reciprocal approximation. */ -- frcpa.s1 f10, p6 = f8, f9 -- ;; -- /* 3 Newton-Raphson iterations. */ --(p6) fnma.s1 f11 = f9, f10, f1 --(p6) fmpy.s1 f12 = f8, f10 -- ;; --(p6) fmpy.s1 f13 = f11, f11 --(p6) fma.s1 f12 = f11, f12, f12 -- ;; --(p6) fma.s1 f10 = f11, f10, f10 --(p6) fma.s1 f11 = f13, f12, f12 -- ;; --(p6) fma.s1 f10 = f13, f10, f10 --(p6) fnma.s1 f12 = f9, f11, f8 -- ;; --(p6) fma.s1 f10 = f12, f10, f11 -- ;; -- /* Round quotient to an unsigned integer. */ -- fcvt.fxu.trunc.s1 f10 = f10 -- ;; -- /* Transfer result to GP registers. */ -- getf.sig ret0 = f10 -- br.ret.sptk rp -- ;; --END(___udivdi3) -- .symver ___udivdi3, __udivdi3@GLIBC_2.2 -- --/* __umoddi3 -- Compute a 64-bit unsigned integer modulus. -- in0 holds the dividend (a). in1 holds the divisor (b). */ -- --ENTRY(___umoddi3) -- .regstk 2,0,0,0 -- /* Transfer inputs to FP registers. */ -- setf.sig f14 = in0 -- setf.sig f9 = in1 -- ;; -- /* Convert the inputs to FP, to avoid FP software assist faults. */ -- fcvt.xuf.s1 f8 = f14 -- fcvt.xuf.s1 f9 = f9 -- ;; -- /* Compute the reciprocal approximation. */ -- frcpa.s1 f10, p6 = f8, f9 -- ;; -- /* 3 Newton-Raphson iterations. */ --(p6) fmpy.s1 f12 = f8, f10 --(p6) fnma.s1 f11 = f9, f10, f1 -- ;; --(p6) fma.s1 f12 = f11, f12, f12 --(p6) fmpy.s1 f13 = f11, f11 -- ;; --(p6) fma.s1 f10 = f11, f10, f10 --(p6) fma.s1 f11 = f13, f12, f12 -- ;; -- sub in1 = r0, in1 --(p6) fma.s1 f10 = f13, f10, f10 --(p6) fnma.s1 f12 = f9, f11, f8 -- ;; -- setf.sig f9 = in1 --(p6) fma.s1 f10 = f12, f10, f11 -- ;; -- /* Round quotient to an unsigned integer. */ -- fcvt.fxu.trunc.s1 f10 = f10 -- ;; -- /* r = q * (-b) + a */ -- xma.l f10 = f10, f9, f14 -- ;; -- /* Transfer result to GP registers. */ -- getf.sig ret0 = f10 -- br.ret.sptk rp -- ;; --END(___umoddi3) -- .symver ___umoddi3, __umoddi3@GLIBC_2.2 -- --/* __multi3 -- Compute a 128-bit multiply of 128-bit multiplicands. -- in0/in1 holds one multiplicand (a), in2/in3 holds the other one (b). */ -- --ENTRY(___multi3) -- .regstk 4,0,0,0 -- setf.sig f6 = in1 -- movl r19 = 0xffffffff -- setf.sig f7 = in2 -- ;; -- and r14 = r19, in0 -- ;; -- setf.sig f10 = r14 -- and r14 = r19, in2 -- xmpy.l f9 = f6, f7 -- ;; -- setf.sig f6 = r14 -- shr.u r14 = in0, 32 -- ;; -- setf.sig f7 = r14 -- shr.u r14 = in2, 32 -- ;; -- setf.sig f8 = r14 -- xmpy.l f11 = f10, f6 -- xmpy.l f6 = f7, f6 -- ;; -- getf.sig r16 = f11 -- xmpy.l f7 = f7, f8 -- ;; -- shr.u r14 = r16, 32 -- and r16 = r19, r16 -- getf.sig r17 = f6 -- setf.sig f6 = in0 -- ;; -- setf.sig f11 = r14 -- getf.sig r21 = f7 -- setf.sig f7 = in3 -- ;; -- xma.l f11 = f10, f8, f11 -- xma.l f6 = f6, f7, f9 -- ;; -- getf.sig r18 = f11 -- ;; -- add r18 = r18, r17 -- ;; -- and r15 = r19, r18 -- cmp.ltu p7, p6 = r18, r17 -- ;; -- getf.sig r22 = f6 --(p7) adds r14 = 1, r19 -- ;; --(p7) add r21 = r21, r14 -- shr.u r14 = r18, 32 -- shl r15 = r15, 32 -- ;; -- add r20 = r21, r14 -- ;; -- add ret0 = r15, r16 -- add ret1 = r22, r20 -- br.ret.sptk rp -- ;; --END(___multi3) -- .symver ___multi3, __multi3@GLIBC_2.2 -- --#endif ---- glibc-2.12-2-gc4ccff1/sysdeps/ia64/libgcc-compat.c -+++ glibc-2.12-1/sysdeps/ia64/libgcc-compat.c -@@ -0,0 +1,84 @@ -+/* pre-.hidden libgcc compatibility -+ Copyright (C) 2002 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+ -+#include <stdint.h> -+#include <shlib-compat.h> -+ -+#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6) -+ -+typedef int int128_t __attribute__((__mode__(TI))); -+ -+extern long double __divtf3 (long double, long double) attribute_hidden; -+long double INTUSE (__divtf3) (long double x, long double y) -+{ -+ return __divtf3 (x, y); -+} -+symbol_version (INTUSE (__divtf3), __divtf3, GLIBC_2.2); -+ -+extern double __divdf3 (double, double) attribute_hidden; -+double INTUSE (__divdf3) (double x, double y) -+{ -+ return __divdf3 (x, y); -+} -+symbol_version (INTUSE (__divdf3), __divdf3, GLIBC_2.2); -+ -+extern float __divsf3 (float, float) attribute_hidden; -+float INTUSE (__divsf3) (float x, float y) -+{ -+ return __divsf3 (x, y); -+} -+symbol_version (INTUSE (__divsf3), __divsf3, GLIBC_2.2); -+ -+extern int64_t __divdi3 (int64_t, int64_t) attribute_hidden; -+int64_t INTUSE (__divdi3) (int64_t x, int64_t y) -+{ -+ return __divdi3 (x, y); -+} -+symbol_version (INTUSE (__divdi3), __divdi3, GLIBC_2.2); -+ -+extern int64_t __moddi3 (int64_t, int64_t) attribute_hidden; -+int64_t INTUSE (__moddi3) (int64_t x, int64_t y) -+{ -+ return __moddi3 (x, y); -+} -+symbol_version (INTUSE (__moddi3), __moddi3, GLIBC_2.2); -+ -+extern uint64_t __udivdi3 (uint64_t, uint64_t) attribute_hidden; -+uint64_t INTUSE (__udivdi3) (uint64_t x, uint64_t y) -+{ -+ return __udivdi3 (x, y); -+} -+symbol_version (INTUSE (__udivdi3), __udivdi3, GLIBC_2.2); -+ -+extern uint64_t __umoddi3 (uint64_t, uint64_t) attribute_hidden; -+uint64_t INTUSE (__umoddi3) (uint64_t x, uint64_t y) -+{ -+ return __umoddi3 (x, y); -+} -+symbol_version (INTUSE (__umoddi3), __umoddi3, GLIBC_2.2); -+ -+extern int128_t __multi3 (int128_t, int128_t) attribute_hidden; -+int128_t INTUSE (__multi3) (int128_t x, int128_t y) -+{ -+ return __multi3 (x, y); -+} -+symbol_version (INTUSE (__multi3), __multi3, GLIBC_2.2); -+ -+#endif ---- glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c -+++ glibc-2.12-1/sysdeps/posix/getaddrinfo.c -@@ -1099,10 +1099,12 @@ static const struct scopeentry - /* Link-local addresses: scope 2. */ - { { { 169, 254, 0, 0 } }, htonl_c (0xffff0000), 2 }, - { { { 127, 0, 0, 0 } }, htonl_c (0xff000000), 2 }, -+#if 0 - /* Site-local addresses: scope 5. */ - { { { 10, 0, 0, 0 } }, htonl_c (0xff000000), 5 }, - { { { 172, 16, 0, 0 } }, htonl_c (0xfff00000), 5 }, - { { { 192, 168, 0, 0 } }, htonl_c (0xffff0000), 5 }, -+#endif - /* Default: scope 14. */ - { { { 0, 0, 0, 0 } }, htonl_c (0x00000000), 14 } - }; ---- glibc-2.12-2-gc4ccff1/sysdeps/powerpc/powerpc64/Makefile -+++ glibc-2.12-1/sysdeps/powerpc/powerpc64/Makefile -@@ -30,6 +30,7 @@ ifneq ($(elf),no) - # we use -fpic instead which is much better. - CFLAGS-initfini.s += -fpic -O1 - endif -+CFLAGS-libc-start.c += -fno-asynchronous-unwind-tables - endif - - ifeq ($(subdir),elf) ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/nice.c -+++ glibc-2.12-1/sysdeps/unix/nice.c -@@ -42,7 +42,12 @@ nice (int incr) - __set_errno (save); - } - -- result = setpriority (PRIO_PROCESS, 0, prio + incr); -+ prio += incr; -+ if (prio < PRIO_MIN) -+ prio = PRIO_MIN; -+ else if (prio >= PRIO_MAX) -+ prio = PRIO_MAX - 1; -+ result = setpriority (PRIO_PROCESS, 0, prio); - if (result == -1) - { - if (errno == EACCES) ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/check_pf.c -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/check_pf.c -@@ -27,13 +27,10 @@ - #include <unistd.h> - #include <sys/socket.h> - --#include <asm/types.h> --#include <linux/netlink.h> --#include <linux/rtnetlink.h> -- - #include <not-cancel.h> - #include <kernel-features.h> - -+#include "netlinkaccess.h" - - #ifndef IFA_F_HOMEADDRESS - # define IFA_F_HOMEADDRESS 0 ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/dl-osinfo.h -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/dl-osinfo.h -@@ -17,10 +17,13 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -+#include <errno.h> - #include <kernel-features.h> - #include <dl-sysdep.h> - #include <fcntl.h> - #include <stdint.h> -+#include <hp-timing.h> -+#include <endian.h> - - #ifndef MIN - # define MIN(a,b) (((a)<(b))?(a):(b)) -@@ -80,6 +83,32 @@ _dl_setup_stack_chk_guard (void *dl_rand - unsigned char *p = (unsigned char *) &ret; - p[sizeof (ret) - 1] = 255; - p[sizeof (ret) - 2] = '\n'; -+#ifdef HP_TIMING_NOW -+ hp_timing_t hpt; -+ HP_TIMING_NOW (hpt); -+ hpt = (hpt & 0xffff) << 8; -+ ret ^= hpt; -+#endif -+ uintptr_t stk; -+ /* Avoid GCC being too smart. */ -+ asm ("" : "=r" (stk) : "r" (p)); -+ stk &= 0x7ffff0; -+#if __BYTE_ORDER == __LITTLE_ENDIAN -+ stk <<= (__WORDSIZE - 23); -+#elif __WORDSIZE == 64 -+ stk <<= 31; -+#endif -+ ret ^= stk; -+ /* Avoid GCC being too smart. */ -+ p = (unsigned char *) &errno; -+ asm ("" : "=r" (stk) : "r" (p)); -+ stk &= 0x7fff00; -+#if __BYTE_ORDER == __LITTLE_ENDIAN -+ stk <<= (__WORDSIZE - 29); -+#else -+ stk >>= 8; -+#endif -+ ret ^= stk; - } - else - #endif ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/futimesat.c -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/futimesat.c -@@ -37,14 +37,14 @@ futimesat (fd, file, tvp) - { - int result; - -+ if (file == NULL) -+ return __futimes (fd, tvp); -+ - #ifdef __NR_futimesat - # ifndef __ASSUME_ATFCTS - if (__have_atfcts >= 0) - # endif - { -- if (file == NULL) -- return __futimes (fd, tvp); -- - result = INLINE_SYSCALL (futimesat, 3, fd, file, tvp); - # ifndef __ASSUME_ATFCTS - if (result == -1 && errno == ENOSYS) -@@ -58,22 +58,7 @@ futimesat (fd, file, tvp) - #ifndef __ASSUME_ATFCTS - char *buf = NULL; - -- if (file == NULL) -- { -- static const char procfd[] = "/proc/self/fd/%d"; -- /* Buffer for the path name we are going to use. It consists of -- - the string /proc/self/fd/ -- - the file descriptor number. -- The final NUL is included in the sizeof. A bit of overhead -- due to the format elements compensates for possible negative -- numbers. */ -- size_t buflen = sizeof (procfd) + sizeof (int) * 3; -- buf = alloca (buflen); -- -- __snprintf (buf, buflen, procfd, fd); -- file = buf; -- } -- else if (fd != AT_FDCWD && file[0] != '/') -+ if (fd != AT_FDCWD && file[0] != '/') - { - size_t filelen = strlen (file); - if (__builtin_expect (filelen == 0, 0)) ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/dl-cache.h -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/i386/dl-cache.h -@@ -0,0 +1,59 @@ -+/* Support for reading /etc/ld.so.cache files written by Linux ldconfig. -+ Copyright (C) 2004 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+static inline int -+is_ia64 (void) -+{ -+ unsigned int fl1, fl2; -+ -+ /* See if we can use cpuid. */ -+ __asm__ ("pushfl; pushfl; popl %0; movl %0,%1; xorl %2,%0;" -+ "pushl %0; popfl; pushfl; popl %0; popfl" -+ : "=&r" (fl1), "=&r" (fl2) -+ : "i" (0x00200000)); -+ if (((fl1 ^ fl2) & 0x00200000) == 0) -+ return 0; -+ -+ /* Host supports cpuid. See if cpuid gives capabilities, try -+ CPUID(0). Preserve %ebx and %ecx; cpuid insn clobbers these, we -+ don't need their CPUID values here, and %ebx may be the PIC -+ register. */ -+ __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx" -+ : "=a" (fl1) : "0" (0) : "edx", "cc"); -+ if (fl1 == 0) -+ return 0; -+ -+ /* Invoke CPUID(1), return %edx; caller can examine bits to -+ determine what's supported. */ -+ __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx" -+ : "=d" (fl2), "=a" (fl1) : "1" (1) : "cc"); -+ return (fl2 & (1 << 30)) != 0; -+} -+ -+#define arch_startup(argc, argv) \ -+ do { \ -+ /* On IA-64, try to execute 64-bit ldconfig if possible. \ -+ This is because the badly designed /emul/ia32-linux hack \ -+ will cause 32-bit ldconfig to do all sorts of weird things. */ \ -+ if (is_ia64 ()) \ -+ execv ("/emul/ia32-linux/../../sbin/ldconfig", \ -+ (char *const *) argv); \ -+ } while (0) -+ -+#include_next <dl-cache.h> ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/dl-cache.h -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/ia64/dl-cache.h -@@ -22,4 +22,31 @@ - #define _dl_cache_check_flags(flags) \ - ((flags) == _DL_CACHE_DEFAULT_ID) - -+#define EMUL_HACK "/emul/ia32-linux" -+ -+#define arch_startup(argc, argv) unlink (EMUL_HACK LD_SO_CACHE) -+ -+#define add_arch_dirs(config_file) \ -+ do { \ -+ int save_verbose = opt_verbose; \ -+ opt_verbose = 0; \ -+ \ -+ parse_conf (config_file, EMUL_HACK, true); \ -+ \ -+ /* Always add the standard search paths. */ \ -+ add_system_dir (EMUL_HACK SLIBDIR); \ -+ if (strcmp (SLIBDIR, LIBDIR)) \ -+ add_system_dir (EMUL_HACK LIBDIR); \ -+ \ -+ char emul_config_file[strlen (config_file) \ -+ + sizeof EMUL_HACK]; \ -+ strcpy (mempcpy (emul_config_file, EMUL_HACK, \ -+ strlen (EMUL_HACK)), config_file); \ -+ \ -+ if (! access (emul_config_file, R_OK)) \ -+ parse_conf (emul_config_file, EMUL_HACK, true); \ -+ \ -+ opt_verbose = save_verbose; \ -+ } while (0) -+ - #include_next <dl-cache.h> ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c -@@ -0,0 +1,5 @@ -+#ifdef IS_IN_ldconfig -+#include <sysdeps/i386/dl-procinfo.c> -+#else -+#include <sysdeps/generic/dl-procinfo.c> -+#endif ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h -@@ -0,0 +1,5 @@ -+#ifdef IS_IN_ldconfig -+#include <sysdeps/unix/sysv/linux/i386/dl-procinfo.h> -+#else -+#include <sysdeps/generic/dl-procinfo.h> -+#endif ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed -@@ -1 +1 @@ --s_^(RTLDLIST=)([^ ]*)-ia64(.so.[0-9.]*)[ ]*$_\1"\2-ia64\3 \2\3"_ -+s_^(RTLDLIST=)([^ ]*)-ia64(.so.[0-9.]*)[ ]*$_\1"\2-ia64\3 /emul/ia32-linux\2\3"_ ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/netlinkaccess.h -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/netlinkaccess.h -@@ -25,6 +25,24 @@ - - #include <kernel-features.h> - -+#ifndef IFA_MAX -+/* 2.6.19 kernel headers helpfully removed some macros and -+ moved lots of stuff into new headers, some of which aren't -+ included by linux/rtnetlink.h. */ -+#include <linux/if_addr.h> -+#endif -+ -+#ifndef IFA_RTA -+# define IFA_RTA(r) \ -+ ((struct rtattr*) ((char*)(r) + NLMSG_ALIGN (sizeof (struct ifaddrmsg)))) -+# define IFA_PAYLOAD(n) NLMSG_PAYLOAD (n, sizeof (struct ifaddrmsg)) -+#endif -+ -+#ifndef IFLA_RTA -+# define IFLA_RTA(r) \ -+ ((struct rtattr*) ((char*)(r) + NLMSG_ALIGN (sizeof (struct ifinfomsg)))) -+# define IFLA_PAYLOAD(n) NLMSG_PAYLOAD (n, sizeof (struct ifinfomsg)) -+#endif - - struct netlink_res - { ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/paths.h -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/paths.h -@@ -62,7 +62,7 @@ - #define _PATH_TTY "/dev/tty" - #define _PATH_UNIX "/boot/vmlinux" - #define _PATH_UTMP "/var/run/utmp" --#define _PATH_VI "/usr/bin/vi" -+#define _PATH_VI "/bin/vi" - #define _PATH_WTMP "/var/log/wtmp" - - /* Provide trailing slash, since mostly used for building pathnames. */ ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c -@@ -1 +1 @@ --#include "../../fxstat.c" -+#include "../../i386/fxstat.c" ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/tcsetattr.c -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/tcsetattr.c -@@ -49,6 +49,7 @@ tcsetattr (fd, optional_actions, termios - { - struct __kernel_termios k_termios; - unsigned long int cmd; -+ int retval; - - switch (optional_actions) - { -@@ -80,6 +81,35 @@ tcsetattr (fd, optional_actions, termios - memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0], - __KERNEL_NCCS * sizeof (cc_t)); - -- return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); -+ retval = INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); -+ -+ if (retval == 0 && cmd == TCSETS) -+ { -+ /* The Linux kernel has a bug which silently ignore the invalid -+ c_cflag on pty. We have to check it here. */ -+ int save = errno; -+ retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios); -+ if (retval) -+ { -+ /* We cannot verify if the setting is ok. We don't return -+ an error (?). */ -+ __set_errno (save); -+ retval = 0; -+ } -+ else if ((termios_p->c_cflag & (PARENB | CREAD)) -+ != (k_termios.c_cflag & (PARENB | CREAD)) -+ || ((termios_p->c_cflag & CSIZE) -+ && ((termios_p->c_cflag & CSIZE) -+ != (k_termios.c_cflag & CSIZE)))) -+ { -+ /* It looks like the Linux kernel silently changed the -+ PARENB/CREAD/CSIZE bits in c_cflag. Report it as an -+ error. */ -+ __set_errno (EINVAL); -+ retval = -1; -+ } -+ } -+ -+ return retval; - } - libc_hidden_def (tcsetattr) ---- glibc-2.12-2-gc4ccff1/timezone/zic.c -+++ glibc-2.12-1/timezone/zic.c -@@ -1921,7 +1921,7 @@ const int zonecount; - if (stdrp != NULL && stdrp->r_hiyear == 2037) - return; - } -- if (stdrp == NULL && zp->z_nrules != 0) -+ if (stdrp == NULL && (zp->z_nrules != 0 || zp->z_stdoff != 0)) - return; - abbrvar = (stdrp == NULL) ? "" : stdrp->r_abbrvar; - doabbr(result, zp->z_format, abbrvar, FALSE, TRUE); diff --git a/src/patches/glibc/glibc-getlogin-r.patch b/src/patches/glibc/glibc-getlogin-r.patch deleted file mode 100644 index 9181ce1..0000000 --- a/src/patches/glibc/glibc-getlogin-r.patch +++ /dev/null @@ -1,36 +0,0 @@ -2010-05-05 Ulrich Drepper drepper@redhat.com - - [BZ #11571] - * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): Handle - too small buffers according to the standard. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/getlogin_r.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c -@@ -81,13 +81,22 @@ __getlogin_r_loginuid (name, namesize) - if (tpwd == NULL) - goto fail; - -- strncpy (name, pwd.pw_name, namesize - 1); -- name[namesize - 1] = '\0'; -+ int result = 0; -+ size_t needed = strlen (pwd.pw_name) + 1; -+ if (needed > namesize) -+ { -+ __set_errno (ERANGE); -+ result = ERANGE; -+ goto out; -+ } - -+ memcpy (name, pwd.pw_name, needed); -+ -+ out: - if (use_malloc) - free (buf); - -- return 0; -+ return result; - } - - diff --git a/src/patches/glibc/glibc-localedata.patch b/src/patches/glibc/glibc-localedata.patch deleted file mode 100644 index 15de7c6..0000000 --- a/src/patches/glibc/glibc-localedata.patch +++ /dev/null @@ -1,18 +0,0 @@ -2010-05-04 Andreas Schwab schwab@redhat.com - - * SUPPORTED (SUPPORTED-LOCALES): Fix name of tt_RU.UTF-8@iqtelif - locale. - -Index: glibc-2.12-2-gc4ccff1/localedata/SUPPORTED -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/SUPPORTED -+++ glibc-2.12-2-gc4ccff1/localedata/SUPPORTED -@@ -392,7 +392,7 @@ tr_TR.UTF-8/UTF-8 \ - tr_TR/ISO-8859-9 \ - ts_ZA/UTF-8 \ - tt_RU.UTF-8/UTF-8 \ --tt_RU@iqtelif.UTF-8/UTF-8 \ -+tt_RU.UTF-8@iqtelif/UTF-8 \ - ug_CN/UTF-8 \ - uk_UA.UTF-8/UTF-8 \ - uk_UA/KOI8-U \ diff --git a/src/patches/glibc/glibc-mq_open.patch b/src/patches/glibc/glibc-mq_open.patch deleted file mode 100644 index a7a0f11..0000000 --- a/src/patches/glibc/glibc-mq_open.patch +++ /dev/null @@ -1,34 +0,0 @@ -From: https://sourceware.org/bugzilla/show_bug.cgi?id=12841 - ---- libc/rt/bits/mqueue2.h 2009-05-16 19:23:37.000000000 +0200 -+++ libc/rt/bits/mqueue2.h 2011-06-04 19:05:38.322333773 +0200 -@@ -1,5 +1,5 @@ - /* Checking macros for mq functions. -- Copyright (C) 2007 Free Software Foundation, Inc. -+ Copyright (C) 2007, 2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -25,16 +25,18 @@ - parameter. */ - extern mqd_t mq_open (__const char *__name, int __oflag, ...) - __THROW __nonnull ((1)); --extern mqd_t __mq_open_2 (__const char *__name, int __oflag) __nonnull ((1)); --extern mqd_t __REDIRECT (__mq_open_alias, (__const char *__name, int __oflag, ...), -- mq_open) __nonnull ((1)); -+extern mqd_t __mq_open_2 (__const char *__name, int __oflag) -+ __THROW __nonnull ((1)); -+extern mqd_t __REDIRECT_NTH (__mq_open_alias, (__const char *__name, -+ int __oflag, ...), mq_open) -+ __nonnull ((1)); - __errordecl (__mq_open_wrong_number_of_args, - "mq_open can be called either with 2 or 4 arguments"); - __errordecl (__mq_open_missing_mode_and_attr, - "mq_open with O_CREAT in second argument needs 4 arguments"); - - __extern_always_inline mqd_t --mq_open (__const char *__name, int __oflag, ...) -+__NTH (mq_open (__const char *__name, int __oflag, ...)) - { - if (__va_arg_pack_len () != 0 && __va_arg_pack_len () != 2) - __mq_open_wrong_number_of_args (); diff --git a/src/patches/glibc/glibc-recvmmsg.patch b/src/patches/glibc/glibc-recvmmsg.patch deleted file mode 100644 index 9e3aa7a..0000000 --- a/src/patches/glibc/glibc-recvmmsg.patch +++ /dev/null @@ -1,182 +0,0 @@ -2010-05-21 Andreas Schwab schwab@redhat.com - - * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Add recvmmsg - and internal_recvmmsg. - * sysdeps/unix/sysv/linux/recvmmsg.c: New file. - * sysdeps/unix/sysv/linux/internal_recvmmsg.S: New file. - * sysdeps/unix/sysv/linux/socketcall.h (SOCKOP_recvmmsg): Define. - * sysdeps/unix/sysv/linux/syscalls.list (recvmmsg): Remove. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/Makefile -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/Makefile -@@ -12,7 +12,7 @@ CFLAGS-malloc.c += -DMORECORE_CLEARS=2 - endif - - ifeq ($(subdir),socket) --sysdep_routines += internal_accept4 -+sysdep_routines += internal_accept4 recvmmsg internal_recvmmsg - endif - - ifeq ($(subdir),misc) -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_recvmmsg.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_recvmmsg.S -@@ -0,0 +1,14 @@ -+#include <kernel-features.h> -+#include <sys/syscall.h> -+#if !defined __NR_recvmmsg && defined __NR_socketcall -+# define socket recvmmsg -+# ifdef __ASSUME_RECVMMSG -+# define __socket recvmmsg -+# else -+# define __socket __internal_recvmmsg -+# endif -+# define NARGS 5 -+# define NEED_CANCELLATION -+# define NO_WEAK_ALIAS -+# include <socket.S> -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/kernel-features.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/kernel-features.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/kernel-features.h -@@ -547,3 +547,8 @@ - #if __LINUX_KERNEL_VERSION >= 0x020620 - # define __ASSUME_F_GETOWN_EX 1 - #endif -+ -+/* Support for the recvmmsg syscall was added in 2.6.33. */ -+#if __LINUX_KERNEL_VERSION >= 0x020621 -+# define __ASSUME_RECVMMSG 1 -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/recvmmsg.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/recvmmsg.c -@@ -0,0 +1,100 @@ -+/* Copyright (C) 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Andreas Schwab schwab@redhat.com, 2010. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include <errno.h> -+#include <sys/socket.h> -+ -+#include <sysdep-cancel.h> -+#include <sys/syscall.h> -+#include <kernel-features.h> -+ -+ -+#ifdef __NR_recvmmsg -+int -+recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags, -+ const struct timespec *tmo) -+{ -+ if (SINGLE_THREAD_P) -+ return INLINE_SYSCALL (recvmmsg, 5, fd, vmessages, vlen, flags, tmo); -+ -+ int oldtype = LIBC_CANCEL_ASYNC (); -+ -+ int result = INLINE_SYSCALL (recvmmsg, 5, fd, vmessages, vlen, flags, tmo); -+ -+ LIBC_CANCEL_RESET (oldtype); -+ -+ return result; -+} -+#elif defined __NR_socketcall -+# ifndef __ASSUME_RECVMMSG -+extern int __internal_recvmmsg (int fd, struct mmsghdr *vmessages, -+ unsigned int vlen, int flags, -+ const struct timespec *tmo) -+ attribute_hidden; -+ -+static int have_recvmmsg; -+ -+int -+recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags, -+ const struct timespec *tmo) -+{ -+ if (__builtin_expect (have_recvmmsg >= 0, 1)) -+ { -+ int ret = __internal_recvmmsg (fd, vmessages, vlen, flags, tmo); -+ /* The kernel returns -EINVAL for unknown socket operations. -+ We need to convert that error to an ENOSYS error. */ -+ if (__builtin_expect (ret < 0, 0) -+ && have_recvmmsg == 0 -+ && errno == EINVAL) -+ { -+ /* Try another call, this time with an invalid file -+ descriptor and all other parameters cleared. This call -+ will not cause any harm and it will return -+ immediately. */ -+ ret = __internal_recvmmsg (-1, 0, 0, 0, 0); -+ if (errno == EINVAL) -+ { -+ have_recvmmsg = -1; -+ __set_errno (ENOSYS); -+ } -+ else -+ { -+ have_recvmmsg = 1; -+ __set_errno (EINVAL); -+ } -+ return -1; -+ } -+ return ret; -+ } -+ __set_errno (ENOSYS); -+ return -1; -+} -+# else -+/* When __ASSUME_RECVMMSG recvmmsg is defined in internal_recvmmsg.S. */ -+# endif -+#else -+int -+recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags, -+ const struct timespec *tmo) -+{ -+ __set_errno (ENOSYS); -+ return -1; -+} -+stub_warning (recvmmsg) -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/socketcall.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/socketcall.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/socketcall.h -@@ -44,5 +44,6 @@ - #define SOCKOP_sendmsg 16 - #define SOCKOP_recvmsg 17 - #define SOCKOP_accept4 18 -+#define SOCKOP_recvmmsg 19 - - #endif /* sys/socketcall.h */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/syscalls.list -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/syscalls.list -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/syscalls.list -@@ -53,7 +53,6 @@ prctl EXTRA prctl i:iiiii __prctl prc - putpmsg - putpmsg i:ippii putpmsg - query_module EXTRA query_module i:sipip query_module - quotactl EXTRA quotactl i:isip quotactl --recvmmsg EXTRA recvmmsg Ci:ipiip recvmmsg - remap_file_pages - remap_file_pages i:piiii __remap_file_pages remap_file_pages - sched_getp - sched_getparam i:ip __sched_getparam sched_getparam - sched_gets - sched_getscheduler i:i __sched_getscheduler sched_getscheduler diff --git a/src/patches/glibc/glibc-rh1008310.patch b/src/patches/glibc/glibc-rh1008310.patch deleted file mode 100644 index 3658a9f..0000000 --- a/src/patches/glibc/glibc-rh1008310.patch +++ /dev/null @@ -1,45 +0,0 @@ -diff -Nrup a/malloc/malloc.c b/malloc/malloc.c ---- a/malloc/malloc.c 2013-09-23 17:08:33.698331221 -0400 -+++ b/malloc/malloc.c 2013-09-23 21:04:25.901270645 -0400 -@@ -3879,6 +3879,13 @@ public_mEMALIGn(size_t alignment, size_t - /* Otherwise, ensure that it is at least a minimum chunk size */ - if (alignment < MINSIZE) alignment = MINSIZE; - -+ /* Check for overflow. */ -+ if (bytes > SIZE_MAX - alignment - MINSIZE) -+ { -+ __set_errno (ENOMEM); -+ return 0; -+ } -+ - arena_get(ar_ptr, bytes + alignment + MINSIZE); - if(!ar_ptr) - return 0; -@@ -3924,6 +3931,13 @@ public_vALLOc(size_t bytes) - - size_t pagesz = mp_.pagesize; - -+ /* Check for overflow. */ -+ if (bytes > SIZE_MAX - pagesz - MINSIZE) -+ { -+ __set_errno (ENOMEM); -+ return 0; -+ } -+ - __malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t, - __const __malloc_ptr_t)) = - force_reg (__memalign_hook); -@@ -3975,6 +3989,13 @@ public_pVALLOc(size_t bytes) - size_t page_mask = mp_.pagesize - 1; - size_t rounded_bytes = (bytes + page_mask) & ~(page_mask); - -+ /* Check for overflow. */ -+ if (bytes > SIZE_MAX - 2*pagesz - MINSIZE) -+ { -+ __set_errno (ENOMEM); -+ return 0; -+ } -+ - __malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t, - __const __malloc_ptr_t)) = - force_reg (__memalign_hook); diff --git a/src/patches/glibc/glibc-rh1019916.patch b/src/patches/glibc/glibc-rh1019916.patch deleted file mode 100644 index f67af90..0000000 --- a/src/patches/glibc/glibc-rh1019916.patch +++ /dev/null @@ -1,39 +0,0 @@ -commit 48b67d71ec677d1b3168e52a68b644784cead604 -Author: Andreas Schwab schwab@redhat.com -Date: Wed Sep 14 12:12:25 2011 +0200 - - Also relocate in dependency order when doing symbol dependency testing - -diff --git a/elf/rtld.c b/elf/rtld.c -index 764140d..324d979 100644 ---- a/elf/rtld.c -+++ b/elf/rtld.c -@@ -2027,24 +2027,21 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", - { - /* We have to do symbol dependency testing. */ - struct relocate_args args; -- struct link_map *l; -+ unsigned int i; - - args.reloc_mode = GLRO(dl_lazy) ? RTLD_LAZY : 0; - -- l = main_map; -- while (l->l_next != NULL) -- l = l->l_next; -- do -+ i = main_map->l_searchlist.r_nlist; -+ while (i-- > 0) - { -+ struct link_map *l = main_map->l_initfini[i]; - if (l != &GL(dl_rtld_map) && ! l->l_faked) - { - args.l = l; - _dl_receive_error (print_unresolved, relocate_doit, - &args); - } -- l = l->l_prev; - } -- while (l != NULL); - - if ((GLRO(dl_debug_mask) & DL_DEBUG_PRELINK) - && rtld_multiple_ref) diff --git a/src/patches/glibc/glibc-rh1022022.patch b/src/patches/glibc/glibc-rh1022022.patch deleted file mode 100644 index 6d23bb1..0000000 --- a/src/patches/glibc/glibc-rh1022022.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c -index 81e928a..05883bd 100644 ---- a/sysdeps/posix/getaddrinfo.c -+++ b/sysdeps/posix/getaddrinfo.c -@@ -832,8 +832,13 @@ gaih_inet (const char *name, const struct gaih_service *service, - while (!no_more) - { - no_data = 0; -- nss_gethostbyname4_r fct4 -- = __nss_lookup_function (nip, "gethostbyname4_r"); -+ nss_gethostbyname4_r fct4 = NULL; -+ -+ /* gethostbyname4_r sends out parallel A and AAAA queries and -+ is thus only suitable for PF_UNSPEC. */ -+ if (req->ai_family == PF_UNSPEC) -+ fct4 = __nss_lookup_function (nip, "gethostbyname4_r"); -+ - if (fct4 != NULL) - { - int herrno; diff --git a/src/patches/glibc/glibc-rh1023306.patch b/src/patches/glibc/glibc-rh1023306.patch deleted file mode 100644 index 738052d..0000000 --- a/src/patches/glibc/glibc-rh1023306.patch +++ /dev/null @@ -1,64 +0,0 @@ -diff -pruN glibc-2.17-c758a686/nptl/Makefile glibc-2.17-c758a686.new/nptl/Makefile ---- glibc-2.17-c758a686/nptl/Makefile 2013-07-31 11:51:24.882747234 +0530 -+++ glibc-2.17-c758a686.new/nptl/Makefile 2013-07-31 11:58:55.964731526 +0530 -@@ -276,10 +276,7 @@ gen-as-const-headers = pthread-errnos.sy - LDFLAGS-tst-cond24 = -lrt - LDFLAGS-tst-cond25 = -lrt - --# The size is 1MB + 4KB. The extra 4KB has been added to prevent allocatestack --# from resizing the input size to avoid the 64K aliasing conflict on Intel --# processors. --DEFAULT_STACKSIZE=1052672 -+DEFAULT_STACKSIZE=1048576 - CFLAGS-tst-default-attr.c = -DDEFAULT_STACKSIZE=$(DEFAULT_STACKSIZE) - tst-default-attr-ENV = GLIBC_PTHREAD_STACKSIZE=$(DEFAULT_STACKSIZE) - -diff -pruN glibc-2.17-c758a686/nptl/tst-default-attr.c glibc-2.17-c758a686.new/nptl/tst-default-attr.c ---- glibc-2.17-c758a686/nptl/tst-default-attr.c 2013-07-31 11:51:24.885747234 +0530 -+++ glibc-2.17-c758a686.new/nptl/tst-default-attr.c 2013-07-31 12:18:10.016691337 +0530 -@@ -38,6 +38,7 @@ - - /* DEFAULT_STACKSIZE macro is defined in the Makefile. */ - static size_t stacksize = DEFAULT_STACKSIZE; -+long int pagesize; - - static int - verify_stacksize_result (pthread_attr_t *attr) -@@ -46,12 +47,20 @@ verify_stacksize_result (pthread_attr_t - - RETURN_IF_FAIL (pthread_attr_getstacksize, attr, &stack); - -- if (stacksize != stack) -+ /* pthread_create perturbs the stack size by a page if it aligns to 64K to -+ avoid the 64K aliasing conflict. We cannot simply add 4K to the size in -+ the Makefile because it breaks the test on powerpc since the page size -+ there is 64K, resulting in a resize in __pthread_initialize_minimal. -+ Hence, our check is to ensure that the stack size is not more than a page -+ more than the requested size. */ -+ if (stack < stacksize || stack > stacksize + pagesize) - { - printf ("failed to set default stacksize (%zu, %zu)\n", stacksize, stack); - return 1; - } - -+ printf ("Requested %zu and got %zu\n", stacksize, stack); -+ - return 0; - } - -@@ -101,6 +110,15 @@ run_threads (void) - static int - do_test (void) - { -+ pthread_attr_t attr; -+ -+ pagesize = sysconf (_SC_PAGESIZE); -+ if (pagesize < 0) -+ { -+ printf ("sysconf failed: %s\n", strerror (errno)); -+ return 1; -+ } -+ - RETURN_IF_FAIL (run_threads); - return 0; - } diff --git a/src/patches/glibc/glibc-rh1025933.patch b/src/patches/glibc/glibc-rh1025933.patch deleted file mode 100644 index 9dc98b9..0000000 --- a/src/patches/glibc/glibc-rh1025933.patch +++ /dev/null @@ -1,287 +0,0 @@ -commit 0699f766b10c86912b75f35bef697106b70c1cf6 -Author: Carlos O'Donell carlos@redhat.com -Date: Thu Apr 10 18:31:53 2014 -0400 - - nscd: Make SELinux checks dynamic. - - The SELinux team has indicated to me that glibc's SELinux checks - in nscd are not being carried out as they would expect the API - to be used today. They would like to move away from static header - defines for class and permissions and instead use dynamic checks - at runtime that provide an answer which is dependent on the runtime - status of SELinux i.e. more dynamic. - - The following patch is a minimal change that moves us forward in - this direction. - - It does the following: - - * Stop checking for SELinux headers that define NSCD__SHMEMHOST. - Check only for the presence or absence of the library. - - * Don't encode the specific SELinux permission constants into a - table at build time, and instead use the symbolic name for the - permission as expected. - - * Lookup the "What do we do if we don't know this permission?" - policy and use that if we find SELinux's policy is older than - the glibc policy e.g. we make a request for a permission that - SELinux doesn't know about. - - * Lastly, translate the class and permission and then make - the permission check. This is done every time we lookup - a permission, and this is the expected way to use the API. - SELinux will optimize this for us, and we expect the network - latencies to hide these extra library calls. - - Tested on x86, x86-64, and via Fedora Rawhide since November 2013. - - See: - https://sourceware.org/ml/libc-alpha/2014-04/msg00179.html - -diff --git a/configure b/configure -index abefcdb..8b0b222 100755 ---- a/configure -+++ b/configure -@@ -7774,64 +7774,10 @@ else - have_selinux=no - fi - -- # See if we have the SELinux header with the NSCD permissions in it. -- if test x$have_selinux = xyes ; then -- { $as_echo "$as_me:$LINENO: checking for NSCD Flask permissions in selinux/av_permissions.h" >&5 --$as_echo_n "checking for NSCD Flask permissions in selinux/av_permissions.h... " >&6; } -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include <selinux/av_permissions.h> --int --main () --{ --#ifdef NSCD__SHMEMHOST -- return 0; -- #else -- #error NSCD__SHMEMHOST not defined -- #endif -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *"* | *`* | *\*) ac_try_echo=$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo=""$as_me:$LINENO: $ac_try_echo"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: $? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- have_selinux=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- have_selinux=no --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -- { $as_echo "$as_me:$LINENO: result: $have_selinux" >&5 --$as_echo "$have_selinux" >&6; } -- fi -- - if test x$with_selinux = xyes ; then - if test x$have_selinux = xno ; then -- { { $as_echo "$as_me:$LINENO: error: SELinux explicitly required, but sufficiently recent SELinux library not found" >&5 --$as_echo "$as_me: error: SELinux explicitly required, but sufficiently recent SELinux library not found" >&2;} -+ { { $as_echo "$as_me:$LINENO: error: SELinux explicitly required, but SELinux library not found" >&5 -+$as_echo "$as_me: error: SELinux explicitly required, but SELinux library not found" >&2;} - { (exit 1); exit 1; }; } - fi - fi -diff --git a/configure.in b/configure.in -index 6291872..97a9591 100644 ---- a/configure.in -+++ b/configure.in -@@ -1945,22 +1945,9 @@ else - # See if we have the SELinux library - AC_CHECK_LIB(selinux, is_selinux_enabled, - have_selinux=yes, have_selinux=no) -- # See if we have the SELinux header with the NSCD permissions in it. -- if test x$have_selinux = xyes ; then -- AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h]) -- AC_TRY_COMPILE([#include <selinux/av_permissions.h>], -- [#ifdef NSCD__SHMEMHOST -- return 0; -- #else -- #error NSCD__SHMEMHOST not defined -- #endif], -- have_selinux=yes, have_selinux=no) -- AC_MSG_RESULT($have_selinux) -- fi -- - if test x$with_selinux = xyes ; then - if test x$have_selinux = xno ; then -- AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found]) -+ AC_MSG_ERROR([SELinux explicitly required, but SELinux library not found]) - fi - fi - fi -diff --git a/nscd/selinux.c b/nscd/selinux.c -index 46b0ea9..9a8a5a8 100644 ---- a/nscd/selinux.c -+++ b/nscd/selinux.c -@@ -28,7 +28,6 @@ - #include <syslog.h> - #include <unistd.h> - #include <sys/prctl.h> --#include <selinux/av_permissions.h> - #include <selinux/avc.h> - #include <selinux/flask.h> - #include <selinux/selinux.h> -@@ -44,35 +43,31 @@ - /* Global variable to tell if the kernel has SELinux support. */ - int selinux_enabled; - --/* Define mappings of access vector permissions to request types. */ --static const access_vector_t perms[LASTREQ] = -+/* Define mappings of request type to AVC permission name. */ -+static const char *perms[LASTREQ] = - { -- [GETPWBYNAME] = NSCD__GETPWD, -- [GETPWBYUID] = NSCD__GETPWD, -- [GETGRBYNAME] = NSCD__GETGRP, -- [GETGRBYGID] = NSCD__GETGRP, -- [GETHOSTBYNAME] = NSCD__GETHOST, -- [GETHOSTBYNAMEv6] = NSCD__GETHOST, -- [GETHOSTBYADDR] = NSCD__GETHOST, -- [GETHOSTBYADDRv6] = NSCD__GETHOST, -- [GETSTAT] = NSCD__GETSTAT, -- [SHUTDOWN] = NSCD__ADMIN, -- [INVALIDATE] = NSCD__ADMIN, -- [GETFDPW] = NSCD__SHMEMPWD, -- [GETFDGR] = NSCD__SHMEMGRP, -- [GETFDHST] = NSCD__SHMEMHOST, -- [GETAI] = NSCD__GETHOST, -- [INITGROUPS] = NSCD__GETGRP, --#ifdef NSCD__GETSERV -- [GETSERVBYNAME] = NSCD__GETSERV, -- [GETSERVBYPORT] = NSCD__GETSERV, -- [GETFDSERV] = NSCD__SHMEMSERV, --#endif --#ifdef NSCD__GETNETGRP -- [GETNETGRENT] = NSCD__GETNETGRP, -- [INNETGR] = NSCD__GETNETGRP, -- [GETFDNETGR] = NSCD__SHMEMNETGRP, --#endif -+ [GETPWBYNAME] = "getpwd", -+ [GETPWBYUID] = "getpwd", -+ [GETGRBYNAME] = "getgrp", -+ [GETGRBYGID] = "getgrp", -+ [GETHOSTBYNAME] = "gethost", -+ [GETHOSTBYNAMEv6] = "gethost", -+ [GETHOSTBYADDR] = "gethost", -+ [GETHOSTBYADDRv6] = "gethost", -+ [SHUTDOWN] = "admin", -+ [GETSTAT] = "getstat", -+ [INVALIDATE] = "admin", -+ [GETFDPW] = "shmempwd", -+ [GETFDGR] = "shmemgrp", -+ [GETFDHST] = "shmemhost", -+ [GETAI] = "gethost", -+ [INITGROUPS] = "getgrp", -+ [GETSERVBYNAME] = "getserv", -+ [GETSERVBYPORT] = "getserv", -+ [GETFDSERV] = "shmemserv", -+ [GETNETGRENT] = "getnetgrp", -+ [INNETGR] = "getnetgrp", -+ [GETFDNETGR] = "shmemnetgrp", - }; - - /* Store an entry ref to speed AVC decisions. */ -@@ -344,7 +339,16 @@ nscd_avc_init (void) - - - /* Check the permission from the caller (via getpeercon) to nscd. -- Returns 0 if access is allowed, 1 if denied, and -1 on error. */ -+ Returns 0 if access is allowed, 1 if denied, and -1 on error. -+ -+ The SELinux policy, enablement, and permission bits are all dynamic and the -+ caching done by glibc is not entirely correct. This nscd support should be -+ rewritten to use selinux_check_permission. A rewrite is risky though and -+ requires some refactoring. Currently we use symbolic mappings instead of -+ compile time constants (which SELinux upstream says are going away), and we -+ use security_deny_unknown to determine what to do if selinux-policy* doesn't -+ have a definition for the the permission or object class we are looking -+ up. */ - int - nscd_request_avc_has_perm (int fd, request_type req) - { -@@ -354,6 +358,33 @@ nscd_request_avc_has_perm (int fd, request_type req) - security_id_t ssid = NULL; - security_id_t tsid = NULL; - int rc = -1; -+ security_class_t sc_nscd; -+ access_vector_t perm; -+ int avc_deny_unknown; -+ -+ /* Check if SELinux denys or allows unknown object classes -+ and permissions. It is 0 if they are allowed, 1 if they -+ are not allowed and -1 on error. */ -+ if ((avc_deny_unknown = security_deny_unknown ()) == -1) -+ dbg_log (_("Error querying policy for undefined object classes " -+ "or permissions.")); -+ -+ /* Get the security class for nscd. If this fails we will likely be -+ unable to do anything unless avc_deny_unknown is 0. */ -+ sc_nscd = string_to_security_class ("nscd"); -+ if (perm == 0 && avc_deny_unknown == 1) -+ dbg_log (_("Error getting security class for nscd.")); -+ -+ /* Convert permission to AVC bits. */ -+ perm = string_to_av_perm (sc_nscd, perms[req]); -+ if (perm == 0 && avc_deny_unknown == 1) -+ dbg_log (_("Error translating permission name " -+ ""%s" to access vector bit."), perms[req]); -+ -+ /* If the nscd security class was not found or perms were not -+ found and AVC does not deny unknown values then allow it. */ -+ if ((sc_nscd == 0 || perm == 0) && avc_deny_unknown == 0) -+ return 0; - - if (getpeercon (fd, &scon) < 0) - { -@@ -372,15 +403,13 @@ nscd_request_avc_has_perm (int fd, request_type req) - goto out; - } - --#ifndef NSCD__GETSERV -- if (perms[req] == 0) -- { -- dbg_log (_("compile-time support for database policy missing")); -- goto out; -- } --#endif -- -- rc = avc_has_perm (ssid, tsid, SECCLASS_NSCD, perms[req], &aeref, NULL) < 0; -+ /* The SELinux API for avc_has_perm conflates access denied and error into -+ the return code -1, while nscd_request_avs_has_perm has distinct error -+ (-1) and denied (1) return codes. We map the avc_has_perm access denied or -+ error into an access denied at the nscd interface level (we do accurately -+ report error for the getpeercon, getcon, and avc_context_to_sid interfaces -+ used above). */ -+ rc = avc_has_perm (ssid, tsid, sc_nscd, perm, &aeref, NULL) < 0; - - out: - if (scon) diff --git a/src/patches/glibc/glibc-rh1027101.patch b/src/patches/glibc/glibc-rh1027101.patch deleted file mode 100644 index 7825682..0000000 --- a/src/patches/glibc/glibc-rh1027101.patch +++ /dev/null @@ -1,58 +0,0 @@ -commit 362b47fe09ca9a928d444c7e2f7992f7f61bfc3e -Author: Maxim Kuvyrkov maxim@kugelworks.com -Date: Tue Dec 24 09:44:50 2013 +1300 - - Fix race in free() of fastbin chunk: BZ #15073 - - Perform sanity check only if we have_lock. Due to lockless nature of fastbins - we need to be careful derefencing pointers to fastbin entries (chunksize(old) - in this case) in multithreaded environments. - - The fix is to add have_lock to the if-condition checks. The rest of the patch - only makes code more readable. - - * malloc/malloc.c (_int_free): Perform sanity check only if we - have_lock. - -diff --git a/malloc/malloc.c b/malloc/malloc.c -index b1668b5..5e419ad 100644 ---- a/malloc/malloc.c -+++ b/malloc/malloc.c -@@ -3783,25 +3783,29 @@ _int_free(mstate av, mchunkptr p, int have_lock) - fb = &fastbin (av, idx); - - #ifdef ATOMIC_FASTBINS -- mchunkptr fd; -- mchunkptr old = *fb; -+ /* Atomically link P to its fastbin: P->FD = *FB; *FB = P; */ -+ mchunkptr old = *fb, old2; - unsigned int old_idx = ~0u; - do - { -- /* Another simple check: make sure the top of the bin is not the -- record we are going to add (i.e., double free). */ -+ /* Check that the top of the bin is not the record we are going to add -+ (i.e., double free). */ - if (__builtin_expect (old == p, 0)) - { - errstr = "double free or corruption (fasttop)"; - goto errout; - } -- if (old != NULL) -+ /* Check that size of fastbin chunk at the top is the same as -+ size of the chunk that we are adding. We can dereference OLD -+ only if we have the lock, otherwise it might have already been -+ deallocated. See use of OLD_IDX below for the actual check. */ -+ if (have_lock && old != NULL) - old_idx = fastbin_index(chunksize(old)); -- p->fd = fd = old; -+ p->fd = old2 = old; - } -- while ((old = catomic_compare_and_exchange_val_rel (fb, p, fd)) != fd); -+ while ((old = catomic_compare_and_exchange_val_rel (fb, p, old2)) != old2); - -- if (fd != NULL && __builtin_expect (old_idx != idx, 0)) -+ if (have_lock && old != NULL && __builtin_expect (old_idx != idx, 0)) - { - errstr = "invalid fastbin entry (free)"; - goto errout; diff --git a/src/patches/glibc/glibc-rh1027261.patch b/src/patches/glibc/glibc-rh1027261.patch deleted file mode 100644 index 8599cf0..0000000 --- a/src/patches/glibc/glibc-rh1027261.patch +++ /dev/null @@ -1,28 +0,0 @@ -commit 4d653a59ffeae0f46f76a40230e2cfa9587b7e7e -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Fri May 30 22:43:52 2014 +0530 - - Add mmap usage in malloc_info output - - The current malloc_info xml output only has information about - allocations on the heap. Display information about number of mappings - and total mmapped size to this to complete the picture. - -diff -pruN a/malloc/malloc.c b/malloc/malloc.c ---- a/malloc/malloc.c 2014-06-02 07:35:22.573256155 +0530 -+++ b/malloc/malloc.c 2014-06-02 07:34:58.856257177 +0530 -@@ -6553,12 +6553,14 @@ malloc_info (int options, FILE *fp) - fprintf (fp, - "<total type="fast" count="%zu" size="%zu"/>\n" - "<total type="rest" count="%zu" size="%zu"/>\n" -+ "<total type="mmap" count="%d" size="%zu"/>\n" - "<system type="current" size="%zu"/>\n" - "<system type="max" size="%zu"/>\n" - "<aspace type="total" size="%zu"/>\n" - "<aspace type="mprotect" size="%zu"/>\n" - "</malloc>\n", - total_nfastblocks, total_fastavail, total_nblocks, total_avail, -+ mp_.n_mmaps, mp_.mmapped_mem, - total_system, total_max_system, - total_aspace, total_aspace_mprotect); - diff --git a/src/patches/glibc/glibc-rh1028285.patch b/src/patches/glibc/glibc-rh1028285.patch deleted file mode 100644 index 3bf8c4f..0000000 --- a/src/patches/glibc/glibc-rh1028285.patch +++ /dev/null @@ -1,149 +0,0 @@ -From a5675717e35a02a3eba7e13701c6f9c0d7222e13 Mon Sep 17 00:00:00 2001 -From: Adhemerval Zanella azanella@linux.vnet.ibm.com -Date: Fri, 7 Jun 2013 14:50:23 -0500 -Subject: [PATCH 2/2] PowerPC: gettimeofday optimization by using IFUNC - -Backport of ef26eece6331a1f6d959818e37c438cc7ce68e53 from master. ---- - sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h | 10 ++++ - sysdeps/unix/sysv/linux/powerpc/gettimeofday.c | 49 +++++++++++++++------- - 2 files changed, 44 insertions(+), 15 deletions(-) - -commit 76a9b9986141b1a7d9fd290c349d27fcee780c7a -Author: Adhemerval Zanella azanella@linux.vnet.ibm.com -Date: Thu Nov 7 05:34:22 2013 -0600 - - PowerPC: Fix vDSO missing ODP entries - - This patch fixes the vDSO symbol used directed in IFUNC resolver where - they do not have an associated ODP entry leading to undefined behavior - in some cases. It adds an artificial OPD static entry to such cases - and set its TOC to non 0 to avoid triggering lazy resolutions. - -commit d98720e07f67fbeec00f9e1347840404240d3c48 -Author: Adhemerval Zanella azanella@linux.vnet.ibm.com -Date: Mon Jan 20 12:29:51 2014 -0600 - - PowerPC: Fix gettimeofday ifunc selection - - The IFUNC selector for gettimeofday runs before _libc_vdso_platform_setup where - __vdso_gettimeofday is set. The selector then sets __gettimeofday (the internal - version used within GLIBC) to use the system call version instead of the vDSO one. - This patch changes the check if vDSO is available to get its value directly - instead of rely on __vdso_gettimeofday. - - This patch changes it by getting the vDSO value directly. - - It fixes BZ#16431. - -diff -pruN a/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h b/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h ---- a/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h 2014-05-20 14:46:51.026871920 +0530 -+++ b/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h 2014-05-20 14:44:39.294877321 +0530 -@@ -33,6 +33,36 @@ extern void *__vdso_get_tbfreq; - - extern void *__vdso_getcpu; - -+#if defined(__PPC64__) || defined(__powerpc64__) -+/* The correct solution is for _dl_vdso_vsym to return the address of the OPD -+ for the kernel VDSO function. That address would then be stored in the -+ __vdso_* variables and returned as the result of the IFUNC resolver function. -+ Yet, the kernel does not contain any OPD entries for the VDSO functions -+ (incomplete implementation). However, PLT relocations for IFUNCs still expect -+ the address of an OPD to be returned from the IFUNC resolver function (since -+ PLT entries on PPC64 are just copies of OPDs). The solution for now is to -+ create an artificial static OPD for each VDSO function returned by a resolver -+ function. The TOC value is set to a non-zero value to avoid triggering lazy -+ symbol resolution via .glink0/.plt0 for a zero TOC (requires thread-safe PLT -+ sequences) when the dynamic linker isn't prepared for it e.g. RTLD_NOW. None -+ of the kernel VDSO routines use the TOC or AUX values so any non-zero value -+ will work. Note that function pointer comparisons will not use this artificial -+ static OPD since those are resolved via ADDR64 relocations and will point at -+ the non-IFUNC default OPD for the symbol. Lastly, because the IFUNC relocations -+ are processed immediately at startup the resolver functions and this code need -+ not be thread-safe, but if the caller writes to a PLT slot it must do so in a -+ thread-safe manner with all the required barriers. */ -+#define VDSO_IFUNC_RET(value) \ -+ ({ \ -+ static Elf64_FuncDesc vdso_opd = { .fd_toc = ~0x0 }; \ -+ vdso_opd.fd_func = (Elf64_Addr)value; \ -+ &vdso_opd; \ -+ }) -+ -+#else -+#define VDSO_IFUNC_RET(value) ((void *) (value)) -+#endif -+ - #endif - - #endif /* _LIBC_VDSO_H */ -diff -pruN a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c ---- a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c 2010-05-04 16:57:23.000000000 +0530 -+++ b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c 2014-05-20 14:44:39.298877321 +0530 -@@ -16,27 +16,51 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - --#include <sysdep.h> --#include <bp-checks.h> --#include <stddef.h> - #include <sys/time.h> --#include <time.h> --#include <hp-timing.h> - --#undef __gettimeofday --#include <bits/libc-vdso.h> -+#ifdef SHARED - --/* Get the current time of day and timezone information, -- putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled. -- Returns 0 on success, -1 on errors. */ -- --int --__gettimeofday (tv, tz) -- struct timeval *tv; -- struct timezone *tz; -+# include <dl-vdso.h> -+# include <bits/libc-vdso.h> -+# include <dl-machine.h> -+ -+void *gettimeofday_ifunc (void) __asm__ ("__gettimeofday"); -+ -+static int -+__gettimeofday_syscall (struct timeval *tv, struct timezone *tz) -+{ -+ return INLINE_SYSCALL (gettimeofday, 2, tv, tz); -+} -+ -+void * -+gettimeofday_ifunc (void) -+{ -+ PREPARE_VERSION (linux2615, "LINUX_2.6.15", 123718565); -+ -+ /* If the vDSO is not available we fall back syscall. */ -+ void *vdso_gettimeofday = _dl_vdso_vsym ("__kernel_gettimeofday", &linux2615); -+ return (vdso_gettimeofday ? VDSO_IFUNC_RET (vdso_gettimeofday) -+ : (void*)__gettimeofday_syscall); -+} -+asm (".type __gettimeofday, %gnu_indirect_function"); -+ -+/* This is doing "libc_hidden_def (__gettimeofday)" but the compiler won't -+ let us do it in C because it doesn't know we're defining __gettimeofday -+ here in this file. */ -+asm (".globl __GI___gettimeofday\n" -+ "__GI___gettimeofday = __gettimeofday"); -+ -+#else -+ -+# include <sysdep.h> -+# include <errno.h> -+ -+int -+__gettimeofday (struct timeval *tv, struct timezone *tz) - { -- return INLINE_VSYSCALL (gettimeofday, 2, CHECK_1 (tv), CHECK_1 (tz)); -+ return INLINE_SYSCALL (gettimeofday, 2, tv, tz); - } - -+#endif - INTDEF (__gettimeofday) - weak_alias (__gettimeofday, gettimeofday) diff --git a/src/patches/glibc/glibc-rh1032628.patch b/src/patches/glibc/glibc-rh1032628.patch deleted file mode 100644 index 6140c19..0000000 --- a/src/patches/glibc/glibc-rh1032628.patch +++ /dev/null @@ -1,166 +0,0 @@ -commit 028478fa40d85a73b19638dbe3f83b1acebf370c -Author: Ulrich Drepper drepper@gmail.com -Date: Thu Mar 10 12:51:33 2011 -0500 - - Fix copy relocations handling of unique objects. - - 2011-03-06 Ulrich Drepper drepper@gmail.com - -and a part of: - -commit 33f85a3fb9fe432e0ebf6a3481bc2d5e29cb605f -Author: Ulrich Drepper drepper@gmail.com -Date: Thu Mar 10 03:18:21 2011 -0500 - - Don't run tests checking xecutable stack when SELinux is enforcing. - -since the latter incorrectly had a bit of the former changes. - -Additionally, the test case needs -lstdc++ to build. - -diff --git a/elf/Makefile b/elf/Makefile -index c427679..56cb1b1 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -201,7 +201,7 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \ - unload3 unload4 unload5 unload6 unload7 unload8 tst-global1 order2 \ - tst-audit1 tst-audit2 tst-audit9 \ - tst-stackguard1 tst-addr1 tst-thrlock \ -- tst-unique1 tst-unique2 -+ tst-unique1 tst-unique2 tst-unique3 - # reldep9 - test-srcs = tst-pathopt - tests-execstack-yes = tst-execstack tst-execstack-needed tst-execstack-prog -@@ -255,6 +255,7 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ - order2mod1 order2mod2 order2mod3 order2mod4 \ - tst-unique1mod1 tst-unique1mod2 \ - tst-unique2mod1 tst-unique2mod2 \ -+ tst-unique3lib tst-unique3lib2 \ - tst-auditmod9a tst-auditmod9b - ifeq (yes,$(have-initfini-array)) - modules-names += tst-array2dep tst-array5dep -@@ -1178,6 +1179,11 @@ $(objpfx)tst-unique1.out: $(objpfx)tst-unique1mod1.so \ - $(objpfx)tst-unique2: $(libdl) $(objpfx)tst-unique2mod1.so - $(objpfx)tst-unique2.out: $(objpfx)tst-unique2mod2.so - -+LDLIBS-tst-unique3lib.so = -lstdc++ -+LDLIBS-tst-unique3lib2.so = -lstdc++ -+$(objpfx)tst-unique3: $(libdl) $(objpfx)tst-unique3lib.so -+$(objpfx)tst-unique3.out: $(objpfx)tst-unique3lib2.so -+ - ifeq (yes,$(config-cflags-avx)) - CFLAGS-tst-audit4.c += -mavx - CFLAGS-tst-auditmod4a.c += -mavx -diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c -index 78c8669..874a4bb 100644 ---- a/elf/dl-lookup.c -+++ b/elf/dl-lookup.c -@@ -364,8 +363,19 @@ do_lookup_x (const char *undef_name, uint_fast32_t new_hash, - if (entries[idx].hashval == new_hash - && strcmp (entries[idx].name, undef_name) == 0) - { -- result->s = entries[idx].sym; -- result->m = (struct link_map *) entries[idx].map; -+ if ((type_class & ELF_RTYPE_CLASS_COPY) != 0) -+ { -+ /* We possibly have to initialize the central -+ copy from the copy addressed through the -+ relocation. */ -+ result->s = sym; -+ result->m = (struct link_map *) map; -+ } -+ else -+ { -+ result->s = entries[idx].sym; -+ result->m = (struct link_map *) entries[idx].map; -+ } - __rtld_lock_unlock_recursive (tab->lock); - return 1; - } -diff --git a/elf/tst-unique3.cc b/elf/tst-unique3.cc -new file mode 100644 -index 0000000..b2c9593 ---- /dev/null -+++ b/elf/tst-unique3.cc -@@ -0,0 +1,23 @@ -+#include "tst-unique3.h" -+#include <cstdio> -+#include "../dlfcn/dlfcn.h" -+ -+int t = S<char>::i; -+ -+int -+main (void) -+{ -+ std::printf ("%d %d\n", S<char>::i, t); -+ int result = S<char>::i++ != 1 || t != 1; -+ result |= in_lib (); -+ void *d = dlopen ("$ORIGIN/tst-unique3lib2.so", RTLD_LAZY); -+ int (*fp) (); -+ if (d == NULL || (fp = (int(*)()) dlsym (d, "in_lib2")) == NULL) -+ { -+ std::printf ("failed to get symbol in_lib2\n"); -+ return 1; -+ } -+ result |= fp (); -+ dlclose (d); -+ return result; -+} -diff --git a/elf/tst-unique3.h b/elf/tst-unique3.h -new file mode 100644 -index 0000000..716d236 ---- /dev/null -+++ b/elf/tst-unique3.h -@@ -0,0 +1,8 @@ -+// BZ 12510 -+template<typename T> -+struct S -+{ -+ static int i; -+}; -+ -+extern int in_lib (void); -diff --git a/elf/tst-unique3lib.cc b/elf/tst-unique3lib.cc -new file mode 100644 -index 0000000..fa8e85a ---- /dev/null -+++ b/elf/tst-unique3lib.cc -@@ -0,0 +1,11 @@ -+#include <cstdio> -+#include "tst-unique3.h" -+template<typename T> int S<T>::i = 1; -+static int i = S<char>::i; -+ -+int -+in_lib (void) -+{ -+ std::printf ("in_lib: %d %d\n", S<char>::i, i); -+ return S<char>::i++ != 2 || i != 1; -+} -diff --git a/elf/tst-unique3lib2.cc b/elf/tst-unique3lib2.cc -new file mode 100644 -index 0000000..17d817e ---- /dev/null -+++ b/elf/tst-unique3lib2.cc -@@ -0,0 +1,12 @@ -+#include <cstdio> -+#include "tst-unique3.h" -+ -+template<typename T> int S<T>::i; -+ -+extern "C" -+int -+in_lib2 () -+{ -+ std::printf ("in_lib2: %d\n", S<char>::i); -+ return S<char>::i != 3; -+} -diff --git a/include/bits/dlfcn.h b/include/bits/dlfcn.h -index cb4a5c2..c31a645 100644 ---- a/include/bits/dlfcn.h -+++ b/include/bits/dlfcn.h -@@ -1,4 +1,3 @@ - #include_next <bits/dlfcn.h> - --extern void _dl_mcount_wrapper_check (void *__selfpc); - libc_hidden_proto (_dl_mcount_wrapper_check) diff --git a/src/patches/glibc/glibc-rh1039988.patch b/src/patches/glibc/glibc-rh1039988.patch deleted file mode 100644 index 253b311..0000000 --- a/src/patches/glibc/glibc-rh1039988.patch +++ /dev/null @@ -1,141 +0,0 @@ -commit 9a3c6a6ff602c88d7155139a7d7d0000b7b7e946 -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Thu Jan 2 10:05:27 2014 +0530 - - Fix return code from getent netgroup when the netgroup is not found (bz #16366) - - nscd incorrectly returns a success even when the netgroup in question - is not found and adds a positive result in the cache. this patch - fixes this behaviour by adding a negative lookup entry to cache and - returning an error when the netgroup is not found. - -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c -index 50936ee..9fc1664 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c -@@ -65,6 +65,55 @@ struct dataset - char strdata[0]; - }; - -+/* Sends a notfound message and prepares a notfound dataset to write to the -+ cache. Returns true if there was enough memory to allocate the dataset and -+ returns the dataset in DATASETP, total bytes to write in TOTALP and the -+ timeout in TIMEOUTP. KEY_COPY is set to point to the copy of the key in the -+ dataset. */ -+static bool -+do_notfound (struct database_dyn *db, int fd, request_header *req, -+ const char *key, struct dataset **datasetp, ssize_t *totalp, -+ time_t *timeoutp, char **key_copy) -+{ -+ struct dataset *dataset; -+ ssize_t total; -+ time_t timeout; -+ bool cacheable = false; -+ -+ total = sizeof (notfound); -+ timeout = time (NULL) + db->negtimeout; -+ -+ if (fd != -1) -+ TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); -+ -+ dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1); -+ /* If we cannot permanently store the result, so be it. */ -+ if (dataset != NULL) -+ { -+ dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -+ dataset->head.recsize = total; -+ dataset->head.notfound = true; -+ dataset->head.nreloads = 0; -+ dataset->head.usable = true; -+ -+ /* Compute the timeout time. */ -+ timeout = dataset->head.timeout = time (NULL) + db->negtimeout; -+ dataset->head.ttl = db->negtimeout; -+ -+ /* This is the reply. */ -+ memcpy (&dataset->resp, ¬found, total); -+ -+ /* Copy the key data. */ -+ memcpy (dataset->strdata, key, req->key_len); -+ *key_copy = dataset->strdata; -+ -+ cacheable = true; -+ } -+ *timeoutp = timeout; -+ *totalp = total; -+ *datasetp = dataset; -+ return cacheable; -+} - - static time_t - addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, -@@ -84,6 +133,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - struct dataset *dataset; - bool cacheable = false; - ssize_t total; -+ bool found = false; - - char *key_copy = NULL; - struct __netgrent data; -@@ -103,35 +153,8 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - && __nss_database_lookup ("netgroup", NULL, NULL, &netgroup_database)) - { - /* No such service. */ -- total = sizeof (notfound); -- timeout = time (NULL) + db->negtimeout; -- -- if (fd != -1) -- TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); -- -- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1); -- /* If we cannot permanently store the result, so be it. */ -- if (dataset != NULL) -- { -- dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -- dataset->head.recsize = total; -- dataset->head.notfound = true; -- dataset->head.nreloads = 0; -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = time (NULL) + db->negtimeout; -- dataset->head.ttl = db->negtimeout; -- -- /* This is the reply. */ -- memcpy (&dataset->resp, ¬found, total); -- -- /* Copy the key data. */ -- memcpy (dataset->strdata, key, req->key_len); -- -- cacheable = true; -- } -- -+ cacheable = do_notfound (db, fd, req, key, &dataset, &total, &timeout, -+ &key_copy); - goto writeout; - } - -@@ -167,6 +190,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - - if (status == NSS_STATUS_SUCCESS) - { -+ found = true; - union - { - enum nss_status (*f) (struct __netgrent *, char *, size_t, -@@ -326,6 +350,15 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - } - } - -+ /* No results. Return a failure and write out a notfound record in the -+ cache. */ -+ if (!found) -+ { -+ cacheable = do_notfound (db, fd, req, key, &dataset, &total, &timeout, -+ &key_copy); -+ goto writeout; -+ } -+ - total = buffilled; - - /* Fill in the dataset. */ diff --git a/src/patches/glibc/glibc-rh1043557.patch b/src/patches/glibc/glibc-rh1043557.patch deleted file mode 100644 index affbe96..0000000 --- a/src/patches/glibc/glibc-rh1043557.patch +++ /dev/null @@ -1,145 +0,0 @@ -commit af37a8a3496327a6e5617a2c76f17aa1e8db835e -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Mon Jan 27 11:32:44 2014 +0530 - - Avoid undefined behaviour in netgroupcache - - Using a buffer after it has been reallocated is undefined behaviour, - so get offsets of the triplets in the old buffer before reallocating - it. - -commit 5d41dadf31bc8a2f9c34c40d52a442d3794e405c -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Fri Jan 24 13:51:15 2014 +0530 - - Adjust pointers to triplets in netgroup query data (BZ #16474) - - The _nss_*_getnetgrent_r query populates the netgroup results in the - allocated buffer and then sets the result triplet to point to strings - in the buffer. This is a problem when the buffer is reallocated since - the pointers to the triplet strings are no longer valid. The pointers - need to be adjusted so that they now point to strings in the - reallocated buffer. - -commit 980cb5180e1b71224a57ca52b995c959b7148c09 -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Thu Jan 16 10:20:22 2014 +0530 - - Don't use alloca in addgetnetgrentX (BZ #16453) - - addgetnetgrentX has a buffer which is grown as per the needs of the - requested size either by using alloca or by falling back to malloc if - the size is larger than 1K. There are two problems with the alloca - bits: firstly, it doesn't really extend the buffer since it does not - use the return value of the extend_alloca macro, which is the location - of the reallocated buffer. Due to this the buffer does not actually - extend itself and hence a subsequent write may overwrite stuff on the - stack. - - The second problem is more subtle - the buffer growth on the stack is - discontinuous due to block scope local variables. Combine that with - the fact that unlike realloc, extend_alloca does not copy over old - content and you have a situation where the buffer just has garbage in - the space where it should have had data. - - This could have been fixed by adding code to copy over old data - whenever we call extend_alloca, but it seems unnecessarily - complicated. This code is not exactly a performance hotspot (it's - called when there is a cache miss, so factors like network lookup or - file reads will dominate over memory allocation/reallocation), so this - premature optimization is unnecessary. - - Thanks Brad Hubbard bhubbard@redhat.com for his help with debugging - the problem. - -diff -pruN glibc-2.12-2-gc4ccff1/nscd/netgroupcache.c glibc-2.12-2-gc4ccff1.patched/nscd/netgroupcache.c ---- glibc-2.12-2-gc4ccff1/nscd/netgroupcache.c 2014-04-09 12:13:58.618582111 +0530 -+++ glibc-2.12-2-gc4ccff1.patched/nscd/netgroupcache.c 2014-04-09 12:07:21.486598665 +0530 -@@ -93,7 +93,6 @@ addgetnetgrentX (struct database_dyn *db - size_t buffilled = sizeof (*dataset); - char *buffer = NULL; - size_t nentries = 0; -- bool use_malloc = false; - size_t group_len = strlen (key) + 1; - union - { -@@ -138,7 +137,7 @@ addgetnetgrentX (struct database_dyn *db - } - - memset (&data, '\0', sizeof (data)); -- buffer = alloca (buflen); -+ buffer = xmalloc (buflen); - first_needed.elem.next = &first_needed.elem; - memcpy (first_needed.elem.name, key, group_len); - data.needed_groups = &first_needed.elem; -@@ -218,21 +217,24 @@ addgetnetgrentX (struct database_dyn *db - - if (buflen - req->key_len - bufused < needed) - { -- size_t newsize = MAX (2 * buflen, -- buflen + 2 * needed); -- if (use_malloc || newsize > 1024 * 1024) -- { -- buflen = newsize; -- char *newbuf = xrealloc (use_malloc -- ? buffer -- : NULL, -- buflen); -- -- buffer = newbuf; -- use_malloc = true; -- } -- else -- extend_alloca (buffer, buflen, newsize); -+ buflen += MAX (buflen, 2 * needed); -+ /* Save offset in the old buffer. We don't -+ bother with the NULL check here since -+ we'll do that later anyway. */ -+ size_t nhostdiff = nhost - buffer; -+ size_t nuserdiff = nuser - buffer; -+ size_t ndomaindiff = ndomain - buffer; -+ -+ char *newbuf = xrealloc (buffer, buflen); -+ /* Fix up the triplet pointers into the new -+ buffer. */ -+ nhost = (nhost ? newbuf + nhostdiff -+ : NULL); -+ nuser = (nuser ? newbuf + nuserdiff -+ : NULL); -+ ndomain = (ndomain ? newbuf + ndomaindiff -+ : NULL); -+ buffer = newbuf; - } - - nhost = memcpy (buffer + bufused, -@@ -299,18 +301,8 @@ addgetnetgrentX (struct database_dyn *db - } - else if (status == NSS_STATUS_UNAVAIL && e == ERANGE) - { -- size_t newsize = 2 * buflen; -- if (use_malloc || newsize > 1024 * 1024) -- { -- buflen = newsize; -- char *newbuf = xrealloc (use_malloc -- ? buffer : NULL, buflen); -- -- buffer = newbuf; -- use_malloc = true; -- } -- else -- extend_alloca (buffer, buflen, newsize); -+ buflen *= 2; -+ buffer = xrealloc (buffer, buflen); - } - } - -@@ -446,8 +438,7 @@ addgetnetgrentX (struct database_dyn *db - } - - out: -- if (use_malloc) -- free (buffer); -+ free (buffer); - - *resultp = dataset; - diff --git a/src/patches/glibc/glibc-rh1044628.patch b/src/patches/glibc/glibc-rh1044628.patch deleted file mode 100644 index e5ff3ca..0000000 --- a/src/patches/glibc/glibc-rh1044628.patch +++ /dev/null @@ -1,28 +0,0 @@ -commit cf26a0cb6a0bbaca46a01ddad6662e5e5159a32a -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Thu May 15 12:33:11 2014 +0530 - - Return EAI_AGAIN for AF_UNSPEC when herrno is TRY_AGAIN (BZ #16849) - - getaddrinfo correctly returns EAI_AGAIN for AF_INET and AF_INET6 - queries. For AF_UNSPEC however, an older change - (a682a1bf553b1efe4dbb03207fece5b719cec482) broke the check and due to - that the returned error was EAI_NONAME. - - This patch fixes the check so that a non-authoritative not-found is - returned as EAI_AGAIN to the user instead of EAI_NONAME. - -diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c -index 6258330..8f392b9 100644 ---- a/sysdeps/posix/getaddrinfo.c -+++ b/sysdeps/posix/getaddrinfo.c -@@ -867,8 +867,7 @@ gaih_inet (const char *name, const struct gaih_service *service, - if (status != NSS_STATUS_TRYAGAIN - || rc != ERANGE || herrno != NETDB_INTERNAL) - { -- if (status == NSS_STATUS_TRYAGAIN -- && herrno == TRY_AGAIN) -+ if (herrno == TRY_AGAIN) - no_data = EAI_AGAIN; - else - no_data = herrno == NO_DATA; diff --git a/src/patches/glibc/glibc-rh1053178.patch b/src/patches/glibc/glibc-rh1053178.patch deleted file mode 100644 index a662cfe..0000000 --- a/src/patches/glibc/glibc-rh1053178.patch +++ /dev/null @@ -1,214 +0,0 @@ -# -# Based on the commit: -# -# commit 6c82a2f8d7c8e21e39237225c819f182ae438db3 -# Author: Carlos O'Donell carlos@redhat.com -# Date: Fri Sep 6 01:02:30 2013 -0400 -# -# Coordinate IPv6 definitions for Linux and glibc -# -# This change synchronizes the glibc headers with the Linux kernel -# headers and arranges to coordinate the definition of structures -# already defined the Linux kernel UAPI headers. -# -# It is now safe to include glibc's netinet/in.h or Linux's linux/in6.h -# in any order in a userspace application and you will get the same -# ABI. The ABI is guaranteed by UAPI and glibc. -# -# 2013-09-05 Carlos O'Donell carlos@redhat.com -# Cong Wang amwang@redhat.com -# -# * sysdeps/unix/sysv/linux/bits/in.h -# [_UAPI_LINUX_IN6_H]: Define __USE_KERNEL_IPV6_DEFS. -# * inet/netinet/in.h: Move in_addr definition and bits/in.h inclusion -# before __USE_KERNEL_IPV6_DEFS uses. -# * inet/netinet/in.h [!__USE_KERNEL_IPV6_DEFS]: Define IPPROTO_MH, and -# IPPROTO_BEETPH. -# [__USE_KERNEL_IPV6_DEFS]: Don't define any of IPPROTO_*, in6_addr, -# sockaddr_in6, or ipv6_mreq. -# -diff -urN glibc-2.12-2-gc4ccff1/inet/netinet/in.h glibc-2.12-2-gc4ccff1.mod/inet/netinet/in.h ---- glibc-2.12-2-gc4ccff1/inet/netinet/in.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/inet/netinet/in.h 2015-02-18 13:06:56.436802873 -0500 -@@ -28,13 +28,21 @@ - - __BEGIN_DECLS - -+/* Internet address. */ -+typedef uint32_t in_addr_t; -+struct in_addr -+ { -+ in_addr_t s_addr; -+ }; -+ -+/* Get system-specific definitions. */ -+#include <bits/in.h> -+ - /* Standard well-defined IP protocols. */ - enum - { - IPPROTO_IP = 0, /* Dummy protocol for TCP. */ - #define IPPROTO_IP IPPROTO_IP -- IPPROTO_HOPOPTS = 0, /* IPv6 Hop-by-Hop options. */ --#define IPPROTO_HOPOPTS IPPROTO_HOPOPTS - IPPROTO_ICMP = 1, /* Internet Control Message Protocol. */ - #define IPPROTO_ICMP IPPROTO_ICMP - IPPROTO_IGMP = 2, /* Internet Group Management Protocol. */ -@@ -57,10 +65,6 @@ - #define IPPROTO_DCCP IPPROTO_DCCP - IPPROTO_IPV6 = 41, /* IPv6 header. */ - #define IPPROTO_IPV6 IPPROTO_IPV6 -- IPPROTO_ROUTING = 43, /* IPv6 routing header. */ --#define IPPROTO_ROUTING IPPROTO_ROUTING -- IPPROTO_FRAGMENT = 44, /* IPv6 fragmentation header. */ --#define IPPROTO_FRAGMENT IPPROTO_FRAGMENT - IPPROTO_RSVP = 46, /* Reservation Protocol. */ - #define IPPROTO_RSVP IPPROTO_RSVP - IPPROTO_GRE = 47, /* General Routing Encapsulation. */ -@@ -69,14 +73,10 @@ - #define IPPROTO_ESP IPPROTO_ESP - IPPROTO_AH = 51, /* authentication header. */ - #define IPPROTO_AH IPPROTO_AH -- IPPROTO_ICMPV6 = 58, /* ICMPv6. */ --#define IPPROTO_ICMPV6 IPPROTO_ICMPV6 -- IPPROTO_NONE = 59, /* IPv6 no next header. */ --#define IPPROTO_NONE IPPROTO_NONE -- IPPROTO_DSTOPTS = 60, /* IPv6 destination options. */ --#define IPPROTO_DSTOPTS IPPROTO_DSTOPTS - IPPROTO_MTP = 92, /* Multicast Transport Protocol. */ - #define IPPROTO_MTP IPPROTO_MTP -+ IPPROTO_BEETPH = 94, /* IP option pseudo header for BEET. */ -+#define IPPROTO_BEETPH IPPROTO_BEETPH - IPPROTO_ENCAP = 98, /* Encapsulation Header. */ - #define IPPROTO_ENCAP IPPROTO_ENCAP - IPPROTO_PIM = 103, /* Protocol Independent Multicast. */ -@@ -92,6 +92,28 @@ - IPPROTO_MAX - }; - -+/* If __USER_KERNEL_IPV6_DEFS is defined then the user has included the kernel -+ network headers first and we should use those ABI-identical definitions -+ instead of our own. */ -+#ifndef __USE_KERNEL_IPV6_DEFS -+enum -+ { -+ IPPROTO_HOPOPTS = 0, /* IPv6 Hop-by-Hop options. */ -+#define IPPROTO_HOPOPTS IPPROTO_HOPOPTS -+ IPPROTO_ROUTING = 43, /* IPv6 routing header. */ -+#define IPPROTO_ROUTING IPPROTO_ROUTING -+ IPPROTO_FRAGMENT = 44, /* IPv6 fragmentation header. */ -+#define IPPROTO_FRAGMENT IPPROTO_FRAGMENT -+ IPPROTO_ICMPV6 = 58, /* ICMPv6. */ -+#define IPPROTO_ICMPV6 IPPROTO_ICMPV6 -+ IPPROTO_NONE = 59, /* IPv6 no next header. */ -+#define IPPROTO_NONE IPPROTO_NONE -+ IPPROTO_DSTOPTS = 60, /* IPv6 destination options. */ -+#define IPPROTO_DSTOPTS IPPROTO_DSTOPTS -+ IPPROTO_MH = 135, /* IPv6 mobility header. */ -+#define IPPROTO_MH IPPROTO_MH -+ }; -+#endif /* !__USE_KERNEL_IPV6_DEFS */ - - /* Type to represent a port. */ - typedef uint16_t in_port_t; -@@ -136,15 +158,6 @@ - IPPORT_USERRESERVED = 5000 - }; - -- --/* Internet address. */ --typedef uint32_t in_addr_t; --struct in_addr -- { -- in_addr_t s_addr; -- }; -- -- - /* Definitions of the bits in an Internet address integer. - - On subnets, host and network parts are found according to -@@ -193,7 +206,7 @@ - #define INADDR_ALLRTRS_GROUP ((in_addr_t) 0xe0000002) /* 224.0.0.2 */ - #define INADDR_MAX_LOCAL_GROUP ((in_addr_t) 0xe00000ff) /* 224.0.0.255 */ - -- -+#ifndef __USE_KERNEL_IPV6_DEFS - /* IPv6 address */ - struct in6_addr - { -@@ -211,6 +224,7 @@ - # define s6_addr32 __in6_u.__u6_addr32 - #endif - }; -+#endif /* !__USE_KERNEL_IPV6_DEFS */ - - extern const struct in6_addr in6addr_any; /* :: */ - extern const struct in6_addr in6addr_loopback; /* ::1 */ -@@ -235,6 +249,7 @@ - sizeof (struct in_addr)]; - }; - -+#ifndef __USE_KERNEL_IPV6_DEFS - /* Ditto, for IPv6. */ - struct sockaddr_in6 - { -@@ -244,7 +259,7 @@ - struct in6_addr sin6_addr; /* IPv6 address */ - uint32_t sin6_scope_id; /* IPv6 scope-id */ - }; -- -+#endif /* !__USE_KERNEL_IPV6_DEFS */ - - #if defined __USE_MISC || defined __USE_GNU - /* IPv4 multicast request. */ -@@ -270,7 +285,7 @@ - }; - #endif - -- -+#ifndef __USE_KERNEL_IPV6_DEFS - /* Likewise, for IPv6. */ - struct ipv6_mreq - { -@@ -280,7 +295,7 @@ - /* local interface */ - unsigned int ipv6mr_interface; - }; -- -+#endif /* !__USE_KERNEL_IPV6_DEFS */ - - #if defined __USE_MISC || defined __USE_GNU - /* Multicast group request. */ -@@ -351,10 +366,6 @@ - * sizeof (struct sockaddr_storage))) - #endif - -- --/* Get system-specific definitions. */ --#include <bits/in.h> -- - /* Functions to convert between host and network byte order. - - Please note that these functions normally take `unsigned long int' or -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/in.h glibc-2.12-2-gc4ccff1.mod/sysdeps/unix/sysv/linux/bits/in.h ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/in.h 2015-02-18 13:04:15.547734092 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/unix/sysv/linux/bits/in.h 2015-02-18 13:06:56.436802873 -0500 -@@ -22,6 +22,18 @@ - # error "Never use <bits/in.h> directly; include <netinet/in.h> instead." - #endif - -+/* If the application has already included linux/in6.h from a linux-based -+ kernel then we will not define the IPv6 IPPROTO_* defines, in6_addr (nor the -+ defines), sockaddr_in6, or ipv6_mreq. The ABI used by the linux-kernel and -+ glibc match exactly. Neither the linux kernel nor glibc should break this -+ ABI without coordination. */ -+#ifdef _UAPI_LINUX_IN6_H -+/* This is not quite the same API since the kernel always defines s6_addr16 and -+ s6_addr32. This is not a violation of POSIX since POSIX says "at least the -+ following member" and that holds true. */ -+# define __USE_KERNEL_IPV6_DEFS -+#endif -+ - /* Options for use with `getsockopt' and `setsockopt' at the IP level. - The first word in the comment at the right is the data type used; - "bool" means a boolean value stored in an `int'. */ diff --git a/src/patches/glibc/glibc-rh1054846.patch b/src/patches/glibc/glibc-rh1054846.patch deleted file mode 100644 index 50b4109..0000000 --- a/src/patches/glibc/glibc-rh1054846.patch +++ /dev/null @@ -1,57 +0,0 @@ -commit fbd6b5a4052316f7eb03c4617eebfaafc59dcc06 -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Thu Mar 27 07:15:22 2014 +0530 - - Fix nscd lookup for innetgr when netgroup has wildcards (BZ #16758) - - nscd works correctly when the request in innetgr is a wildcard, - i.e. when one or more of host, user or domain parameters is NULL. - However, it does not work when the the triplet in the netgroup - definition has a wildcard. This is easy to reproduce for a triplet - defined as follows: - - foonet (,foo,) - - Here, an innetgr call that looks like this: - - innetgr ("foonet", "foohost", "foo", NULL); - - should succeed and so should: - - innetgr ("foonet", NULL, "foo", "foodomain"); - - It does succeed with nscd disabled, but not with nscd enabled. This - fix adds this additional check for all three parts of the triplet so - that it gives the correct result. - - [BZ #16758] - * nscd/netgroupcache.c (addinnetgrX): Succeed if triplet has - blank values. - -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c -index 5ba1e1f..5d15aa4 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c -@@ -560,15 +560,19 @@ addinnetgrX (struct database_dyn *db, int fd, request_header *req, - { - bool success = true; - -- if (host != NULL) -+ /* For the host, user and domain in each triplet, we assume success -+ if the value is blank because that is how the wildcard entry to -+ match anything is stored in the netgroup cache. */ -+ if (host != NULL && *triplets != '\0') - success = strcmp (host, triplets) == 0; - triplets = (const char *) rawmemchr (triplets, '\0') + 1; - -- if (success && user != NULL) -+ if (success && user != NULL && *triplets != '\0') - success = strcmp (user, triplets) == 0; - triplets = (const char *) rawmemchr (triplets, '\0') + 1; - -- if (success && (domain == NULL || strcmp (domain, triplets) == 0)) -+ if (success && (domain == NULL || *triplets == '\0' -+ || strcmp (domain, triplets) == 0)) - { - dataset->resp.result = 1; - break; diff --git a/src/patches/glibc/glibc-rh1066724.patch b/src/patches/glibc/glibc-rh1066724.patch deleted file mode 100644 index a03f1d1..0000000 --- a/src/patches/glibc/glibc-rh1066724.patch +++ /dev/null @@ -1,620 +0,0 @@ -diff --git a/malloc/Makefile b/malloc/Makefile -index e7ec1ab..5330a3b 100644 ---- a/malloc/Makefile -+++ b/malloc/Makefile -@@ -27,7 +27,8 @@ all: - dist-headers := malloc.h - headers := $(dist-headers) obstack.h mcheck.h - tests := mallocbug tst-malloc tst-valloc tst-calloc tst-obstack \ -- tst-mallocstate tst-mcheck tst-mallocfork tst-trim1 -+ tst-mallocstate tst-mcheck tst-mallocfork tst-trim1 \ -+ tst-malloc-backtrace - test-srcs = tst-mtrace - - distribute = thread-m.h mtrace.pl mcheck-init.c stackinfo.h memusage.h \ -@@ -49,6 +50,9 @@ extra-libs-others = $(extra-libs) - libmemusage-routines = memusage - libmemusage-inhibit-o = $(filter-out .os,$(object-suffixes)) - -+$(objpfx)tst-malloc-backtrace: $(common-objpfx)nptl/libpthread.so \ -+ $(common-objpfx)nptl/libpthread_nonshared.a -+ - # These should be removed by `make clean'. - extra-objs = mcheck-init.o libmcheck.a - -diff --git a/malloc/arena.c b/malloc/arena.c -index 18bea2b..5180516 100644 ---- a/malloc/arena.c -+++ b/malloc/arena.c -@@ -123,7 +123,7 @@ int __malloc_initialized = -1; - - #ifdef PER_THREAD - #define arena_lock(ptr, size) do { \ -- if(ptr) \ -+ if(ptr && !arena_is_corrupt (ptr)) \ - (void)mutex_lock(&ptr->mutex); \ - else \ - ptr = arena_get2(ptr, (size), false); \ -@@ -1011,7 +1011,21 @@ reused_arena (bool retrying) - if (retrying && result == &main_arena) - result = result->next; - -- /* No arena available. Wait for the next in line. */ -+ /* Make sure that the arena we get is not corrupted. */ -+ mstate begin = result; -+ while (arena_is_corrupt (result)) -+ { -+ result = result->next; -+ if (result == begin) -+ break; -+ } -+ -+ /* We could not find any arena that was either not corrupted or not the one -+ we wanted to avoid. */ -+ if (result == begin) -+ return NULL; -+ -+ /* No arena available without contention. Wait for the next in line. */ - (void)mutex_lock(&result->mutex); - - out: -diff --git a/malloc/hooks.c b/malloc/hooks.c -index cc83d21..38d2542 100644 ---- a/malloc/hooks.c -+++ b/malloc/hooks.c -@@ -220,7 +220,8 @@ top_check() - return 0; - - mutex_unlock(&main_arena); -- malloc_printerr (check_action, "malloc: top chunk is corrupt", t); -+ malloc_printerr (check_action, "malloc: top chunk is corrupt", t, -+ &main_arena); - mutex_lock(&main_arena); - - /* Try to set up a new top chunk. */ -@@ -283,7 +284,7 @@ free_check(mem, caller) Void_t* mem; const Void_t *caller; - if(!p) { - (void)mutex_unlock(&main_arena.mutex); - -- malloc_printerr(check_action, "free(): invalid pointer", mem); -+ malloc_printerr(check_action, "free(): invalid pointer", mem, &main_arena); - return; - } - #if HAVE_MMAP -@@ -329,7 +330,8 @@ realloc_check(oldmem, bytes, caller) - const mchunkptr oldp = mem2chunk_check(oldmem, &magic_p); - (void)mutex_unlock(&main_arena.mutex); - if(!oldp) { -- malloc_printerr(check_action, "realloc(): invalid pointer", oldmem); -+ malloc_printerr(check_action, "realloc(): invalid pointer", oldmem, -+ &main_arena); - return malloc_check(bytes, NULL); - } - const INTERNAL_SIZE_T oldsize = chunksize(oldp); -diff --git a/malloc/malloc.c b/malloc/malloc.c -index 597c7b0..20ac534 100644 ---- a/malloc/malloc.c -+++ b/malloc/malloc.c -@@ -1633,7 +1633,7 @@ static size_t mUSABLe(Void_t*); - static void mSTATs(void); - static int mALLOPt(int, int); - static struct mallinfo mALLINFo(mstate); --static void malloc_printerr(int action, const char *str, void *ptr); -+static void malloc_printerr(int action, const char *str, void *ptr, mstate av); - - static Void_t* internal_function mem2mem_check(Void_t *p, size_t sz); - static int internal_function top_check(void); -@@ -2114,7 +2114,8 @@ typedef struct malloc_chunk* mbinptr; - BK = P->bk; \ - if (__builtin_expect (FD->bk != P || BK->fd != P, 0)) { \ - mutex_unlock(&(AV)->mutex); \ -- malloc_printerr (check_action, "corrupted double-linked list", P); \ -+ malloc_printerr (check_action, "corrupted double-linked list", P, \ -+ AV); \ - mutex_lock(&(AV)->mutex); \ - } else { \ - FD->bk = BK; \ -@@ -2344,6 +2345,15 @@ typedef struct malloc_chunk* mfastbinptr; - #define set_noncontiguous(M) ((M)->flags |= NONCONTIGUOUS_BIT) - #define set_contiguous(M) ((M)->flags &= ~NONCONTIGUOUS_BIT) - -+/* ARENA_CORRUPTION_BIT is set if a memory corruption was detected on the -+ arena. Such an arena is no longer used to allocate chunks. Chunks -+ allocated in that arena before detecting corruption are not freed. */ -+ -+#define ARENA_CORRUPTION_BIT (4U) -+ -+#define arena_is_corrupt(A) (((A)->flags & ARENA_CORRUPTION_BIT)) -+#define set_arena_corrupt(A) ((A)->flags |= ARENA_CORRUPTION_BIT) -+ - /* - Set value of max_fast. - Use impossibly small value if 0. -@@ -3002,8 +3012,9 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av; - rather than expanding top. - */ - -- if ((unsigned long)(nb) >= (unsigned long)(mp_.mmap_threshold) && -- (mp_.n_mmaps < mp_.n_mmaps_max)) { -+ if (av == NULL -+ || ((unsigned long)(nb) >= (unsigned long)(mp_.mmap_threshold) && -+ (mp_.n_mmaps < mp_.n_mmaps_max))) { - - char* mm; /* return value from mmap call*/ - -@@ -3079,6 +3090,10 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av; - } - #endif - -+ /* There are no usable arenas and mmap also failed. */ -+ if (av == NULL) -+ return 0; -+ - /* Record incoming configuration of top */ - - old_top = av->top; -@@ -3260,7 +3275,7 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av; - else if (contiguous(av) && old_size && brk < old_end) { - /* Oops! Someone else killed our space.. Can't touch anything. */ - mutex_unlock(&av->mutex); -- malloc_printerr (3, "break adjusted to free malloc space", brk); -+ malloc_printerr (3, "break adjusted to free malloc space", brk, av); - mutex_lock(&av->mutex); - } - -@@ -3542,7 +3557,7 @@ munmap_chunk(p) mchunkptr p; - if (__builtin_expect (((block | total_size) & (mp_.pagesize - 1)) != 0, 0)) - { - malloc_printerr (check_action, "munmap_chunk(): invalid pointer", -- chunk2mem (p)); -+ chunk2mem (p), NULL); - return; - } - -@@ -3625,65 +3640,31 @@ public_mALLOc(size_t bytes) - if (__builtin_expect (hook != NULL, 0)) - return (*hook)(bytes, RETURN_ADDRESS (0)); - -- arena_lookup(ar_ptr); --#if 0 -- // XXX We need double-word CAS and fastbins must be extended to also -- // XXX hold a generation counter for each entry. -- if (ar_ptr) { -- INTERNAL_SIZE_T nb; /* normalized request size */ -- checked_request2size(bytes, nb); -- if (nb <= get_max_fast ()) { -- long int idx = fastbin_index(nb); -- mfastbinptr* fb = &fastbin (ar_ptr, idx); -- mchunkptr pp = *fb; -- mchunkptr v; -- do -- { -- v = pp; -- if (v == NULL) -- break; -- } -- while ((pp = catomic_compare_and_exchange_val_acq (fb, v->fd, v)) != v); -- if (v != 0) { -- if (__builtin_expect (fastbin_index (chunksize (v)) != idx, 0)) -- malloc_printerr (check_action, "malloc(): memory corruption (fast)", -- chunk2mem (v)); -- check_remalloced_chunk(ar_ptr, v, nb); -- void *p = chunk2mem(v); -- if (__builtin_expect (perturb_byte, 0)) -- alloc_perturb (p, bytes); -- return p; -- } -- } -- } --#endif -+ arena_get(ar_ptr, bytes); - -- arena_lock(ar_ptr, bytes); -- if(!ar_ptr) -- return 0; - victim = _int_malloc(ar_ptr, bytes); -- if(!victim) { -+ if(!victim && ar_ptr != NULL) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(ar_ptr != &main_arena) { - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = &main_arena; - (void)mutex_lock(&ar_ptr->mutex); - victim = _int_malloc(ar_ptr, bytes); -- (void)mutex_unlock(&ar_ptr->mutex); - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = arena_get2(prev, bytes, true); -- if(ar_ptr) { -+ if(ar_ptr) - victim = _int_malloc(ar_ptr, bytes); -- (void)mutex_unlock(&ar_ptr->mutex); -- } - #endif - } -- } else -+ } -+ -+ if (ar_ptr != NULL) - (void)mutex_unlock(&ar_ptr->mutex); -+ - assert(!victim || chunk_is_mmapped(mem2chunk(victim)) || - ar_ptr == arena_for_chunk(mem2chunk(victim))); - return victim; -@@ -3773,6 +3754,11 @@ public_rEALLOc(Void_t* oldmem, size_t bytes) - /* its size */ - const INTERNAL_SIZE_T oldsize = chunksize(oldp); - -+ if (chunk_is_mmapped (oldp)) -+ ar_ptr = NULL; -+ else -+ ar_ptr = arena_for_chunk (oldp); -+ - /* Little security check which won't hurt performance: the - allocator never wrapps around at the end of the address space. - Therefore we can exclude some size values which might appear -@@ -3780,7 +3766,8 @@ public_rEALLOc(Void_t* oldmem, size_t bytes) - if (__builtin_expect ((uintptr_t) oldp > (uintptr_t) -oldsize, 0) - || __builtin_expect (misaligned_chunk (oldp), 0)) - { -- malloc_printerr (check_action, "realloc(): invalid pointer", oldmem); -+ malloc_printerr (check_action, "realloc(): invalid pointer", oldmem, -+ ar_ptr); - return NULL; - } - -@@ -3806,7 +3793,6 @@ public_rEALLOc(Void_t* oldmem, size_t bytes) - } - #endif - -- ar_ptr = arena_for_chunk(oldp); - #if THREAD_STATS - if(!mutex_trylock(&ar_ptr->mutex)) - ++(ar_ptr->stat_lock_direct); -@@ -3887,31 +3873,29 @@ public_mEMALIGn(size_t alignment, size_t bytes) - } - - arena_get(ar_ptr, bytes + alignment + MINSIZE); -- if(!ar_ptr) -- return 0; - p = _int_memalign(ar_ptr, alignment, bytes); -- if(!p) { -+ if(!p && ar_ptr != NULL) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(ar_ptr != &main_arena) { - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = &main_arena; - (void)mutex_lock(&ar_ptr->mutex); - p = _int_memalign(ar_ptr, alignment, bytes); -- (void)mutex_unlock(&ar_ptr->mutex); - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = arena_get2(prev, bytes, true); -- if(ar_ptr) { -+ if(ar_ptr) - p = _int_memalign(ar_ptr, alignment, bytes); -- (void)mutex_unlock(&ar_ptr->mutex); -- } - #endif - } -- } else -+ } -+ -+ if (ar_ptr != NULL) - (void)mutex_unlock(&ar_ptr->mutex); -+ - assert(!p || chunk_is_mmapped(mem2chunk(p)) || - ar_ptr == arena_for_chunk(mem2chunk(p))); - return p; -@@ -3945,31 +3929,29 @@ public_vALLOc(size_t bytes) - return (*hook)(pagesz, bytes, RETURN_ADDRESS (0)); - - arena_get(ar_ptr, bytes + pagesz + MINSIZE); -- if(!ar_ptr) -- return 0; - p = _int_valloc(ar_ptr, bytes); -- if(!p) { -+ if(!p && ar_ptr != NULL) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(ar_ptr != &main_arena) { - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = &main_arena; - (void)mutex_lock(&ar_ptr->mutex); - p = _int_memalign(ar_ptr, pagesz, bytes); -- (void)mutex_unlock(&ar_ptr->mutex); - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = arena_get2(prev, bytes, true); -- if(ar_ptr) { -+ if(ar_ptr) - p = _int_memalign(ar_ptr, pagesz, bytes); -- (void)mutex_unlock(&ar_ptr->mutex); -- } - #endif - } -- } else -+ } -+ -+ if (ar_ptr != NULL) - (void)mutex_unlock(&ar_ptr->mutex); -+ - assert(!p || chunk_is_mmapped(mem2chunk(p)) || - ar_ptr == arena_for_chunk(mem2chunk(p))); - -@@ -4004,28 +3986,28 @@ public_pVALLOc(size_t bytes) - - arena_get(ar_ptr, bytes + 2*pagesz + MINSIZE); - p = _int_pvalloc(ar_ptr, bytes); -- if(!p) { -+ if(!p && ar_ptr != NULL) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(ar_ptr != &main_arena) { - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = &main_arena; - (void)mutex_lock(&ar_ptr->mutex); - p = _int_memalign(ar_ptr, pagesz, rounded_bytes); -- (void)mutex_unlock(&ar_ptr->mutex); - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = arena_get2(prev, bytes + 2*pagesz + MINSIZE, true); -- if(ar_ptr) { -+ if(ar_ptr) - p = _int_memalign(ar_ptr, pagesz, rounded_bytes); -- (void)mutex_unlock(&ar_ptr->mutex); -- } - #endif - } -- } else -+ } -+ -+ if (ar_ptr != NULL) - (void)mutex_unlock(&ar_ptr->mutex); -+ - assert(!p || chunk_is_mmapped(mem2chunk(p)) || - ar_ptr == arena_for_chunk(mem2chunk(p))); - -@@ -4072,55 +4054,65 @@ public_cALLOc(size_t n, size_t elem_size) - sz = bytes; - - arena_get(av, sz); -- if(!av) -- return 0; - -- /* Check if we hand out the top chunk, in which case there may be no -- need to clear. */ -+ if (av) -+ { -+ /* Check if we hand out the top chunk, in which case there may be no -+ need to clear. */ - #if MORECORE_CLEARS -- oldtop = top(av); -- oldtopsize = chunksize(top(av)); -+ oldtop = top(av); -+ oldtopsize = chunksize(top(av)); - #if MORECORE_CLEARS < 2 -- /* Only newly allocated memory is guaranteed to be cleared. */ -- if (av == &main_arena && -- oldtopsize < mp_.sbrk_base + av->max_system_mem - (char *)oldtop) -- oldtopsize = (mp_.sbrk_base + av->max_system_mem - (char *)oldtop); -+ /* Only newly allocated memory is guaranteed to be cleared. */ -+ if (av == &main_arena && -+ oldtopsize < mp_.sbrk_base + av->max_system_mem - (char *)oldtop) -+ oldtopsize = (mp_.sbrk_base + av->max_system_mem - (char *)oldtop); - #endif -- if (av != &main_arena) -+ if (av != &main_arena) -+ { -+ heap_info *heap = heap_for_ptr (oldtop); -+ if (oldtopsize < (char *) heap + heap->mprotect_size - (char *) oldtop) -+ oldtopsize = (char *) heap + heap->mprotect_size - (char *) oldtop; -+ } -+#endif -+ } -+ else - { -- heap_info *heap = heap_for_ptr (oldtop); -- if (oldtopsize < (char *) heap + heap->mprotect_size - (char *) oldtop) -- oldtopsize = (char *) heap + heap->mprotect_size - (char *) oldtop; -+ /* No usable arenas. */ -+ oldtop = 0; -+ oldtopsize = 0; - } --#endif - mem = _int_malloc(av, sz); - -- - assert(!mem || chunk_is_mmapped(mem2chunk(mem)) || - av == arena_for_chunk(mem2chunk(mem))); - -- if (mem == 0) { -+ if (mem == 0 && av != NULL) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(av != &main_arena) { - (void)mutex_unlock(&av->mutex); - (void)mutex_lock(&main_arena.mutex); - mem = _int_malloc(&main_arena, sz); -- (void)mutex_unlock(&main_arena.mutex); - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = av->next ? av : 0; - (void)mutex_unlock(&av->mutex); - av = arena_get2(prev, sz, true); -- if(av) { -+ if(av) - mem = _int_malloc(av, sz); -- (void)mutex_unlock(&av->mutex); -- } - #endif - } - if (mem == 0) return 0; -- } else -+ } -+ -+ if (av != NULL) - (void)mutex_unlock(&av->mutex); -+ -+ /* Allocation failed even after a retry. */ -+ if (mem == 0) -+ return 0; -+ - p = mem2chunk(mem); - - /* Two optional cases in which clearing not necessary */ -@@ -4175,6 +4167,8 @@ public_cALLOc(size_t n, size_t elem_size) - } - - #ifndef _LIBC -+/* XXX These functions are not patched to detect arena corruption because they -+ are not built in glibc. */ - - Void_t** - public_iCALLOc(size_t n, size_t elem_size, Void_t** chunks) -@@ -4309,6 +4303,16 @@ _int_malloc(mstate av, size_t bytes) - - checked_request2size(bytes, nb); - -+ /* There are no usable arenas. Fall back to sysmalloc to get a chunk from -+ mmap. */ -+ if (__glibc_unlikely (av == NULL)) -+ { -+ void *p = sYSMALLOc (nb, av); -+ if (p != NULL) -+ alloc_perturb (p, bytes); -+ return p; -+ } -+ - /* - If the size qualifies as a fastbin, first check corresponding bin. - This code is safe to execute even if av is not yet initialized, so we -@@ -4337,7 +4341,7 @@ _int_malloc(mstate av, size_t bytes) - errstr = "malloc(): memory corruption (fast)"; - errout: - mutex_unlock(&av->mutex); -- malloc_printerr (check_action, errstr, chunk2mem (victim)); -+ malloc_printerr (check_action, errstr, chunk2mem (victim), av); - mutex_lock(&av->mutex); - return NULL; - } -@@ -4429,7 +4433,7 @@ _int_malloc(mstate av, size_t bytes) - { - void *p = chunk2mem(victim); - mutex_unlock(&av->mutex); -- malloc_printerr (check_action, "malloc(): memory corruption", p); -+ malloc_printerr (check_action, "malloc(): memory corruption", p, av); - mutex_lock(&av->mutex); - } - size = chunksize(victim); -@@ -4829,7 +4833,7 @@ _int_free(mstate av, mchunkptr p) - if (have_lock || locked) - (void)mutex_unlock(&av->mutex); - #endif -- malloc_printerr (check_action, errstr, chunk2mem(p)); -+ malloc_printerr (check_action, errstr, chunk2mem(p), av); - #ifdef ATOMIC_FASTBINS - if (have_lock) - mutex_lock(&av->mutex); -@@ -5281,7 +5285,7 @@ _int_realloc(mstate av, mchunkptr oldp, INTERNAL_SIZE_T oldsize, - errstr = "realloc(): invalid old size"; - errout: - mutex_unlock(&av->mutex); -- malloc_printerr (check_action, errstr, chunk2mem(oldp)); -+ malloc_printerr (check_action, errstr, chunk2mem(oldp), av); - mutex_lock(&av->mutex); - return NULL; - } -@@ -5881,6 +5885,10 @@ static int mTRIm(mstate av, size_t pad) - static int mTRIm(av, pad) mstate av; size_t pad; - #endif - { -+ /* Don't touch corrupt arenas. */ -+ if (arena_is_corrupt (av)) -+ return 0; -+ - /* Ensure initialization/consolidation */ - malloc_consolidate (av); - -@@ -6320,8 +6328,14 @@ int mALLOPt(param_number, value) int param_number; int value; - extern char **__libc_argv attribute_hidden; - - static void --malloc_printerr(int action, const char *str, void *ptr) -+malloc_printerr(int action, const char *str, void *ptr, mstate ar_ptr) - { -+ /* Avoid using this arena in future. We do not attempt to synchronize this -+ with anything else because we minimally want to ensure that __libc_message -+ gets its resources safely without stumbling on the current corruption. */ -+ if (ar_ptr) -+ set_arena_corrupt (ar_ptr); -+ - if ((action & 5) == 5) - __libc_message (action & 2, "%s\n", str); - else if (action & 1) -diff --git a/malloc/tst-malloc-backtrace.c b/malloc/tst-malloc-backtrace.c -new file mode 100644 -index 0000000..796a42f ---- /dev/null -+++ b/malloc/tst-malloc-backtrace.c -@@ -0,0 +1,50 @@ -+/* Verify that backtrace does not deadlock on itself on memory corruption. -+ Copyright (C) 2015 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ -+ -+#include <stdlib.h> -+ -+#define SIZE 4096 -+ -+/* Wrap free with a function to prevent gcc from optimizing it out. */ -+static void -+__attribute__((noinline)) -+call_free (void *ptr) -+{ -+ free (ptr); -+ *(size_t *)(ptr - sizeof (size_t)) = 1; -+} -+ -+int -+do_test (void) -+{ -+ void *ptr1 = malloc (SIZE); -+ void *ptr2 = malloc (SIZE); -+ -+ call_free ((void *) ptr1); -+ ptr1 = malloc (SIZE); -+ -+ /* Not reached. The return statement is to put ptr2 into use so that gcc -+ doesn't optimize out that malloc call. */ -+ return (ptr1 == ptr2); -+} -+ -+#define TEST_FUNCTION do_test () -+#define EXPECTED_SIGNAL SIGABRT -+ -+#include "../test-skeleton.c" diff --git a/src/patches/glibc/glibc-rh1074342.patch b/src/patches/glibc/glibc-rh1074342.patch deleted file mode 100644 index 121127e..0000000 --- a/src/patches/glibc/glibc-rh1074342.patch +++ /dev/null @@ -1,26 +0,0 @@ -commit c44496df2f090a56d3bf75df930592dac6bba46f -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Wed Mar 12 17:27:22 2014 +0530 - - Provide correct buffer length to netgroup queries in nscd (BZ #16695) - - The buffer to query netgroup entries is allocated sufficient space for - the netgroup entries and the key to be appended at the end, but it - sends in an incorrect available length to the NSS netgroup query - functions, resulting in overflow of the buffer in some special cases. - The fix here is to factor in the key length when sending the available - buffer and buffer length to the query functions. - -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c -index 426d3c5..5ba1e1f 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c -@@ -202,7 +202,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - { - int e; - status = getfct.f (&data, buffer + buffilled, -- buflen - buffilled, &e); -+ buflen - buffilled - req->key_len, &e); - if (status == NSS_STATUS_RETURN - || status == NSS_STATUS_NOTFOUND) - /* This was either the last one for this group or the diff --git a/src/patches/glibc/glibc-rh1074353.patch b/src/patches/glibc/glibc-rh1074353.patch deleted file mode 100644 index c8aa8b0..0000000 --- a/src/patches/glibc/glibc-rh1074353.patch +++ /dev/null @@ -1,398 +0,0 @@ -commit bc8f194c8c29e46e8ee4034f06e46988dfff38f7 -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Wed Apr 30 12:00:39 2014 +0530 - - Initialize all of datahead structure in nscd (BZ #16791) - - The datahead structure has an unused padding field that remains - uninitialized. Valgrind prints out a warning for it on querying a - netgroups entry. This is harmless, but is a potential data leak since - it would result in writing out an uninitialized byte to the cache - file. Besides, this happens only when there is a cache miss, so we're - not adding computation to any fast path. - -commit 1cdeb2372ddecac0dfe0c132a033e9590ffa07d2 -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Wed Apr 30 11:57:09 2014 +0530 - - Consolidate code to initialize nscd dataset header - - This patch consolidates the code to initialize the header of a dataset - into a single set of functions (one for positive and another for - negative datasets) primarily to reduce repetition of code. The - secondary reason is to simplify Patch 2/2 which fixes the problem of - an uninitialized byte in the header by initializing an unused field in - the structure and hence preventing a possible data leak into the cache - file. - -diff --git a/nscd/aicache.c b/nscd/aicache.c -index 98d40a1..d7966bd 100644 ---- a/nscd/aicache.c -+++ b/nscd/aicache.c -@@ -383,17 +383,12 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req, - cp = family; - } - -- /* Fill in the rest of the dataset. */ -- dataset->head.allocsize = total + req->key_len; -- dataset->head.recsize = total - offsetof (struct dataset, resp); -- dataset->head.notfound = false; -- dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- dataset->head.ttl = ttl == INT32_MAX ? db->postimeout : ttl; -- timeout = dataset->head.timeout = time (NULL) + dataset->head.ttl; -+ timeout = datahead_init_pos (&dataset->head, total + req->key_len, -+ total - offsetof (struct dataset, resp), -+ he == NULL ? 0 : dh->nreloads + 1, -+ ttl == INT32_MAX ? db->postimeout : ttl); - -+ /* Fill in the rest of the dataset. */ - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; - dataset->resp.naddrs = naddrs; -@@ -528,15 +523,9 @@ next_nip: - else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) - + req->key_len), 1)) != NULL) - { -- dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -- dataset->head.recsize = total; -- dataset->head.notfound = true; -- dataset->head.nreloads = 0; -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = time (NULL) + db->negtimeout; -- dataset->head.ttl = db->negtimeout; -+ timeout = datahead_init_neg (&dataset->head, -+ sizeof (struct dataset) + req->key_len, -+ total, db->negtimeout); - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -diff --git a/nscd/grpcache.c b/nscd/grpcache.c -index b5a33eb..df59fa7 100644 ---- a/nscd/grpcache.c -+++ b/nscd/grpcache.c -@@ -128,14 +128,10 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, - } - else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1)) != NULL) - { -- dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -- dataset->head.recsize = total; -- dataset->head.notfound = true; -- dataset->head.nreloads = 0; -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = t + db->negtimeout; -+ timeout = datahead_init_neg (&dataset->head, -+ (sizeof (struct dataset) -+ + req->key_len), total, -+ db->negtimeout); - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -232,14 +228,10 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, - dataset_temporary = true; - } - -- dataset->head.allocsize = total + n; -- dataset->head.recsize = total - offsetof (struct dataset, resp); -- dataset->head.notfound = false; -- dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = t + db->postimeout; -+ timeout = datahead_init_pos (&dataset->head, total + n, -+ total - offsetof (struct dataset, resp), -+ he == NULL ? 0 : dh->nreloads + 1, -+ db->postimeout); - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -diff --git a/nscd/hstcache.c b/nscd/hstcache.c -index a79b67a..d4f1ad2 100644 ---- a/nscd/hstcache.c -+++ b/nscd/hstcache.c -@@ -152,15 +152,11 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req, - else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) - + req->key_len), 1)) != NULL) - { -- dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -- dataset->head.recsize = total; -- dataset->head.notfound = true; -- dataset->head.nreloads = 0; -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- dataset->head.ttl = ttl == INT32_MAX ? db->negtimeout : ttl; -- timeout = dataset->head.timeout = t + dataset->head.ttl; -+ timeout = datahead_init_neg (&dataset->head, -+ (sizeof (struct dataset) -+ + req->key_len), total, -+ (ttl == INT32_MAX -+ ? db->negtimeout : ttl)); - - /* This is the reply. */ - memcpy (&dataset->resp, resp, total); -@@ -257,15 +253,10 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req, - alloca_used = true; - } - -- dataset->head.allocsize = total + req->key_len; -- dataset->head.recsize = total - offsetof (struct dataset, resp); -- dataset->head.notfound = false; -- dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- dataset->head.ttl = ttl == INT32_MAX ? db->postimeout : ttl; -- timeout = dataset->head.timeout = t + dataset->head.ttl; -+ timeout = datahead_init_pos (&dataset->head, total + req->key_len, -+ total - offsetof (struct dataset, resp), -+ he == NULL ? 0 : dh->nreloads + 1, -+ ttl == INT32_MAX ? db->postimeout : ttl); - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -diff --git a/nscd/initgrcache.c b/nscd/initgrcache.c -index 1bf9f0d..361319f 100644 ---- a/nscd/initgrcache.c -+++ b/nscd/initgrcache.c -@@ -213,14 +213,10 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req, - else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) - + req->key_len), 1)) != NULL) - { -- dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -- dataset->head.recsize = total; -- dataset->head.notfound = true; -- dataset->head.nreloads = 0; -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = time (NULL) + db->negtimeout; -+ timeout = datahead_init_neg (&dataset->head, -+ (sizeof (struct dataset) -+ + req->key_len), total, -+ db->negtimeout); - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -276,14 +272,10 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req, - alloca_used = true; - } - -- dataset->head.allocsize = total + req->key_len; -- dataset->head.recsize = total - offsetof (struct dataset, resp); -- dataset->head.notfound = false; -- dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = time (NULL) + db->postimeout; -+ timeout = datahead_init_pos (&dataset->head, total + req->key_len, -+ total - offsetof (struct dataset, resp), -+ he == NULL ? 0 : dh->nreloads + 1, -+ db->postimeout); - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c -index 820d823..b3d40e9 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c -@@ -90,15 +90,9 @@ do_notfound (struct database_dyn *db, int fd, request_header *req, - /* If we cannot permanently store the result, so be it. */ - if (dataset != NULL) - { -- dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -- dataset->head.recsize = total; -- dataset->head.notfound = true; -- dataset->head.nreloads = 0; -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = time (NULL) + db->negtimeout; -- dataset->head.ttl = db->negtimeout; -+ timeout = datahead_init_neg (&dataset->head, -+ sizeof (struct dataset) + req->key_len, -+ total, db->negtimeout); - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -359,13 +353,10 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - - /* Fill in the dataset. */ - dataset = (struct dataset *) buffer; -- dataset->head.allocsize = total + req->key_len; -- dataset->head.recsize = total - offsetof (struct dataset, resp); -- dataset->head.notfound = false; -- dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -- dataset->head.usable = true; -- dataset->head.ttl = db->postimeout; -- timeout = dataset->head.timeout = time (NULL) + dataset->head.ttl; -+ timeout = datahead_init_pos (&dataset->head, total + req->key_len, -+ total - offsetof (struct dataset, resp), -+ he == NULL ? 0 : dh->nreloads + 1, -+ db->postimeout); - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -@@ -541,12 +532,12 @@ addinnetgrX (struct database_dyn *db, int fd, request_header *req, - dataset = &dataset_mem; - } - -- dataset->head.allocsize = sizeof (*dataset) + req->key_len; -- dataset->head.recsize = sizeof (innetgroup_response_header); -+ datahead_init_pos (&dataset->head, sizeof (*dataset) + req->key_len, -+ sizeof (innetgroup_response_header), -+ he == NULL ? 0 : dh->nreloads + 1, result->head.ttl); -+ /* Set the notfound status and timeout based on the result from -+ getnetgrent. */ - dataset->head.notfound = result->head.notfound; -- dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -- dataset->head.usable = true; -- dataset->head.ttl = result->head.ttl; - dataset->head.timeout = timeout; - - dataset->resp.version = NSCD_VERSION; -diff --git a/nscd/nscd-client.h b/nscd/nscd-client.h -index 98f77e7..ee16df6 100644 ---- a/nscd/nscd-client.h -+++ b/nscd/nscd-client.h -@@ -236,6 +236,48 @@ struct datahead - } data[0]; - }; - -+static inline time_t -+datahead_init_common (struct datahead *head, nscd_ssize_t allocsize, -+ nscd_ssize_t recsize, uint32_t ttl) -+{ -+ /* Initialize so that we don't write out junk in uninitialized data to the -+ cache. */ -+ memset (head, 0, sizeof (*head)); -+ -+ head->allocsize = allocsize; -+ head->recsize = recsize; -+ head->usable = true; -+ -+ head->ttl = ttl; -+ -+ /* Compute and return the timeout time. */ -+ return head->timeout = time (NULL) + ttl; -+} -+ -+static inline time_t -+datahead_init_pos (struct datahead *head, nscd_ssize_t allocsize, -+ nscd_ssize_t recsize, uint8_t nreloads, uint32_t ttl) -+{ -+ time_t ret = datahead_init_common (head, allocsize, recsize, ttl); -+ -+ head->notfound = false; -+ head->nreloads = nreloads; -+ -+ return ret; -+} -+ -+static inline time_t -+datahead_init_neg (struct datahead *head, nscd_ssize_t allocsize, -+ nscd_ssize_t recsize, uint32_t ttl) -+{ -+ time_t ret = datahead_init_common (head, allocsize, recsize, ttl); -+ -+ /* We don't need to touch nreloads here since it is set to our desired value -+ (0) when we clear the structure. */ -+ head->notfound = true; -+ -+ return ret; -+} - - /* Structure for one hash table entry. */ - struct hashentry -diff --git a/nscd/pwdcache.c b/nscd/pwdcache.c -index fa355c3..41c245b 100644 ---- a/nscd/pwdcache.c -+++ b/nscd/pwdcache.c -@@ -135,14 +135,10 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req, - else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) - + req->key_len), 1)) != NULL) - { -- dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -- dataset->head.recsize = total; -- dataset->head.notfound = true; -- dataset->head.nreloads = 0; -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = t + db->negtimeout; -+ timeout = datahead_init_neg (&dataset->head, -+ (sizeof (struct dataset) -+ + req->key_len), total, -+ db->negtimeout); - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -215,14 +211,10 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req, - alloca_used = true; - } - -- dataset->head.allocsize = total + n; -- dataset->head.recsize = total - offsetof (struct dataset, resp); -- dataset->head.notfound = false; -- dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = t + db->postimeout; -+ timeout = datahead_init_pos (&dataset->head, total + n, -+ total - offsetof (struct dataset, resp), -+ he == NULL ? 0 : dh->nreloads + 1, -+ db->postimeout); - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -diff --git a/nscd/servicescache.c b/nscd/servicescache.c -index 12ce9b2..95bdcfe 100644 ---- a/nscd/servicescache.c -+++ b/nscd/servicescache.c -@@ -120,14 +120,10 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req, - else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) - + req->key_len), 1)) != NULL) - { -- dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -- dataset->head.recsize = total; -- dataset->head.notfound = true; -- dataset->head.nreloads = 0; -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = t + db->negtimeout; -+ timeout = datahead_init_neg (&dataset->head, -+ (sizeof (struct dataset) -+ + req->key_len), total, -+ db->negtimeout); - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -207,14 +203,10 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req, - alloca_used = true; - } - -- dataset->head.allocsize = total + req->key_len; -- dataset->head.recsize = total - offsetof (struct dataset, resp); -- dataset->head.notfound = false; -- dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = t + db->postimeout; -+ timeout = datahead_init_pos (&dataset->head, total + req->key_len, -+ total - offsetof (struct dataset, resp), -+ he == NULL ? 0 : dh->nreloads + 1, -+ db->postimeout); - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; diff --git a/src/patches/glibc/glibc-rh1082379.patch b/src/patches/glibc/glibc-rh1082379.patch deleted file mode 100644 index 60a0ece..0000000 --- a/src/patches/glibc/glibc-rh1082379.patch +++ /dev/null @@ -1,63 +0,0 @@ -commit ea7d8b95e2fcb81f68b04ed7787a3dbda023991a -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Thu Mar 27 19:48:15 2014 +0530 - - Avoid overlapping addresses to stpcpy calls in nscd (BZ #16760) - - Calls to stpcpy from nscd netgroups code will have overlapping source - and destination when all three values in the returned triplet are - non-NULL and in the expected (host,user,domain) order. This is seen - in valgrind as: - - ==3181== Source and destination overlap in stpcpy(0x19973b48, 0x19973b48) - ==3181== at 0x4C2F30A: stpcpy (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) - ==3181== by 0x12567A: addgetnetgrentX (string3.h:111) - ==3181== by 0x12722D: addgetnetgrent (netgroupcache.c:665) - ==3181== by 0x11114C: nscd_run_worker (connections.c:1338) - ==3181== by 0x4E3C102: start_thread (pthread_create.c:309) - ==3181== by 0x59B81AC: clone (clone.S:111) - ==3181== - - Fix this by using memmove instead of stpcpy. - -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c -index 5d15aa4..820d823 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c -@@ -216,6 +216,10 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - const char *nuser = data.val.triple.user; - const char *ndomain = data.val.triple.domain; - -+ size_t hostlen = strlen (nhost ?: "") + 1; -+ size_t userlen = strlen (nuser ?: "") + 1; -+ size_t domainlen = strlen (ndomain ?: "") + 1; -+ - if (nhost == NULL || nuser == NULL || ndomain == NULL - || nhost > nuser || nuser > ndomain) - { -@@ -233,9 +237,6 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - : last + strlen (last) + 1 - buffer); - - /* We have to make temporary copies. */ -- size_t hostlen = strlen (nhost ?: "") + 1; -- size_t userlen = strlen (nuser ?: "") + 1; -- size_t domainlen = strlen (ndomain ?: "") + 1; - size_t needed = hostlen + userlen + domainlen; - - if (buflen - req->key_len - bufused < needed) -@@ -269,9 +270,12 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - } - - char *wp = buffer + buffilled; -- wp = stpcpy (wp, nhost) + 1; -- wp = stpcpy (wp, nuser) + 1; -- wp = stpcpy (wp, ndomain) + 1; -+ wp = memmove (wp, nhost ?: "", hostlen); -+ wp += hostlen; -+ wp = memmove (wp, nuser ?: "", userlen); -+ wp += userlen; -+ wp = memmove (wp, ndomain ?: "", domainlen); -+ wp += domainlen; - buffilled = wp - buffer; - ++nentries; - } diff --git a/src/patches/glibc/glibc-rh1085273.patch b/src/patches/glibc/glibc-rh1085273.patch deleted file mode 100644 index ee0f289..0000000 --- a/src/patches/glibc/glibc-rh1085273.patch +++ /dev/null @@ -1,31 +0,0 @@ -commit d41242129ba693cdbc8db85b846fcaccf9f0b7c4 -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Thu Jan 2 10:03:12 2014 +0530 - - Fix infinite loop in nscd when netgroup is empty (bz #16365) - - Currently, when a user looks up a netgroup that does not have any - members, nscd goes into an infinite loop trying to find members in the - group. This is because it does not handle cases when getnetgrent - returns an NSS_STATUS_NOTFOUND (which is what it does on empty group). - Fixed to handle this in the same way as NSS_STATUS_RETURN, similar to - what getgrent does by itself. - -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c -index baebdd7..50936ee 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c -@@ -180,9 +180,10 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - int e; - status = getfct.f (&data, buffer + buffilled, - buflen - buffilled, &e); -- if (status == NSS_STATUS_RETURN) -- /* This was the last one for this group. Look -- at next group if available. */ -+ if (status == NSS_STATUS_RETURN -+ || status == NSS_STATUS_NOTFOUND) -+ /* This was either the last one for this group or the -+ group was empty. Look at next group if available. */ - break; - if (status == NSS_STATUS_SUCCESS) - { diff --git a/src/patches/glibc/glibc-rh1085289.patch b/src/patches/glibc/glibc-rh1085289.patch deleted file mode 100644 index 9bd284e..0000000 --- a/src/patches/glibc/glibc-rh1085289.patch +++ /dev/null @@ -1,60 +0,0 @@ -commit dd3022d75e6fb8957843d6d84257a5d8457822d5 -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Thu Mar 27 19:49:51 2014 +0530 - - Return NULL for wildcard values in getnetgrent from nscd (BZ #16759) - - getnetgrent is supposed to return NULL for values that are wildcards - in the (host, user, domain) triplet. This works correctly with nscd - disabled, but with it enabled, it returns a blank ("") instead of a - NULL. This is easily seen with the output of `getent netgroup foonet` - for a netgroup foonet defined as follows in /etc/netgroup: - - foonet (,foo,) - - The output with nscd disabled is: - - foonet ( ,foo,) - - while with nscd enabled, it is: - - foonet (,foo,) - - The extra space with nscd disabled is due to the fact that `getent - netgroup` adds it if the return value from getnetgrent is NULL for - either host or user. - -diff --git a/inet/getnetgrent_r.c b/inet/getnetgrent_r.c -index 62cdfda..f6d064d 100644 ---- a/inet/getnetgrent_r.c -+++ b/inet/getnetgrent_r.c -@@ -235,6 +235,14 @@ endnetgrent (void) - libc_hidden_proto (internal_getnetgrent_r) - - -+static const char * -+get_nonempty_val (const char *in) -+{ -+ if (*in == '\0') -+ return NULL; -+ return in; -+} -+ - static enum nss_status - nscd_getnetgrent (struct __netgrent *datap, char *buffer, size_t buflen, - int *errnop) -@@ -243,11 +251,11 @@ nscd_getnetgrent (struct __netgrent *datap, char *buffer, size_t buflen, - return NSS_STATUS_UNAVAIL; - - datap->type = triple_val; -- datap->val.triple.host = datap->cursor; -+ datap->val.triple.host = get_nonempty_val (datap->cursor); - datap->cursor = (char *) __rawmemchr (datap->cursor, '\0') + 1; -- datap->val.triple.user = datap->cursor; -+ datap->val.triple.user = get_nonempty_val (datap->cursor); - datap->cursor = (char *) __rawmemchr (datap->cursor, '\0') + 1; -- datap->val.triple.domain = datap->cursor; -+ datap->val.triple.domain = get_nonempty_val (datap->cursor); - datap->cursor = (char *) __rawmemchr (datap->cursor, '\0') + 1; - - return NSS_STATUS_SUCCESS; diff --git a/src/patches/glibc/glibc-rh1085312.patch b/src/patches/glibc/glibc-rh1085312.patch deleted file mode 100644 index bafb303..0000000 --- a/src/patches/glibc/glibc-rh1085312.patch +++ /dev/null @@ -1,34 +0,0 @@ -commit 58b930ae216bfa98cd60212b954b07b9963d6d04 -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Wed Sep 10 21:51:50 2014 +0530 - - Return failure in getnetgrent only when all netgroups have been searched (#17363) - - The netgroups lookup code fails when one of the groups in the search - tree is empty. In such a case it only returns the leaves of the tree - after the blank netgroup. This is because the line parser returns a - NOTFOUND status when the netgroup exists but is empty. The - __getnetgrent_internal implementation needs to be fixed to try - remaining groups if the current group is entry. This patch implements - this fix. Tested on x86_64. - - [BZ #17363] - * inet/getnetgrent_r.c (__internal_getnetgrent_r): Try next - group if the current group is empty. - -diff --git a/inet/getnetgrent_r.c b/inet/getnetgrent_r.c -index f6d064d..e101537 100644 ---- a/inet/getnetgrent_r.c -+++ b/inet/getnetgrent_r.c -@@ -297,7 +297,10 @@ __internal_getnetgrent_r (char **hostp, char **userp, char **domainp, - { - status = (*fct) (datap, buffer, buflen, &errno); - -- if (status == NSS_STATUS_RETURN) -+ if (status == NSS_STATUS_RETURN -+ /* The service returned a NOTFOUND, but there are more groups that we -+ need to resolve before we give up. */ -+ || (status == NSS_STATUS_NOTFOUND && datap->needed_groups != NULL)) - { - /* This was the last one for this group. Look at next group - if available. */ diff --git a/src/patches/glibc/glibc-rh1087833.patch b/src/patches/glibc/glibc-rh1087833.patch deleted file mode 100644 index ca8f1f0..0000000 --- a/src/patches/glibc/glibc-rh1087833.patch +++ /dev/null @@ -1,65 +0,0 @@ -commit c3ec475c5dd16499aa040908e11d382c3ded9692 -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Mon May 26 11:40:08 2014 +0530 - - Use NSS_STATUS_TRYAGAIN to indicate insufficient buffer (BZ #16878) - - The netgroups nss modules in the glibc tree use NSS_STATUS_UNAVAIL - (with errno as ERANGE) when the supplied buffer does not have - sufficient space for the result. This is wrong, because the canonical - way to indicate insufficient buffer is to set the errno to ERANGE and - the status to NSS_STATUS_TRYAGAIN, as is used by all other modules. - - This fixes nscd behaviour when the nss_ldap module returns - NSS_STATUS_TRYAGAIN to indicate that a netgroup entry is too long to - fit into the supplied buffer. - -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c -index b3d40e9..edab174 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c -@@ -197,11 +197,6 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - int e; - status = getfct.f (&data, buffer + buffilled, - buflen - buffilled - req->key_len, &e); -- if (status == NSS_STATUS_RETURN -- || status == NSS_STATUS_NOTFOUND) -- /* This was either the last one for this group or the -- group was empty. Look at next group if available. */ -- break; - if (status == NSS_STATUS_SUCCESS) - { - if (data.type == triple_val) -@@ -320,11 +315,18 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - } - } - } -- else if (status == NSS_STATUS_UNAVAIL && e == ERANGE) -+ else if (status == NSS_STATUS_TRYAGAIN && e == ERANGE) - { - buflen *= 2; - buffer = xrealloc (buffer, buflen); - } -+ else if (status == NSS_STATUS_RETURN -+ || status == NSS_STATUS_NOTFOUND -+ || status == NSS_STATUS_UNAVAIL) -+ /* This was either the last one for this group or the -+ group was empty or the NSS module had an internal -+ failure. Look at next group if available. */ -+ break; - } - - enum nss_status (*endfct) (struct __netgrent *); -diff --git a/nss/nss_files/files-netgrp.c b/nss/nss_files/files-netgrp.c -index 34eae4c..bc0b367 100644 ---- a/nss/nss_files/files-netgrp.c -+++ b/nss/nss_files/files-netgrp.c -@@ -252,7 +252,7 @@ _nss_netgroup_parseline (char **cursor, struct __netgrent *result, - if (cp - host > buflen) - { - *errnop = ERANGE; -- status = NSS_STATUS_UNAVAIL; -+ status = NSS_STATUS_TRYAGAIN; - } - else - { diff --git a/src/patches/glibc/glibc-rh1088301.patch b/src/patches/glibc/glibc-rh1088301.patch deleted file mode 100644 index d26eb14..0000000 --- a/src/patches/glibc/glibc-rh1088301.patch +++ /dev/null @@ -1,142 +0,0 @@ -diff --git a/resolv/arpa/nameser.h b/resolv/arpa/nameser.h -index fb8513b..372d5cd 100644 ---- a/resolv/arpa/nameser.h -+++ b/resolv/arpa/nameser.h -@@ -293,6 +293,9 @@ typedef enum __ns_type { - ns_t_sink = 40, /*%< Kitchen sink (experimentatl) */ - ns_t_opt = 41, /*%< EDNS0 option (meta-RR) */ - ns_t_apl = 42, /*%< Address prefix list (RFC3123) */ -+ ns_t_rrsig = 46, /*%< DNSSEC RRset Signature (RFC4034) */ -+ ns_t_nsec = 47, /*%< DNSSEC Next-Secure Record (RFC4034)*/ -+ ns_t_dnskey = 48, /*%< DNSSEC key record (RFC4034) */ - ns_t_tkey = 249, /*%< Transaction key */ - ns_t_tsig = 250, /*%< Transaction signature. */ - ns_t_ixfr = 251, /*%< Incremental zone transfer. */ -diff --git a/resolv/arpa/nameser_compat.h b/resolv/arpa/nameser_compat.h -index d59c9e4..284bff7 100644 ---- a/resolv/arpa/nameser_compat.h -+++ b/resolv/arpa/nameser_compat.h -@@ -164,6 +164,9 @@ typedef struct { - #define T_NAPTR ns_t_naptr - #define T_A6 ns_t_a6 - #define T_DNAME ns_t_dname -+#define T_RRSIG ns_t_rrsig -+#define T_NSEC ns_t_nsec -+#define T_DNSKEY ns_t_dnskey - #define T_TSIG ns_t_tsig - #define T_IXFR ns_t_ixfr - #define T_AXFR ns_t_axfr -diff --git a/resolv/gethnamaddr.c b/resolv/gethnamaddr.c -index a861a84..ae55fac 100644 ---- a/resolv/gethnamaddr.c -+++ b/resolv/gethnamaddr.c -@@ -331,23 +331,36 @@ getanswer (const querybuf *answer, int anslen, const char *qname, int qtype) - buflen -= n; - continue; - } -- if ((type == T_SIG) || (type == T_KEY) || (type == T_NXT)) { -- /* We don't support DNSSEC yet. For now, ignore -- * the record and send a low priority message -- * to syslog. -- */ -- syslog(LOG_DEBUG|LOG_AUTH, -+ if ((type == T_SIG) || (type == T_KEY) || (type == T_NXT) -+ || (type == T_RRSIG) || (type == T_NSEC) -+ || (type == T_DNSKEY)) { -+ /* We don't support DNSSEC responses yet, but we do -+ * allow setting the DO bit. If the DNS server sent us -+ * these records without us asking for it, ignore the -+ * record and send a low priority message to syslog. -+ */ -+ if ((_res.options & RES_USE_DNSSEC) == 0) { -+ syslog(LOG_DEBUG|LOG_AUTH, - "gethostby*.getanswer: asked for "%s %s %s", got type "%s"", -- qname, p_class(C_IN), p_type(qtype), -- p_type(type)); -+ qname, p_class(C_IN), p_type(qtype), -+ p_type(type)); -+ } - cp += n; - continue; - } - if (type != qtype) { -- syslog(LOG_NOTICE|LOG_AUTH, -+ /* Skip logging if we received a DNAME when we have set -+ * the DO bit. DNAME records are a convenient way to -+ * set up DNSSEC records and such setups can make this -+ * log message needlessly noisy. -+ */ -+ if (!((_res.options & RES_USE_DNSSEC) -+ && type == T_DNAME)) { -+ syslog(LOG_NOTICE|LOG_AUTH, - "gethostby*.getanswer: asked for "%s %s %s", got type "%s"", -- qname, p_class(C_IN), p_type(qtype), -- p_type(type)); -+ qname, p_class(C_IN), p_type(qtype), -+ p_type(type)); -+ } - cp += n; - continue; /* XXX - had_error++ ? */ - } -diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c -index f715ab0..510d388 100644 ---- a/resolv/nss_dns/dns-host.c -+++ b/resolv/nss_dns/dns-host.c -@@ -822,13 +822,20 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype, - } - if (__builtin_expect (type == T_SIG, 0) - || __builtin_expect (type == T_KEY, 0) -- || __builtin_expect (type == T_NXT, 0)) -+ || __builtin_expect (type == T_NXT, 0) -+ || __builtin_expect (type == T_RRSIG, 0) -+ || __builtin_expect (type == T_NSEC, 0) -+ || __builtin_expect (type == T_DNSKEY, 0)) - { -- /* We don't support DNSSEC yet. For now, ignore the record -- and send a low priority message to syslog. */ -- syslog (LOG_DEBUG | LOG_AUTH, -- "gethostby*.getanswer: asked for "%s %s %s", got type "%s"", -- qname, p_class (C_IN), p_type(qtype), p_type (type)); -+ /* We don't support DNSSEC responses yet, but we do allow setting the -+ DO bit. If the DNS server sent us these records without us asking -+ for it, ignore the record and send a low priority message to -+ syslog. */ -+ if ((_res.options & RES_USE_DNSSEC) == 0) -+ syslog (LOG_DEBUG | LOG_AUTH, -+ "gethostby*.getanswer: asked for "%s %s %s", " -+ "got type "%s"", -+ qname, p_class (C_IN), p_type(qtype), p_type (type)); - cp += n; - continue; - } -@@ -837,9 +844,14 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype, - have_to_map = 1; - else if (__builtin_expect (type != qtype, 0)) - { -- syslog (LOG_NOTICE | LOG_AUTH, -- "gethostby*.getanswer: asked for "%s %s %s", got type "%s"", -- qname, p_class (C_IN), p_type (qtype), p_type (type)); -+ /* Skip logging if we received a DNAME when we have set the DO bit. -+ DNAME records are a convenient way to set up DNSSEC records and -+ such setups can make this log message needlessly noisy. */ -+ if (!((_res.options & RES_USE_DNSSEC) && type == T_DNAME)) -+ syslog (LOG_NOTICE | LOG_AUTH, -+ "gethostby*.getanswer: asked for "%s %s %s", " -+ "got type "%s"", -+ qname, p_class (C_IN), p_type (qtype), p_type (type)); - cp += n; - continue; /* XXX - had_error++ ? */ - } -diff --git a/resolv/res_debug.c b/resolv/res_debug.c -index 7843439..4a49629 100644 ---- a/resolv/res_debug.c -+++ b/resolv/res_debug.c -@@ -450,6 +450,8 @@ const struct res_sym __p_type_syms[] = { - {ns_t_kx, "KX", "Key Exchange"}, - {ns_t_cert, "CERT", "Certificate"}, - {ns_t_any, "ANY", ""any""}, -+ /* TODO Add RRSIG, NSEC and DNSKEY once we actually do something with -+ them. */ - {0, NULL, NULL} - }; - libresolv_hidden_data_def (__p_type_syms) diff --git a/src/patches/glibc/glibc-rh1091915.patch b/src/patches/glibc/glibc-rh1091915.patch deleted file mode 100644 index d1af874..0000000 --- a/src/patches/glibc/glibc-rh1091915.patch +++ /dev/null @@ -1,40 +0,0 @@ -commit 3cb26316b45b23dc5cfecbafdc489b28c3a52029 -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Thu Jan 29 10:30:09 2015 +0530 - - Initialize nscd stats data [BZ #17892] - - The padding bytes in the statsdata struct are not initialized, due to - which valgrind throws a warning: - - ==11384== Memcheck, a memory error detector - ==11384== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al. - ==11384== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info - ==11384== Command: nscd -d - ==11384== - Fri 25 Apr 2014 10:34:53 AM CEST - 11384: handle_request: request received (Version = 2) from PID 11396 - Fri 25 Apr 2014 10:34:53 AM CEST - 11384: GETSTAT - ==11384== Thread 6: - ==11384== Syscall param socketcall.sendto(msg) points to uninitialised byte(s) - ==11384== at 0x4E4ACDC: send (in /lib64/libpthread-2.12.so) - ==11384== by 0x11AF6B: send_stats (in /usr/sbin/nscd) - ==11384== by 0x112F75: nscd_run_worker (in /usr/sbin/nscd) - ==11384== by 0x4E439D0: start_thread (in /lib64/libpthread-2.12.so) - ==11384== by 0x599AB6C: clone (in /lib64/libc-2.12.so) - ==11384== Address 0x15708395 is on thread 6's stack - - Fix the warning by initializing the structure. - -diff --git a/nscd/nscd_stat.c b/nscd/nscd_stat.c -index 0f1f3c0..7aaa21b 100644 ---- a/nscd/nscd_stat.c -+++ b/nscd/nscd_stat.c -@@ -94,6 +94,8 @@ send_stats (int fd, struct database_dyn dbs[lastdb]) - struct statdata data; - int cnt; - -+ memset (&data, 0, sizeof (data)); -+ - memcpy (data.version, compilation, sizeof (compilation)); - data.debug_level = debug_level; - data.runtime = time (NULL) - start_time; diff --git a/src/patches/glibc/glibc-rh1099025-2.patch b/src/patches/glibc/glibc-rh1099025-2.patch deleted file mode 100644 index 58fe121..0000000 --- a/src/patches/glibc/glibc-rh1099025-2.patch +++ /dev/null @@ -1,159 +0,0 @@ -commit d6c33fda03457ca8ca87a562fa2681af16ca4ea5 -Author: Roland McGrath roland@hack.frob.com -Date: Thu May 24 11:37:30 2012 -0700 - - Switch gettimeofday from INTUSE to libc_hidden_proto. - -diff --git a/include/sys/time.h b/include/sys/time.h -index d5de942..599e189 100644 ---- a/include/sys/time.h -+++ b/include/sys/time.h -@@ -4,9 +4,8 @@ - /* Now document the internal interfaces. */ - extern int __gettimeofday (struct timeval *__tv, - struct timezone *__tz); --extern int __gettimeofday_internal (struct timeval *__tv, -- struct timezone *__tz) -- attribute_hidden; -+libc_hidden_proto (__gettimeofday) -+libc_hidden_proto (gettimeofday) - extern int __settimeofday (__const struct timeval *__tv, - __const struct timezone *__tz) - attribute_hidden; -@@ -22,8 +21,4 @@ extern int __utimes (const char *__file, const struct timeval __tvp[2]) - attribute_hidden; - extern int __futimes (int fd, __const struct timeval tvp[2]) attribute_hidden; - --#ifndef NOT_IN_libc --# define __gettimeofday(tv, tz) INTUSE(__gettimeofday) (tv, tz) --#endif -- - #endif -diff --git a/sysdeps/mach/gettimeofday.c b/sysdeps/mach/gettimeofday.c -index 88dca8e..293a775 100644 ---- a/sysdeps/mach/gettimeofday.c -+++ b/sysdeps/mach/gettimeofday.c -@@ -20,8 +20,6 @@ - #include <sys/time.h> - #include <mach.h> - --#undef __gettimeofday -- - /* Get the current time of day and timezone information, - putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled. - Returns 0 on success, -1 on errors. */ -@@ -42,6 +40,6 @@ __gettimeofday (tv, tz) - } - return 0; - } -- --INTDEF(__gettimeofday) -+libc_hidden_def (__gettimeofday) - weak_alias (__gettimeofday, gettimeofday) -+libc_hidden_weak (gettimeofday) -diff --git a/sysdeps/posix/gettimeofday.c b/sysdeps/posix/gettimeofday.c -index 31b3dd3..1108ff0 100644 ---- a/sysdeps/posix/gettimeofday.c -+++ b/sysdeps/posix/gettimeofday.c -@@ -19,8 +19,6 @@ - #include <time.h> - #include <sys/time.h> - --#undef __gettimeofday -- - /* Get the current time of day and timezone information, - putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled. - Returns 0 on success, -1 on errors. */ -@@ -66,6 +64,6 @@ __gettimeofday (tv, tz) - - return 0; - } -- --INTDEF(__gettimeofday) -+libc_hidden_def (__gettimeofday) - weak_alias (__gettimeofday, gettimeofday) -+libc_hidden_weak (gettimeofday) -diff --git a/sysdeps/unix/syscalls.list b/sysdeps/unix/syscalls.list -index 39c40ed..bd780f5 100644 ---- a/sysdeps/unix/common/syscalls.list -+++ b/sysdeps/unix/common/syscalls.list -@@ -5,7 +5,7 @@ getpid - getpid Ei: __getpid getpid - fchown - fchown i:iii __fchown fchown - ftruncate - ftruncate i:ii __ftruncate ftruncate - getrusage - getrusage i:ip __getrusage getrusage --gettimeofday - gettimeofday i:PP __gettimeofday gettimeofday __gettimeofday_internal -+gettimeofday - gettimeofday i:pP __gettimeofday gettimeofday - settimeofday - settimeofday i:PP __settimeofday settimeofday - setpgid - setpgrp i:ii __setpgid setpgid - setregid - setregid i:ii __setregid setregid -diff --git a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c -index b2ef2da..7376135 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c -+++ b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c -@@ -35,5 +35,6 @@ __gettimeofday (tv, tz) - } -- --#endif --INTDEF (__gettimeofday) -+libc_hidden_def (__gettimeofday) -+ -+#endif - weak_alias (__gettimeofday, gettimeofday) -+libc_hidden_weak (gettimeofday) -diff --git a/sysdeps/unix/sysv/linux/s390/gettimeofday.c b/sysdeps/unix/sysv/linux/s390/gettimeofday.c -index 63faef8..efbf1e8 100644 ---- a/sysdeps/unix/sysv/linux/s390/gettimeofday.c -+++ b/sysdeps/unix/sysv/linux/s390/gettimeofday.c -@@ -22,7 +22,6 @@ - #include <time.h> - #include <hp-timing.h> - --#undef __gettimeofday - #include <bits/libc-vdso.h> - - /* Get the current time of day and timezone information, -@@ -36,6 +35,6 @@ __gettimeofday (tv, tz) - { - return INLINE_VSYSCALL (gettimeofday, 2, CHECK_1 (tv), CHECK_1 (tz)); - } -- --INTDEF (__gettimeofday) -+libc_hidden_def (__gettimeofday) - weak_alias (__gettimeofday, gettimeofday) -+libc_hidden_weak (gettimeofday) -diff --git a/time/gettimeofday.c b/time/gettimeofday.c -index cfe6549..7eb770c 100644 ---- a/time/gettimeofday.c -+++ b/time/gettimeofday.c -@@ -18,8 +18,6 @@ - #include <errno.h> - #include <sys/time.h> - --#undef __gettimeofday -- - /* Get the current time of day and timezone information, - putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled. - Returns 0 on success, -1 on errors. */ -@@ -31,8 +29,9 @@ __gettimeofday (tv, tz) - __set_errno (ENOSYS); - return -1; - } --stub_warning (gettimeofday) -- --INTDEF(__gettimeofday) -+libc_hidden_def (__gettimeofday) - weak_alias (__gettimeofday, gettimeofday) -+libc_hidden_weak (gettimeofday) -+ -+stub_warning (gettimeofday) - #include <stub-tag.h> ---- a/sysdeps/unix/sysv/linux/x86_64/gettimeofday.S 2014-07-28 14:40:24.640144825 +0530 -+++ b/sysdeps/unix/sysv/linux/x86_64/gettimeofday.S 2014-07-28 14:40:21.320120072 +0530 -@@ -45,5 +45,6 @@ - ret - PSEUDO_END(__gettimeofday) - --strong_alias (__gettimeofday, __gettimeofday_internal) -+libc_hidden_def (__gettimeofday) - weak_alias (__gettimeofday, gettimeofday) -+libc_hidden_weak (gettimeofday) diff --git a/src/patches/glibc/glibc-rh1099025.patch b/src/patches/glibc/glibc-rh1099025.patch deleted file mode 100644 index d075be8..0000000 --- a/src/patches/glibc/glibc-rh1099025.patch +++ /dev/null @@ -1,47 +0,0 @@ -commit 736c304a1ab4cee36a2f3343f1698bc0abae4608 -Author: Adhemerval Zanella azanella@linux.vnet.ibm.com -Date: Thu Jan 16 06:53:18 2014 -0600 - - PowerPC: Fix ftime gettimeofday internal call returning bogus data - - This patches fixes BZ#16430 by setting a different symbol for internal - GLIBC calls that points to ifunc resolvers. For PPC32, if the symbol - is defined as hidden (which is the case for gettimeofday and time) the - compiler will create local branches (symbol@local) and linker will not - create PLT calls (required for IFUNC). This will leads to internal symbol - calling the IFUNC resolver instead of the resolved symbol. - For PPC64 this behavior does not occur because a call to a function in - another translation unit might use a different toc pointer thus requiring - a PLT call. - -diff --git a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c -index 29a5e08..2085b68 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c -+++ b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c -@@ -44,8 +44,24 @@ asm (".type __gettimeofday, %gnu_indirect_function"); - /* This is doing "libc_hidden_def (__gettimeofday)" but the compiler won't - let us do it in C because it doesn't know we're defining __gettimeofday - here in this file. */ --asm (".globl __GI___gettimeofday\n" -- "__GI___gettimeofday = __gettimeofday"); -+asm (".globl __GI___gettimeofday"); -+ -+/* __GI___gettimeofday is defined as hidden and for ppc32 it enables the -+ compiler make a local call (symbol@local) for internal GLIBC usage. It -+ means the PLT won't be used and the ifunc resolver will be called directly. -+ For ppc64 a call to a function in another translation unit might use a -+ different toc pointer thus disallowing direct branchess and making internal -+ ifuncs calls safe. */ -+#ifdef __powerpc64__ -+asm ("__GI___gettimeofday = __gettimeofday"); -+#else -+int -+__gettimeofday_vsyscall (struct timeval *tv, struct timezone *tz) -+{ -+ return INLINE_VSYSCALL (gettimeofday, 2, tv, tz); -+} -+asm ("__GI___gettimeofday = __gettimeofday_vsyscall"); -+#endif - - #else - diff --git a/src/patches/glibc/glibc-rh1111460.patch b/src/patches/glibc/glibc-rh1111460.patch deleted file mode 100644 index 1a4315d..0000000 --- a/src/patches/glibc/glibc-rh1111460.patch +++ /dev/null @@ -1,341 +0,0 @@ -commit 7cbcdb3699584db8913ca90f705d6337633ee10f -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Fri Oct 25 10:22:12 2013 +0530 - - Fix stack overflow due to large AF_INET6 requests - - Resolves #16072 (CVE-2013-4458). - - This patch fixes another stack overflow in getaddrinfo when it is - called with AF_INET6. The AF_UNSPEC case was fixed as CVE-2013-1914, - but the AF_INET6 case went undetected back then. - -commit 91ce40854d0b7f865cf5024ef95a8026b76096f3 -Author: Florian Weimer fweimer@redhat.com -Date: Fri Aug 16 09:38:52 2013 +0200 - - CVE-2013-4237, BZ #14699: Buffer overflow in readdir_r - - * sysdeps/posix/dirstream.h (struct __dirstream): Add errcode - member. - * sysdeps/posix/opendir.c (__alloc_dir): Initialize errcode - member. - * sysdeps/posix/rewinddir.c (rewinddir): Reset errcode member. - * sysdeps/posix/readdir_r.c (__READDIR_R): Enforce NAME_MAX limit. - Return delayed error code. Remove GETDENTS_64BIT_ALIGNED - conditional. - * sysdeps/unix/sysv/linux/wordsize-64/readdir_r.c: Do not define - GETDENTS_64BIT_ALIGNED. - * sysdeps/unix/sysv/linux/i386/readdir64_r.c: Likewise. - * manual/filesys.texi (Reading/Closing Directory): Document - ENAMETOOLONG return value of readdir_r. Recommend readdir more - strongly. - * manual/conf.texi (Limits for Files): Add portability note to - NAME_MAX, PATH_MAX. - (Pathconf): Add portability note for _PC_NAME_MAX, _PC_PATH_MAX. - -diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c -index e6ce4cf..8ff74b4 100644 ---- a/sysdeps/posix/getaddrinfo.c -+++ b/sysdeps/posix/getaddrinfo.c -@@ -197,7 +197,22 @@ gaih_inet_serv (const char *servicename, const struct gaih_typeproto *tp, - &rc, &herrno, NULL, &localcanon)); \ - if (rc != ERANGE || herrno != NETDB_INTERNAL) \ - break; \ -- tmpbuf = extend_alloca (tmpbuf, tmpbuflen, 2 * tmpbuflen); \ -+ if (!malloc_tmpbuf && __libc_use_alloca (alloca_used + 2 * tmpbuflen)) \ -+ tmpbuf = extend_alloca_account (tmpbuf, tmpbuflen, 2 * tmpbuflen, \ -+ alloca_used); \ -+ else \ -+ { \ -+ char *newp = realloc (malloc_tmpbuf ? tmpbuf : NULL, \ -+ 2 * tmpbuflen); \ -+ if (newp == NULL) \ -+ { \ -+ result = -EAI_MEMORY; \ -+ goto free_and_return; \ -+ } \ -+ tmpbuf = newp; \ -+ malloc_tmpbuf = true; \ -+ tmpbuflen = 2 * tmpbuflen; \ -+ } \ - } \ - if (status == NSS_STATUS_SUCCESS && rc == 0) \ - h = &th; \ -@@ -209,7 +224,8 @@ gaih_inet_serv (const char *servicename, const struct gaih_typeproto *tp, - { \ - __set_h_errno (herrno); \ - _res.options = old_res_options; \ -- return -EAI_SYSTEM; \ -+ result = -EAI_SYSTEM; \ -+ goto free_and_return; \ - } \ - if (herrno == TRY_AGAIN) \ - no_data = EAI_AGAIN; \ - -diff --git a/manual/conf.texi b/manual/conf.texi -index 7eb8b36..c720063 100644 ---- a/manual/conf.texi -+++ b/manual/conf.texi -@@ -1149,6 +1149,9 @@ typed ahead as input. @xref{I/O Queues}. - @comment POSIX.1 - @deftypevr Macro int NAME_MAX - The uniform system limit (if any) for the length of a file name component. -+ -+@strong{Portability Note:} On some systems, the GNU C Library defines -+@code{NAME_MAX}, but does not actually enforce this limit. - @end deftypevr - - @comment limits.h -@@ -1157,6 +1160,9 @@ including the terminating null character. - @deftypevr Macro int PATH_MAX - The uniform system limit (if any) for the length of an entire file name (that - is, the argument given to system calls such as @code{open}). -+ -+@strong{Portability Note:} The GNU C Library does not enforce this limit -+even if @code{PATH_MAX} is defined. - @end deftypevr - - @cindex limits, pipe buffer size -@@ -1476,6 +1482,9 @@ Inquire about the value of @code{POSIX_REC_MIN_XFER_SIZE}. - Inquire about the value of @code{POSIX_REC_XFER_ALIGN}. - @end table - -+@strong{Portability Note:} On some systems, the GNU C Library does not -+enforce @code{_PC_NAME_MAX} or @code{_PC_PATH_MAX} limits. -+ - @node Utility Limits - @section Utility Program Capacity Limits - -diff --git a/manual/filesys.texi b/manual/filesys.texi -index 1df9cf2..814c210 100644 ---- a/manual/filesys.texi -+++ b/manual/filesys.texi -@@ -444,9 +444,9 @@ symbols are declared in the header file @file{dirent.h}. - @comment POSIX.1 - @deftypefun {struct dirent *} readdir (DIR *@var{dirstream}) - This function reads the next entry from the directory. It normally --returns a pointer to a structure containing information about the file. --This structure is statically allocated and can be rewritten by a --subsequent call. -+returns a pointer to a structure containing information about the -+file. This structure is associated with the @var{dirstream} handle -+and can be rewritten by a subsequent call. - - @strong{Portability Note:} On some systems @code{readdir} may not - return entries for @file{.} and @file{..}, even though these are always -@@ -461,19 +461,61 @@ conditions are defined for this function: - The @var{dirstream} argument is not valid. - @end table - --@code{readdir} is not thread safe. Multiple threads using --@code{readdir} on the same @var{dirstream} may overwrite the return --value. Use @code{readdir_r} when this is critical. -+To distinguish between an end-of-directory condition or an error, you -+must set @code{errno} to zero before calling @code{readdir}. To avoid -+entering an infinite loop, you should stop reading from the directory -+after the first error. -+ -+In POSIX.1-2008, @code{readdir} is not thread-safe. In the GNU C Library -+implementation, it is safe to call @code{readdir} concurrently on -+different @var{dirstream}s, but multiple threads accessing the same -+@var{dirstream} result in undefined behavior. @code{readdir_r} is a -+fully thread-safe alternative, but suffers from poor portability (see -+below). It is recommended that you use @code{readdir}, with external -+locking if multiple threads access the same @var{dirstream}. - @end deftypefun - - @comment dirent.h - @comment GNU - @deftypefun int readdir_r (DIR *@var{dirstream}, struct dirent *@var{entry}, struct dirent **@var{result}) --This function is the reentrant version of @code{readdir}. Like --@code{readdir} it returns the next entry from the directory. But to --prevent conflicts between simultaneously running threads the result is --not stored in statically allocated memory. Instead the argument --@var{entry} points to a place to store the result. -+This function is a version of @code{readdir} which performs internal -+locking. Like @code{readdir} it returns the next entry from the -+directory. To prevent conflicts between simultaneously running -+threads the result is stored inside the @var{entry} object. -+ -+@strong{Portability Note:} It is recommended to use @code{readdir} -+instead of @code{readdir_r} for the following reasons: -+ -+@itemize @bullet -+@item -+On systems which do not define @code{NAME_MAX}, it may not be possible -+to use @code{readdir_r} safely because the caller does not specify the -+length of the buffer for the directory entry. -+ -+@item -+On some systems, @code{readdir_r} cannot read directory entries with -+very long names. If such a name is encountered, the GNU C Library -+implementation of @code{readdir_r} returns with an error code of -+@code{ENAMETOOLONG} after the final directory entry has been read. On -+other systems, @code{readdir_r} may return successfully, but the -+@code{d_name} member may not be NUL-terminated or may be truncated. -+ -+@item -+POSIX-1.2008 does not guarantee that @code{readdir} is thread-safe, -+even when access to the same @var{dirstream} is serialized. But in -+current implementations (including the GNU C Library), it is safe to call -+@code{readdir} concurrently on different @var{dirstream}s, so there is -+no need to use @code{readdir_r} in most multi-threaded programs. In -+the rare case that multiple threads need to read from the same -+@var{dirstream}, it is still better to use @code{readdir} and external -+synchronization. -+ -+@item -+It is expected that future versions of POSIX will obsolete -+@code{readdir_r} and mandate the level of thread safety for -+@code{readdir} which is provided by the GNU C Library and other -+implementations today. -+@end itemize - - Normally @code{readdir_r} returns zero and sets @code{*@var{result}} - to @var{entry}. If there are no more entries in the directory or an -@@ -481,15 +523,6 @@ error is detected, @code{readdir_r} sets @code{*@var{result}} to a - null pointer and returns a nonzero error code, also stored in - @code{errno}, as described for @code{readdir}. - --@strong{Portability Note:} On some systems @code{readdir_r} may not --return a NUL terminated string for the file name, even when there is no --@code{d_reclen} field in @code{struct dirent} and the file --name is the maximum allowed size. Modern systems all have the --@code{d_reclen} field, and on old systems multi-threading is not --critical. In any case there is no such problem with the @code{readdir} --function, so that even on systems without the @code{d_reclen} member one --could use multiple threads by using external locking. -- - It is also important to look at the definition of the @code{struct - dirent} type. Simply passing a pointer to an object of this type for - the second parameter of @code{readdir_r} might not be enough. Some -diff --git a/sysdeps/unix/dirstream.h b/sysdeps/unix/dirstream.h -index a7a074d..8e8570d 100644 ---- a/sysdeps/unix/dirstream.h -+++ b/sysdeps/unix/dirstream.h -@@ -39,6 +39,8 @@ struct __dirstream - - off_t filepos; /* Position of next entry to read. */ - -+ int errcode; /* Delayed error code. */ -+ - /* Directory block. */ - char data[0] __attribute__ ((aligned (__alignof__ (void*)))); - }; -diff --git a/sysdeps/unix/opendir.c b/sysdeps/unix/opendir.c -index ddfc3a7..fc05b0f 100644 ---- a/sysdeps/unix/opendir.c -+++ b/sysdeps/unix/opendir.c -@@ -231,6 +231,7 @@ __alloc_dir (int fd, bool close_fd, int flags, const struct stat64 *statp) - dirp->size = 0; - dirp->offset = 0; - dirp->filepos = 0; -+ dirp->errcode = 0; - - return dirp; - } -diff --git a/sysdeps/unix/readdir_r.c b/sysdeps/unix/readdir_r.c -index b5a8e2e..8ed5c3f 100644 ---- a/sysdeps/unix/readdir_r.c -+++ b/sysdeps/unix/readdir_r.c -@@ -40,6 +40,7 @@ __READDIR_R (DIR *dirp, DIRENT_TYPE *entry, DIRENT_TYPE **result) - DIRENT_TYPE *dp; - size_t reclen; - const int saved_errno = errno; -+ int ret; - - __libc_lock_lock (dirp->lock); - -@@ -70,10 +71,10 @@ __READDIR_R (DIR *dirp, DIRENT_TYPE *entry, DIRENT_TYPE **result) - bytes = 0; - __set_errno (saved_errno); - } -+ if (bytes < 0) -+ dirp->errcode = errno; - - dp = NULL; -- /* Reclen != 0 signals that an error occurred. */ -- reclen = bytes != 0; - break; - } - dirp->size = (size_t) bytes; -@@ -106,28 +107,46 @@ __READDIR_R (DIR *dirp, DIRENT_TYPE *entry, DIRENT_TYPE **result) - dirp->filepos += reclen; - #endif - -- /* Skip deleted files. */ -+#ifdef NAME_MAX -+ if (reclen > offsetof (DIRENT_TYPE, d_name) + NAME_MAX + 1) -+ { -+ /* The record is very long. It could still fit into the -+ caller-supplied buffer if we can skip padding at the -+ end. */ -+ size_t namelen = _D_EXACT_NAMLEN (dp); -+ if (namelen <= NAME_MAX) -+ reclen = offsetof (DIRENT_TYPE, d_name) + namelen + 1; -+ else -+ { -+ /* The name is too long. Ignore this file. */ -+ dirp->errcode = ENAMETOOLONG; -+ dp->d_ino = 0; -+ continue; -+ } -+ } -+#endif -+ -+ /* Skip deleted and ignored files. */ - } - while (dp->d_ino == 0); - - if (dp != NULL) - { --#ifdef GETDENTS_64BIT_ALIGNED -- /* The d_reclen value might include padding which is not part of -- the DIRENT_TYPE data structure. */ -- reclen = MIN (reclen, sizeof (DIRENT_TYPE)); --#endif - *result = memcpy (entry, dp, reclen); --#ifdef GETDENTS_64BIT_ALIGNED -+#ifdef _DIRENT_HAVE_D_RECLEN - entry->d_reclen = reclen; - #endif -+ ret = 0; - } - else -- *result = NULL; -+ { -+ *result = NULL; -+ ret = dirp->errcode; -+ } - - __libc_lock_unlock (dirp->lock); - -- return dp != NULL ? 0 : reclen ? errno : 0; -+ return ret; - } - - #ifdef __READDIR_R_ALIAS -diff --git a/sysdeps/unix/rewinddir.c b/sysdeps/unix/rewinddir.c -index 2935a8e..d4991ad 100644 ---- a/sysdeps/unix/rewinddir.c -+++ b/sysdeps/unix/rewinddir.c -@@ -33,5 +33,6 @@ rewinddir (dirp) - dirp->filepos = 0; - dirp->offset = 0; - dirp->size = 0; -+ dirp->errcode = 0; - __libc_lock_unlock (dirp->lock); - } -diff --git a/sysdeps/unix/sysv/linux/i386/readdir64_r.c b/sysdeps/unix/sysv/linux/i386/readdir64_r.c -index 8ebbcfd..a7d114e 100644 ---- a/sysdeps/unix/sysv/linux/i386/readdir64_r.c -+++ b/sysdeps/unix/sysv/linux/i386/readdir64_r.c -@@ -18,7 +18,6 @@ - #define __READDIR_R __readdir64_r - #define __GETDENTS __getdents64 - #define DIRENT_TYPE struct dirent64 --#define GETDENTS_64BIT_ALIGNED 1 - - #include <sysdeps/unix/readdir_r.c> - diff --git a/src/patches/glibc/glibc-rh1116050-1.patch b/src/patches/glibc/glibc-rh1116050-1.patch deleted file mode 100644 index 439cf6d..0000000 --- a/src/patches/glibc/glibc-rh1116050-1.patch +++ /dev/null @@ -1,57 +0,0 @@ -# -# In rhel-6.x the Makerules are not entirely as mature as they are -# in glibc 2.21 (from which the example link-libc-args is taken from). -# In rhel-6.x the applications are not built like their counterpart -# real applications, and because of that compiling DSOs that use TLS -# will fail with undefined references to __tls_get_addr which resides -# in ld.so and is never included in the link. This patch enhances -# only the build-module and build-module-asneeded targets to include -# a more fully and correct link line as the compiler driver would use -# when constructing an application or DSO. We do not adjust the link -# lines used to build lib* targets. -# -diff -urN glibc-2.12-2-gc4ccff1.orig/Makerules glibc-2.12-2-gc4ccff1/Makerules ---- glibc-2.12-2-gc4ccff1.orig/Makerules 2015-02-18 19:53:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1/Makerules 2015-02-18 20:08:33.299000028 -0500 -@@ -443,6 +443,25 @@ - load-map-file = $(map-file:%=-Wl,--version-script=%) - endif - -+# Compiler arguments to use to link a shared object with libc and -+# ld.so. This is intended to be as similar as possible to a default -+# link with an installed libc. -+link-libc-args = -Wl,--start-group \ -+ $(libc-for-link) \ -+ $(common-objpfx)libc_nonshared.a \ -+ $(as-needed) $(elf-objpfx)ld.so $(no-as-needed) \ -+ -Wl,--end-group -+ -+# The corresponding shared libc to use. This may be modified for a -+# particular target. -+libc-for-link = $(common-objpfx)libc.so -+ -+# The corresponding dependencies. As these are used in dependencies, -+# not just commands, they cannot use target-specific variables so need -+# to name both possible libc.so objects. -+link-libc-deps = $(common-objpfx)libc.so $(common-objpfx)linkobj/libc.so \ -+ $(common-objpfx)libc_nonshared.a $(elf-objpfx)ld.so -+ - # Pattern rule to build a shared object from an archive of PIC objects. - # This must come after the installation rules so Make doesn't try to - # build shared libraries in place from the installed *_pic.a files. -@@ -557,12 +576,13 @@ - # not for shared objects - define build-module - $(build-module-helper) -o $@ -T $(common-objpfx)shlib.lds \ -- $(csu-objpfx)abi-note.o $(build-module-objlist) -+ $(csu-objpfx)abi-note.o $(build-module-objlist) $(link-libc-args) - endef - define build-module-asneeded - $(build-module-helper) -o $@ -T $(common-objpfx)shlib.lds \ - $(csu-objpfx)abi-note.o \ -- -Wl,--as-needed $(build-module-objlist) -Wl,--no-as-needed -+ -Wl,--as-needed $(build-module-objlist) -Wl,--no-as-needed \ -+ $(link-libc-args) - endef - else - ifneq (,$(findstring aix,$(config-os))) diff --git a/src/patches/glibc/glibc-rh1116050.patch b/src/patches/glibc/glibc-rh1116050.patch deleted file mode 100644 index 7631312..0000000 --- a/src/patches/glibc/glibc-rh1116050.patch +++ /dev/null @@ -1,407 +0,0 @@ -# -# Based on this upstream commit: -# -# commit d8dd00805b8f3a011735d7a407097fb1c408d867 -# Author: H.J. Lu hjl.tools@gmail.com -# Date: Fri Nov 28 07:54:07 2014 -0800 -# -# Resize DTV if the current DTV isn't big enough -# -# This patch changes _dl_allocate_tls_init to resize DTV if the current DTV -# isn't big enough. Tested on X86-64, x32 and ia32. -# -# [BZ #13862] -# * elf/dl-tls.c: Include <atomic.h>. -# (oom): Remove #ifdef SHARED/#endif. -# (_dl_static_dtv, _dl_initial_dtv): Moved before ... -# (_dl_resize_dtv): This. Extracted from _dl_update_slotinfo. -# (_dl_allocate_tls_init): Resize DTV if the current DTV isn't -# big enough. -# (_dl_update_slotinfo): Call _dl_resize_dtv to resize DTV. -# * nptl/Makefile (tests): Add tst-stack4. -# (modules-names): Add tst-stack4mod. -# ($(objpfx)tst-stack4): New. -# (tst-stack4mod.sos): Likewise. -# ($(objpfx)tst-stack4.out): Likewise. -# ($(tst-stack4mod.sos)): Likewise. -# (clean): Likewise. -# * nptl/tst-stack4.c: New file. -# * nptl/tst-stack4mod.c: Likewise. -# -diff -urN glibc-2.12-2-gc4ccff1/elf/dl-tls.c glibc-2.12-2-gc4ccff1.mod/elf/dl-tls.c ---- glibc-2.12-2-gc4ccff1/elf/dl-tls.c 2015-02-18 14:15:28.078461873 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/elf/dl-tls.c 2015-02-18 14:38:37.630374771 -0500 -@@ -24,6 +24,7 @@ - #include <stdlib.h> - #include <unistd.h> - #include <sys/param.h> -+#include <atomic.h> - - #include <tls.h> - #include <dl-tls.h> -@@ -35,14 +36,12 @@ - - - /* Out-of-memory handler. */ --#ifdef SHARED - static void - __attribute__ ((__noreturn__)) - oom (void) - { - _dl_fatal_printf ("cannot allocate memory for thread-local data: ABORT\n"); - } --#endif - - - size_t -@@ -392,6 +391,52 @@ - return result; - } - -+static dtv_t * -+_dl_resize_dtv (dtv_t *dtv) -+{ -+ /* Resize the dtv. */ -+ dtv_t *newp; -+ /* Load GL(dl_tls_max_dtv_idx) atomically since it may be written to by -+ other threads concurrently. -- We don't have the required atomic -+ infrastructure to load dl_tls_max_dtv_idx atomically, but on all the -+ architectures we care about it should load atomically. If this had -+ an atomic_load_acquire we would still be missing the releases for -+ the writes. */ -+ size_t newsize = GL(dl_tls_max_dtv_idx) + DTV_SURPLUS; -+ size_t oldsize = dtv[-1].counter; -+ -+#if SHARED -+ if (dtv == GL(dl_initial_dtv)) -+ { -+ /* This is the initial dtv that was either statically allocated in -+ __libc_setup_tls or allocated during rtld startup using the -+ dl-minimal.c malloc instead of the real malloc. We can't free -+ it, we have to abandon the old storage. */ -+ -+ newp = malloc ((2 + newsize) * sizeof (dtv_t)); -+ if (newp == NULL) -+ oom (); -+ memcpy (newp, &dtv[-1], (2 + oldsize) * sizeof (dtv_t)); -+ } -+ else -+#endif -+ { -+ newp = realloc (&dtv[-1], -+ (2 + newsize) * sizeof (dtv_t)); -+ if (newp == NULL) -+ oom (); -+ } -+ -+ newp[0].counter = newsize; -+ -+ /* Clear the newly allocated part. */ -+ memset (newp + 2 + oldsize, '\0', -+ (newsize - oldsize) * sizeof (dtv_t)); -+ -+ /* Return the generation counter. */ -+ return &newp[1]; -+} -+ - - void * - internal_function -@@ -406,6 +451,16 @@ - size_t total = 0; - size_t maxgen = 0; - -+ /* Check if the current dtv is big enough. */ -+ if (dtv[-1].counter < GL(dl_tls_max_dtv_idx)) -+ { -+ /* Resize the dtv. */ -+ dtv = _dl_resize_dtv (dtv); -+ -+ /* Install this new dtv in the thread data structures. */ -+ INSTALL_DTV (result, &dtv[-1]); -+ } -+ - /* We have to prepare the dtv for all currently loaded modules using - TLS. For those which are dynamically loaded we add the values - indicating deferred allocation. */ -@@ -637,41 +692,10 @@ - assert (total + cnt == modid); - if (dtv[-1].counter < modid) - { -- /* Reallocate the dtv. */ -- dtv_t *newp; -- size_t newsize = GL(dl_tls_max_dtv_idx) + DTV_SURPLUS; -- size_t oldsize = dtv[-1].counter; -- -- assert (map->l_tls_modid <= newsize); -- -- if (dtv == GL(dl_initial_dtv)) -- { -- /* This is the initial dtv that was allocated -- during rtld startup using the dl-minimal.c -- malloc instead of the real malloc. We can't -- free it, we have to abandon the old storage. */ -- -- newp = malloc ((2 + newsize) * sizeof (dtv_t)); -- if (newp == NULL) -- oom (); -- memcpy (newp, &dtv[-1], (2 + oldsize) * sizeof (dtv_t)); -- } -- else -- { -- newp = realloc (&dtv[-1], -- (2 + newsize) * sizeof (dtv_t)); -- if (newp == NULL) -- oom (); -- } -- -- newp[0].counter = newsize; -- -- /* Clear the newly allocated part. */ -- memset (newp + 2 + oldsize, '\0', -- (newsize - oldsize) * sizeof (dtv_t)); -+ /* Resize the dtv. */ -+ dtv = _dl_resize_dtv (dtv); - -- /* Point dtv to the generation counter. */ -- dtv = &newp[1]; -+ assert (modid <= dtv[-1].counter); - - /* Install this new dtv in the thread data - structures. */ -diff -urN glibc-2.12-2-gc4ccff1/nptl/Makefile glibc-2.12-2-gc4ccff1.mod/nptl/Makefile ---- glibc-2.12-2-gc4ccff1/nptl/Makefile 2015-02-18 14:15:28.073462028 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/nptl/Makefile 2015-02-18 14:15:49.817786667 -0500 -@@ -245,7 +245,7 @@ - tst-exec1 tst-exec2 tst-exec3 tst-exec4 \ - tst-exit1 tst-exit2 tst-exit3 \ - tst-stdio1 tst-stdio2 \ -- tst-stack1 tst-stack2 tst-stack3 \ -+ tst-stack1 tst-stack2 tst-stack3 tst-stack4 \ - tst-unload \ - tst-dlsym1 \ - tst-sysconf \ -@@ -304,7 +304,7 @@ - - modules-names = tst-atfork2mod tst-tls3mod tst-tls4moda tst-tls4modb \ - tst-tls5mod tst-tls5moda tst-tls5modb tst-tls5modc \ -- tst-tls5modd tst-tls5mode tst-tls5modf \ -+ tst-tls5modd tst-tls5mode tst-tls5modf tst-stack4mod \ - tst-_res1mod1 tst-_res1mod2 tst-execstack-mod tst-fini1mod - extra-test-objs += $(addsuffix .os,$(strip $(modules-names))) tst-cleanup4aux.o - test-extras += $(modules-names) -@@ -459,6 +459,19 @@ - $(common-objpfx)malloc/mtrace $(objpfx)tst-stack3.mtrace > $@ - generated += tst-stack3-mem tst-stack3.mtrace - -+$(objpfx)tst-stack4: $(libdl) $(shared-thread-library) -+tst-stack4mod.sos=$(shell for i in 0 1 2 3 4 5 6 7 8 9 10 \ -+ 11 12 13 14 15 16 17 18 19; do \ -+ for j in 0 1 2 3 4 5 6 7 8 9 10 \ -+ 11 12 13 14 15 16 17 18 19; do \ -+ echo $(objpfx)tst-stack4mod-$$i-$$j.so; \ -+ done; done) -+$(objpfx)tst-stack4.out: $(tst-stack4mod.sos) -+$(tst-stack4mod.sos): $(objpfx)tst-stack4mod.so -+ cp -f $< $@ -+clean: -+ rm -f $(tst-stack4mod.sos) -+ - $(objpfx)tst-cleanup4: $(objpfx)tst-cleanup4aux.o $(shared-thread-library) - $(objpfx)tst-cleanupx4: $(objpfx)tst-cleanup4aux.o $(shared-thread-library) - -diff -urN glibc-2.12-2-gc4ccff1/nptl/tst-stack4.c glibc-2.12-2-gc4ccff1.mod/nptl/tst-stack4.c ---- glibc-2.12-2-gc4ccff1/nptl/tst-stack4.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/nptl/tst-stack4.c 2015-02-18 14:15:49.817786667 -0500 -@@ -0,0 +1,159 @@ -+/* Test DTV size oveflow when pthread_create reuses old DTV and TLS is -+ used by dlopened shared object. -+ Copyright (C) 2014 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ -+#include <stdio.h> -+#include <stdint.h> -+#include <dlfcn.h> -+#include <assert.h> -+#include <pthread.h> -+ -+/* The choices of thread count, and file counts are arbitary. -+ The point is simply to run enough threads that an exiting -+ thread has it's stack reused by another thread at the same -+ time as new libraries have been loaded. */ -+#define DSO_SHARED_FILES 20 -+#define DSO_OPEN_THREADS 20 -+#define DSO_EXEC_THREADS 2 -+ -+/* Used to make sure that only one thread is calling dlopen and dlclose -+ at a time. */ -+pthread_mutex_t g_lock; -+ -+typedef void (*function) (void); -+ -+void * -+dso_invoke(void *dso_fun) -+{ -+ function *fun_vec = (function *) dso_fun; -+ int dso; -+ -+ for (dso = 0; dso < DSO_SHARED_FILES; dso++) -+ (*fun_vec[dso]) (); -+ -+ pthread_exit (NULL); -+} -+ -+void * -+dso_process (void * p) -+{ -+ void *handle[DSO_SHARED_FILES]; -+ function fun_vec[DSO_SHARED_FILES]; -+ char dso_path[DSO_SHARED_FILES][100]; -+ int dso; -+ uintptr_t t = (uintptr_t) p; -+ -+ /* Open DSOs and get a function. */ -+ for (dso = 0; dso < DSO_SHARED_FILES; dso++) -+ { -+ sprintf (dso_path[dso], "tst-stack4mod-%i-%i.so", t, dso); -+ -+ pthread_mutex_lock (&g_lock); -+ -+ handle[dso] = dlopen (dso_path[dso], RTLD_NOW); -+ assert (handle[dso]); -+ -+ fun_vec[dso] = (function) dlsym (handle[dso], "function"); -+ assert (fun_vec[dso]); -+ -+ pthread_mutex_unlock (&g_lock); -+ } -+ -+ /* Spawn workers. */ -+ pthread_t thread[DSO_EXEC_THREADS]; -+ int i, ret; -+ uintptr_t result = 0; -+ for (i = 0; i < DSO_EXEC_THREADS; i++) -+ { -+ pthread_mutex_lock (&g_lock); -+ ret = pthread_create (&thread[i], NULL, dso_invoke, (void *) fun_vec); -+ if (ret != 0) -+ { -+ printf ("pthread_create failed: %d\n", ret); -+ result = 1; -+ } -+ pthread_mutex_unlock (&g_lock); -+ } -+ -+ if (!result) -+ for (i = 0; i < DSO_EXEC_THREADS; i++) -+ { -+ ret = pthread_join (thread[i], NULL); -+ if (ret != 0) -+ { -+ printf ("pthread_join failed: %d\n", ret); -+ result = 1; -+ } -+ } -+ -+ /* Close all DSOs. */ -+ for (dso = 0; dso < DSO_SHARED_FILES; dso++) -+ { -+ pthread_mutex_lock (&g_lock); -+ dlclose (handle[dso]); -+ pthread_mutex_unlock (&g_lock); -+ } -+ -+ /* Exit. */ -+ pthread_exit ((void *) result); -+} -+ -+static int -+do_test (void) -+{ -+ pthread_t thread[DSO_OPEN_THREADS]; -+ int i,j; -+ int ret; -+ int result = 0; -+ -+ pthread_mutex_init (&g_lock, NULL); -+ -+ /* 100 is arbitrary here and is known to trigger PR 13862. */ -+ for (j = 0; j < 100; j++) -+ { -+ for (i = 0; i < DSO_OPEN_THREADS; i++) -+ { -+ ret = pthread_create (&thread[i], NULL, dso_process, -+ (void *) (uintptr_t) i); -+ if (ret != 0) -+ { -+ printf ("pthread_create failed: %d\n", ret); -+ result = 1; -+ } -+ } -+ -+ if (result) -+ break; -+ -+ for (i = 0; i < DSO_OPEN_THREADS; i++) -+ { -+ ret = pthread_join (thread[i], NULL); -+ if (ret != 0) -+ { -+ printf ("pthread_join failed: %d\n", ret); -+ result = 1; -+ } -+ } -+ } -+ -+ return result; -+} -+ -+#define TEST_FUNCTION do_test () -+#define TIMEOUT 100 -+#include "../test-skeleton.c" -diff -urN glibc-2.12-2-gc4ccff1/nptl/tst-stack4mod.c glibc-2.12-2-gc4ccff1.mod/nptl/tst-stack4mod.c ---- glibc-2.12-2-gc4ccff1/nptl/tst-stack4mod.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/nptl/tst-stack4mod.c 2015-02-18 14:15:49.817786667 -0500 -@@ -0,0 +1,28 @@ -+/* This tests DTV usage with TLS in dlopened shared object. -+ Copyright (C) 2014 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ -+/* 256 is arbitrary here and is known to trigger PR 13862. */ -+__thread int var[256] attribute_hidden = {0}; -+ -+void -+function (void) -+{ -+ int i; -+ for (i = 0; i < sizeof (var) / sizeof (int); i++) -+ var[i] = i; -+} diff --git a/src/patches/glibc/glibc-rh1124204.patch b/src/patches/glibc/glibc-rh1124204.patch deleted file mode 100644 index f14c4cb..0000000 --- a/src/patches/glibc/glibc-rh1124204.patch +++ /dev/null @@ -1,47 +0,0 @@ -# -# Derived from this upstream commit: -# -# commit 58a1335e76a553e1cf4edeebc27f16fc9b53d6e6 -# Author: Petr Baudis pasky@ucw.cz -# Date: Thu Mar 14 01:16:53 2013 +0100 -# -# Fix __times() handling of EFAULT when buf is NULL -# -# 2013-03-14 Petr Baudis pasky@ucw.cz -# -# * sysdeps/unix/sysv/linux/times.c (__times): On EFAULT, test -# for non-NULL pointer before the memory validity test. Pointed -# out by Holger Brunck holger.brunck@keymile.com. -# -diff --git a/sysdeps/unix/sysv/linux/times.c b/sysdeps/unix/sysv/linux/times.c -index f3b5f01..e59bb4e 100644 ---- a/sysdeps/unix/sysv/linux/times.c -+++ b/sysdeps/unix/sysv/linux/times.c -@@ -26,13 +26,14 @@ __times (struct tms *buf) - INTERNAL_SYSCALL_DECL (err); - clock_t ret = INTERNAL_SYSCALL (times, err, 1, buf); - if (INTERNAL_SYSCALL_ERROR_P (ret, err) -- && __builtin_expect (INTERNAL_SYSCALL_ERRNO (ret, err) == EFAULT, 0)) -+ && __builtin_expect (INTERNAL_SYSCALL_ERRNO (ret, err) == EFAULT, 0) -+ && buf) - { - /* This might be an error or not. For architectures which have - no separate return value and error indicators we cannot - distinguish a return value of -1 from an error. Do it the -- hard way. We crash applications which pass in an invalid BUF -- pointer. */ -+ hard way. We crash applications which pass in an invalid -+ non-NULL BUF pointer. Linux allows BUF to be NULL. */ - #define touch(v) \ - do { \ - clock_t temp = v; \ -@@ -44,7 +45,8 @@ __times (struct tms *buf) - touch (buf->tms_cutime); - touch (buf->tms_cstime); - -- /* If we come here the memory is valid and the kernel did not -+ /* If we come here the memory is valid (or BUF is NULL, which is -+ * a valid condition for the kernel syscall) and the kernel did not - return an EFAULT error. Return the value given by the kernel. */ - } - diff --git a/src/patches/glibc/glibc-rh1125307.patch b/src/patches/glibc/glibc-rh1125307.patch deleted file mode 100644 index 72ba01d..0000000 --- a/src/patches/glibc/glibc-rh1125307.patch +++ /dev/null @@ -1,19 +0,0 @@ -commit a11892631d92f594c690d0d50a642b0d1aba58b8 -Author: OndÅej BÃlka neleai@seznam.cz -Date: Wed May 7 14:08:57 2014 +0200 - - Fix typo in nscd/selinux.c - -diff --git a/nscd/selinux.c b/nscd/selinux.c -index 9a8a5a8..eaed6dd 100644 ---- a/nscd/selinux.c -+++ b/nscd/selinux.c -@@ -372,7 +372,7 @@ nscd_request_avc_has_perm (int fd, request_type req) - /* Get the security class for nscd. If this fails we will likely be - unable to do anything unless avc_deny_unknown is 0. */ - sc_nscd = string_to_security_class ("nscd"); -- if (perm == 0 && avc_deny_unknown == 1) -+ if (sc_nscd == 0 && avc_deny_unknown == 1) - dbg_log (_("Error getting security class for nscd.")); - - /* Convert permission to AVC bits. */ diff --git a/src/patches/glibc/glibc-rh1133810-1.patch b/src/patches/glibc/glibc-rh1133810-1.patch deleted file mode 100644 index 12b9949..0000000 --- a/src/patches/glibc/glibc-rh1133810-1.patch +++ /dev/null @@ -1,199 +0,0 @@ -2014-08-21 Florian Weimer fweimer@redhat.com - - [BZ #17187] - * iconv/gconv_trans.c (struct known_trans, search_tree, lock, - trans_compare, open_translit, __gconv_translit_find): - Remove module loading code. - -diff --git a/iconv/gconv_trans.c b/iconv/gconv_trans.c -index 1e25854..d71c029 100644 ---- a/iconv/gconv_trans.c -+++ b/iconv/gconv_trans.c -@@ -238,181 +238,11 @@ __gconv_transliterate (struct __gconv_step *step, - return __GCONV_ILLEGAL_INPUT; - } - -- --/* Structure to represent results of found (or not) transliteration -- modules. */ --struct known_trans --{ -- /* This structure must remain the first member. */ -- struct trans_struct info; -- -- char *fname; -- void *handle; -- int open_count; --}; -- -- --/* Tree with results of previous calls to __gconv_translit_find. */ --static void *search_tree; -- --/* We modify global data. */ --__libc_lock_define_initialized (static, lock); -- -- --/* Compare two transliteration entries. */ --static int --trans_compare (const void *p1, const void *p2) --{ -- const struct known_trans *s1 = (const struct known_trans *) p1; -- const struct known_trans *s2 = (const struct known_trans *) p2; -- -- return strcmp (s1->info.name, s2->info.name); --} -- -- --/* Open (maybe reopen) the module named in the struct. Get the function -- and data structure pointers we need. */ --static int --open_translit (struct known_trans *trans) --{ -- __gconv_trans_query_fct queryfct; -- -- trans->handle = __libc_dlopen (trans->fname); -- if (trans->handle == NULL) -- /* Not available. */ -- return 1; -- -- /* Find the required symbol. */ -- queryfct = __libc_dlsym (trans->handle, "gconv_trans_context"); -- if (queryfct == NULL) -- { -- /* We cannot live with that. */ -- close_and_out: -- __libc_dlclose (trans->handle); -- trans->handle = NULL; -- return 1; -- } -- -- /* Get the context. */ -- if (queryfct (trans->info.name, &trans->info.csnames, &trans->info.ncsnames) -- != 0) -- goto close_and_out; -- -- /* Of course we also have to have the actual function. */ -- trans->info.trans_fct = __libc_dlsym (trans->handle, "gconv_trans"); -- if (trans->info.trans_fct == NULL) -- goto close_and_out; -- -- /* Now the optional functions. */ -- trans->info.trans_init_fct = -- __libc_dlsym (trans->handle, "gconv_trans_init"); -- trans->info.trans_context_fct = -- __libc_dlsym (trans->handle, "gconv_trans_context"); -- trans->info.trans_end_fct = -- __libc_dlsym (trans->handle, "gconv_trans_end"); -- -- trans->open_count = 1; -- -- return 0; --} -- -- - int - internal_function - __gconv_translit_find (struct trans_struct *trans) - { -- struct known_trans **found; -- const struct path_elem *runp; -- int res = 1; -- -- /* We have to have a name. */ -- assert (trans->name != NULL); -- -- /* Acquire the lock. */ -- __libc_lock_lock (lock); -- -- /* See whether we know this module already. */ -- found = __tfind (trans, &search_tree, trans_compare); -- if (found != NULL) -- { -- /* Is this module available? */ -- if ((*found)->handle != NULL) -- { -- /* Maybe we have to reopen the file. */ -- if ((*found)->handle != (void *) -1) -- /* The object is not unloaded. */ -- res = 0; -- else if (open_translit (*found) == 0) -- { -- /* Copy the data. */ -- *trans = (*found)->info; -- (*found)->open_count++; -- res = 0; -- } -- } -- } -- else -- { -- size_t name_len = strlen (trans->name) + 1; -- int need_so = 0; -- struct known_trans *newp; -- -- /* We have to continue looking for the module. */ -- if (__gconv_path_elem == NULL) -- __gconv_get_path (); -- -- /* See whether we have to append .so. */ -- if (name_len <= 4 || memcmp (&trans->name[name_len - 4], ".so", 3) != 0) -- need_so = 1; -- -- /* Create a new entry. */ -- newp = (struct known_trans *) malloc (sizeof (struct known_trans) -- + (__gconv_max_path_elem_len -- + name_len + 3) -- + name_len); -- if (newp != NULL) -- { -- char *cp; -- -- /* Clear the struct. */ -- memset (newp, '\0', sizeof (struct known_trans)); -- -- /* Store a copy of the module name. */ -- newp->info.name = cp = (char *) (newp + 1); -- cp = __mempcpy (cp, trans->name, name_len); -- -- newp->fname = cp; -- -- /* Search in all the directories. */ -- for (runp = __gconv_path_elem; runp->name != NULL; ++runp) -- { -- cp = __mempcpy (__stpcpy ((char *) newp->fname, runp->name), -- trans->name, name_len); -- if (need_so) -- memcpy (cp, ".so", sizeof (".so")); -- -- if (open_translit (newp) == 0) -- { -- /* We found a module. */ -- res = 0; -- break; -- } -- } -- -- if (res) -- newp->fname = NULL; -- -- /* In any case we'll add the entry to our search tree. */ -- if (__tsearch (newp, &search_tree, trans_compare) == NULL) -- { -- /* Yickes, this should not happen. Unload the object. */ -- res = 1; -- /* XXX unload here. */ -- } -- } -- } -- -- __libc_lock_unlock (lock); -- -- return res; -+ /* This function always fails. Transliteration module loading is -+ not implemented. */ -+ return 1; - } --- -1.9.3 - diff --git a/src/patches/glibc/glibc-rh1133810-2.patch b/src/patches/glibc/glibc-rh1133810-2.patch deleted file mode 100644 index 8148abb..0000000 --- a/src/patches/glibc/glibc-rh1133810-2.patch +++ /dev/null @@ -1,625 +0,0 @@ -commit 585367266923156ac6fb789939a923641ba5aaf4 -Author: Florian Weimer fweimer@redhat.com -Date: Wed May 28 14:05:03 2014 +0200 - - manual: Update the locale documentation - -commit 4e8f95a0df7c2300b830ec12c0ae1e161bc8a8a3 -Author: Florian Weimer fweimer@redhat.com -Date: Mon May 12 15:24:12 2014 +0200 - - _nl_find_locale: Improve handling of crafted locale names [BZ #17137] - - Prevent directory traversal in locale-related environment variables - (CVE-2014-0475). - -commit d183645616b0533b3acee28f1a95570bffbdf50f -Author: Florian Weimer fweimer@redhat.com -Date: Wed May 28 14:41:52 2014 +0200 - - setlocale: Use the heap for the copy of the locale argument - - This avoids alloca calls with potentially large arguments. - -diff -pruN glibc-2.18/locale/findlocale.c glibc-2.18.patched/locale/findlocale.c ---- glibc-2.18/locale/findlocale.c 2013-08-11 04:22:55.000000000 +0530 -+++ glibc-2.18.patched/locale/findlocale.c 2014-08-26 16:14:50.403253778 +0530 -@@ -17,6 +17,7 @@ - 02111-1307 USA. */ - - #include <assert.h> -+#include <errno.h> - #include <locale.h> - #include <stdlib.h> - #include <string.h> -@@ -57,6 +58,45 @@ struct loaded_l10nfile *_nl_locale_file_ - - const char _nl_default_locale_path[] attribute_hidden = LOCALEDIR; - -+/* Checks if the name is actually present, that is, not NULL and not -+ empty. */ -+static inline int -+name_present (const char *name) -+{ -+ return name != NULL && name[0] != '\0'; -+} -+ -+/* Checks that the locale name neither extremely long, nor contains a -+ ".." path component (to prevent directory traversal). */ -+static inline int -+valid_locale_name (const char *name) -+{ -+ /* Not set. */ -+ size_t namelen = strlen (name); -+ /* Name too long. The limit is arbitrary and prevents stack overflow -+ issues later. */ -+ if (__builtin_expect (namelen > 255, 0)) -+ return 0; -+ /* Directory traversal attempt. */ -+ static const char slashdot[4] = {'/', '.', '.', '/'}; -+ if (__builtin_expect (memmem (name, namelen, -+ slashdot, sizeof (slashdot)) != NULL, 0)) -+ return 0; -+ if (namelen == 2 && __builtin_expect (name[0] == '.' && name [1] == '.', 0)) -+ return 0; -+ if (namelen >= 3 -+ && __builtin_expect (((name[0] == '.' -+ && name[1] == '.' -+ && name[2] == '/') -+ || (name[namelen - 3] == '/' -+ && name[namelen - 2] == '.' -+ && name[namelen - 1] == '.')), 0)) -+ return 0; -+ /* If there is a slash in the name, it must start with one. */ -+ if (__builtin_expect (memchr (name, '/', namelen) != NULL, 0) && name[0] != '/') -+ return 0; -+ return 1; -+} - - struct __locale_data * - internal_function -@@ -65,7 +105,7 @@ _nl_find_locale (const char *locale_path - { - int mask; - /* Name of the locale for this category. */ -- char *loc_name; -+ char *loc_name = (char *) *name; - const char *language; - const char *modifier; - const char *territory; -@@ -73,31 +113,39 @@ _nl_find_locale (const char *locale_path - const char *normalized_codeset; - struct loaded_l10nfile *locale_file; - -- if ((*name)[0] == '\0') -+ if (loc_name[0] == '\0') - { - /* The user decides which locale to use by setting environment - variables. */ -- *name = getenv ("LC_ALL"); -- if (*name == NULL || (*name)[0] == '\0') -- *name = getenv (_nl_category_names.str -+ loc_name = getenv ("LC_ALL"); -+ if (!name_present (loc_name)) -+ loc_name = getenv (_nl_category_names.str - + _nl_category_name_idxs[category]); -- if (*name == NULL || (*name)[0] == '\0') -- *name = getenv ("LANG"); -+ if (!name_present (loc_name)) -+ loc_name = getenv ("LANG"); -+ if (!name_present (loc_name)) -+ loc_name = (char *) _nl_C_name; - } - -- if (*name == NULL || (*name)[0] == '\0' -- || (__builtin_expect (__libc_enable_secure, 0) -- && strchr (*name, '/') != NULL)) -- *name = (char *) _nl_C_name; -+ /* We used to fall back to the C locale if the name contains a slash -+ character '/', but we now check for directory traversal in -+ valid_locale_name, so this is no longer necessary. */ - -- if (__builtin_expect (strcmp (*name, _nl_C_name), 1) == 0 -- || __builtin_expect (strcmp (*name, _nl_POSIX_name), 1) == 0) -+ if (__builtin_expect (strcmp (loc_name, _nl_C_name), 1) == 0 -+ || __builtin_expect (strcmp (loc_name, _nl_POSIX_name), 1) == 0) - { - /* We need not load anything. The needed data is contained in - the library itself. */ - *name = (char *) _nl_C_name; - return _nl_C[category]; - } -+ else if (!valid_locale_name (loc_name)) -+ { -+ __set_errno (EINVAL); -+ return NULL; -+ } -+ -+ *name = loc_name; - - /* We really have to load some data. First we try the archive, - but only if there was no LOCPATH environment variable specified. */ -diff -pruN glibc-2.18/locale/setlocale.c glibc-2.18.patched/locale/setlocale.c ---- glibc-2.18/locale/setlocale.c 2013-08-11 04:22:55.000000000 +0530 -+++ glibc-2.18.patched/locale/setlocale.c 2014-08-26 16:14:50.401253764 +0530 -@@ -272,6 +272,8 @@ setlocale (int category, const char *loc - of entries of the form `CATEGORY=VALUE'. */ - const char *newnames[__LC_LAST]; - struct __locale_data *newdata[__LC_LAST]; -+ /* Copy of the locale argument, for in-place splitting. */ -+ char *locale_copy = NULL; - - /* Set all name pointers to the argument name. */ - for (category = 0; category < __LC_LAST; ++category) -@@ -281,7 +283,13 @@ setlocale (int category, const char *loc - if (__builtin_expect (strchr (locale, ';') != NULL, 0)) - { - /* This is a composite name. Make a copy and split it up. */ -- char *np = strdupa (locale); -+ locale_copy = strdup (locale); -+ if (__builtin_expect (locale_copy == NULL, 0)) -+ { -+ __libc_rwlock_unlock (__libc_setlocale_lock); -+ return NULL; -+ } -+ char *np = locale_copy; - char *cp; - int cnt; - -@@ -299,6 +307,7 @@ setlocale (int category, const char *loc - { - error_return: - __libc_rwlock_unlock (__libc_setlocale_lock); -+ free (locale_copy); - - /* Bogus category name. */ - ERROR_RETURN; -@@ -391,8 +400,9 @@ setlocale (int category, const char *loc - /* Critical section left. */ - __libc_rwlock_unlock (__libc_setlocale_lock); - -- /* Free the resources (the locale path variable). */ -+ /* Free the resources. */ - free (locale_path); -+ free (locale_copy); - - return composite; - } -diff -pruN glibc-2.18/localedata/Makefile glibc-2.18.patched/localedata/Makefile ---- glibc-2.18/localedata/Makefile 2014-08-26 16:15:22.656474571 +0530 -+++ glibc-2.18.patched/localedata/Makefile 2014-08-26 16:14:50.403253778 +0530 -@@ -77,7 +77,7 @@ locale_test_suite := tst_iswalnum tst_is - - tests = $(locale_test_suite) tst-digits tst-setlocale bug-iconv-trans \ - tst-leaks tst-mbswcs6 tst-xlocale1 tst-xlocale2 bug-usesetlocale \ -- tst-strfmon1 tst-sscanf tst-strptime -+ tst-strfmon1 tst-sscanf tst-strptime tst-setlocale3 - ifeq (yes,$(build-shared)) - ifneq (no,$(PERL)) - tests: $(objpfx)mtrace-tst-leaks -@@ -288,6 +288,7 @@ tst-strfmon1-ENV = $(TEST_MBWC_ENV) - tst-strptime-ENV = $(TEST_MBWC_ENV) - - tst-setlocale-ENV = LOCPATH=$(common-objpfx)localedata LC_ALL=ja_JP.EUC-JP -+tst-setlocale3-ENV = LOCPATH=$(common-objpfx)localedata - - bug-iconv-trans-ENV = LOCPATH=$(common-objpfx)localedata - -diff -pruN glibc-2.18/localedata/tst-setlocale3.c glibc-2.18.patched/localedata/tst-setlocale3.c ---- glibc-2.18/localedata/tst-setlocale3.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.18.patched/localedata/tst-setlocale3.c 2014-08-26 16:14:50.403253778 +0530 -@@ -0,0 +1,203 @@ -+/* Regression test for setlocale invalid environment variable handling. -+ Copyright (C) 2014 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ -+#include <locale.h> -+#include <stdio.h> -+#include <stdlib.h> -+#include <string.h> -+ -+/* The result of setlocale may be overwritten by subsequent calls, so -+ this wrapper makes a copy. */ -+static char * -+setlocale_copy (int category, const char *locale) -+{ -+ const char *result = setlocale (category, locale); -+ if (result == NULL) -+ return NULL; -+ return strdup (result); -+} -+ -+static char *de_locale; -+ -+static void -+setlocale_fail (const char *envstring) -+{ -+ setenv ("LC_CTYPE", envstring, 1); -+ if (setlocale (LC_CTYPE, "") != NULL) -+ { -+ printf ("unexpected setlocale success for "%s" locale\n", envstring); -+ exit (1); -+ } -+ const char *newloc = setlocale (LC_CTYPE, NULL); -+ if (strcmp (newloc, de_locale) != 0) -+ { -+ printf ("failed setlocale call "%s" changed locale to "%s"\n", -+ envstring, newloc); -+ exit (1); -+ } -+} -+ -+static void -+setlocale_success (const char *envstring) -+{ -+ setenv ("LC_CTYPE", envstring, 1); -+ char *newloc = setlocale_copy (LC_CTYPE, ""); -+ if (newloc == NULL) -+ { -+ printf ("setlocale for "%s": %m\n", envstring); -+ exit (1); -+ } -+ if (strcmp (newloc, de_locale) == 0) -+ { -+ printf ("setlocale with LC_CTYPE="%s" left locale at "%s"\n", -+ envstring, de_locale); -+ exit (1); -+ } -+ if (setlocale (LC_CTYPE, de_locale) == NULL) -+ { -+ printf ("restoring locale "%s" with LC_CTYPE="%s": %m\n", -+ de_locale, envstring); -+ exit (1); -+ } -+ char *newloc2 = setlocale_copy (LC_CTYPE, newloc); -+ if (newloc2 == NULL) -+ { -+ printf ("restoring locale "%s" following "%s": %m\n", -+ newloc, envstring); -+ exit (1); -+ } -+ if (strcmp (newloc, newloc2) != 0) -+ { -+ printf ("representation of locale "%s" changed from "%s" to "%s"", -+ envstring, newloc, newloc2); -+ exit (1); -+ } -+ free (newloc); -+ free (newloc2); -+ -+ if (setlocale (LC_CTYPE, de_locale) == NULL) -+ { -+ printf ("restoring locale "%s" with LC_CTYPE="%s": %m\n", -+ de_locale, envstring); -+ exit (1); -+ } -+} -+ -+/* Checks that a known-good locale still works if LC_ALL contains a -+ value which should be ignored. */ -+static void -+setlocale_ignore (const char *to_ignore) -+{ -+ const char *fr_locale = "fr_FR.UTF-8"; -+ setenv ("LC_CTYPE", fr_locale, 1); -+ char *expected_locale = setlocale_copy (LC_CTYPE, ""); -+ if (expected_locale == NULL) -+ { -+ printf ("setlocale with LC_CTYPE="%s" failed: %m\n", fr_locale); -+ exit (1); -+ } -+ if (setlocale (LC_CTYPE, de_locale) == NULL) -+ { -+ printf ("failed to restore locale: %m\n"); -+ exit (1); -+ } -+ unsetenv ("LC_CTYPE"); -+ -+ setenv ("LC_ALL", to_ignore, 1); -+ setenv ("LC_CTYPE", fr_locale, 1); -+ const char *actual_locale = setlocale (LC_CTYPE, ""); -+ if (actual_locale == NULL) -+ { -+ printf ("setlocale with LC_ALL, LC_CTYPE="%s" failed: %m\n", -+ fr_locale); -+ exit (1); -+ } -+ if (strcmp (actual_locale, expected_locale) != 0) -+ { -+ printf ("setlocale under LC_ALL failed: got "%s", expected "%s"\n", -+ actual_locale, expected_locale); -+ exit (1); -+ } -+ unsetenv ("LC_CTYPE"); -+ setlocale_success (fr_locale); -+ unsetenv ("LC_ALL"); -+ free (expected_locale); -+} -+ -+static int -+do_test (void) -+{ -+ /* The glibc test harness sets this environment variable -+ uncondionally. */ -+ unsetenv ("LC_ALL"); -+ -+ de_locale = setlocale_copy (LC_CTYPE, "de_DE.UTF-8"); -+ if (de_locale == NULL) -+ { -+ printf ("setlocale (LC_CTYPE, "de_DE.UTF-8"): %m\n"); -+ return 1; -+ } -+ setlocale_success ("C"); -+ setlocale_success ("en_US.UTF-8"); -+ setlocale_success ("/en_US.UTF-8"); -+ setlocale_success ("//en_US.UTF-8"); -+ setlocale_ignore (""); -+ -+ setlocale_fail ("does-not-exist"); -+ setlocale_fail ("/"); -+ setlocale_fail ("/../localedata/en_US.UTF-8"); -+ setlocale_fail ("en_US.UTF-8/"); -+ setlocale_fail ("en_US.UTF-8/.."); -+ setlocale_fail ("en_US.UTF-8/../en_US.UTF-8"); -+ setlocale_fail ("../localedata/en_US.UTF-8"); -+ { -+ size_t large_length = 1024; -+ char *large_name = malloc (large_length + 1); -+ if (large_name == NULL) -+ { -+ puts ("malloc failure"); -+ return 1; -+ } -+ memset (large_name, '/', large_length); -+ const char *suffix = "en_US.UTF-8"; -+ strcpy (large_name + large_length - strlen (suffix), suffix); -+ setlocale_fail (large_name); -+ free (large_name); -+ } -+ { -+ size_t huge_length = 64 * 1024 * 1024; -+ char *huge_name = malloc (huge_length + 1); -+ if (huge_name == NULL) -+ { -+ puts ("malloc failure"); -+ return 1; -+ } -+ memset (huge_name, 'X', huge_length); -+ huge_name[huge_length] = '\0'; -+ /* Construct a composite locale specification. */ -+ const char *prefix = "LC_CTYPE=de_DE.UTF-8;LC_TIME="; -+ memcpy (huge_name, prefix, strlen (prefix)); -+ setlocale_fail (huge_name); -+ free (huge_name); -+ } -+ -+ return 0; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff -pruN glibc-2.18/manual/locale.texi glibc-2.18.patched/manual/locale.texi ---- glibc-2.18/manual/locale.texi 2013-08-11 04:22:55.000000000 +0530 -+++ glibc-2.18.patched/manual/locale.texi 2014-08-26 16:14:50.404253785 +0530 -@@ -29,6 +29,7 @@ will follow the conventions preferred by - * Setting the Locale:: How a program specifies the locale - with library functions. - * Standard Locales:: Locale names available on all systems. -+* Locale Names:: Format of system-specific locale names. - * Locale Information:: How to access the information for the locale. - * Formatting Numbers:: A dedicated function to format numbers. - * Yes-or-No Questions:: Check a Response against the locale. -@@ -99,14 +100,16 @@ locale named @samp{espana-castellano} to - most of Spain. - - The set of locales supported depends on the operating system you are --using, and so do their names. We can't make any promises about what --locales will exist, except for one standard locale called @samp{C} or --@samp{POSIX}. Later we will describe how to construct locales. --@comment (@pxref{Building Locale Files}). -+using, and so do their names, except that the standard locale called -+@samp{C} or @samp{POSIX} always exist. @xref{Locale Names}. -+ -+In order to force the system to always use the default locale, the -+user can set the @code{LC_ALL} environment variable to @samp{C}. - - @cindex combining locales --A user also has the option of specifying different locales for different --purposes---in effect, choosing a mixture of multiple locales. -+A user also has the option of specifying different locales for -+different purposes---in effect, choosing a mixture of multiple -+locales. @xref{Locale Categories}. - - For example, the user might specify the locale @samp{espana-castellano} - for most purposes, but specify the locale @samp{usa-english} for -@@ -120,7 +123,7 @@ which locales apply. However, the user - for a particular subset of those purposes. - - @node Locale Categories, Setting the Locale, Choosing Locale, Locales --@section Categories of Activities that Locales Affect -+@section Locale Categories - @cindex categories for locales - @cindex locale categories - -@@ -128,7 +131,11 @@ The purposes that locales serve are grou - that a user or a program can choose the locale for each category - independently. Here is a table of categories; each name is both an - environment variable that a user can set, and a macro name that you can --use as an argument to @code{setlocale}. -+use as the first argument to @code{setlocale}. -+ -+The contents of the environment variable (or the string in the second -+argument to @code{setlocale}) has to be a valid locale name. -+@xref{Locale Names}. - - @vtable @code - @comment locale.h -@@ -172,7 +179,7 @@ for affirmative and negative responses. - @comment locale.h - @comment ISO - @item LC_ALL --This is not an environment variable; it is only a macro that you can use -+This is not a category; it is only a macro that you can use - with @code{setlocale} to set a single locale for all purposes. Setting - this environment variable overwrites all selections by the other - @code{LC_*} variables or @code{LANG}. -@@ -225,13 +232,7 @@ The symbols in this section are defined - @comment ISO - @deftypefun {char *} setlocale (int @var{category}, const char *@var{locale}) - The function @code{setlocale} sets the current locale for category --@var{category} to @var{locale}. A list of all the locales the system --provides can be created by running -- --@pindex locale --@smallexample -- locale -a --@end smallexample -+@var{category} to @var{locale}. - - If @var{category} is @code{LC_ALL}, this specifies the locale for all - purposes. The other possible values of @var{category} specify an -@@ -256,10 +257,9 @@ is passed in as @var{locale} parameter. - - When you read the current locale for category @code{LC_ALL}, the value - encodes the entire combination of selected locales for all categories. --In this case, the value is not just a single locale name. In fact, we --don't make any promises about what it looks like. But if you specify --the same ``locale name'' with @code{LC_ALL} in a subsequent call to --@code{setlocale}, it restores the same combination of locale selections. -+If you specify the same ``locale name'' with @code{LC_ALL} in a -+subsequent call to @code{setlocale}, it restores the same combination -+of locale selections. - - To be sure you can use the returned string encoding the currently selected - locale at a later time, you must make a copy of the string. It is not -@@ -275,6 +275,11 @@ for @var{category}. - If a nonempty string is given for @var{locale}, then the locale of that - name is used if possible. - -+The effective locale name (either the second argument to -+@code{setlocale}, or if the argument is an empty string, the name -+obtained from the process environment) must be valid locale name. -+@xref{Locale Names}. -+ - If you specify an invalid locale name, @code{setlocale} returns a null - pointer and leaves the current locale unchanged. - @end deftypefun -@@ -328,7 +323,7 @@ locale categories, and future versions o - portability, assume that any symbol beginning with @samp{LC_} might be - defined in @file{locale.h}. - --@node Standard Locales, Locale Information, Setting the Locale, Locales -+@node Standard Locales, Locale Names, Setting the Locale, Locales - @section Standard Locales - - The only locale names you can count on finding on all operating systems -@@ -362,7 +357,94 @@ with the environment, rather than trying - locale explicitly by name. Remember, different machines might have - different sets of locales installed. - --@node Locale Information, Formatting Numbers, Standard Locales, Locales -+@node Locale Names, Locale Information, Standard Locales, Locales -+@section Locale Names -+ -+The following command prints a list of locales supported by the -+system: -+ -+@pindex locale -+@smallexample -+ locale -a -+@end smallexample -+ -+@strong{Portability Note:} With the notable exception of the standard -+locale names @samp{C} and @samp{POSIX}, locale names are -+system-specific. -+ -+Most locale names follow XPG syntax and consist of up to four parts: -+ -+@smallexample -+@var{language}[_@var{territory}[.@var{codeset}]][@@@var{modifier}] -+@end smallexample -+ -+Beside the first part, all of them are allowed to be missing. If the -+full specified locale is not found, less specific ones are looked for. -+The various parts will be stripped off, in the following order: -+ -+@enumerate -+@item -+codeset -+@item -+normalized codeset -+@item -+territory -+@item -+modifier -+@end enumerate -+ -+For example, the locale name @samp{de_AT.iso885915@@euro} denotes a -+German-language locale for use in Austria, using the ISO-8859-15 -+(Latin-9) character set, and with the Euro as the currency symbol. -+ -+In addition to locale names which follow XPG syntax, systems may -+provide aliases such as @samp{german}. Both categories of names must -+not contain the slash character @samp{/}. -+ -+If the locale name starts with a slash @samp{/}, it is treated as a -+path relative to the configured locale directories; see @code{LOCPATH} -+below. The specified path must not contain a component @samp{..}, or -+the name is invalid, and @code{setlocale} will fail. -+ -+@strong{Portability Note:} POSIX suggests that if a locale name starts -+with a slash @samp{/}, it is resolved as an absolute path. However, -+the GNU C Library treats it as a relative path under the directories listed -+in @code{LOCPATH} (or the default locale directory if @code{LOCPATH} -+is unset). -+ -+Locale names which are longer than an implementation-defined limit are -+invalid and cause @code{setlocale} to fail. -+ -+As a special case, locale names used with @code{LC_ALL} can combine -+several locales, reflecting different locale settings for different -+categories. For example, you might want to use a U.S. locale with ISO -+A4 paper format, so you set @code{LANG} to @samp{en_US.UTF-8}, and -+@code{LC_PAPER} to @samp{de_DE.UTF-8}. In this case, the -+@code{LC_ALL}-style combined locale name is -+ -+@smallexample -+LC_CTYPE=en_US.UTF-8;LC_TIME=en_US.UTF-8;LC_PAPER=de_DE.UTF-8;@dots{} -+@end smallexample -+ -+followed by other category settings not shown here. -+ -+@vindex LOCPATH -+The path used for finding locale data can be set using the -+@code{LOCPATH} environment variable. This variable lists the -+directories in which to search for locale definitions, separated by a -+colon @samp{:}. -+ -+The default path for finding locale data is system specific. A typical -+value for the @code{LOCPATH} default is: -+ -+@smallexample -+/usr/share/locale -+@end smallexample -+ -+The value of @code{LOCPATH} is ignored by privileged programs for -+security reasons, and only the default directory is used. -+ -+@node Locale Information, Formatting Numbers, Locale Names, Locales - @section Accessing Locale Information - - There are several ways to access locale information. The simplest diff --git a/src/patches/glibc/glibc-rh1138769.patch b/src/patches/glibc/glibc-rh1138769.patch deleted file mode 100644 index 94a7d2a..0000000 --- a/src/patches/glibc/glibc-rh1138769.patch +++ /dev/null @@ -1,45 +0,0 @@ -commit e35c53e397e7abbd41fedacdedcfa5af7b5c2c52 -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Tue Jul 8 16:40:24 2014 +0530 - - Check value at resplen2 if it is not NULL - - There was a typo in the previous patch due to which resplen2 was - checked for non-zero instead of the value at resplen2. Fix that and - improve the condition by checking resplen2 for non-NULL (instead of - answerp2) and also adding the check in a third place. - -diff --git a/resolv/res_query.c b/resolv/res_query.c -index 4e6612c..e4ee2a6 100644 ---- a/resolv/res_query.c -+++ b/resolv/res_query.c -@@ -384,7 +384,7 @@ __libc_res_nsearch(res_state statp, - answerp2, nanswerp2, resplen2); - if (ret > 0 || trailing_dot - /* If the second response is valid then we use that. */ -- || (ret == 0 && answerp2 != NULL && resplen2 > 0)) -+ || (ret == 0 && resplen2 != NULL && *resplen2 > 0)) - return (ret); - saved_herrno = h_errno; - tried_as_is++; -@@ -424,8 +424,8 @@ __libc_res_nsearch(res_state statp, - answer, anslen, answerp, - answerp2, nanswerp2, - resplen2); -- if (ret > 0 || (ret == 0 && answerp2 != NULL -- && resplen2 > 0)) -+ if (ret > 0 || (ret == 0 && resplen2 != NULL -+ && *resplen2 > 0)) - return (ret); - - if (answerp && *answerp != answer) { -@@ -494,7 +494,8 @@ __libc_res_nsearch(res_state statp, - ret = __libc_res_nquerydomain(statp, name, NULL, class, type, - answer, anslen, answerp, - answerp2, nanswerp2, resplen2); -- if (ret > 0) -+ if (ret > 0 || (ret == 0 && resplen2 != NULL -+ && *resplen2 > 0)) - return (ret); - } - diff --git a/src/patches/glibc/glibc-rh1144019.patch b/src/patches/glibc/glibc-rh1144019.patch deleted file mode 100644 index 1732de6..0000000 --- a/src/patches/glibc/glibc-rh1144019.patch +++ /dev/null @@ -1,27 +0,0 @@ -# -# Based on the following commit: -# -# commit f9d2d03254a58d92635a311a42253eeed5a40a47 -# Author: Andreas Schwab schwab@suse.de -# Date: Mon May 26 18:01:31 2014 +0200 -# -# Fix invalid file descriptor reuse while sending DNS query (BZ #15946) -# -# 2014-06-03 Andreas Schwab schwab@suse.de -# -# [BZ #15946] -# * resolv/res_send.c (send_dg): Reload file descriptor after -# calling reopen. -# -diff --git a/resolv/res_send.c b/resolv/res_send.c -index 3273d55..af42b8a 100644 ---- a/resolv/res_send.c -+++ b/resolv/res_send.c -@@ -1410,6 +1410,7 @@ send_dg(res_state statp, - retval = reopen (statp, terrno, ns); - if (retval <= 0) - return retval; -+ pfd[0].fd = EXT(statp).nssocks[ns]; - } - } - goto wait; diff --git a/src/patches/glibc/glibc-rh1144132.patch b/src/patches/glibc/glibc-rh1144132.patch deleted file mode 100644 index 4114b58..0000000 --- a/src/patches/glibc/glibc-rh1144132.patch +++ /dev/null @@ -1,58 +0,0 @@ -# -# Based on this commit: -# -# commit 62058ce612ed3459501b4c4332e268edfe977f59 -# Author: Carlos O'Donell carlos@redhat.com -# Date: Mon Sep 29 13:14:21 2014 -0400 -# -# Correctly size profiling reloc table (bug 17411) -# -# During auditing or profiling modes the dynamic loader -# builds a cache of the relocated PLT entries in order -# to reuse them when called again through the same PLT -# entry. This way the PLT entry is never completed and -# the call into the resolver always results in profiling -# or auditing code running. -# -# The problem is that the PLT relocation cache size -# is not computed correctly. The size of the cache -# should be "Size of a relocation result structure" -# x "Number of PLT-related relocations". Instead the -# code erroneously computes "Size of a relocation -# result" x "Number of bytes worth of PLT-related -# relocations". I can only assume this was a mistake -# in the understanding of the value of DT_PLTRELSZ -# which is the number of bytes of PLT-related relocs. -# We do have a DT_RELACOUNT entry, which is a count -# for dynamic relative relocs, but we have no -# DT_PLTRELCOUNT and thus we need to compute it. -# -# This patch corrects the computation of the size of the -# relocation table used by the glibc profiling code. -# -# For more details see: -# https://sourceware.org/ml/libc-alpha/2014-09/msg00513.html -# -# [BZ #17411] -# * elf/dl-reloc.c (_dl_relocate_object): Allocate correct amount for -# l_reloc_result. -# -diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c -index d2c6dac..97a7119 100644 ---- a/elf/dl-reloc.c -+++ b/elf/dl-reloc.c -@@ -279,8 +279,12 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[], - l->l_name); - } - -- l->l_reloc_result = calloc (sizeof (l->l_reloc_result[0]), -- l->l_info[DT_PLTRELSZ]->d_un.d_val); -+ size_t sizeofrel = l->l_info[DT_PLTREL]->d_un.d_val == DT_RELA -+ ? sizeof (ElfW(Rela)) -+ : sizeof (ElfW(Rel)); -+ size_t relcount = l->l_info[DT_PLTRELSZ]->d_un.d_val / sizeofrel; -+ l->l_reloc_result = calloc (sizeof (l->l_reloc_result[0]), relcount); -+ - if (l->l_reloc_result == NULL) - { - errstring = N_("\ diff --git a/src/patches/glibc/glibc-rh1154563.patch b/src/patches/glibc/glibc-rh1154563.patch deleted file mode 100644 index 22821b1..0000000 --- a/src/patches/glibc/glibc-rh1154563.patch +++ /dev/null @@ -1,333 +0,0 @@ -# -# This is a special patch for rhel-6 to fix recursive dlopen. -# It is likely the upstream patch will always be too risky for -# rhel-6 and will involve reorganizing the way in which recursive -# dlopen is allowed to operate and how the _r_debug and stap -# points are used by gdb for the recursive case. -# -# This fix changes the internal API to duplicate the ldconfig -# cache data. This means that at any point the cache can be -# unmapped without any consequences. The caller is responsible -# fore freeing the returned string. -# -# A regression test is added to verify the assertion for _r_debug -# is no longer triggered due to the recursive dlopen. The test to -# verify the fix in _dl_load_cache_lookup is not automated and -# has to be run by hand. -# -diff -urN glibc-2.12-2-gc4ccff1/elf/dl-cache.c glibc-2.12-2-gc4ccff1.mod/elf/dl-cache.c ---- glibc-2.12-2-gc4ccff1/elf/dl-cache.c 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/elf/dl-cache.c 2014-12-10 21:54:08.801985045 -0500 -@@ -175,9 +175,12 @@ - - - /* Look up NAME in ld.so.cache and return the file name stored there, -- or null if none is found. */ -- --const char * -+ or null if none is found. -+ The caller is responsible for freeing the returned string. The ld.so.cache -+ may be unmapped at any time by a completing recursive dlopen and -+ this function must take care that it does not return references to -+ any data in the mapping. */ -+char * - internal_function - _dl_load_cache_lookup (const char *name) - { -@@ -290,7 +293,17 @@ - && best != NULL) - _dl_debug_printf (" trying file=%s\n", best); - -- return best; -+ if (best == NULL) -+ return NULL; -+ -+ /* The double copy is *required* since malloc may be interposed -+ and call dlopen itself whose completion would unmap the data -+ we are accessing. Therefore we must make the copy of the -+ mapping data without using malloc. */ -+ char *temp; -+ temp = alloca (strlen (best) + 1); -+ strcpy (temp, best); -+ return strdup (temp); - } - - #ifndef MAP_COPY -diff -urN glibc-2.12-2-gc4ccff1/elf/dl-load.c glibc-2.12-2-gc4ccff1.mod/elf/dl-load.c ---- glibc-2.12-2-gc4ccff1/elf/dl-load.c 2014-12-10 11:03:17.966048404 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/elf/dl-load.c 2014-12-10 21:47:29.319387538 -0500 -@@ -2126,7 +2126,7 @@ - { - /* Check the list of libraries in the file /etc/ld.so.cache, - for compatibility with Linux's ldconfig program. */ -- const char *cached = _dl_load_cache_lookup (name); -+ char *cached = _dl_load_cache_lookup (name); - - if (cached != NULL) - { -@@ -2156,6 +2156,7 @@ - if (memcmp (cached, dirp, system_dirs_len[cnt]) == 0) - { - /* The prefix matches. Don't use the entry. */ -+ free (cached); - cached = NULL; - break; - } -@@ -2172,14 +2173,9 @@ - &fb, loader ?: GL(dl_ns)[nsid]._ns_loaded, - LA_SER_CONFIG, &found_other_class, false); - if (__builtin_expect (fd != -1, 1)) -- { -- realname = local_strdup (cached); -- if (realname == NULL) -- { -- __close (fd); -- fd = -1; -- } -- } -+ realname = cached; -+ else -+ free (cached); - } - } - } -diff -urN glibc-2.12-2-gc4ccff1/elf/dl-open.c glibc-2.12-2-gc4ccff1.mod/elf/dl-open.c ---- glibc-2.12-2-gc4ccff1/elf/dl-open.c 2014-12-10 11:03:18.083048497 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/elf/dl-open.c 2014-12-10 20:34:16.017503638 -0500 -@@ -220,7 +220,11 @@ - } - } - -- assert (_dl_debug_initialize (0, args->nsid)->r_state == RT_CONSISTENT); -+ /* One might be tempted to assert that we are RT_CONSISTENT at this point, but that -+ may not be true if this is a recursive call to dlopen. -+ TODO: Fix all of the debug state so we end up at RT_CONSISTENT only when the last -+ recursive dlopen completes. */ -+ _dl_debug_initialize (0, args->nsid); - - /* Load the named object. */ - struct link_map *new; -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h glibc-2.12-2-gc4ccff1.mod/sysdeps/generic/ldsodefs.h ---- glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h 2014-12-10 11:03:17.944048387 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/generic/ldsodefs.h 2014-12-10 21:46:14.071344018 -0500 -@@ -996,8 +996,8 @@ - internal_function; - - /* Look up NAME in ld.so.cache and return the file name stored there, -- or null if none is found. */ --extern const char *_dl_load_cache_lookup (const char *name) -+ or null if none is found. Caller must free returned string. */ -+extern char *_dl_load_cache_lookup (const char *name) - internal_function; - - /* If the system does not support MAP_COPY we cannot leave the file open -diff -urN glibc-2.12-2-gc4ccff1/dlfcn/Makefile glibc-2.12-2-gc4ccff1.mod/dlfcn/Makefile ---- glibc-2.12-2-gc4ccff1/dlfcn/Makefile 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/dlfcn/Makefile 2014-12-11 16:58:55.719803063 -0500 -@@ -42,12 +42,12 @@ - ifeq (yes,$(build-shared)) - tests = glrefmain failtest tst-dladdr default errmsg1 tstcxaatexit \ - bug-dlopen1 bug-dlsym1 tst-dlinfo bug-atexit1 bug-atexit2 \ -- bug-atexit3 tstatexit -+ bug-atexit3 tstatexit tst-rec-dlopen - endif - modules-names = glreflib1 glreflib2 glreflib3 failtestmod defaultmod1 \ - defaultmod2 errmsg1mod modatexit modcxaatexit \ - bug-dlsym1-lib1 bug-dlsym1-lib2 bug-atexit1-lib \ -- bug-atexit2-lib bug-atexit3-lib -+ bug-atexit2-lib bug-atexit3-lib moddummy1 moddummy2 - - failtestmod.so-no-z-defs = yes - glreflib2.so-no-z-defs = yes -@@ -142,6 +142,8 @@ - $(objpfx)bug-atexit3-lib.so: $(common-objpfx)libc.so \ - $(common-objpfx)libc_nonshared.a - -+LDLIBS-tst-rec-dlopen = -ldl -+$(objpfx)tst-rec-dlopen: $(libdl) - - # Depend on libc.so so a DT_NEEDED is generated in the shared objects. - # This ensures they will load libc.so for needed symbols if loaded by -diff -urN glibc-2.12-2-gc4ccff1/dlfcn/moddummy1.c glibc-2.12-2-gc4ccff1.mod/dlfcn/moddummy1.c ---- glibc-2.12-2-gc4ccff1/dlfcn/moddummy1.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/dlfcn/moddummy1.c 2014-12-11 16:57:54.108797285 -0500 -@@ -0,0 +1,13 @@ -+/* Provide a dummy DSO for tst-recursive-dlopen to use. */ -+#include <stdio.h> -+#include <stdlib.h> -+ -+int called_dummy1; -+ -+void -+dummy1 (void) -+{ -+ printf ("Called dummy1()\n"); -+ called_dummy1++; -+} -+ -diff -urN glibc-2.12-2-gc4ccff1/dlfcn/moddummy2.c glibc-2.12-2-gc4ccff1.mod/dlfcn/moddummy2.c ---- glibc-2.12-2-gc4ccff1/dlfcn/moddummy2.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/dlfcn/moddummy2.c 2014-12-11 16:57:54.108797285 -0500 -@@ -0,0 +1,13 @@ -+/* Provide a dummy DSO for tst-recursive-dlopen to use. */ -+#include <stdio.h> -+#include <stdlib.h> -+ -+int called_dummy2; -+ -+void -+dummy2 (void) -+{ -+ printf ("Called dummy2()\n"); -+ called_dummy2++; -+} -+ -diff -urN glibc-2.12-2-gc4ccff1/dlfcn/tst-rec-dlopen.c glibc-2.12-2-gc4ccff1.mod/dlfcn/tst-rec-dlopen.c ---- glibc-2.12-2-gc4ccff1/dlfcn/tst-rec-dlopen.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/dlfcn/tst-rec-dlopen.c 2014-12-11 20:53:28.617848774 -0500 -@@ -0,0 +1,145 @@ -+/* Test recursive dlopen using malloc hooks. -+ Copyright (C) 1998-2014 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Ulrich Drepper drepper@cygnus.com, 1998. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ -+#include <stdio.h> -+#include <stdlib.h> -+#include <malloc.h> -+#include <dlfcn.h> -+ -+#define DSO "moddummy1.so" -+#define FUNC "dummy1" -+ -+#define DSO1 "moddummy2.so" -+#define FUNC1 "dummy2" -+ -+/* Prevent the compiler from moving the assignment to called_func -+ before (*func)() since the compiler doesn't know we might abort -+ or catch a SIGSEGV signal and it may move the store. */ -+volatile int called_func; -+ -+/* Prototype for my hook. */ -+void *custom_malloc_hook (size_t, const void *); -+ -+/* Pointer to old malloc hooks. */ -+void *(*old_malloc_hook) (size_t, const void *); -+ -+/* Call function func_name in DSO dso_name via dlopen. */ -+void -+call_func (const char *dso_name, const char *func_name) -+{ -+ int ret; -+ void *dso; -+ void (*func) (void); -+ char *err; -+ -+ /* Open the DSO. */ -+ dso = dlopen (dso_name, RTLD_NOW|RTLD_GLOBAL); -+ if (dso == NULL) -+ { -+ err = dlerror (); -+ fprintf (stderr, "%s\n", err); -+ exit (1); -+ } -+ /* Clear any errors. */ -+ dlerror (); -+ -+ /* Lookup func. */ -+ *(void **) (&func) = dlsym (dso, func_name); -+ if (func == NULL) -+ { -+ err = dlerror (); -+ if (err != NULL) -+ { -+ fprintf (stderr, "%s\n", err); -+ exit (1); -+ } -+ } -+ /* Call func. */ -+ (*func) (); -+ called_func = 1; -+ -+ /* Close the library and look for errors too. */ -+ ret = dlclose (dso); -+ if (ret != 0) -+ { -+ err = dlerror (); -+ fprintf (stderr, "%s\n", err); -+ exit (1); -+ } -+ -+} -+ -+/* Empty hook that does nothing. */ -+void * -+custom_malloc_hook (size_t size, const void *caller) -+{ -+ void *result; -+ /* Restore old hooks. */ -+ __malloc_hook = old_malloc_hook; -+ /* First call a function in another library via dlopen. */ -+ call_func (DSO1, FUNC1); -+ /* Called recursively. */ -+ result = malloc (size); -+ /* Restore new hooks. */ -+ __malloc_hook = custom_malloc_hook; -+ return result; -+} -+ -+static int -+do_test (void) -+{ -+ /* Save old hook. */ -+ old_malloc_hook = __malloc_hook; -+ /* Install new hook. */ -+ __malloc_hook = custom_malloc_hook; -+ -+ /* Bug 17702 fixes two things: -+ * A recursive dlopen unmapping the ld.so.cache. -+ * An assertion that _r_debug is RT_CONSISTENT at entry to dlopen. -+ We can only test the latter. Testing the former requires modifying -+ ld.so.conf to cache the dummy libraries, then running ldconfig, -+ then run the test. If you do all of that (and glibc's test -+ infrastructure doesn't support that yet) then the test will -+ SEGFAULT without the fix. If you don't do that, then the test -+ will abort because of the assert described in detail below. */ -+ call_func (DSO, FUNC); -+ -+ /* Restore old hook. */ -+ __malloc_hook = old_malloc_hook; -+ -+ /* The function dummy2() is called by the malloc hook. Check to -+ see that it was called. This ensures the second recursive -+ dlopen happened and we called the function in that library. -+ -+ Before the fix you either get a SIGSEGV when accessing mmap'd -+ ld.so.cache data or an assertion failure about _r_debug not -+ beint RT_CONSISTENT. We don't test for the SIGSEGV since it -+ would require finding moddummy1 or moddummy2 in the cache and -+ we don't have any infrastructure to test that, but the _r_debug -+ assertion triggers. */ -+ if (called_func > 0) -+ printf ("PASS: Function call_func() called more than once.\n"); -+ else -+ printf ("FAIL: Function call_func() not called.\n"); -+ -+ return 0; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" diff --git a/src/patches/glibc/glibc-rh1159167.patch b/src/patches/glibc/glibc-rh1159167.patch deleted file mode 100644 index 59f4a6f..0000000 --- a/src/patches/glibc/glibc-rh1159167.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/sunrpc/svc.c b/sunrpc/svc.c -index ccf0902..30c3a93 100644 ---- a/sunrpc/svc.c -+++ b/sunrpc/svc.c -@@ -97,8 +97,8 @@ xprt_register (SVCXPRT *xprt) - - if (xports == NULL) - { -- xports = (SVCXPRT **) malloc (_rpc_dtablesize () * sizeof (SVCXPRT *)); -- if (xports == NULL) /* DonŽt add handle */ -+ xports = (SVCXPRT **) calloc (_rpc_dtablesize (), sizeof (SVCXPRT *)); -+ if (xports == NULL) /* Don't add handle */ - return; - } - diff --git a/src/patches/glibc/glibc-rh1171296.patch b/src/patches/glibc/glibc-rh1171296.patch deleted file mode 100644 index 1accbf3..0000000 --- a/src/patches/glibc/glibc-rh1171296.patch +++ /dev/null @@ -1,163 +0,0 @@ -# -# commit a39208bd7fb76c1b01c127b4c61f9bfd915bfe7c -# Author: Carlos O'Donell carlos@redhat.com -# Date: Wed Nov 19 11:44:12 2014 -0500 -# -# CVE-2014-7817: wordexp fails to honour WRDE_NOCMD. -# -# The function wordexp() fails to properly handle the WRDE_NOCMD -# flag when processing arithmetic inputs in the form of "$((... ``))" -# where "..." can be anything valid. The backticks in the arithmetic -# epxression are evaluated by in a shell even if WRDE_NOCMD forbade -# command substitution. This allows an attacker to attempt to pass -# dangerous commands via constructs of the above form, and bypass -# the WRDE_NOCMD flag. This patch fixes this by checking for WRDE_NOCMD -# in exec_comm(), the only place that can execute a shell. All other -# checks for WRDE_NOCMD are superfluous and removed. -# -# We expand the testsuite and add 3 new regression tests of roughly -# the same form but with a couple of nested levels. -# -# On top of the 3 new tests we add fork validation to the WRDE_NOCMD -# testing. If any forks are detected during the execution of a wordexp() -# call with WRDE_NOCMD, the test is marked as failed. This is slightly -# heuristic since vfork might be used in the future, but it provides a -# higher level of assurance that no shells were executed as part of -# command substitution with WRDE_NOCMD in effect. In addition it doesn't -# require libpthread or libdl, instead we use the public implementation -# namespace function __register_atfork (already part of the public ABI -# for libpthread). -# -# Tested on x86_64 with no regressions. -# -diff --git a/posix/wordexp-test.c b/posix/wordexp-test.c -index 4957006..bdd65e4 100644 ---- a/posix/wordexp-test.c -+++ b/posix/wordexp-test.c -@@ -27,6 +27,25 @@ - - #define IFS " \n\t" - -+extern void *__dso_handle __attribute__ ((__weak__, __visibility__ ("hidden"))); -+extern int __register_atfork (void (*) (void), void (*) (void), void (*) (void), void *); -+ -+static int __app_register_atfork (void (*prepare) (void), void (*parent) (void), void (*child) (void)) -+{ -+ return __register_atfork (prepare, parent, child, -+ &__dso_handle == NULL ? NULL : __dso_handle); -+} -+ -+/* Number of forks seen. */ -+static int registered_forks; -+ -+/* For each fork increment the fork count. */ -+static void -+register_fork (void) -+{ -+ registered_forks++; -+} -+ - struct test_case_struct - { - int retval; -@@ -206,6 +225,12 @@ struct test_case_struct - { WRDE_SYNTAX, NULL, "$((2+))", 0, 0, { NULL, }, IFS }, - { WRDE_SYNTAX, NULL, "`", 0, 0, { NULL, }, IFS }, - { WRDE_SYNTAX, NULL, "$((010+4+))", 0, 0, { NULL }, IFS }, -+ /* Test for CVE-2014-7817. We test 3 combinations of command -+ substitution inside an arithmetic expression to make sure that -+ no commands are executed and error is returned. */ -+ { WRDE_CMDSUB, NULL, "$((`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS }, -+ { WRDE_CMDSUB, NULL, "$((1+`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS }, -+ { WRDE_CMDSUB, NULL, "$((1+$((`echo 1`))))", WRDE_NOCMD, 0, { NULL, }, IFS }, - - { -1, NULL, NULL, 0, 0, { NULL, }, IFS }, - }; -@@ -258,6 +283,15 @@ main (int argc, char *argv[]) - return -1; - } - -+ /* If we are not allowed to do command substitution, we install -+ fork handlers to verify that no forks happened. No forks should -+ happen at all if command substitution is disabled. */ -+ if (__app_register_atfork (register_fork, NULL, NULL) != 0) -+ { -+ printf ("Failed to register fork handler.\n"); -+ return -1; -+ } -+ - for (test = 0; test_case[test].retval != -1; test++) - if (testit (&test_case[test])) - ++fail; -@@ -367,6 +401,9 @@ testit (struct test_case_struct *tc) - - printf ("Test %d (%s): ", ++tests, tc->words); - -+ if (tc->flags & WRDE_NOCMD) -+ registered_forks = 0; -+ - if (tc->flags & WRDE_APPEND) - { - /* initial wordexp() call, to be appended to */ -@@ -378,6 +415,13 @@ testit (struct test_case_struct *tc) - } - retval = wordexp (tc->words, &we, tc->flags); - -+ if ((tc->flags & WRDE_NOCMD) -+ && (registered_forks > 0)) -+ { -+ printf ("FAILED fork called for WRDE_NOCMD\n"); -+ return 1; -+ } -+ - if (tc->flags & WRDE_DOOFFS) - start_offs = sav_we.we_offs; - -diff --git a/posix/wordexp.c b/posix/wordexp.c -index b6b65dd..26f3a26 100644 ---- a/posix/wordexp.c -+++ b/posix/wordexp.c -@@ -893,6 +893,10 @@ exec_comm (char *comm, char **word, size_t *word_length, size_t *max_length, - pid_t pid; - int noexec = 0; - -+ /* Do nothing if command substitution should not succeed. */ -+ if (flags & WRDE_NOCMD) -+ return WRDE_CMDSUB; -+ - /* Don't fork() unless necessary */ - if (!comm || !*comm) - return 0; -@@ -2082,9 +2086,6 @@ parse_dollars (char **word, size_t *word_length, size_t *max_length, - } - } - -- if (flags & WRDE_NOCMD) -- return WRDE_CMDSUB; -- - (*offset) += 2; - return parse_comm (word, word_length, max_length, words, offset, flags, - quoted? NULL : pwordexp, ifs, ifs_white); -@@ -2196,9 +2197,6 @@ parse_dquote (char **word, size_t *word_length, size_t *max_length, - break; - - case '`': -- if (flags & WRDE_NOCMD) -- return WRDE_CMDSUB; -- - ++(*offset); - error = parse_backtick (word, word_length, max_length, words, - offset, flags, NULL, NULL, NULL); -@@ -2357,12 +2355,6 @@ wordexp (const char *words, wordexp_t *pwordexp, int flags) - break; - - case '`': -- if (flags & WRDE_NOCMD) -- { -- error = WRDE_CMDSUB; -- goto do_error; -- } -- - ++words_offset; - error = parse_backtick (&word, &word_length, &max_length, words, - &words_offset, flags, pwordexp, ifs, diff --git a/src/patches/glibc/glibc-rh1172044.patch b/src/patches/glibc/glibc-rh1172044.patch deleted file mode 100644 index b1320a7..0000000 --- a/src/patches/glibc/glibc-rh1172044.patch +++ /dev/null @@ -1,154 +0,0 @@ -commit 41488498b6d9440ee66ab033808cce8323bba7ac -Author: Florian Weimer fweimer@redhat.com -Date: Wed Sep 3 19:45:43 2014 +0200 - - CVE-2014-6040: Crashes on invalid input in IBM gconv modules [BZ #17325] - - These changes are based on the fix for BZ #14134 in commit - 6e230d11837f3ae7b375ea69d7905f0d18eb79e5. - -diff --git a/iconvdata/Makefile b/iconvdata/Makefile -index 0a410a1..b6327d6 100644 ---- a/iconvdata/Makefile -+++ b/iconvdata/Makefile -@@ -297,6 +297,7 @@ $(objpfx)tst-iconv7.out: $(objpfx)gconv-modules \ - $(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \ - $(addprefix $(objpfx),$(modules.so)) \ - $(common-objdir)/iconv/iconv_prog TESTS -+ iconv_modules="$(modules)" \ - $(SHELL) -e $< $(common-objdir) > $@ - - $(objpfx)tst-tables.out: tst-tables.sh $(objpfx)gconv-modules \ -diff --git a/iconvdata/ibm1364.c b/iconvdata/ibm1364.c -index 0b5484f..cf80993 100644 ---- a/iconvdata/ibm1364.c -+++ b/iconvdata/ibm1364.c -@@ -221,7 +221,8 @@ enum - ++rp2; \ - \ - uint32_t res; \ -- if (__builtin_expect (ch < rp2->start, 0) \ -+ if (__builtin_expect (rp2->start == 0xffff, 0) \ -+ || __builtin_expect (ch < rp2->start, 0) \ - || (res = DB_TO_UCS4[ch + rp2->idx], \ - __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ - { \ -diff --git a/iconvdata/ibm932.c b/iconvdata/ibm932.c -index f5dca59..aa69d65 100644 ---- a/iconvdata/ibm932.c -+++ b/iconvdata/ibm932.c -@@ -74,11 +74,12 @@ - } \ - \ - ch = (ch * 0x100) + inptr[1]; \ -+ /* ch was less than 0xfd. */ \ -+ assert (ch < 0xfd00); \ - while (ch > rp2->end) \ - ++rp2; \ - \ -- if (__builtin_expect (rp2 == NULL, 0) \ -- || __builtin_expect (ch < rp2->start, 0) \ -+ if (__builtin_expect (ch < rp2->start, 0) \ - || (res = __ibm932db_to_ucs4[ch + rp2->idx], \ - __builtin_expect (res, '\1') == 0 && ch !=0)) \ - { \ -diff --git a/iconvdata/ibm933.c b/iconvdata/ibm933.c -index f46dfb5..461fb5e 100644 ---- a/iconvdata/ibm933.c -+++ b/iconvdata/ibm933.c -@@ -162,7 +162,7 @@ enum - while (ch > rp2->end) \ - ++rp2; \ - \ -- if (__builtin_expect (rp2 == NULL, 0) \ -+ if (__builtin_expect (rp2->start == 0xffff, 0) \ - || __builtin_expect (ch < rp2->start, 0) \ - || (res = __ibm933db_to_ucs4[ch + rp2->idx], \ - __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ -diff --git a/iconvdata/ibm935.c b/iconvdata/ibm935.c -index a8e4e6c..132d816 100644 ---- a/iconvdata/ibm935.c -+++ b/iconvdata/ibm935.c -@@ -162,7 +162,7 @@ enum - while (ch > rp2->end) \ - ++rp2; \ - \ -- if (__builtin_expect (rp2 == NULL, 0) \ -+ if (__builtin_expect (rp2->start == 0xffff, 0) \ - || __builtin_expect (ch < rp2->start, 0) \ - || (res = __ibm935db_to_ucs4[ch + rp2->idx], \ - __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ -diff --git a/iconvdata/ibm937.c b/iconvdata/ibm937.c -index 239be61..69b154d 100644 ---- a/iconvdata/ibm937.c -+++ b/iconvdata/ibm937.c -@@ -162,7 +162,7 @@ enum - while (ch > rp2->end) \ - ++rp2; \ - \ -- if (__builtin_expect (rp2 == NULL, 0) \ -+ if (__builtin_expect (rp2->start == 0xffff, 0) \ - || __builtin_expect (ch < rp2->start, 0) \ - || (res = __ibm937db_to_ucs4[ch + rp2->idx], \ - __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ -diff --git a/iconvdata/ibm939.c b/iconvdata/ibm939.c -index 5d0db36..9936e2c 100644 ---- a/iconvdata/ibm939.c -+++ b/iconvdata/ibm939.c -@@ -162,7 +162,7 @@ enum - while (ch > rp2->end) \ - ++rp2; \ - \ -- if (__builtin_expect (rp2 == NULL, 0) \ -+ if (__builtin_expect (rp2->start == 0xffff, 0) \ - || __builtin_expect (ch < rp2->start, 0) \ - || (res = __ibm939db_to_ucs4[ch + rp2->idx], \ - __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ -diff --git a/iconvdata/ibm943.c b/iconvdata/ibm943.c -index be0c14f..c5d5742 100644 ---- a/iconvdata/ibm943.c -+++ b/iconvdata/ibm943.c -@@ -75,11 +75,12 @@ - } \ - \ - ch = (ch * 0x100) + inptr[1]; \ -+ /* ch was less than 0xfd. */ \ -+ assert (ch < 0xfd00); \ - while (ch > rp2->end) \ - ++rp2; \ - \ -- if (__builtin_expect (rp2 == NULL, 0) \ -- || __builtin_expect (ch < rp2->start, 0) \ -+ if (__builtin_expect (ch < rp2->start, 0) \ - || (res = __ibm943db_to_ucs4[ch + rp2->idx], \ - __builtin_expect (res, '\1') == 0 && ch !=0)) \ - { \ -diff --git a/iconvdata/run-iconv-test.sh b/iconvdata/run-iconv-test.sh -index c98c929..5dfb69f 100755 ---- a/iconvdata/run-iconv-test.sh -+++ b/iconvdata/run-iconv-test.sh -@@ -184,6 +184,24 @@ while read utf8 from filename; do - - done < TESTS2 - -+# Check for crashes in decoders. -+printf '\016\377\377\377\377\377\377\377' > $temp1 -+for from in $iconv_modules ; do -+ echo $ac_n "test decoder $from $ac_c" -+ PROG=`eval echo $ICONV` -+ if $PROG < $temp1 >/dev/null 2>&1 ; then -+ : # fall through -+ else -+ status=$? -+ if test $status -gt 1 ; then -+ echo "/FAILED" -+ failed=1 -+ continue -+ fi -+ fi -+ echo "OK" -+done -+ - exit $failed - # Local Variables: - # mode:shell-script diff --git a/src/patches/glibc/glibc-rh1176907.patch b/src/patches/glibc/glibc-rh1176907.patch deleted file mode 100644 index 29cdacf..0000000 --- a/src/patches/glibc/glibc-rh1176907.patch +++ /dev/null @@ -1,22 +0,0 @@ -commit 7d81e8d6db95c112c297930a8f2f9617c305529a -Author: Florian Weimer fweimer@redhat.com -Date: Tue Dec 23 16:16:32 2014 +0100 - - iconvdata/run-iconv-test.sh: Actually test iconv modules - - Arjun Shankar noticed that this test case was not testing anything - because iconv was invoked without the required arguments. - -diff --git a/iconvdata/run-iconv-test.sh b/iconvdata/run-iconv-test.sh -index 5dfb69f..1d0bf52 100755 ---- a/iconvdata/run-iconv-test.sh -+++ b/iconvdata/run-iconv-test.sh -@@ -189,7 +189,7 @@ printf '\016\377\377\377\377\377\377\377' > $temp1 - for from in $iconv_modules ; do - echo $ac_n "test decoder $from $ac_c" - PROG=`eval echo $ICONV` -- if $PROG < $temp1 >/dev/null 2>&1 ; then -+ if $PROG -f $from -t UTF8 < $temp1 >/dev/null 2>&1 ; then - : # fall through - else - status=$? diff --git a/src/patches/glibc/glibc-rh1183534.patch b/src/patches/glibc/glibc-rh1183534.patch deleted file mode 100644 index eab7a3f..0000000 --- a/src/patches/glibc/glibc-rh1183534.patch +++ /dev/null @@ -1,223 +0,0 @@ -commit d5dd6189d506068ed11c8bfa1e1e9bffde04decd -Author: Andreas Schwab schwab@suse.de -Date: Mon Jan 21 17:41:28 2013 +0100 - - Fix parsing of numeric hosts in gethostbyname_r - -diff --git a/nss/Makefile b/nss/Makefile -index 449a258..553eafa 100644 ---- a/nss/Makefile -+++ b/nss/Makefile -@@ -37,7 +37,7 @@ install-bin := getent makedb - others := getent - install-bin := getent - --tests = test-netdb tst-nss-test1 -+tests = test-netdb tst-nss-test1 test-digits-dots - xtests = bug-erange - - include ../Makeconfig -diff --git a/nss/digits_dots.c b/nss/digits_dots.c -index 2b86295..e007ef4 100644 ---- a/nss/digits_dots.c -+++ b/nss/digits_dots.c -@@ -46,7 +46,10 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - { - if (h_errnop) - *h_errnop = NETDB_INTERNAL; -- *result = NULL; -+ if (buffer_size == NULL) -+ *status = NSS_STATUS_TRYAGAIN; -+ else -+ *result = NULL; - return -1; - } - -@@ -83,14 +86,16 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - } - - size_needed = (sizeof (*host_addr) -- + sizeof (*h_addr_ptrs) + strlen (name) + 1); -+ + sizeof (*h_addr_ptrs) -+ + sizeof (*h_alias_ptr) + strlen (name) + 1); - - if (buffer_size == NULL) - { - if (buflen < size_needed) - { -+ *status = NSS_STATUS_TRYAGAIN; - if (h_errnop != NULL) -- *h_errnop = TRY_AGAIN; -+ *h_errnop = NETDB_INTERNAL; - __set_errno (ERANGE); - goto done; - } -@@ -109,7 +114,7 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - *buffer_size = 0; - __set_errno (save); - if (h_errnop != NULL) -- *h_errnop = TRY_AGAIN; -+ *h_errnop = NETDB_INTERNAL; - *result = NULL; - goto done; - } -@@ -149,7 +154,9 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - if (! ok) - { - *h_errnop = HOST_NOT_FOUND; -- if (buffer_size) -+ if (buffer_size == NULL) -+ *status = NSS_STATUS_NOTFOUND; -+ else - *result = NULL; - goto done; - } -@@ -190,7 +197,7 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - if (buffer_size == NULL) - *status = NSS_STATUS_SUCCESS; - else -- *result = resbuf; -+ *result = resbuf; - goto done; - } - -@@ -201,15 +208,6 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - - if ((isxdigit (name[0]) && strchr (name, ':') != NULL) || name[0] == ':') - { -- const char *cp; -- char *hostname; -- typedef unsigned char host_addr_t[16]; -- host_addr_t *host_addr; -- typedef char *host_addr_list_t[2]; -- host_addr_list_t *h_addr_ptrs; -- size_t size_needed; -- int addr_size; -- - switch (af) - { - default: -@@ -225,7 +223,10 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - /* This is not possible. We cannot represent an IPv6 address - in an `struct in_addr' variable. */ - *h_errnop = HOST_NOT_FOUND; -- *result = NULL; -+ if (buffer_size == NULL) -+ *status = NSS_STATUS_NOTFOUND; -+ else -+ *result = NULL; - goto done; - - case AF_INET6: -@@ -233,42 +234,6 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - break; - } - -- size_needed = (sizeof (*host_addr) -- + sizeof (*h_addr_ptrs) + strlen (name) + 1); -- -- if (buffer_size == NULL && buflen < size_needed) -- { -- if (h_errnop != NULL) -- *h_errnop = TRY_AGAIN; -- __set_errno (ERANGE); -- goto done; -- } -- else if (buffer_size != NULL && *buffer_size < size_needed) -- { -- char *new_buf; -- *buffer_size = size_needed; -- new_buf = realloc (*buffer, *buffer_size); -- -- if (new_buf == NULL) -- { -- save = errno; -- free (*buffer); -- __set_errno (save); -- *buffer = NULL; -- *buffer_size = 0; -- *result = NULL; -- goto done; -- } -- *buffer = new_buf; -- } -- -- memset (*buffer, '\0', size_needed); -- -- host_addr = (host_addr_t *) *buffer; -- h_addr_ptrs = (host_addr_list_t *) -- ((char *) host_addr + sizeof (*host_addr)); -- hostname = (char *) h_addr_ptrs + sizeof (*h_addr_ptrs); -- - for (cp = name;; ++cp) - { - if (!*cp) -@@ -281,7 +246,9 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - if (inet_pton (AF_INET6, name, host_addr) <= 0) - { - *h_errnop = HOST_NOT_FOUND; -- if (buffer_size) -+ if (buffer_size == NULL) -+ *status = NSS_STATUS_NOTFOUND; -+ else - *result = NULL; - goto done; - } -diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c -index 1067744..44d00f4 100644 ---- a/nss/getXXbyYY_r.c -+++ b/nss/getXXbyYY_r.c -@@ -179,6 +179,9 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer, - case -1: - return errno; - case 1: -+#ifdef NEED_H_ERRNO -+ any_service = true; -+#endif - goto done; - } - #endif -diff --git a/nss/test-digits-dots.c b/nss/test-digits-dots.c -new file mode 100644 -index 0000000..1efa344 ---- /dev/null -+++ b/nss/test-digits-dots.c -@@ -0,0 +1,38 @@ -+/* Copyright (C) 2013 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ -+/* Testcase for BZ #15014 */ -+ -+#include <stdlib.h> -+#include <netdb.h> -+#include <errno.h> -+ -+static int -+do_test (void) -+{ -+ char buf[32]; -+ struct hostent *result = NULL; -+ struct hostent ret; -+ int h_err = 0; -+ int err; -+ -+ err = gethostbyname_r ("1.2.3.4", &ret, buf, sizeof (buf), &result, &h_err); -+ return err == ERANGE && h_err == NETDB_INTERNAL ? EXIT_SUCCESS : EXIT_FAILURE; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" diff --git a/src/patches/glibc/glibc-rh1195453-avx512.patch b/src/patches/glibc/glibc-rh1195453-avx512.patch deleted file mode 100644 index 4c70e5e..0000000 --- a/src/patches/glibc/glibc-rh1195453-avx512.patch +++ /dev/null @@ -1,481 +0,0 @@ -# -# Based on AVX-512 support for glibc, but heavaily modified for rhel-6.7. -# Without assembler support we drop all of the configure checks and simply -# output using .byte directives the minimal AVX512 instructsion required -# by the loader. Likewise testing is also impossible, so instead we use -# the Intel emulator running in `-skx` (Skylake Xeon) emulation mode and -# verify that a pre-built set of tests passes. -# -# commit 6986b98a18490e76b16911d1c6b1ba013598d40d -# Author: Ulrich Drepper drepper@gmail.com -# Date: Wed Jul 20 14:20:00 2011 -0400 -# -# Force :a_x86_64_ymm to be 16-byte aligned -# -# commit aa4de9cea5c07d43caeaca9722c2d417e9a2919c -# Author: H.J. Lu hjl.tools@gmail.com -# Date: Fri Mar 14 08:51:25 2014 -0700 -# -# Check AVX-512 assembler support first -# -# It checks AVX-512 assembler support first and sets libc_cv_cc_avx512 to -# $libc_cv_asm_avx512, instead of yes. GCC won't support AVX-512 if -# assembler doesn't support it. -# -# * sysdeps/x86_64/configure.ac: Check AVX-512 assembler support -# first. Disable AVX-512 GCC support if assembler doesn't support -# it. -# * sysdeps/x86_64/configure: Regenerated. -# -# commit 2d63a517e4084ec80403cd9f278690fa8b676cc4 -# Author: Igor Zamyatin igor.zamyatin@intel.com -# Date: Thu Mar 13 11:10:22 2014 -0700 -# -# Save and restore AVX-512 zmm registers to x86-64 ld.so -# -# AVX-512 ISA adds 512-bit zmm registers. This patch updates -# _dl_runtime_profile to pass zmm registers to run-time audit. It also -# changes _dl_x86_64_save_sse and _dl_x86_64_restore_sse to upport zmm -# registers, which are called when only when RTLD_PREPARE_FOREIGN_CALL -# is used. Its performance impact is minimum. -# -# * config.h.in (HAVE_AVX512_SUPPORT): New #undef. -# (HAVE_AVX512_ASM_SUPPORT): Likewise. -# * sysdeps/x86_64/bits/link.h (La_x86_64_zmm): New. -# (La_x86_64_vector): Add zmm. -# * sysdeps/x86_64/Makefile (tests): Add tst-audit10. -# (modules-names): Add tst-auditmod10a and tst-auditmod10b. -# ($(objpfx)tst-audit10): New target. -# ($(objpfx)tst-audit10.out): Likewise. -# (tst-audit10-ENV): New. -# (AVX512-CFLAGS): Likewise. -# (CFLAGS-tst-audit10.c): Likewise. -# (CFLAGS-tst-auditmod10a.c): Likewise. -# (CFLAGS-tst-auditmod10b.c): Likewise. -# * sysdeps/x86_64/configure.ac: Set config-cflags-avx512, -# HAVE_AVX512_SUPPORT and HAVE_AVX512_ASM_SUPPORT. -# * sysdeps/x86_64/configure: Regenerated. -# * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Add -# AVX-512 zmm register support. -# (_dl_x86_64_save_sse): Likewise. -# (_dl_x86_64_restore_sse): Likewise. -# * sysdeps/x86_64/dl-trampoline.h: Updated to support different -# size vector registers. -# * sysdeps/x86_64/link-defines.sym (YMM_SIZE): New. -# (ZMM_SIZE): Likewise. -# * sysdeps/x86_64/tst-audit10.c: New file. -# * sysdeps/x86_64/tst-auditmod10a.c: Likewise. -# * sysdeps/x86_64/tst-auditmod10b.c: Likewise. -# -# In addition adds: -# https://sourceware.org/ml/libc-alpha/2014-09/msg00228.html -# To extend zmm register checking. -# -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/x86_64/bits/link.h glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/bits/link.h ---- glibc-2.12-2-gc4ccff1/sysdeps/x86_64/bits/link.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/bits/link.h 2015-03-03 23:03:25.041829238 -0500 -@@ -65,7 +65,10 @@ - /* Registers for entry into PLT on x86-64. */ - # if __GNUC_PREREQ (4,0) - typedef float La_x86_64_xmm __attribute__ ((__vector_size__ (16))); --typedef float La_x86_64_ymm __attribute__ ((__vector_size__ (32))); -+typedef float La_x86_64_ymm __attribute__ ((__vector_size__ (32), -+ __aligned__ (16))); -+typedef double La_x86_64_zmm __attribute__ ((__vector_size__ (64), -+ __aligned__ (16))); - # else - typedef float La_x86_64_xmm __attribute__ ((__mode__ (__V4SF__))); - # endif -@@ -74,9 +77,10 @@ - { - # if __GNUC_PREREQ (4,0) - La_x86_64_ymm ymm[2]; -+ La_x86_64_zmm zmm[1]; - # endif - La_x86_64_xmm xmm[4]; --} La_x86_64_vector __attribute__ ((aligned(16))); -+} La_x86_64_vector __attribute__ ((__aligned__(16))); - - typedef struct La_x86_64_regs - { -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.h glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/dl-trampoline.h ---- glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.h 2015-03-03 23:03:05.109457627 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/dl-trampoline.h 2015-03-03 23:06:58.434101818 -0500 -@@ -20,14 +20,26 @@ - - #ifdef RESTORE_AVX - /* This is to support AVX audit modules. */ -- vmovdqu %ymm0, (LR_VECTOR_OFFSET)(%rsp) -- vmovdqu %ymm1, (LR_VECTOR_OFFSET + VECTOR_SIZE)(%rsp) -- vmovdqu %ymm2, (LR_VECTOR_OFFSET + VECTOR_SIZE*2)(%rsp) -- vmovdqu %ymm3, (LR_VECTOR_OFFSET + VECTOR_SIZE*3)(%rsp) -- vmovdqu %ymm4, (LR_VECTOR_OFFSET + VECTOR_SIZE*4)(%rsp) -- vmovdqu %ymm5, (LR_VECTOR_OFFSET + VECTOR_SIZE*5)(%rsp) -- vmovdqu %ymm6, (LR_VECTOR_OFFSET + VECTOR_SIZE*6)(%rsp) -- vmovdqu %ymm7, (LR_VECTOR_OFFSET + VECTOR_SIZE*7)(%rsp) -+# if HAVE_NO_AVX512_ASM_SUPPORT -+ /* Restore AVX-512 registers. Use .byte becaues we lack assembler support. */ -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x44,0x24,0x03 # vmovdqu64 %zmm0,0xc0(%rsp) -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x4c,0x24,0x04 # vmovdqu64 %zmm1,0x100(%rsp) -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x54,0x24,0x05 # vmovdqu64 %zmm2,0x140(%rsp) -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x5c,0x24,0x06 # vmovdqu64 %zmm3,0x180(%rsp) -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x64,0x24,0x07 # vmovdqu64 %zmm4,0x1c0(%rsp) -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x6c,0x24,0x08 # vmovdqu64 %zmm5,0x200(%rsp) -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x74,0x24,0x09 # vmovdqu64 %zmm6,0x240(%rsp) -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x7c,0x24,0x0a # vmovdqu64 %zmm7,0x280(%rsp) -+# else -+ VMOV %VEC(0), (LR_VECTOR_OFFSET)(%rsp) -+ VMOV %VEC(1), (LR_VECTOR_OFFSET + VECTOR_SIZE)(%rsp) -+ VMOV %VEC(2), (LR_VECTOR_OFFSET + VECTOR_SIZE*2)(%rsp) -+ VMOV %VEC(3), (LR_VECTOR_OFFSET + VECTOR_SIZE*3)(%rsp) -+ VMOV %VEC(4), (LR_VECTOR_OFFSET + VECTOR_SIZE*4)(%rsp) -+ VMOV %VEC(5), (LR_VECTOR_OFFSET + VECTOR_SIZE*5)(%rsp) -+ VMOV %VEC(6), (LR_VECTOR_OFFSET + VECTOR_SIZE*6)(%rsp) -+ VMOV %VEC(7), (LR_VECTOR_OFFSET + VECTOR_SIZE*7)(%rsp) -+# endif - - /* Save xmm0-xmm7 registers to detect if any of them are - changed by audit module. */ -@@ -73,7 +85,11 @@ - je 2f - vmovdqa %xmm0, (LR_VECTOR_OFFSET)(%rsp) - jmp 1f --2: vmovdqu (LR_VECTOR_OFFSET)(%rsp), %ymm0 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+2: .byte 0x62,0xf1,0xfe,0x48,0x6f,0x44,0x24,0x03 # vmovdqu64 0xc0(%rsp),%zmm0 -+# else -+2: VMOV (LR_VECTOR_OFFSET)(%rsp), %VEC(0) -+# endif - vmovdqa %xmm0, (LR_XMM_OFFSET)(%rsp) - - 1: vpcmpeqq (LR_SIZE + XMM_SIZE)(%rsp), %xmm1, %xmm8 -@@ -82,7 +98,11 @@ - je 2f - vmovdqa %xmm1, (LR_VECTOR_OFFSET + VECTOR_SIZE)(%rsp) - jmp 1f --2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE)(%rsp), %ymm1 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+2: .byte 0x62,0xf1,0xfe,0x48,0x6f,0x4c,0x24,0x04 # vmovdqu64 0x100(%rsp),%zmm1 -+# else -+2: VMOV (LR_VECTOR_OFFSET + VECTOR_SIZE)(%rsp), %VEC(1) -+# endif - vmovdqa %xmm1, (LR_XMM_OFFSET + XMM_SIZE)(%rsp) - - 1: vpcmpeqq (LR_SIZE + XMM_SIZE*2)(%rsp), %xmm2, %xmm8 -@@ -91,7 +111,11 @@ - je 2f - vmovdqa %xmm2, (LR_VECTOR_OFFSET + VECTOR_SIZE*2)(%rsp) - jmp 1f --2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*2)(%rsp), %ymm2 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+2: .byte 0x62,0xf1,0xfe,0x48,0x6f,0x54,0x24,0x05 # vmovdqu64 0x140(%rsp),%zmm2 -+# else -+2: VMOV (LR_VECTOR_OFFSET + VECTOR_SIZE*2)(%rsp), %VEC(2) -+# endif - vmovdqa %xmm2, (LR_XMM_OFFSET + XMM_SIZE*2)(%rsp) - - 1: vpcmpeqq (LR_SIZE + XMM_SIZE*3)(%rsp), %xmm3, %xmm8 -@@ -100,7 +124,11 @@ - je 2f - vmovdqa %xmm3, (LR_VECTOR_OFFSET + VECTOR_SIZE*3)(%rsp) - jmp 1f --2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*3)(%rsp), %ymm3 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+2: .byte 0x62,0xf1,0xfe,0x48,0x6f,0x5c,0x24,0x06 # vmovdqu64 0x180(%rsp),%zmm3 -+# else -+2: VMOV (LR_VECTOR_OFFSET + VECTOR_SIZE*3)(%rsp), %VEC(3) -+# endif - vmovdqa %xmm3, (LR_XMM_OFFSET + XMM_SIZE*3)(%rsp) - - 1: vpcmpeqq (LR_SIZE + XMM_SIZE*4)(%rsp), %xmm4, %xmm8 -@@ -109,7 +137,11 @@ - je 2f - vmovdqa %xmm4, (LR_VECTOR_OFFSET + VECTOR_SIZE*4)(%rsp) - jmp 1f --2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*4)(%rsp), %ymm4 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+2: .byte 0x62,0xf1,0xfe,0x48,0x6f,0x64,0x24,0x07 # vmovdqu64 0x1c0(%rsp),%zmm4 -+# else -+2: VMOV (LR_VECTOR_OFFSET + VECTOR_SIZE*4)(%rsp), %VEC(4) -+# endif - vmovdqa %xmm4, (LR_XMM_OFFSET + XMM_SIZE*4)(%rsp) - - 1: vpcmpeqq (LR_SIZE + XMM_SIZE*5)(%rsp), %xmm5, %xmm8 -@@ -118,7 +150,11 @@ - je 2f - vmovdqa %xmm5, (LR_VECTOR_OFFSET + VECTOR_SIZE*5)(%rsp) - jmp 1f --2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*5)(%rsp), %ymm5 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+2: .byte 0x62,0xf1,0xfe,0x48,0x6f,0x6c,0x24,0x08 # vmovdqu64 0x200(%rsp),%zmm5 -+# else -+2: VMOV (LR_VECTOR_OFFSET + VECTOR_SIZE*5)(%rsp), %VEC(5) -+# endif - vmovdqa %xmm5, (LR_XMM_OFFSET + XMM_SIZE*5)(%rsp) - - 1: vpcmpeqq (LR_SIZE + XMM_SIZE*6)(%rsp), %xmm6, %xmm8 -@@ -127,7 +163,11 @@ - je 2f - vmovdqa %xmm6, (LR_VECTOR_OFFSET + VECTOR_SIZE*6)(%rsp) - jmp 1f --2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*6)(%rsp), %ymm6 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+2: .byte 0x62,0xf1,0xfe,0x48,0x6f,0x74,0x24,0x09 # vmovdqu64 0x240(%rsp),%zmm6 -+# else -+2: VMOV (LR_VECTOR_OFFSET + VECTOR_SIZE*6)(%rsp), %VEC(6) -+# endif - vmovdqa %xmm6, (LR_XMM_OFFSET + XMM_SIZE*6)(%rsp) - - 1: vpcmpeqq (LR_SIZE + XMM_SIZE*7)(%rsp), %xmm7, %xmm8 -@@ -136,7 +176,11 @@ - je 2f - vmovdqa %xmm7, (LR_VECTOR_OFFSET + VECTOR_SIZE*7)(%rsp) - jmp 1f --2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*7)(%rsp), %ymm7 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+2: .byte 0x62,0xf1,0xfe,0x48,0x6f,0x7c,0x24,0x0a # vmovdqu64 0x280(%rsp),%zmm7 -+# else -+2: VMOV (LR_VECTOR_OFFSET + VECTOR_SIZE*7)(%rsp), %VEC(7) -+# endif - vmovdqa %xmm7, (LR_XMM_OFFSET + XMM_SIZE*7)(%rsp) - - 1: -@@ -214,8 +258,13 @@ - - #ifdef RESTORE_AVX - /* This is to support AVX audit modules. */ -- vmovdqu %ymm0, LRV_VECTOR0_OFFSET(%rcx) -- vmovdqu %ymm1, LRV_VECTOR1_OFFSET(%rcx) -+# if HAVE_NO_AVX512_ASM_SUPPORT -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x81,0x50,0x00,0x00,0x00 # vmovdqu64 %zmm0,0x50(%rcx) -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x89,0x90,0x00,0x00,0x00 # vmovdqu64 %zmm1,0x90(%rcx) -+# else -+ VMOV %VEC(0), LRV_VECTOR0_OFFSET(%rcx) -+ VMOV %VEC(1), LRV_VECTOR1_OFFSET(%rcx) -+# endif - - /* Save xmm0/xmm1 registers to detect if they are changed - by audit module. */ -@@ -244,13 +293,21 @@ - vpmovmskb %xmm2, %esi - cmpl $0xffff, %esi - jne 1f -- vmovdqu LRV_VECTOR0_OFFSET(%rsp), %ymm0 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+ .byte 0x62,0xf1,0xfe,0x48,0x6f,0x84,0x24,0x50,0x00,0x00,0x00 # vmovdqu64 0x50(%rsp),%zmm0 -+# else -+ VMOV LRV_VECTOR0_OFFSET(%rsp), %VEC(0) -+# endif - - 1: vpcmpeqq (LRV_SIZE + XMM_SIZE)(%rsp), %xmm1, %xmm2 - vpmovmskb %xmm2, %esi - cmpl $0xffff, %esi - jne 1f -- vmovdqu LRV_VECTOR1_OFFSET(%rsp), %ymm1 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+ .byte 0x62,0xf1,0xfe,0x48,0x6f,0x8c,0x24,0x90,0x00,0x00,0x00 # vmovdqu64 0x90(%rsp),%zmm1 -+# else -+ VMOV LRV_VECTOR1_OFFSET(%rsp), %VEC(1) -+# endif - - 1: - #endif -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.S glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/dl-trampoline.S ---- glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.S 2015-03-03 23:03:05.108457659 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/dl-trampoline.S 2015-03-03 23:07:31.799049953 -0500 -@@ -134,7 +134,7 @@ - .previous - - cmpl $0, L(have_avx)(%rip) -- jne 1f -+ jne L(defined) - movq %rbx, %r11 # Save rbx - movl $1, %eax - cpuid -@@ -143,18 +143,51 @@ - // AVX and XSAVE supported? - andl $((1 << 28) | (1 << 27)), %ecx - cmpl $((1 << 28) | (1 << 27)), %ecx -- jne 2f -+ jne 10f -+ // AVX512 supported in processor? -+ movq %rbx, %r11 # Save rbx -+ xorl %ecx, %ecx -+ mov $0x7, %eax -+ cpuid -+ andl $(1 << 16), %ebx - xorl %ecx, %ecx - // Get XFEATURE_ENABLED_MASK - xgetbv -- andl $0x6, %eax --2: subl $0x5, %eax -+ test %ebx, %ebx -+ movq %r11, %rbx # Restore rbx -+ je 20f -+ // Verify that XCR0[7:5] = '111b' and -+ // XCR0[2:1] = '11b' which means -+ // that zmm state is enabled -+ andl $0xe6, %eax -+ cmpl $0xe6, %eax -+ jne 20f -+ movl %eax, L(have_avx)(%rip) -+L(avx512): -+# define RESTORE_AVX -+# define HAVE_NO_AVX512_ASM_SUPPORT 1 -+# define VMOV vmovdqu64 -+# define VEC(i) zmm##i -+# define MORE_CODE -+# include "dl-trampoline.h" -+# undef VMOV -+# undef VEC -+# undef RESTORE_AVX -+# undef HAVE_NO_AVX512_ASM_SUPPORT -+20: andl $0x6, %eax -+10: subl $0x5, %eax - movl %eax, L(have_avx)(%rip) - cmpl $0, %eax - --1: js L(no_avx) -+L(defined): -+ js L(no_avx) -+ cmpl $0xe6, L(have_avx)(%rip) -+ je L(avx512) -+ - - # define RESTORE_AVX -+# define VMOV vmovdqu -+# define VEC(i) ymm##i - # define MORE_CODE - # include "dl-trampoline.h" - -@@ -178,7 +211,7 @@ - _dl_x86_64_save_sse: - # ifdef HAVE_AVX_SUPPORT - cmpl $0, L(have_avx)(%rip) -- jne 1f -+ jne L(defined_5) - movq %rbx, %r11 # Save rbx - movl $1, %eax - cpuid -@@ -187,21 +220,37 @@ - // AVX and XSAVE supported? - andl $((1 << 28) | (1 << 27)), %ecx - cmpl $((1 << 28) | (1 << 27)), %ecx -- jne 2f -+ jne 1f -+ // AVX512 supported in a processor? -+ movq %rbx, %r11 # Save rbx -+ xorl %ecx,%ecx -+ mov $0x7,%eax -+ cpuid -+ andl $(1 << 16), %ebx - xorl %ecx, %ecx - // Get XFEATURE_ENABLED_MASK - xgetbv -- andl $0x6, %eax -- cmpl $0x6, %eax -- // Nonzero if SSE and AVX state saving is enabled. -- sete %al --2: leal -1(%eax,%eax), %eax -+ test %ebx, %ebx -+ movq %r11, %rbx # Restore rbx -+ je 2f -+ // Verify that XCR0[7:5] = '111b' and -+ // XCR0[2:1] = '11b' which means -+ // that zmm state is enabled -+ andl $0xe6, %eax - movl %eax, L(have_avx)(%rip) -- cmpl $0, %eax -+ cmpl $0xe6, %eax -+ je L(avx512_5) - --1: js L(no_avx5) -+2: andl $0x6, %eax -+1: subl $0x5, %eax -+ movl %eax, L(have_avx)(%rip) -+ cmpl $0, %eax - --# define YMM_SIZE 32 -+L(defined_5): -+ js L(no_avx5) -+ cmpl $0xe6, L(have_avx)(%rip) -+ je L(avx512_5) -+ - vmovdqa %ymm0, %fs:RTLD_SAVESPACE_SSE+0*YMM_SIZE - vmovdqa %ymm1, %fs:RTLD_SAVESPACE_SSE+1*YMM_SIZE - vmovdqa %ymm2, %fs:RTLD_SAVESPACE_SSE+2*YMM_SIZE -@@ -211,6 +260,26 @@ - vmovdqa %ymm6, %fs:RTLD_SAVESPACE_SSE+6*YMM_SIZE - vmovdqa %ymm7, %fs:RTLD_SAVESPACE_SSE+7*YMM_SIZE - ret -+L(avx512_5): -+# Original instructions: -+# vmovdqu64 %zmm0, %fs:RTLD_SAVESPACE_SSE+0*ZMM_SIZE -+# vmovdqu64 %zmm1, %fs:RTLD_SAVESPACE_SSE+1*ZMM_SIZE -+# vmovdqu64 %zmm2, %fs:RTLD_SAVESPACE_SSE+2*ZMM_SIZE -+# vmovdqu64 %zmm3, %fs:RTLD_SAVESPACE_SSE+3*ZMM_SIZE -+# vmovdqu64 %zmm4, %fs:RTLD_SAVESPACE_SSE+4*ZMM_SIZE -+# vmovdqu64 %zmm5, %fs:RTLD_SAVESPACE_SSE+5*ZMM_SIZE -+# vmovdqu64 %zmm6, %fs:RTLD_SAVESPACE_SSE+6*ZMM_SIZE -+# vmovdqu64 %zmm7, %fs:RTLD_SAVESPACE_SSE+7*ZMM_SIZE -+# Assembled instructions: -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x7f,0x04,0x25,0x80,0x00,0x00,0x00 # vmovdqu64 %zmm0,%fs:0x80 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x7f,0x0c,0x25,0xc0,0x00,0x00,0x00 # vmovdqu64 %zmm1,%fs:0xc0 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x7f,0x14,0x25,0x00,0x01,0x00,0x00 # vmovdqu64 %zmm2,%fs:0x100 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x7f,0x1c,0x25,0x40,0x01,0x00,0x00 # vmovdqu64 %zmm3,%fs:0x140 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x7f,0x24,0x25,0x80,0x01,0x00,0x00 # vmovdqu64 %zmm4,%fs:0x180 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x7f,0x2c,0x25,0xc0,0x01,0x00,0x00 # vmovdqu64 %zmm5,%fs:0x1c0 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x7f,0x34,0x25,0x00,0x02,0x00,0x00 # vmovdqu64 %zmm6,%fs:0x200 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x7f,0x3c,0x25,0x40,0x02,0x00,0x00 # vmovdqu64 %zmm7,%fs:0x240 -+ ret - L(no_avx5): - # endif - movdqa %xmm0, %fs:RTLD_SAVESPACE_SSE+0*XMM_SIZE -@@ -234,6 +303,8 @@ - # ifdef HAVE_AVX_SUPPORT - cmpl $0, L(have_avx)(%rip) - js L(no_avx6) -+ cmpl $0xe6, L(have_avx)(%rip) -+ je L(avx512_6) - - vmovdqa %fs:RTLD_SAVESPACE_SSE+0*YMM_SIZE, %ymm0 - vmovdqa %fs:RTLD_SAVESPACE_SSE+1*YMM_SIZE, %ymm1 -@@ -244,6 +315,26 @@ - vmovdqa %fs:RTLD_SAVESPACE_SSE+6*YMM_SIZE, %ymm6 - vmovdqa %fs:RTLD_SAVESPACE_SSE+7*YMM_SIZE, %ymm7 - ret -+L(avx512_6): -+# Original instructions: -+# vmovdqu64 %fs:RTLD_SAVESPACE_SSE+0*ZMM_SIZE, %zmm0 -+# vmovdqu64 %fs:RTLD_SAVESPACE_SSE+1*ZMM_SIZE, %zmm1 -+# vmovdqu64 %fs:RTLD_SAVESPACE_SSE+2*ZMM_SIZE, %zmm2 -+# vmovdqu64 %fs:RTLD_SAVESPACE_SSE+3*ZMM_SIZE, %zmm3 -+# vmovdqu64 %fs:RTLD_SAVESPACE_SSE+4*ZMM_SIZE, %zmm4 -+# vmovdqu64 %fs:RTLD_SAVESPACE_SSE+5*ZMM_SIZE, %zmm5 -+# vmovdqu64 %fs:RTLD_SAVESPACE_SSE+6*ZMM_SIZE, %zmm6 -+# vmovdqu64 %fs:RTLD_SAVESPACE_SSE+7*ZMM_SIZE, %zmm7 -+# Assembled instructions: -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x6f,0x04,0x25,0x80,0x00,0x00,0x00 # vmovdqu64 %fs:0x80,%zmm0 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x6f,0x0c,0x25,0xc0,0x00,0x00,0x00 # vmovdqu64 %fs:0xc0,%zmm1 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x6f,0x14,0x25,0x00,0x01,0x00,0x00 # vmovdqu64 %fs:0x100,%zmm2 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x6f,0x1c,0x25,0x40,0x01,0x00,0x00 # vmovdqu64 %fs:0x140,%zmm3 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x6f,0x24,0x25,0x80,0x01,0x00,0x00 # vmovdqu64 %fs:0x180,%zmm4 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x6f,0x2c,0x25,0xc0,0x01,0x00,0x00 # vmovdqu64 %fs:0x1c0,%zmm5 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x6f,0x34,0x25,0x00,0x02,0x00,0x00 # vmovdqu64 %fs:0x200,%zmm6 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x6f,0x3c,0x25,0x40,0x02,0x00,0x00 # vmovdqu64 %fs:0x240,%zmm7 -+ ret - L(no_avx6): - # endif - movdqa %fs:RTLD_SAVESPACE_SSE+0*XMM_SIZE, %xmm0 -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/x86_64/link-defines.sym glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/link-defines.sym ---- glibc-2.12-2-gc4ccff1/sysdeps/x86_64/link-defines.sym 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/link-defines.sym 2015-03-03 23:03:25.042829206 -0500 -@@ -4,6 +4,8 @@ - -- - VECTOR_SIZE sizeof (La_x86_64_vector) - XMM_SIZE sizeof (La_x86_64_xmm) -+YMM_SIZE sizeof (La_x86_64_ymm) -+ZMM_SIZE sizeof (La_x86_64_zmm) - - LR_SIZE sizeof (struct La_x86_64_regs) - LR_RDX_OFFSET offsetof (struct La_x86_64_regs, lr_rdx) diff --git a/src/patches/glibc/glibc-rh1207236.patch b/src/patches/glibc/glibc-rh1207236.patch deleted file mode 100644 index 5671fd8..0000000 --- a/src/patches/glibc/glibc-rh1207236.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/malloc/malloc.c glibc-2.12-2-gc4ccff1.new/malloc/malloc.c ---- glibc-2.12-2-gc4ccff1/malloc/malloc.c 2015-04-10 12:02:54.011106386 +0530 -+++ glibc-2.12-2-gc4ccff1.new/malloc/malloc.c 2015-04-10 12:02:35.867958292 +0530 -@@ -5850,7 +5850,7 @@ _int_valloc(av, bytes) mstate av; size_t - #endif - { - /* Ensure initialization/consolidation */ -- if (have_fastchunks(av)) malloc_consolidate(av); -+ if (av && have_fastchunks(av)) malloc_consolidate(av); - return _int_memalign(av, mp_.pagesize, bytes); - } - diff --git a/src/patches/glibc/glibc-rh1209376.patch b/src/patches/glibc/glibc-rh1209376.patch deleted file mode 100644 index 74393f0..0000000 --- a/src/patches/glibc/glibc-rh1209376.patch +++ /dev/null @@ -1,18 +0,0 @@ -@@ -, +, @@ - resolv/nss_dns/dns-host.c:getanswer_r. ---- - resolv/nss_dns/dns-host.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) ---- a/resolv/nss_dns/dns-host.c -+++ a/resolv/nss_dns/dns-host.c -@@ -615,7 +615,8 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype, - int have_to_map = 0; - uintptr_t pad = -(uintptr_t) buffer % __alignof__ (struct host_data); - buffer += pad; -- if (__builtin_expect (buflen < sizeof (struct host_data) + pad, 0)) -+ buflen = buflen > pad ? buflen - pad : 0; -+ if (__builtin_expect (buflen < sizeof (struct host_data), 0)) - { - /* The buffer is too small. */ - too_small: --- diff --git a/src/patches/glibc/glibc-rh1217186.patch b/src/patches/glibc/glibc-rh1217186.patch deleted file mode 100644 index 6c6c393..0000000 --- a/src/patches/glibc/glibc-rh1217186.patch +++ /dev/null @@ -1,65 +0,0 @@ -# -# Author: Carlos O'Donell -# Upstream status: Needs to go upstream (2015-05-07) -# -diff --git a/inet/rcmd.c b/inet/rcmd.c -index acacaa0..9f2443b 100644 ---- a/inet/rcmd.c -+++ b/inet/rcmd.c -@@ -803,29 +803,38 @@ __validuser2_sa(hostf, ra, ralen, luser, ruser, rhost) - *p = '\0'; /* <nul> terminate username (+host?) */ - - /* buf -> host(?) ; user -> username(?) */ -+ if (*buf == '\0') -+ break; -+ if (*user == '\0') -+ user = luser; -+ -+ /* First check the user part. This is an optimization, since -+ one should always check the host first in order to detect -+ negative host checks (which we check for later). */ -+ ucheck = __icheckuser (user, ruser); -+ -+ /* Either we found the user, or we didn't and this is a -+ negative host check. We must do the negative host lookup -+ in order to preserve the semantics of stopping on this line -+ before processing others. */ -+ if (ucheck != 0 || *buf == '-') { -+ -+ /* Next check host part */ -+ hcheck = __checkhost_sa (ra, ralen, buf, rhost); -+ -+ /* Negative '-host user(?)' match? */ -+ if (hcheck < 0) -+ break; - -- /* First check host part */ -- hcheck = __checkhost_sa (ra, ralen, buf, rhost); -- -- if (hcheck < 0) -- break; -- -- if (hcheck) { -- /* Then check user part */ -- if (! (*user)) -- user = luser; -- -- ucheck = __icheckuser (user, ruser); -- -- /* Positive 'host user' match? */ -- if (ucheck > 0) { -+ /* Positive 'host user' match? */ -+ if (hcheck > 0 && ucheck > 0) { - retval = 0; - break; - } - -- /* Negative 'host -user' match? */ -- if (ucheck < 0) -- break; -+ /* Negative 'host -user' match? */ -+ if (hcheck > 0 && ucheck < 0) -+ break; - - /* Neither, go on looking for match */ - } diff --git a/src/patches/glibc/glibc-rh1256812-2.patch b/src/patches/glibc/glibc-rh1256812-2.patch deleted file mode 100644 index 5596de7..0000000 --- a/src/patches/glibc/glibc-rh1256812-2.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/malloc/malloc.c glibc-2.12-2-gc4ccff1.new/malloc/malloc.c ---- glibc-2.12-2-gc4ccff1/malloc/malloc.c 2015-07-28 22:28:22.517107147 +0530 -+++ glibc-2.12-2-gc4ccff1.new/malloc/malloc.c 2015-07-28 22:24:59.541394493 +0530 -@@ -4087,8 +4087,9 @@ public_cALLOc(size_t n, size_t elem_size - /* Maybe the failure is due to running out of mmapped areas. */ - if(av != &main_arena) { - (void)mutex_unlock(&av->mutex); -- (void)mutex_lock(&main_arena.mutex); -- mem = _int_malloc(&main_arena, sz); -+ av = &main_arena; -+ (void)mutex_lock(&av->mutex); -+ mem = _int_malloc(av, sz); - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ diff --git a/src/patches/glibc/glibc-rh1256812-3.patch b/src/patches/glibc/glibc-rh1256812-3.patch deleted file mode 100644 index e8fbb1b..0000000 --- a/src/patches/glibc/glibc-rh1256812-3.patch +++ /dev/null @@ -1,138 +0,0 @@ -commit fdc0f374bcd2d0513569aa8d600f960e43e8af1d -Author: Ulrich Drepper drepper@redhat.com -Date: Sun Oct 24 22:37:00 2010 -0400 - - Fix perturbing in malloc on free. - -commit e8349efd466cfedc0aa98be61d88ca8795c9e565 -Author: OndÅej BÃlka neleai@seznam.cz -Date: Mon Dec 9 17:25:19 2013 +0100 - - Simplify perturb_byte logic. - -diff --git a/malloc/malloc.c b/malloc/malloc.c -index 4821deb..ac8c3f6 100644 ---- a/malloc/malloc.c -+++ b/malloc/malloc.c -@@ -1870,8 +1870,20 @@ static int check_action = DEFAULT_CHECK_ACTION; - - static int perturb_byte; - --#define alloc_perturb(p, n) memset (p, (perturb_byte ^ 0xff) & 0xff, n) --#define free_perturb(p, n) memset (p, perturb_byte & 0xff, n) -+static inline void -+alloc_perturb (char *p, size_t n) -+{ -+ if (__glibc_unlikely (perturb_byte)) -+ memset (p, perturb_byte ^ 0xff, n); -+} -+ -+static inline void -+free_perturb (char *p, size_t n) -+{ -+ if (__glibc_unlikely (perturb_byte)) -+ memset (p, perturb_byte, n); -+} -+ - - - /* ------------------- Support for multiple arenas -------------------- */ -@@ -3287,8 +3299,7 @@ _int_malloc(mstate av, size_t bytes) - #endif - check_remalloced_chunk(av, victim, nb); - void *p = chunk2mem(victim); -- if (__builtin_expect (perturb_byte, 0)) -- alloc_perturb (p, bytes); -+ alloc_perturb (p, bytes); - return p; - } - } -@@ -3323,8 +3334,7 @@ _int_malloc(mstate av, size_t bytes) - victim->size |= NON_MAIN_ARENA; - check_malloced_chunk(av, victim, nb); - void *p = chunk2mem(victim); -- if (__builtin_expect (perturb_byte, 0)) -- alloc_perturb (p, bytes); -+ alloc_perturb (p, bytes); - return p; - } - } -@@ -3403,8 +3413,7 @@ _int_malloc(mstate av, size_t bytes) - - check_malloced_chunk(av, victim, nb); - void *p = chunk2mem(victim); -- if (__builtin_expect (perturb_byte, 0)) -- alloc_perturb (p, bytes); -+ alloc_perturb (p, bytes); - return p; - } - -@@ -3420,8 +3429,7 @@ _int_malloc(mstate av, size_t bytes) - victim->size |= NON_MAIN_ARENA; - check_malloced_chunk(av, victim, nb); - void *p = chunk2mem(victim); -- if (__builtin_expect (perturb_byte, 0)) -- alloc_perturb (p, bytes); -+ alloc_perturb (p, bytes); - return p; - } - -@@ -3545,8 +3553,7 @@ _int_malloc(mstate av, size_t bytes) - } - check_malloced_chunk(av, victim, nb); - void *p = chunk2mem(victim); -- if (__builtin_expect (perturb_byte, 0)) -- alloc_perturb (p, bytes); -+ alloc_perturb (p, bytes); - return p; - } - } -@@ -3649,8 +3656,7 @@ _int_malloc(mstate av, size_t bytes) - } - check_malloced_chunk(av, victim, nb); - void *p = chunk2mem(victim); -- if (__builtin_expect (perturb_byte, 0)) -- alloc_perturb (p, bytes); -+ alloc_perturb (p, bytes); - return p; - } - } -@@ -3684,8 +3690,7 @@ _int_malloc(mstate av, size_t bytes) - - check_malloced_chunk(av, victim, nb); - void *p = chunk2mem(victim); -- if (__builtin_expect (perturb_byte, 0)) -- alloc_perturb (p, bytes); -+ alloc_perturb (p, bytes); - return p; - } - -@@ -3705,7 +3710,7 @@ _int_malloc(mstate av, size_t bytes) - */ - else { - void *p = sYSMALLOc(nb, av); -- if (p != NULL && __builtin_expect (perturb_byte, 0)) -+ if (p != NULL) - alloc_perturb (p, bytes); - return p; - } -@@ -3798,8 +3803,7 @@ _int_free(mstate av, mchunkptr p, int have_lock) - #endif - } - -- if (__builtin_expect (perturb_byte, 0)) -- free_perturb (chunk2mem(p), size - SIZE_SZ); -+ free_perturb (chunk2mem(p), size - 2 * SIZE_SZ); - - set_fastchunks(av); - unsigned int idx = fastbin_index(size); -@@ -3881,8 +3885,7 @@ _int_free(mstate av, mchunkptr p, int have_lock) - goto errout; - } - -- if (__builtin_expect (perturb_byte, 0)) -- free_perturb (chunk2mem(p), size - SIZE_SZ); -+ free_perturb (chunk2mem(p), size - 2 * SIZE_SZ); - - /* consolidate backward */ - if (!prev_inuse(p)) { diff --git a/src/patches/glibc/glibc-rh1256812-4.patch b/src/patches/glibc/glibc-rh1256812-4.patch deleted file mode 100644 index 1e497f3..0000000 --- a/src/patches/glibc/glibc-rh1256812-4.patch +++ /dev/null @@ -1,45 +0,0 @@ -commit 55765a349a96482207fbf927d3666a51878f973b -Author: Josef Bacik josef@toxicpanda.com -Date: Wed Aug 19 14:06:56 2015 +0530 - - Don't fall back to mmap if the original arena is not corrupt - - The new logic to find an uncontended non-corrupt arena misses a case - where the current arena is contended, but is not corrupt. In the - degenerate case, this is the only arena. In both cases, the logic - falls back to using mmap despite there being an available arena. - - Attached patch by Josef Bacik makes sure that all arenas are indeed - corrupt before falling back to malloc. Verified on x86_64. - - * malloc/arena.c (reused_arena): return NULL only if all - arenas are corrupt. - -diff --git a/malloc/arena.c b/malloc/arena.c -index 21ecc5a1..0424273 100644 ---- a/malloc/arena.c -+++ b/malloc/arena.c -@@ -823,16 +823,21 @@ reused_arena (mstate avoid_arena) - - /* Make sure that the arena we get is not corrupted. */ - mstate begin = result; -+ bool looped = false; -+ - while (arena_is_corrupt (result)) - { - result = result->next; - if (result == begin) -- break; -+ { -+ looped = true; -+ break; -+ } - } - - /* We could not find any arena that was either not corrupted or not the one - we wanted to avoid. */ -- if (result == begin) -+ if (looped) - return NULL; - - /* No arena available without contention. Wait for the next in line. */ diff --git a/src/patches/glibc/glibc-rh1256812.patch b/src/patches/glibc/glibc-rh1256812.patch deleted file mode 100644 index 1eafcc1..0000000 --- a/src/patches/glibc/glibc-rh1256812.patch +++ /dev/null @@ -1,56 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/malloc/malloc.c glibc-2.12-2-gc4ccff1.v2/malloc/malloc.c ---- glibc-2.12-2-gc4ccff1/malloc/malloc.c 2015-07-24 19:29:37.679907396 +0530 -+++ glibc-2.12-2-gc4ccff1.v2/malloc/malloc.c 2015-07-24 18:59:59.928055174 +0530 -@@ -3737,8 +3737,7 @@ public_mALLOc(size_t bytes) - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = arena_get2(prev, bytes, true); -- if(ar_ptr) -- victim = _int_malloc(ar_ptr, bytes); -+ victim = _int_malloc(ar_ptr, bytes); - #endif - } - } -@@ -3968,8 +3967,7 @@ public_mEMALIGn(size_t alignment, size_t - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = arena_get2(prev, bytes, true); -- if(ar_ptr) -- p = _int_memalign(ar_ptr, alignment, bytes); -+ p = _int_memalign(ar_ptr, alignment, bytes); - #endif - } - } -@@ -4024,8 +4022,7 @@ public_vALLOc(size_t bytes) - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = arena_get2(prev, bytes, true); -- if(ar_ptr) -- p = _int_memalign(ar_ptr, pagesz, bytes); -+ p = _int_memalign(ar_ptr, pagesz, bytes); - #endif - } - } -@@ -4080,8 +4077,7 @@ public_pVALLOc(size_t bytes) - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = arena_get2(prev, bytes + 2*pagesz + MINSIZE, true); -- if(ar_ptr) -- p = _int_memalign(ar_ptr, pagesz, rounded_bytes); -+ p = _int_memalign(ar_ptr, pagesz, rounded_bytes); - #endif - } - } -@@ -4180,11 +4176,9 @@ public_cALLOc(size_t n, size_t elem_size - mstate prev = av->next ? av : 0; - (void)mutex_unlock(&av->mutex); - av = arena_get2(prev, sz, true); -- if(av) -- mem = _int_malloc(av, sz); -+ mem = _int_malloc(av, sz); - #endif - } -- if (mem == 0) return 0; - } - - if (av != NULL) diff --git a/src/patches/glibc/glibc-rh1256890.patch b/src/patches/glibc/glibc-rh1256890.patch deleted file mode 100644 index 4683dc4..0000000 --- a/src/patches/glibc/glibc-rh1256890.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/malloc/malloc.c glibc-2.12-2-gc4ccff1.new/malloc/malloc.c ---- glibc-2.12-2-gc4ccff1/malloc/malloc.c 2015-08-19 23:13:52.826205930 +0530 -+++ glibc-2.12-2-gc4ccff1.new/malloc/malloc.c 2015-08-19 23:13:40.021049289 +0530 -@@ -5867,7 +5867,7 @@ _int_pvalloc(av, bytes) mstate av, size_ - size_t pagesz; - - /* Ensure initialization/consolidation */ -- if (have_fastchunks(av)) malloc_consolidate(av); -+ if (av && have_fastchunks(av)) malloc_consolidate(av); - pagesz = mp_.pagesize; - return _int_memalign(av, pagesz, (bytes + pagesz - 1) & ~(pagesz - 1)); - } diff --git a/src/patches/glibc/glibc-rh1256891.patch b/src/patches/glibc/glibc-rh1256891.patch deleted file mode 100644 index 5364dba..0000000 --- a/src/patches/glibc/glibc-rh1256891.patch +++ /dev/null @@ -1,26 +0,0 @@ -commit 5c44738353ecaa1c81efca063ee8b55e092d7a43 -Author: Alexandre Oliva aoliva@redhat.com -Date: Wed Sep 5 15:43:04 2012 -0300 - - Don't change no_dyn_threshold on mallopt failure - - * malloc/malloc.c (__libc_mallopt) <M_MMAP_THRESHOLD>: Do not - change internal state upon failure. - -diff --git a/malloc/malloc.c b/malloc/malloc.c -index bd562df..c69e281 100644 ---- a/malloc/malloc.c -+++ b/malloc/malloc.c -@@ -4769,8 +4769,10 @@ int __libc_mallopt(int param_number, int value) - res = 0; - else - #endif -- mp_.mmap_threshold = value; -- mp_.no_dyn_threshold = 1; -+ { -+ mp_.mmap_threshold = value; -+ mp_.no_dyn_threshold = 1; -+ } - break; - - case M_MMAP_MAX: diff --git a/src/patches/glibc/glibc-rh1291270.patch b/src/patches/glibc/glibc-rh1291270.patch deleted file mode 100644 index 8d12d95..0000000 --- a/src/patches/glibc/glibc-rh1291270.patch +++ /dev/null @@ -1,41 +0,0 @@ -Description: Allow loading more libraries with static TLS. -Author: Carlos O'Donell codonell@redhat.com -Origin: PATCH -Bug-RHEL: #1291270 (rhel-6.7.z), #1198802 (rhel-6.8), #1202952 (rhel-7.2) -Bug-Fedora: #1124987 (F21) -Bug-Upstream: #17090, #17620, #17621, #17628 (2.22) -Upstream status: not-needed -# -# The correct fix for this is already upstream and involves -# changing the heuristics for DTV slot increases. In RHEL6 -# we take the conservative approach and provide a larger -# slot surplus. This matches what was done in Fedora 21 before -# we had the upstream fix: f8aeae347377f3dfa8cbadde057adf1827fb1d44. -# In RHEL7 we have the upstream fix. This is fixed upstream as of -# glibc 2.22. -# -Index: glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h -@@ -496,8 +496,18 @@ struct rtld_global - have to iterate beyond the first element in the slotinfo list. */ - #define TLS_SLOTINFO_SURPLUS (62) - --/* Number of additional slots in the dtv allocated. */ --#define DTV_SURPLUS (14) -+/* Number of additional allocated dtv slots. This was initially -+ 14, but problems with python, MESA, and X11's uses of static TLS meant -+ that most distributions were very close to this limit when they loaded -+ dynamically interpreted languages that used graphics. The simplest -+ solution was to roughly double the number of slots. The actual static -+ image space usage was relatively small, for example in MESA you -+ had only two dispatch pointers for a total of 16 bytes. If we hit up -+ against this limit again we should start a campaign with the -+ distributions to coordinate the usage of static TLS. Any user of this -+ resource is effectively coordinating a global resource since this -+ surplus is allocated for each thread at startup. */ -+#define DTV_SURPLUS (32) - - /* Initial dtv of the main thread, not allocated with normal malloc. */ - EXTERN void *_dl_initial_dtv; diff --git a/src/patches/glibc/glibc-rh1296031-0.patch b/src/patches/glibc/glibc-rh1296031-0.patch deleted file mode 100644 index d44e491..0000000 --- a/src/patches/glibc/glibc-rh1296031-0.patch +++ /dev/null @@ -1,465 +0,0 @@ -Sourceware bug 16574 - -commit d668061994a7486a3ba9c7d5e7882d85a2883707 -Author: Andreas Schwab schwab@suse.de -Date: Thu Feb 13 11:01:57 2014 +0100 - - Fix memory leak in _nss_dns_gethostbyname4_r with big DNS answer - -commit ab7ac0f2cf8731fe4c3f3aea6088a7c0127b5725 -Author: OndÅej BÃlka neleai@seznam.cz -Date: Sun Feb 16 12:59:23 2014 +0100 - - Deduplicate resolv/nss_dns/dns-host.c - - In resolv/nss_dns/dns-host.c one of code path duplicated code after - that. We merge these paths. - -commit ab09bf616ad527b249aca5f2a4956fd526f0712f -Author: Andreas Schwab schwab@suse.de -Date: Tue Feb 18 10:57:25 2014 +0100 - - Properly fix memory leak in _nss_dns_gethostbyname4_r with big DNS answer - - Instead of trying to guess whether the second buffer needs to be freed - set a flag at the place it is allocated - -Index: glibc-2.12-2-gc4ccff1/include/resolv.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/include/resolv.h -+++ glibc-2.12-2-gc4ccff1/include/resolv.h -@@ -58,11 +58,11 @@ libc_hidden_proto (__res_randomid) - libc_hidden_proto (__res_state) - - int __libc_res_nquery (res_state, const char *, int, int, u_char *, int, -- u_char **, u_char **, int *, int *); -+ u_char **, u_char **, int *, int *, int *); - int __libc_res_nsearch (res_state, const char *, int, int, u_char *, int, -- u_char **, u_char **, int *, int *); -+ u_char **, u_char **, int *, int *, int *); - int __libc_res_nsend (res_state, const u_char *, int, const u_char *, int, -- u_char *, int, u_char **, u_char **, int *, int *) -+ u_char *, int, u_char **, u_char **, int *, int *, int *) - attribute_hidden; - - libresolv_hidden_proto (_sethtent) -Index: glibc-2.12-2-gc4ccff1/resolv/gethnamaddr.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/gethnamaddr.c -+++ glibc-2.12-2-gc4ccff1/resolv/gethnamaddr.c -@@ -634,7 +634,7 @@ gethostbyname2(name, af) - buf.buf = origbuf = (querybuf *) alloca (1024); - - if ((n = __libc_res_nsearch(&_res, name, C_IN, type, buf.buf->buf, 1024, -- &buf.ptr, NULL, NULL, NULL)) < 0) { -+ &buf.ptr, NULL, NULL, NULL, NULL)) < 0) { - if (buf.buf != origbuf) - free (buf.buf); - Dprintf("res_nsearch failed (%d)\n", n); -@@ -729,12 +729,12 @@ gethostbyaddr(addr, len, af) - buf.buf = orig_buf = (querybuf *) alloca (1024); - - n = __libc_res_nquery(&_res, qbuf, C_IN, T_PTR, buf.buf->buf, 1024, -- &buf.ptr, NULL, NULL, NULL); -+ &buf.ptr, NULL, NULL, NULL, NULL); - if (n < 0 && af == AF_INET6 && (_res.options & RES_NOIP6DOTINT) == 0) { - strcpy(qp, "ip6.int"); - n = __libc_res_nquery(&_res, qbuf, C_IN, T_PTR, buf.buf->buf, - buf.buf != orig_buf ? MAXPACKET : 1024, -- &buf.ptr, NULL, NULL, NULL); -+ &buf.ptr, NULL, NULL, NULL, NULL); - } - if (n < 0) { - if (buf.buf != orig_buf) -Index: glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-canon.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/nss_dns/dns-canon.c -+++ glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-canon.c -@@ -62,7 +62,7 @@ _nss_dns_getcanonname_r (const char *nam - { - int r = __libc_res_nquery (&_res, name, ns_c_in, qtypes[i], - buf, sizeof (buf), &ansp.ptr, NULL, NULL, -- NULL); -+ NULL, NULL); - if (r > 0) - { - /* We need to decode the response. Just one question record. -Index: glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-host.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/nss_dns/dns-host.c -+++ glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-host.c -@@ -191,7 +191,7 @@ _nss_dns_gethostbyname3_r (const char *n - host_buffer.buf = orig_host_buffer = (querybuf *) alloca (1024); - - n = __libc_res_nsearch (&_res, name, C_IN, type, host_buffer.buf->buf, -- 1024, &host_buffer.ptr, NULL, NULL, NULL); -+ 1024, &host_buffer.ptr, NULL, NULL, NULL, NULL); - if (n < 0) - { - switch (errno) -@@ -221,7 +221,7 @@ _nss_dns_gethostbyname3_r (const char *n - n = __libc_res_nsearch (&_res, name, C_IN, T_A, host_buffer.buf->buf, - host_buffer.buf != orig_host_buffer - ? MAXPACKET : 1024, &host_buffer.ptr, -- NULL, NULL, NULL); -+ NULL, NULL, NULL, NULL); - - if (n < 0) - { -@@ -304,13 +304,20 @@ _nss_dns_gethostbyname4_r (const char *n - u_char *ans2p = NULL; - int nans2p = 0; - int resplen2 = 0; -+ int ans2p_malloced = 0; - - int olderr = errno; - enum nss_status status; - int n = __libc_res_nsearch (&_res, name, C_IN, T_UNSPEC, - host_buffer.buf->buf, 2048, &host_buffer.ptr, -- &ans2p, &nans2p, &resplen2); -- if (n < 0) -+ &ans2p, &nans2p, &resplen2, &ans2p_malloced); -+ if (n >= 0) -+ { -+ status = gaih_getanswer (host_buffer.buf, n, (const querybuf *) ans2p, -+ resplen2, name, pat, buffer, buflen, -+ errnop, herrnop, ttlp); -+ } -+ else - { - if (errno == ESRCH) - { -@@ -325,16 +332,11 @@ _nss_dns_gethostbyname4_r (const char *n - *errnop = EAGAIN; - else - __set_errno (olderr); -- -- if (host_buffer.buf != orig_host_buffer) -- free (host_buffer.buf); -- -- return status; - } - -- status = gaih_getanswer(host_buffer.buf, n, (const querybuf *) ans2p, -- resplen2, name, pat, buffer, buflen, -- errnop, herrnop, ttlp); -+ /* Check whether ans2p was separately allocated. */ -+ if (ans2p_malloced) -+ free (ans2p); - - if (host_buffer.buf != orig_host_buffer) - free (host_buffer.buf); -@@ -444,7 +446,7 @@ _nss_dns_gethostbyaddr2_r (const void *a - strcpy (qp, "].ip6.arpa"); - n = __libc_res_nquery (&_res, qbuf, C_IN, T_PTR, - host_buffer.buf->buf, 1024, &host_buffer.ptr, -- NULL, NULL, NULL); -+ NULL, NULL, NULL, NULL); - if (n >= 0) - goto got_it_already; - } -@@ -465,14 +467,14 @@ _nss_dns_gethostbyaddr2_r (const void *a - } - - n = __libc_res_nquery (&_res, qbuf, C_IN, T_PTR, host_buffer.buf->buf, -- 1024, &host_buffer.ptr, NULL, NULL, NULL); -+ 1024, &host_buffer.ptr, NULL, NULL, NULL, NULL); - if (n < 0 && af == AF_INET6 && (_res.options & RES_NOIP6DOTINT) == 0) - { - strcpy (qp, "ip6.int"); - n = __libc_res_nquery (&_res, qbuf, C_IN, T_PTR, host_buffer.buf->buf, - host_buffer.buf != orig_host_buffer - ? MAXPACKET : 1024, &host_buffer.ptr, -- NULL, NULL, NULL); -+ NULL, NULL, NULL, NULL); - } - if (n < 0) - { -Index: glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-network.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/nss_dns/dns-network.c -+++ glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-network.c -@@ -130,7 +130,7 @@ _nss_dns_getnetbyname_r (const char *nam - net_buffer.buf = orig_net_buffer = (querybuf *) alloca (1024); - - anslen = __libc_res_nsearch (&_res, qbuf, C_IN, T_PTR, net_buffer.buf->buf, -- 1024, &net_buffer.ptr, NULL, NULL, NULL); -+ 1024, &net_buffer.ptr, NULL, NULL, NULL, NULL); - if (anslen < 0) - { - /* Nothing found. */ -@@ -206,7 +206,7 @@ _nss_dns_getnetbyaddr_r (uint32_t net, i - net_buffer.buf = orig_net_buffer = (querybuf *) alloca (1024); - - anslen = __libc_res_nquery (&_res, qbuf, C_IN, T_PTR, net_buffer.buf->buf, -- 1024, &net_buffer.ptr, NULL, NULL, NULL); -+ 1024, &net_buffer.ptr, NULL, NULL, NULL, NULL); - if (anslen < 0) - { - /* Nothing found. */ -Index: glibc-2.12-2-gc4ccff1/resolv/res_query.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/res_query.c -+++ glibc-2.12-2-gc4ccff1/resolv/res_query.c -@@ -98,7 +98,7 @@ static int - __libc_res_nquerydomain(res_state statp, const char *name, const char *domain, - int class, int type, u_char *answer, int anslen, - u_char **answerp, u_char **answerp2, int *nanswerp2, -- int *resplen2); -+ int *resplen2, int *answerp2_malloced); - - /* - * Formulate a normal query, send, and await answer. -@@ -119,7 +119,8 @@ __libc_res_nquery(res_state statp, - u_char **answerp, /* if buffer needs to be enlarged */ - u_char **answerp2, - int *nanswerp2, -- int *resplen2) -+ int *resplen2, -+ int *answerp2_malloced) - { - HEADER *hp = (HEADER *) answer; - HEADER *hp2; -@@ -224,7 +225,8 @@ __libc_res_nquery(res_state statp, - } - assert (answerp == NULL || (void *) *answerp == (void *) answer); - n = __libc_res_nsend(statp, query1, nquery1, query2, nquery2, answer, -- anslen, answerp, answerp2, nanswerp2, resplen2); -+ anslen, answerp, answerp2, nanswerp2, resplen2, -+ answerp2_malloced); - if (use_malloc) - free (buf); - if (n < 0) { -@@ -316,7 +318,7 @@ res_nquery(res_state statp, - int anslen) /* size of answer buffer */ - { - return __libc_res_nquery(statp, name, class, type, answer, anslen, -- NULL, NULL, NULL, NULL); -+ NULL, NULL, NULL, NULL, NULL); - } - libresolv_hidden_def (res_nquery) - -@@ -335,7 +337,8 @@ __libc_res_nsearch(res_state statp, - u_char **answerp, - u_char **answerp2, - int *nanswerp2, -- int *resplen2) -+ int *resplen2, -+ int *answerp2_malloced) - { - const char *cp, * const *domain; - HEADER *hp = (HEADER *) answer; -@@ -359,7 +362,7 @@ __libc_res_nsearch(res_state statp, - if (!dots && (cp = res_hostalias(statp, name, tmp, sizeof tmp))!= NULL) - return (__libc_res_nquery(statp, cp, class, type, answer, - anslen, answerp, answerp2, -- nanswerp2, resplen2)); -+ nanswerp2, resplen2, answerp2_malloced)); - - #ifdef DEBUG - if (statp->options & RES_DEBUG) -@@ -376,7 +379,8 @@ __libc_res_nsearch(res_state statp, - if (dots >= statp->ndots || trailing_dot) { - ret = __libc_res_nquerydomain(statp, name, NULL, class, type, - answer, anslen, answerp, -- answerp2, nanswerp2, resplen2); -+ answerp2, nanswerp2, resplen2, -+ answerp2_malloced); - if (ret > 0 || trailing_dot - /* If the second response is valid then we use that. */ - || (ret == 0 && resplen2 != NULL && *resplen2 > 0)) -@@ -387,12 +391,12 @@ __libc_res_nsearch(res_state statp, - answer = *answerp; - anslen = MAXPACKET; - } -- if (answerp2 -- && (*answerp2 < answer || *answerp2 >= answer + anslen)) -+ if (answerp2 && *answerp2_malloced) - { - free (*answerp2); - *nanswerp2 = 0; - *answerp2 = NULL; -+ *answerp2_malloced = 0; - } - } - -@@ -418,7 +422,7 @@ __libc_res_nsearch(res_state statp, - class, type, - answer, anslen, answerp, - answerp2, nanswerp2, -- resplen2); -+ resplen2, answerp2_malloced); - if (ret > 0 || (ret == 0 && resplen2 != NULL - && *resplen2 > 0)) - return (ret); -@@ -427,13 +431,12 @@ __libc_res_nsearch(res_state statp, - answer = *answerp; - anslen = MAXPACKET; - } -- if (answerp2 -- && (*answerp2 < answer -- || *answerp2 >= answer + anslen)) -+ if (answerp2 && *answerp2_malloced) - { - free (*answerp2); - *nanswerp2 = 0; - *answerp2 = NULL; -+ *answerp2_malloced = 0; - } - - /* -@@ -489,7 +492,8 @@ __libc_res_nsearch(res_state statp, - if (dots && !(tried_as_is || root_on_list)) { - ret = __libc_res_nquerydomain(statp, name, NULL, class, type, - answer, anslen, answerp, -- answerp2, nanswerp2, resplen2); -+ answerp2, nanswerp2, resplen2, -+ answerp2_malloced); - if (ret > 0 || (ret == 0 && resplen2 != NULL - && *resplen2 > 0)) - return (ret); -@@ -502,11 +506,12 @@ __libc_res_nsearch(res_state statp, - * else send back meaningless H_ERRNO, that being the one from - * the last DNSRCH we did. - */ -- if (answerp2 && (*answerp2 < answer || *answerp2 >= answer + anslen)) -+ if (answerp2 && *answerp2_malloced) - { - free (*answerp2); -- *nanswerp2 = NULL; -+ *nanswerp2 = 0; - *answerp2 = NULL; -+ *answerp2_malloced = 0; - } - if (saved_herrno != -1) - RES_SET_H_ERRNO(statp, saved_herrno); -@@ -526,7 +531,7 @@ res_nsearch(res_state statp, - int anslen) /* size of answer */ - { - return __libc_res_nsearch(statp, name, class, type, answer, -- anslen, NULL, NULL, NULL, NULL); -+ anslen, NULL, NULL, NULL, NULL, NULL); - } - libresolv_hidden_def (res_nsearch) - -@@ -544,7 +549,8 @@ __libc_res_nquerydomain(res_state statp, - u_char **answerp, - u_char **answerp2, - int *nanswerp2, -- int *resplen2) -+ int *resplen2, -+ int *answerp2_malloced) - { - char nbuf[MAXDNAME]; - const char *longname = nbuf; -@@ -582,7 +588,7 @@ __libc_res_nquerydomain(res_state statp, - } - return (__libc_res_nquery(statp, longname, class, type, answer, - anslen, answerp, answerp2, nanswerp2, -- resplen2)); -+ resplen2, answerp2_malloced)); - } - - int -@@ -594,7 +600,8 @@ res_nquerydomain(res_state statp, - int anslen) /* size of answer */ - { - return __libc_res_nquerydomain(statp, name, domain, class, type, -- answer, anslen, NULL, NULL, NULL, NULL); -+ answer, anslen, NULL, NULL, NULL, NULL, -+ NULL); - } - libresolv_hidden_def (res_nquerydomain) - -Index: glibc-2.12-2-gc4ccff1/resolv/res_send.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/res_send.c -+++ glibc-2.12-2-gc4ccff1/resolv/res_send.c -@@ -203,12 +203,12 @@ evNowTime(struct timespec *res) { - static int send_vc(res_state, const u_char *, int, - const u_char *, int, - u_char **, int *, int *, int, u_char **, -- u_char **, int *, int *); -+ u_char **, int *, int *, int *); - static int send_dg(res_state, const u_char *, int, - const u_char *, int, - u_char **, int *, int *, int, - int *, int *, u_char **, -- u_char **, int *, int *); -+ u_char **, int *, int *, int *); - #ifdef DEBUG - static void Aerror(const res_state, FILE *, const char *, int, - const struct sockaddr *); -@@ -360,7 +360,7 @@ int - __libc_res_nsend(res_state statp, const u_char *buf, int buflen, - const u_char *buf2, int buflen2, - u_char *ans, int anssiz, u_char **ansp, u_char **ansp2, -- int *nansp2, int *resplen2) -+ int *nansp2, int *resplen2, int *ansp2_malloced) - { - int gotsomewhere, terrno, try, v_circuit, resplen, ns, n; - -@@ -565,7 +565,8 @@ __libc_res_nsend(res_state statp, const - try = statp->retry; - n = send_vc(statp, buf, buflen, buf2, buflen2, - &ans, &anssiz, &terrno, -- ns, ansp, ansp2, nansp2, resplen2); -+ ns, ansp, ansp2, nansp2, resplen2, -+ ansp2_malloced); - if (n < 0) - return (-1); - if (n == 0 && (buf2 == NULL || *resplen2 == 0)) -@@ -575,7 +576,7 @@ __libc_res_nsend(res_state statp, const - n = send_dg(statp, buf, buflen, buf2, buflen2, - &ans, &anssiz, &terrno, - ns, &v_circuit, &gotsomewhere, ansp, -- ansp2, nansp2, resplen2); -+ ansp2, nansp2, resplen2, ansp2_malloced); - if (n < 0) - return (-1); - if (n == 0 && (buf2 == NULL || *resplen2 == 0)) -@@ -665,7 +666,7 @@ res_nsend(res_state statp, - const u_char *buf, int buflen, u_char *ans, int anssiz) - { - return __libc_res_nsend(statp, buf, buflen, NULL, 0, ans, anssiz, -- NULL, NULL, NULL, NULL); -+ NULL, NULL, NULL, NULL, NULL); - } - libresolv_hidden_def (res_nsend) - -@@ -747,7 +748,7 @@ send_vc(res_state statp, - const u_char *buf, int buflen, const u_char *buf2, int buflen2, - u_char **ansp, int *anssizp, - int *terrno, int ns, u_char **anscp, u_char **ansp2, int *anssizp2, -- int *resplen2) -+ int *resplen2, int *ansp2_malloced) - { - const HEADER *hp = (HEADER *) buf; - const HEADER *hp2 = (HEADER *) buf2; -@@ -896,6 +897,8 @@ send_vc(res_state statp, - } - *thisanssizp = MAXPACKET; - *thisansp = newp; -+ if (thisansp == ansp2) -+ *ansp2_malloced = 1; - anhp = (HEADER *) newp; - /* A uint16_t can't be larger than MAXPACKET - thus it's safe to allocate MAXPACKET but -@@ -1128,7 +1131,7 @@ send_dg(res_state statp, - const u_char *buf, int buflen, const u_char *buf2, int buflen2, - u_char **ansp, int *anssizp, - int *terrno, int ns, int *v_circuit, int *gotsomewhere, u_char **anscp, -- u_char **ansp2, int *anssizp2, int *resplen2) -+ u_char **ansp2, int *anssizp2, int *resplen2, int *ansp2_malloced) - { - const HEADER *hp = (HEADER *) buf; - const HEADER *hp2 = (HEADER *) buf2; -@@ -1289,6 +1292,8 @@ send_dg(res_state statp, - if (newp != NULL) { - *thisanssizp = MAXPACKET; - *thisansp = newp; -+ if (thisansp == ansp2) -+ *ansp2_malloced = 1; - } - } - /* We could end up with truncation if anscp was NULL diff --git a/src/patches/glibc/glibc-rh1296031.patch b/src/patches/glibc/glibc-rh1296031.patch deleted file mode 100644 index c430abb..0000000 --- a/src/patches/glibc/glibc-rh1296031.patch +++ /dev/null @@ -1,544 +0,0 @@ -Index: glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-host.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/nss_dns/dns-host.c -+++ glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-host.c -@@ -1043,7 +1043,10 @@ gaih_getanswer_slice (const querybuf *an - int h_namelen = 0; - - if (ancount == 0) -- return NSS_STATUS_NOTFOUND; -+ { -+ *h_errnop = HOST_NOT_FOUND; -+ return NSS_STATUS_NOTFOUND; -+ } - - while (ancount-- > 0 && cp < end_of_message && had_error == 0) - { -@@ -1217,7 +1220,14 @@ gaih_getanswer_slice (const querybuf *an - /* Special case here: if the resolver sent a result but it only - contains a CNAME while we are looking for a T_A or T_AAAA record, - we fail with NOTFOUND instead of TRYAGAIN. */ -- return canon == NULL ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND; -+ if (canon != NULL) -+ { -+ *h_errnop = HOST_NOT_FOUND; -+ return NSS_STATUS_NOTFOUND; -+ } -+ -+ *h_errnop = NETDB_INTERNAL; -+ return NSS_STATUS_TRYAGAIN; - } - - -@@ -1231,11 +1241,101 @@ gaih_getanswer (const querybuf *answer1, - - enum nss_status status = NSS_STATUS_NOTFOUND; - -+ /* Combining the NSS status of two distinct queries requires some -+ compromise and attention to symmetry (A or AAAA queries can be -+ returned in any order). What follows is a breakdown of how this -+ code is expected to work and why. We discuss only SUCCESS, -+ TRYAGAIN, NOTFOUND and UNAVAIL, since they are the only returns -+ that apply (though RETURN and MERGE exist). We make a distinction -+ between TRYAGAIN (recoverable) and TRYAGAIN' (not-recoverable). -+ A recoverable TRYAGAIN is almost always due to buffer size issues -+ and returns ERANGE in errno and the caller is expected to retry -+ with a larger buffer. -+ -+ Lastly, you may be tempted to make significant changes to the -+ conditions in this code to bring about symmetry between responses. -+ Please don't change anything without due consideration for -+ expected application behaviour. Some of the synthesized responses -+ aren't very well thought out and sometimes appear to imply that -+ IPv4 responses are always answer 1, and IPv6 responses are always -+ answer 2, but that's not true (see the implemetnation of send_dg -+ and send_vc to see response can arrive in any order, particlarly -+ for UDP). However, we expect it holds roughly enough of the time -+ that this code works, but certainly needs to be fixed to make this -+ a more robust implementation. -+ -+ ---------------------------------------------- -+ | Answer 1 Status / | Synthesized | Reason | -+ | Answer 2 Status | Status | | -+ |--------------------------------------------| -+ | SUCCESS/SUCCESS | SUCCESS | [1] | -+ | SUCCESS/TRYAGAIN | TRYAGAIN | [5] | -+ | SUCCESS/TRYAGAIN' | SUCCESS | [1] | -+ | SUCCESS/NOTFOUND | SUCCESS | [1] | -+ | SUCCESS/UNAVAIL | SUCCESS | [1] | -+ | TRYAGAIN/SUCCESS | TRYAGAIN | [2] | -+ | TRYAGAIN/TRYAGAIN | TRYAGAIN | [2] | -+ | TRYAGAIN/TRYAGAIN' | TRYAGAIN | [2] | -+ | TRYAGAIN/NOTFOUND | TRYAGAIN | [2] | -+ | TRYAGAIN/UNAVAIL | TRYAGAIN | [2] | -+ | TRYAGAIN'/SUCCESS | SUCCESS | [3] | -+ | TRYAGAIN'/TRYAGAIN | TRYAGAIN | [3] | -+ | TRYAGAIN'/TRYAGAIN' | TRYAGAIN' | [3] | -+ | TRYAGAIN'/NOTFOUND | TRYAGAIN' | [3] | -+ | TRYAGAIN'/UNAVAIL | UNAVAIL | [3] | -+ | NOTFOUND/SUCCESS | SUCCESS | [3] | -+ | NOTFOUND/TRYAGAIN | TRYAGAIN | [3] | -+ | NOTFOUND/TRYAGAIN' | TRYAGAIN' | [3] | -+ | NOTFOUND/NOTFOUND | NOTFOUND | [3] | -+ | NOTFOUND/UNAVAIL | UNAVAIL | [3] | -+ | UNAVAIL/SUCCESS | UNAVAIL | [4] | -+ | UNAVAIL/TRYAGAIN | UNAVAIL | [4] | -+ | UNAVAIL/TRYAGAIN' | UNAVAIL | [4] | -+ | UNAVAIL/NOTFOUND | UNAVAIL | [4] | -+ | UNAVAIL/UNAVAIL | UNAVAIL | [4] | -+ ---------------------------------------------- -+ -+ [1] If the first response is a success we return success. -+ This ignores the state of the second answer and in fact -+ incorrectly sets errno and h_errno to that of the second -+ answer. However because the response is a success we ignore -+ *errnop and *h_errnop (though that means you touched errno on -+ success). We are being conservative here and returning the -+ likely IPv4 response in the first answer as a success. -+ -+ [2] If the first response is a recoverable TRYAGAIN we return -+ that instead of looking at the second response. The -+ expectation here is that we have failed to get an IPv4 response -+ and should retry both queries. -+ -+ [3] If the first response was not a SUCCESS and the second -+ response is not NOTFOUND (had a SUCCESS, need to TRYAGAIN, -+ or failed entirely e.g. TRYAGAIN' and UNAVAIL) then use the -+ result from the second response, otherwise the first responses -+ status is used. Again we have some odd side-effects when the -+ second response is NOTFOUND because we overwrite *errnop and -+ *h_errnop that means that a first answer of NOTFOUND might see -+ its *errnop and *h_errnop values altered. Whether it matters -+ in practice that a first response NOTFOUND has the wrong -+ *errnop and *h_errnop is undecided. -+ -+ [4] If the first response is UNAVAIL we return that instead of -+ looking at the second response. The expectation here is that -+ it will have failed similarly e.g. configuration failure. -+ -+ [5] Testing this code is complicated by the fact that truncated -+ second response buffers might be returned as SUCCESS if the -+ first answer is a SUCCESS. To fix this we add symmetry to -+ TRYAGAIN with the second response. If the second response -+ is a recoverable error we now return TRYAGIN even if the first -+ response was SUCCESS. */ -+ - if (anslen1 > 0) - status = gaih_getanswer_slice(answer1, anslen1, qname, - &pat, &buffer, &buflen, - errnop, h_errnop, ttlp, - &first); -+ - if ((status == NSS_STATUS_SUCCESS || status == NSS_STATUS_NOTFOUND - || (status == NSS_STATUS_TRYAGAIN - && (*errnop != ERANGE || *h_errnop == NO_RECOVERY))) -@@ -1245,8 +1345,15 @@ gaih_getanswer (const querybuf *answer1, - &pat, &buffer, &buflen, - errnop, h_errnop, ttlp, - &first); -+ /* Use the second response status in some cases. */ - if (status != NSS_STATUS_SUCCESS && status2 != NSS_STATUS_NOTFOUND) - status = status2; -+ /* Do not return a truncated second response (unless it was -+ unavoidable e.g. unrecoverable TRYAGAIN). */ -+ if (status == NSS_STATUS_SUCCESS -+ && (status2 == NSS_STATUS_TRYAGAIN -+ && *errnop == ERANGE && *h_errnop != NO_RECOVERY)) -+ status = NSS_STATUS_TRYAGAIN; - } - - return status; -Index: glibc-2.12-2-gc4ccff1/resolv/res_send.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/res_send.c -+++ glibc-2.12-2-gc4ccff1/resolv/res_send.c -@@ -1,3 +1,20 @@ -+/* Copyright (C) 2016 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ - /* - * Copyright (c) 1985, 1989, 1993 - * The Regents of the University of California. All rights reserved. -@@ -360,6 +377,8 @@ __libc_res_nsend(res_state statp, const - #ifdef USE_HOOKS - if (__builtin_expect (statp->qhook || statp->rhook, 0)) { - if (anssiz < MAXPACKET && ansp) { -+ /* Always allocate MAXPACKET, callers expect -+ this specific size. */ - u_char *buf = malloc (MAXPACKET); - if (buf == NULL) - return (-1); -@@ -652,6 +671,77 @@ libresolv_hidden_def (res_nsend) - - /* Private */ - -+/* The send_vc function is responsible for sending a DNS query over TCP -+ to the nameserver numbered NS from the res_state STATP i.e. -+ EXT(statp).nssocks[ns]. The function supports sending both IPv4 and -+ IPv6 queries at the same serially on the same socket. -+ -+ Please note that for TCP there is no way to disable sending both -+ queries, unlike UDP, which honours RES_SNGLKUP and RES_SNGLKUPREOP -+ and sends the queries serially and waits for the result after each -+ sent query. This implemetnation should be corrected to honour these -+ options. -+ -+ Please also note that for TCP we send both queries over the same -+ socket one after another. This technically violates best practice -+ since the server is allowed to read the first query, respond, and -+ then close the socket (to service another client). If the server -+ does this, then the remaining second query in the socket data buffer -+ will cause the server to send the client an RST which will arrive -+ asynchronously and the client's OS will likely tear down the socket -+ receive buffer resulting in a potentially short read and lost -+ response data. This will force the client to retry the query again, -+ and this process may repeat until all servers and connection resets -+ are exhausted and then the query will fail. It's not known if this -+ happens with any frequency in real DNS server implementations. This -+ implementation should be corrected to use two sockets by default for -+ parallel queries. -+ -+ The query stored in BUF of BUFLEN length is sent first followed by -+ the query stored in BUF2 of BUFLEN2 length. Queries are sent -+ serially on the same socket. -+ -+ Answers to the query are stored firstly in *ANSP up to a max of -+ *ANSSIZP bytes. If more than *ANSSIZP bytes are needed and ANSCP -+ is non-NULL (to indicate that modifying the answer buffer is allowed) -+ then malloc is used to allocate a new response buffer and ANSCP and -+ ANSP will both point to the new buffer. If more than *ANSSIZP bytes -+ are needed but ANSCP is NULL, then as much of the response as -+ possible is read into the buffer, but the results will be truncated. -+ When truncation happens because of a small answer buffer the DNS -+ packets header feild TC will bet set to 1, indicating a truncated -+ message and the rest of the socket data will be read and discarded. -+ -+ Answers to the query are stored secondly in *ANSP2 up to a max of -+ *ANSSIZP2 bytes, with the actual response length stored in -+ *RESPLEN2. If more than *ANSSIZP bytes are needed and ANSP2 -+ is non-NULL (required for a second query) then malloc is used to -+ allocate a new response buffer, *ANSSIZP2 is set to the new buffer -+ size and *ANSP2_MALLOCED is set to 1. -+ -+ The ANSP2_MALLOCED argument will eventually be removed as the -+ change in buffer pointer can be used to detect the buffer has -+ changed and that the caller should use free on the new buffer. -+ -+ Note that the answers may arrive in any order from the server and -+ therefore the first and second answer buffers may not correspond to -+ the first and second queries. -+ -+ It is not supported to call this function with a non-NULL ANSP2 -+ but a NULL ANSCP. Put another way, you can call send_vc with a -+ single unmodifiable buffer or two modifiable buffers, but no other -+ combination is supported. -+ -+ It is the caller's responsibility to free the malloc allocated -+ buffers by detecting that the pointers have changed from their -+ original values i.e. *ANSCP or *ANSP2 has changed. -+ -+ If errors are encountered then *TERRNO is set to an appropriate -+ errno value and a zero result is returned for a recoverable error, -+ and a less-than zero result is returned for a non-recoverable error. -+ -+ If no errors are encountered then *TERRNO is left unmodified and -+ a the length of the first response in bytes is returned. */ - static int - send_vc(res_state statp, - const u_char *buf, int buflen, const u_char *buf2, int buflen2, -@@ -661,11 +751,7 @@ send_vc(res_state statp, - { - const HEADER *hp = (HEADER *) buf; - const HEADER *hp2 = (HEADER *) buf2; -- u_char *ans = *ansp; -- int orig_anssizp = *anssizp; -- // XXX REMOVE -- // int anssiz = *anssizp; -- HEADER *anhp = (HEADER *) ans; -+ HEADER *anhp = (HEADER *) *ansp; - struct sockaddr_in6 *nsap = EXT(statp).nsaddrs[ns]; - int truncating, connreset, resplen, n; - struct iovec iov[4]; -@@ -741,6 +827,8 @@ send_vc(res_state statp, - * Receive length & response - */ - int recvresp1 = 0; -+ /* Skip the second response if there is no second query. -+ To do that we mark the second response as received. */ - int recvresp2 = buf2 == NULL; - uint16_t rlen16; - read_len: -@@ -777,33 +865,14 @@ send_vc(res_state statp, - u_char **thisansp; - int *thisresplenp; - if ((recvresp1 | recvresp2) == 0 || buf2 == NULL) { -+ /* We have not received any responses -+ yet or we only have one response to -+ receive. */ - thisanssizp = anssizp; - thisansp = anscp ?: ansp; - assert (anscp != NULL || ansp2 == NULL); - thisresplenp = &resplen; - } else { -- if (*anssizp != MAXPACKET) { -- /* No buffer allocated for the first -- reply. We can try to use the rest -- of the user-provided buffer. */ --#ifdef _STRING_ARCH_unaligned -- *anssizp2 = orig_anssizp - resplen; -- *ansp2 = *ansp + resplen; --#else -- int aligned_resplen -- = ((resplen + __alignof__ (HEADER) - 1) -- & ~(__alignof__ (HEADER) - 1)); -- *anssizp2 = orig_anssizp - aligned_resplen; -- *ansp2 = *ansp + aligned_resplen; --#endif -- } else { -- /* The first reply did not fit into the -- user-provided buffer. Maybe the second -- answer will. */ -- *anssizp2 = orig_anssizp; -- *ansp2 = *ansp; -- } -- - thisanssizp = anssizp2; - thisansp = ansp2; - thisresplenp = resplen2; -@@ -811,10 +880,14 @@ send_vc(res_state statp, - anhp = (HEADER *) *thisansp; - - *thisresplenp = rlen; -- if (rlen > *thisanssizp) { -- /* Yes, we test ANSCP here. If we have two buffers -- both will be allocatable. */ -- if (__builtin_expect (anscp != NULL, 1)) { -+ /* Is the answer buffer too small? */ -+ if (*thisanssizp < rlen) { -+ /* If the current buffer is non-NULL and it's not -+ pointing at the static user-supplied buffer then -+ we can reallocate it. */ -+ if (thisansp != NULL && thisansp != ansp) { -+ /* Always allocate MAXPACKET, callers expect -+ this specific size. */ - u_char *newp = malloc (MAXPACKET); - if (newp == NULL) { - *terrno = ENOMEM; -@@ -824,6 +897,9 @@ send_vc(res_state statp, - *thisanssizp = MAXPACKET; - *thisansp = newp; - anhp = (HEADER *) newp; -+ /* A uint16_t can't be larger than MAXPACKET -+ thus it's safe to allocate MAXPACKET but -+ read RLEN bytes instead. */ - len = rlen; - } else { - Dprint(statp->options & RES_DEBUG, -@@ -987,6 +1063,66 @@ reopen (res_state statp, int *terrno, in - return 1; - } - -+/* The send_dg function is responsible for sending a DNS query over UDP -+ to the nameserver numbered NS from the res_state STATP i.e. -+ EXT(statp).nssocks[ns]. The function supports IPv4 and IPv6 queries -+ along with the ability to send the query in parallel for both stacks -+ (default) or serially (RES_SINGLKUP). It also supports serial lookup -+ with a close and reopen of the socket used to talk to the server -+ (RES_SNGLKUPREOP) to work around broken name servers. -+ -+ The query stored in BUF of BUFLEN length is sent first followed by -+ the query stored in BUF2 of BUFLEN2 length. Queries are sent -+ in parallel (default) or serially (RES_SINGLKUP or RES_SNGLKUPREOP). -+ -+ Answers to the query are stored firstly in *ANSP up to a max of -+ *ANSSIZP bytes. If more than *ANSSIZP bytes are needed and ANSCP -+ is non-NULL (to indicate that modifying the answer buffer is allowed) -+ then malloc is used to allocate a new response buffer and ANSCP and -+ ANSP will both point to the new buffer. If more than *ANSSIZP bytes -+ are needed but ANSCP is NULL, then as much of the response as -+ possible is read into the buffer, but the results will be truncated. -+ When truncation happens because of a small answer buffer the DNS -+ packets header feild TC will bet set to 1, indicating a truncated -+ message, while the rest of the UDP packet is discarded. -+ -+ Answers to the query are stored secondly in *ANSP2 up to a max of -+ *ANSSIZP2 bytes, with the actual response length stored in -+ *RESPLEN2. If more than *ANSSIZP bytes are needed and ANSP2 -+ is non-NULL (required for a second query) then malloc is used to -+ allocate a new response buffer, *ANSSIZP2 is set to the new buffer -+ size and *ANSP2_MALLOCED is set to 1. -+ -+ The ANSP2_MALLOCED argument will eventually be removed as the -+ change in buffer pointer can be used to detect the buffer has -+ changed and that the caller should use free on the new buffer. -+ -+ Note that the answers may arrive in any order from the server and -+ therefore the first and second answer buffers may not correspond to -+ the first and second queries. -+ -+ It is not supported to call this function with a non-NULL ANSP2 -+ but a NULL ANSCP. Put another way, you can call send_vc with a -+ single unmodifiable buffer or two modifiable buffers, but no other -+ combination is supported. -+ -+ It is the caller's responsibility to free the malloc allocated -+ buffers by detecting that the pointers have changed from their -+ original values i.e. *ANSCP or *ANSP2 has changed. -+ -+ If an answer is truncated because of UDP datagram DNS limits then -+ *V_CIRCUIT is set to 1 and the return value non-zero to indicate to -+ the caller to retry with TCP. The value *GOTSOMEWHERE is set to 1 -+ if any progress was made reading a response from the nameserver and -+ is used by the caller to distinguish between ECONNREFUSED and -+ ETIMEDOUT (the latter if *GOTSOMEWHERE is 1). -+ -+ If errors are encountered then *TERRNO is set to an appropriate -+ errno value and a zero result is returned for a recoverable error, -+ and a less-than zero result is returned for a non-recoverable error. -+ -+ If no errors are encountered then *TERRNO is left unmodified and -+ a the length of the first response in bytes is returned. */ - static int - send_dg(res_state statp, - const u_char *buf, int buflen, const u_char *buf2, int buflen2, -@@ -996,8 +1132,6 @@ send_dg(res_state statp, - { - const HEADER *hp = (HEADER *) buf; - const HEADER *hp2 = (HEADER *) buf2; -- u_char *ans = *ansp; -- int orig_anssizp = *anssizp; - struct timespec now, timeout, finish; - struct pollfd pfd[1]; - int ptimeout; -@@ -1029,6 +1163,8 @@ send_dg(res_state statp, - int need_recompute = 0; - int nwritten = 0; - int recvresp1 = 0; -+ /* Skip the second response if there is no second query. -+ To do that we mark the second response as received. */ - int recvresp2 = buf2 == NULL; - pfd[0].fd = EXT(statp).nssocks[ns]; - pfd[0].events = POLLOUT; -@@ -1125,50 +1261,52 @@ send_dg(res_state statp, - int *thisresplenp; - - if ((recvresp1 | recvresp2) == 0 || buf2 == NULL) { -+ /* We have not received any responses -+ yet or we only have one response to -+ receive. */ - thisanssizp = anssizp; - thisansp = anscp ?: ansp; - assert (anscp != NULL || ansp2 == NULL); - thisresplenp = &resplen; - } else { -- if (*anssizp != MAXPACKET) { -- /* No buffer allocated for the first -- reply. We can try to use the rest -- of the user-provided buffer. */ --#ifdef _STRING_ARCH_unaligned -- *anssizp2 = orig_anssizp - resplen; -- *ansp2 = *ansp + resplen; --#else -- int aligned_resplen -- = ((resplen + __alignof__ (HEADER) - 1) -- & ~(__alignof__ (HEADER) - 1)); -- *anssizp2 = orig_anssizp - aligned_resplen; -- *ansp2 = *ansp + aligned_resplen; --#endif -- } else { -- /* The first reply did not fit into the -- user-provided buffer. Maybe the second -- answer will. */ -- *anssizp2 = orig_anssizp; -- *ansp2 = *ansp; -- } -- - thisanssizp = anssizp2; - thisansp = ansp2; - thisresplenp = resplen2; - } - - if (*thisanssizp < MAXPACKET -- /* Yes, we test ANSCP here. If we have two buffers -- both will be allocatable. */ -- && anscp -+ /* If the current buffer is non-NULL and it's not -+ pointing at the static user-supplied buffer then -+ we can reallocate it. */ -+ && (thisansp != NULL && thisansp != ansp) -+ /* Is the size too small? */ - && (ioctl (pfd[0].fd, FIONREAD, thisresplenp) < 0 -- || *thisanssizp < *thisresplenp)) { -+ || *thisanssizp < *thisresplenp) -+ ) { -+ /* Always allocate MAXPACKET, callers expect -+ this specific size. */ - u_char *newp = malloc (MAXPACKET); - if (newp != NULL) { -- *anssizp = MAXPACKET; -- *thisansp = ans = newp; -+ *thisanssizp = MAXPACKET; -+ *thisansp = newp; - } - } -+ /* We could end up with truncation if anscp was NULL -+ (not allowed to change caller's buffer) and the -+ response buffer size is too small. This isn't a -+ reliable way to detect truncation because the ioctl -+ may be an inaccurate report of the UDP message size. -+ Therefore we use this only to issue debug output. -+ To do truncation accurately with UDP we need -+ MSG_TRUNC which is only available on Linux. We -+ can abstract out the Linux-specific feature in the -+ future to detect truncation. */ -+ if (__glibc_unlikely (*thisanssizp < *thisresplenp)) { -+ Dprint(statp->options & RES_DEBUG, -+ (stdout, ";; response may be truncated (UDP)\n") -+ ); -+ } -+ - HEADER *anhp = (HEADER *) *thisansp; - socklen_t fromlen = sizeof(struct sockaddr_in6); - assert (sizeof(from) <= fromlen); -Index: glibc-2.12-2-gc4ccff1/resolv/res_query.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/res_query.c -+++ glibc-2.12-2-gc4ccff1/resolv/res_query.c -@@ -391,6 +391,7 @@ __libc_res_nsearch(res_state statp, - && (*answerp2 < answer || *answerp2 >= answer + anslen)) - { - free (*answerp2); -+ *nanswerp2 = 0; - *answerp2 = NULL; - } - } -@@ -431,6 +432,7 @@ __libc_res_nsearch(res_state statp, - || *answerp2 >= answer + anslen)) - { - free (*answerp2); -+ *nanswerp2 = 0; - *answerp2 = NULL; - } - -@@ -503,6 +505,7 @@ __libc_res_nsearch(res_state statp, - if (answerp2 && (*answerp2 < answer || *answerp2 >= answer + anslen)) - { - free (*answerp2); -+ *nanswerp2 = NULL; - *answerp2 = NULL; - } - if (saved_herrno != -1) diff --git a/src/patches/glibc/glibc-rh1299319-0.patch b/src/patches/glibc/glibc-rh1299319-0.patch deleted file mode 100644 index f27eccd..0000000 --- a/src/patches/glibc/glibc-rh1299319-0.patch +++ /dev/null @@ -1,61 +0,0 @@ -commit 2c1094bd700e63a8d7f547b3f5495bedb55c0a08 -Author: Ulrich Drepper drepper@gmail.com -Date: Thu Dec 22 22:43:39 2011 -0500 - - Create internal threads with sufficient stack size - -Index: glibc-2.12-2-gc4ccff1/nptl/Versions -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/Versions -+++ glibc-2.12-2-gc4ccff1/nptl/Versions -@@ -255,6 +255,6 @@ libpthread { - GLIBC_PRIVATE { - __pthread_initialize_minimal; - __pthread_clock_gettime; __pthread_clock_settime; -- __pthread_unwind; -+ __pthread_unwind; __pthread_get_minstack; - } - } -Index: glibc-2.12-2-gc4ccff1/nptl/nptl-init.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/nptl-init.c -+++ glibc-2.12-2-gc4ccff1/nptl/nptl-init.c -@@ -507,3 +507,13 @@ __pthread_initialize_minimal_internal (i - } - strong_alias (__pthread_initialize_minimal_internal, - __pthread_initialize_minimal) -+ -+ -+size_t -+__pthread_get_minstack (const pthread_attr_t *attr) -+{ -+ struct pthread_attr *iattr = (struct pthread_attr *) attr; -+ -+ return (GLRO(dl_pagesize) + __static_tls_size + PTHREAD_STACK_MIN -+ + iattr->guardsize); -+} -Index: glibc-2.12-2-gc4ccff1/nptl/pthreadP.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/pthreadP.h -+++ glibc-2.12-2-gc4ccff1/nptl/pthreadP.h -@@ -397,6 +397,7 @@ weak_function; - - extern void __pthread_init_static_tls (struct link_map *) attribute_hidden; - -+extern size_t __pthread_get_minstack (const pthread_attr_t *attr); - - /* Namespace save aliases. */ - extern int __pthread_getschedparam (pthread_t thread_id, int *policy, -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/timer_routines.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/timer_routines.c -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/timer_routines.c -@@ -165,7 +165,7 @@ __start_helper_thread (void) - and should go away automatically when canceled. */ - pthread_attr_t attr; - (void) pthread_attr_init (&attr); -- (void) pthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN); -+ (void) pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr)); - - /* Block all signals in the helper thread but SIGSETXID. To do this - thoroughly we temporarily have to block all signals here. The diff --git a/src/patches/glibc/glibc-rh1299319-1.patch b/src/patches/glibc/glibc-rh1299319-1.patch deleted file mode 100644 index e6288a2..0000000 --- a/src/patches/glibc/glibc-rh1299319-1.patch +++ /dev/null @@ -1,19 +0,0 @@ -commit 232872379ee82cd040a52a48cbbae65a249b5765 -Author: Adhemerval Zanella azanella@linux.vnet.ibm.com -Date: Sun Jan 8 19:56:52 2012 -0500 - - Use __pthread_get_minstack for AIO helper thread - -diff --git a/nptl/sysdeps/unix/sysv/linux/aio_misc.h b/nptl/sysdeps/unix/sysv/linux/aio_misc.h -index 406d96e..8011c3e 100644 ---- a/nptl/sysdeps/unix/sysv/linux/aio_misc.h -+++ b/nptl/sysdeps/unix/sysv/linux/aio_misc.h -@@ -47,7 +47,7 @@ __aio_create_helper_thread (pthread_t *threadp, void *(*tf) (void *), - pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED); - - /* The helper thread needs only very little resources. */ -- (void) pthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN); -+ (void) pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr)); - - /* Block all signals in the helper thread. To do this thoroughly we - temporarily have to block all signals here. */ diff --git a/src/patches/glibc/glibc-rh552960.patch b/src/patches/glibc/glibc-rh552960.patch deleted file mode 100644 index 41eccb7..0000000 --- a/src/patches/glibc/glibc-rh552960.patch +++ /dev/null @@ -1,1213 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/nptl/Makefile glibc-2.12-2-gc4ccff1.fixed/nptl/Makefile ---- glibc-2.12-2-gc4ccff1/nptl/Makefile 2013-07-09 10:18:22.267421846 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/Makefile 2013-07-09 10:16:22.043427519 +0530 -@@ -207,7 +207,8 @@ tests = tst-typesizes \ - tst-cond1 tst-cond2 tst-cond3 tst-cond4 tst-cond5 tst-cond6 tst-cond7 \ - tst-cond8 tst-cond9 tst-cond10 tst-cond11 tst-cond12 tst-cond13 \ - tst-cond14 tst-cond15 tst-cond16 tst-cond17 tst-cond18 tst-cond19 \ -- tst-cond20 tst-cond21 tst-cond22 tst-cond23 \ -+ tst-cond20 tst-cond21 tst-cond22 tst-cond23 tst-cond24 tst-cond25 \ -+ tst-cond-except \ - tst-robust1 tst-robust2 tst-robust3 tst-robust4 tst-robust5 \ - tst-robust6 tst-robust7 tst-robust8 tst-robust9 \ - tst-robustpi1 tst-robustpi2 tst-robustpi3 tst-robustpi4 tst-robustpi5 \ -@@ -275,6 +276,8 @@ gen-as-const-headers = pthread-errnos.sy - - LDFLAGS-pthread.so = -Wl,--enable-new-dtags,-z,nodelete,-z,initfirst - -+LDFLAGS-tst-cond24 = -lrt -+LDFLAGS-tst-cond25 = -lrt - - include ../Makeconfig - -diff -pruN glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S ---- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S 2013-07-09 10:16:22.044427519 +0530 -@@ -203,9 +203,11 @@ __pthread_cond_timedwait: - 42: leal (%ebp), %esi - movl 28(%esp), %edx - addl $cond_futex, %ebx -+.Ladd_cond_futex_pi: - movl $SYS_futex, %eax - ENTER_KERNEL - subl $cond_futex, %ebx -+.Lsub_cond_futex_pi: - movl %eax, %esi - /* Set the pi-requeued flag only if the kernel has returned 0. The - kernel does not hold the mutex on ETIMEDOUT or any other error. */ -@@ -213,8 +215,23 @@ __pthread_cond_timedwait: - sete 24(%esp) - je 41f - -- /* Normal and PI futexes dont mix. Use normal futex functions only -- if the kernel does not support the PI futex functions. */ -+ /* When a futex syscall with FUTEX_WAIT_REQUEUE_PI returns -+ successfully, it has already locked the mutex for us and the -+ pi_flag (24(%esp)) is set to denote that fact. However, if another -+ thread changed the futex value before we entered the wait, the -+ syscall may return an EAGAIN and the mutex is not locked. We go -+ ahead with a success anyway since later we look at the pi_flag to -+ decide if we got the mutex or not. The sequence numbers then make -+ sure that only one of the threads actually wake up. We retry using -+ normal FUTEX_WAIT only if the kernel returned ENOSYS, since normal -+ and PI futexes don't mix. -+ -+ Note that we don't check for EAGAIN specifically; we assume that the -+ only other error the futex function could return is EAGAIN (barring -+ the ETIMEOUT of course, for the timeout case in futex) since -+ anything else would mean an error in our function. It is too -+ expensive to do that check for every call (which is quite common in -+ case of a large number of threads), so it has been skipped. */ - cmpl $-ENOSYS, %eax - jne 41f - xorl %ecx, %ecx -@@ -274,9 +291,24 @@ __pthread_cond_timedwait: - jne 9f - - 15: cmpl $-ETIMEDOUT, %esi -- jne 8b -+ je 28f - -- addl $1, wakeup_seq(%ebx) -+ /* We need to go back to futex_wait. If we're using requeue_pi, then -+ release the mutex we had acquired and go back. */ -+ movl 24(%esp), %edx -+ test %edx, %edx -+ jz 8b -+ -+ /* Adjust the mutex values first and then unlock it. The unlock -+ should always succeed or else the kernel did not lock the mutex -+ correctly. */ -+ movl dep_mutex(%ebx), %eax -+ call __pthread_mutex_cond_lock_adjust -+ xorl %edx, %edx -+ call __pthread_mutex_unlock_usercnt -+ jmp 8b -+ -+28: addl $1, wakeup_seq(%ebx) - adcl $0, wakeup_seq+4(%ebx) - addl $1, cond_futex(%ebx) - movl $ETIMEDOUT, %esi -@@ -644,10 +676,27 @@ __condvar_tw_cleanup: - movl $0x7fffffff, %edx - ENTER_KERNEL - -+ /* Lock the mutex only if we don't own it already. This only happens -+ in case of PI mutexes, if we got cancelled after a successful -+ return of the futex syscall and before disabling async -+ cancellation. */ - 5: movl 24+FRAME_SIZE(%esp), %eax -- call __pthread_mutex_cond_lock -+ movl MUTEX_KIND(%eax), %ebx -+ andl $(ROBUST_BIT|PI_BIT), %ebx -+ cmpl $PI_BIT, %ebx -+ jne 8f -+ -+ movl (%eax), %ebx -+ andl $TID_MASK, %ebx -+ cmpl %ebx, %gs:TID -+ jne 8f -+ /* We managed to get the lock. Fix it up before returning. */ -+ call __pthread_mutex_cond_lock_adjust -+ jmp 9f -+ -+8: call __pthread_mutex_cond_lock - -- movl %esi, (%esp) -+9: movl %esi, (%esp) - .LcallUR: - call _Unwind_Resume - hlt -@@ -665,7 +714,15 @@ __condvar_tw_cleanup: - .uleb128 .Lcstend-.Lcstbegin - .Lcstbegin: - .long .LcleanupSTART-.LSTARTCODE -- .long .Ladd_cond_futex-.LcleanupSTART -+ .long .Ladd_cond_futex_pi-.LcleanupSTART -+ .long __condvar_tw_cleanup-.LSTARTCODE -+ .uleb128 0 -+ .long .Ladd_cond_futex_pi-.LSTARTCODE -+ .long .Lsub_cond_futex_pi-.Ladd_cond_futex_pi -+ .long __condvar_tw_cleanup2-.LSTARTCODE -+ .uleb128 0 -+ .long .Lsub_cond_futex_pi-.LSTARTCODE -+ .long .Ladd_cond_futex-.Lsub_cond_futex_pi - .long __condvar_tw_cleanup-.LSTARTCODE - .uleb128 0 - .long .Ladd_cond_futex-.LSTARTCODE -diff -pruN glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S ---- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2013-07-09 10:16:22.046427519 +0530 -@@ -138,17 +138,33 @@ __pthread_cond_wait: - movl %ebp, %edx - xorl %esi, %esi - addl $cond_futex, %ebx -+.Ladd_cond_futex_pi: - movl $SYS_futex, %eax - ENTER_KERNEL - subl $cond_futex, %ebx -+.Lsub_cond_futex_pi: - /* Set the pi-requeued flag only if the kernel has returned 0. The - kernel does not hold the mutex on error. */ - cmpl $0, %eax - sete 16(%esp) - je 19f - -- /* Normal and PI futexes dont mix. Use normal futex functions only -- if the kernel does not support the PI futex functions. */ -+ /* When a futex syscall with FUTEX_WAIT_REQUEUE_PI returns -+ successfully, it has already locked the mutex for us and the -+ pi_flag (16(%esp)) is set to denote that fact. However, if another -+ thread changed the futex value before we entered the wait, the -+ syscall may return an EAGAIN and the mutex is not locked. We go -+ ahead with a success anyway since later we look at the pi_flag to -+ decide if we got the mutex or not. The sequence numbers then make -+ sure that only one of the threads actually wake up. We retry using -+ normal FUTEX_WAIT only if the kernel returned ENOSYS, since normal -+ and PI futexes don't mix. -+ -+ Note that we don't check for EAGAIN specifically; we assume that the -+ only other error the futex function could return is EAGAIN since -+ anything else would mean an error in our function. It is too -+ expensive to do that check for every call (which is quite common in -+ case of a large number of threads), so it has been skipped. */ - cmpl $-ENOSYS, %eax - jne 19f - xorl %ecx, %ecx -@@ -198,12 +214,12 @@ __pthread_cond_wait: - cmpl 8(%esp), %edx - jne 7f - cmpl 4(%esp), %edi -- je 8b -+ je 22f - - 7: cmpl %ecx, %edx - jne 9f - cmp %eax, %edi -- je 8b -+ je 22f - - 9: addl $1, woken_seq(%ebx) - adcl $0, woken_seq+4(%ebx) -@@ -279,6 +295,22 @@ __pthread_cond_wait: - jmp 20b - - cfi_adjust_cfa_offset(-FRAME_SIZE); -+ -+ /* We need to go back to futex_wait. If we're using requeue_pi, then -+ release the mutex we had acquired and go back. */ -+22: movl 16(%esp), %edx -+ test %edx, %edx -+ jz 8b -+ -+ /* Adjust the mutex values first and then unlock it. The unlock -+ should always succeed or else the kernel did not lock the mutex -+ correctly. */ -+ movl dep_mutex(%ebx), %eax -+ call __pthread_mutex_cond_lock_adjust -+ xorl %edx, %edx -+ call __pthread_mutex_unlock_usercnt -+ jmp 8b -+ - /* Initial locking failed. */ - 1: - #if cond_lock == 0 -@@ -391,6 +423,7 @@ __pthread_cond_wait: - #endif - call __lll_unlock_wake - jmp 11b -+ - .size __pthread_cond_wait, .-__pthread_cond_wait - versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait, - GLIBC_2_3_2) -@@ -531,10 +564,27 @@ __condvar_w_cleanup: - movl $0x7fffffff, %edx - ENTER_KERNEL - -+ /* Lock the mutex only if we don't own it already. This only happens -+ in case of PI mutexes, if we got cancelled after a successful -+ return of the futex syscall and before disabling async -+ cancellation. */ - 5: movl 24+FRAME_SIZE(%esp), %eax -- call __pthread_mutex_cond_lock -+ movl MUTEX_KIND(%eax), %ebx -+ andl $(ROBUST_BIT|PI_BIT), %ebx -+ cmpl $PI_BIT, %ebx -+ jne 8f -+ -+ movl (%eax), %ebx -+ andl $TID_MASK, %ebx -+ cmpl %ebx, %gs:TID -+ jne 8f -+ /* We managed to get the lock. Fix it up before returning. */ -+ call __pthread_mutex_cond_lock_adjust -+ jmp 9f - -- movl %esi, (%esp) -+8: call __pthread_mutex_cond_lock -+ -+9: movl %esi, (%esp) - .LcallUR: - call _Unwind_Resume - hlt -@@ -552,7 +602,15 @@ __condvar_w_cleanup: - .uleb128 .Lcstend-.Lcstbegin - .Lcstbegin: - .long .LcleanupSTART-.LSTARTCODE -- .long .Ladd_cond_futex-.LcleanupSTART -+ .long .Ladd_cond_futex_pi-.LcleanupSTART -+ .long __condvar_w_cleanup-.LSTARTCODE -+ .uleb128 0 -+ .long .Ladd_cond_futex_pi-.LSTARTCODE -+ .long .Lsub_cond_futex_pi-.Ladd_cond_futex_pi -+ .long __condvar_w_cleanup2-.LSTARTCODE -+ .uleb128 0 -+ .long .Lsub_cond_futex_pi-.LSTARTCODE -+ .long .Ladd_cond_futex-.Lsub_cond_futex_pi - .long __condvar_w_cleanup-.LSTARTCODE - .uleb128 0 - .long .Ladd_cond_futex-.LSTARTCODE -diff -pruN glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/pthread-pi-defines.sym glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/pthread-pi-defines.sym ---- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/pthread-pi-defines.sym 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/pthread-pi-defines.sym 2013-07-09 10:16:22.047427519 +0530 -@@ -6,3 +6,4 @@ MUTEX_KIND offsetof (pthread_mutex_t, __ - ROBUST_BIT PTHREAD_MUTEX_ROBUST_NORMAL_NP - PI_BIT PTHREAD_MUTEX_PRIO_INHERIT_NP - PS_BIT PTHREAD_MUTEX_PSHARED_BIT -+TID_MASK FUTEX_TID_MASK -diff -pruN glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S ---- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S 2013-07-09 10:18:22.506421835 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S 2013-07-09 10:16:22.048427519 +0530 -@@ -104,6 +104,8 @@ __pthread_cond_timedwait: - movq %rsi, dep_mutex(%rdi) - - 22: -+ xorb %r15b, %r15b -+ - #ifndef __ASSUME_FUTEX_CLOCK_REALTIME - # ifdef PIC - cmpl $0, __have_futex_clock_realtime(%rip) -@@ -189,18 +191,39 @@ __pthread_cond_timedwait: - movl $SYS_futex, %eax - syscall - -- movl $1, %r15d -+ cmpl $0, %eax -+ sete %r15b -+ - #ifdef __ASSUME_REQUEUE_PI - jmp 62f - #else -- cmpq $-4095, %rax -- jnae 62f -+ je 62f -+ -+ /* When a futex syscall with FUTEX_WAIT_REQUEUE_PI returns -+ successfully, it has already locked the mutex for us and the -+ pi_flag (%r15b) is set to denote that fact. However, if another -+ thread changed the futex value before we entered the wait, the -+ syscall may return an EAGAIN and the mutex is not locked. We go -+ ahead with a success anyway since later we look at the pi_flag to -+ decide if we got the mutex or not. The sequence numbers then make -+ sure that only one of the threads actually wake up. We retry using -+ normal FUTEX_WAIT only if the kernel returned ENOSYS, since normal -+ and PI futexes don't mix. -+ -+ Note that we don't check for EAGAIN specifically; we assume that the -+ only other error the futex function could return is EAGAIN (barring -+ the ETIMEOUT of course, for the timeout case in futex) since -+ anything else would mean an error in our function. It is too -+ expensive to do that check for every call (which is quite common in -+ case of a large number of threads), so it has been skipped. */ -+ cmpl $-ENOSYS, %eax -+ jne 62f - - subq $cond_futex, %rdi - #endif - - 61: movl $(FUTEX_WAIT_BITSET|FUTEX_PRIVATE_FLAG), %esi --60: xorl %r15d, %r15d -+60: xorb %r15b, %r15b - xorl %eax, %eax - /* The following only works like this because we only support - two clocks, represented using a single bit. */ -@@ -247,7 +270,23 @@ __pthread_cond_timedwait: - ja 39f - - 45: cmpq $-ETIMEDOUT, %r14 -- jne 38b -+ je 99f -+ -+ /* We need to go back to futex_wait. If we're using requeue_pi, then -+ release the mutex we had acquired and go back. */ -+ test %r15b, %r15b -+ jz 38b -+ -+ /* Adjust the mutex values first and then unlock it. The unlock -+ should always succeed or else the kernel did not lock the -+ mutex correctly. */ -+ movq %r8, %rdi -+ callq __pthread_mutex_cond_lock_adjust -+ xorl %esi, %esi -+ callq __pthread_mutex_unlock_usercnt -+ /* Reload cond_var. */ -+ movq 8(%rsp), %rdi -+ jmp 38b - - 99: incq wakeup_seq(%rdi) - incl cond_futex(%rdi) -@@ -297,7 +336,7 @@ __pthread_cond_timedwait: - /* If requeue_pi is used the kernel performs the locking of the - mutex. */ - 41: movq 16(%rsp), %rdi -- testl %r15d, %r15d -+ testb %r15b, %r15b - jnz 64f - - callq __pthread_mutex_cond_lock -@@ -405,8 +444,6 @@ __pthread_cond_timedwait: - - #ifndef __ASSUME_FUTEX_CLOCK_REALTIME - .Lreltmo: -- xorl %r15d, %r15d -- - /* Get internal lock. */ - movl $1, %esi - xorl %eax, %eax -@@ -765,10 +802,27 @@ __condvar_cleanup2: - movl $SYS_futex, %eax - syscall - -+ /* Lock the mutex only if we don't own it already. This only happens -+ in case of PI mutexes, if we got cancelled after a successful -+ return of the futex syscall and before disabling async -+ cancellation. */ - 5: movq 16(%rsp), %rdi -- callq __pthread_mutex_cond_lock -+ movl MUTEX_KIND(%rdi), %eax -+ andl $(ROBUST_BIT|PI_BIT), %eax -+ cmpl $PI_BIT, %eax -+ jne 7f -+ -+ movl (%rdi), %eax -+ andl $TID_MASK, %eax -+ cmpl %eax, %fs:TID -+ jne 7f -+ /* We managed to get the lock. Fix it up before returning. */ -+ callq __pthread_mutex_cond_lock_adjust -+ jmp 8f -+ -+7: callq __pthread_mutex_cond_lock - -- movq 24(%rsp), %rdi -+8: movq 24(%rsp), %rdi - movq FRAME_SIZE(%rsp), %r15 - movq FRAME_SIZE+8(%rsp), %r14 - movq FRAME_SIZE+16(%rsp), %r13 -diff -pruN glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S ---- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2013-07-09 10:18:22.507421834 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2013-07-09 10:16:22.048427519 +0530 -@@ -23,6 +23,7 @@ - #include <lowlevelcond.h> - #include <tcb-offsets.h> - #include <pthread-pi-defines.h> -+#include <pthread-errnos.h> - - #include <kernel-features.h> - -@@ -137,12 +138,32 @@ __pthread_cond_wait: - movl $SYS_futex, %eax - syscall - -- movl $1, %r8d -+ cmpl $0, %eax -+ sete %r8b -+ - #ifdef __ASSUME_REQUEUE_PI - jmp 62f - #else -- cmpq $-4095, %rax -- jnae 62f -+ je 62f -+ -+ /* When a futex syscall with FUTEX_WAIT_REQUEUE_PI returns -+ successfully, it has already locked the mutex for us and the -+ pi_flag (%r8b) is set to denote that fact. However, if another -+ thread changed the futex value before we entered the wait, the -+ syscall may return an EAGAIN and the mutex is not locked. We go -+ ahead with a success anyway since later we look at the pi_flag to -+ decide if we got the mutex or not. The sequence numbers then make -+ sure that only one of the threads actually wake up. We retry using -+ normal FUTEX_WAIT only if the kernel returned ENOSYS, since normal -+ and PI futexes don't mix. -+ -+ Note that we don't check for EAGAIN specifically; we assume that the -+ only other error the futex function could return is EAGAIN since -+ anything else would mean an error in our function. It is too -+ expensive to do that check for every call (which is quite common in -+ case of a large number of threads), so it has been skipped. */ -+ cmpl $-ENOSYS, %eax -+ jne 62f - - # ifndef __ASSUME_PRIVATE_FUTEX - movl $FUTEX_WAIT, %esi -@@ -155,7 +176,7 @@ __pthread_cond_wait: - #else - orl %fs:PRIVATE_FUTEX, %esi - #endif --60: xorl %r8d, %r8d -+60: xorb %r8b, %r8b - movl $SYS_futex, %eax - syscall - -@@ -185,10 +206,10 @@ __pthread_cond_wait: - jne 16f - - cmpq 24(%rsp), %r9 -- jbe 8b -+ jbe 19f - - cmpq %rax, %r9 -- jna 8b -+ jna 19f - - incq woken_seq(%rdi) - -@@ -230,7 +251,7 @@ __pthread_cond_wait: - /* If requeue_pi is used the kernel performs the locking of the - mutex. */ - 11: movq 16(%rsp), %rdi -- testl %r8d, %r8d -+ testb %r8b, %r8b - jnz 18f - - callq __pthread_mutex_cond_lock -@@ -247,6 +268,23 @@ __pthread_cond_wait: - xorl %eax, %eax - jmp 14b - -+ /* We need to go back to futex_wait. If we're using requeue_pi, then -+ release the mutex we had acquired and go back. */ -+19: testb %r8b, %r8b -+ jz 8b -+ -+ /* Adjust the mutex values first and then unlock it. The unlock -+ should always succeed or else the kernel did not lock the mutex -+ correctly. */ -+ movq 16(%rsp), %rdi -+ callq __pthread_mutex_cond_lock_adjust -+ movq %rdi, %r8 -+ xorl %esi, %esi -+ callq __pthread_mutex_unlock_usercnt -+ /* Reload cond_var. */ -+ movq 8(%rsp), %rdi -+ jmp 8b -+ - /* Initial locking failed. */ - 1: - #if cond_lock != 0 -@@ -324,6 +362,7 @@ __pthread_cond_wait: - - 13: movq %r10, %rax - jmp 14b -+ - .size __pthread_cond_wait, .-__pthread_cond_wait - versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait, - GLIBC_2_3_2) -@@ -454,10 +493,28 @@ __condvar_cleanup1: - movl $SYS_futex, %eax - syscall - -+ /* Lock the mutex only if we don't own it already. This only happens -+ in case of PI mutexes, if we got cancelled after a successful -+ return of the futex syscall and before disabling async -+ cancellation. */ - 5: movq 16(%rsp), %rdi -- callq __pthread_mutex_cond_lock -+ movl MUTEX_KIND(%rdi), %eax -+ andl $(ROBUST_BIT|PI_BIT), %eax -+ cmpl $PI_BIT, %eax -+ jne 7f -+ -+ movl (%rdi), %eax -+ andl $TID_MASK, %eax -+ cmpl %eax, %fs:TID -+ jne 7f -+ /* We managed to get the lock. Fix it up before returning. */ -+ callq __pthread_mutex_cond_lock_adjust -+ jmp 8f -+ - -- movq 24(%rsp), %rdi -+7: callq __pthread_mutex_cond_lock -+ -+8: movq 24(%rsp), %rdi - .LcallUR: - call _Unwind_Resume@PLT - hlt -@@ -476,11 +533,11 @@ __condvar_cleanup1: - .uleb128 .LcleanupSTART-.LSTARTCODE - .uleb128 .LcleanupEND-.LcleanupSTART - .uleb128 __condvar_cleanup1-.LSTARTCODE -- .uleb128 0 -+ .uleb128 0 - .uleb128 .LcallUR-.LSTARTCODE - .uleb128 .LENDCODE-.LcallUR - .uleb128 0 -- .uleb128 0 -+ .uleb128 0 - .Lcstend: - - -diff -pruN glibc-2.12-2-gc4ccff1/nptl/tst-cond24.c glibc-2.12-2-gc4ccff1.fixed/nptl/tst-cond24.c ---- glibc-2.12-2-gc4ccff1/nptl/tst-cond24.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/tst-cond24.c 2013-07-09 10:19:10.008419593 +0530 -@@ -0,0 +1,249 @@ -+/* Verify that condition variables synchronized by PI mutexes don't hang. -+ Copyright (C) 2012-2013 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ -+#include <pthread.h> -+#include <stdio.h> -+#include <stdlib.h> -+#include <string.h> -+#include <errno.h> -+#include <sys/types.h> -+#include <sys/syscall.h> -+#include <unistd.h> -+#include <sys/time.h> -+#include <time.h> -+ -+#define THREADS_NUM 5 -+#define MAXITER 50000 -+ -+static pthread_mutex_t mutex; -+static pthread_mutexattr_t mutex_attr; -+static pthread_cond_t cond; -+static pthread_t threads[THREADS_NUM]; -+static int pending = 0; -+ -+typedef void * (*threadfunc) (void *); -+ -+void * -+thread_fun_timed (void *arg) -+{ -+ int *ret = arg; -+ int rv, i; -+ -+ printf ("Started thread_fun_timed[%d]\n", *ret); -+ -+ for (i = 0; i < MAXITER / THREADS_NUM; i++) -+ { -+ rv = pthread_mutex_lock (&mutex); -+ if (rv) -+ { -+ printf ("pthread_mutex_lock: %s(%d)\n", strerror (rv), rv); -+ *ret = 1; -+ goto out; -+ } -+ -+ while (!pending) -+ { -+ struct timespec ts; -+ clock_gettime(CLOCK_REALTIME, &ts); -+ ts.tv_sec += 20; -+ rv = pthread_cond_timedwait (&cond, &mutex, &ts); -+ -+ /* There should be no timeout either. */ -+ if (rv) -+ { -+ printf ("pthread_cond_wait: %s(%d)\n", strerror (rv), rv); -+ *ret = 1; -+ goto out; -+ } -+ } -+ -+ pending--; -+ -+ rv = pthread_mutex_unlock (&mutex); -+ if (rv) -+ { -+ printf ("pthread_mutex_unlock: %s(%d)\n", strerror (rv), rv); -+ *ret = 1; -+ goto out; -+ } -+ } -+ -+ *ret = 0; -+ -+out: -+ return ret; -+} -+ -+void * -+thread_fun (void *arg) -+{ -+ int *ret = arg; -+ int rv, i; -+ -+ printf ("Started thread_fun[%d]\n", *ret); -+ -+ for (i = 0; i < MAXITER / THREADS_NUM; i++) -+ { -+ rv = pthread_mutex_lock (&mutex); -+ if (rv) -+ { -+ printf ("pthread_mutex_lock: %s(%d)\n", strerror (rv), rv); -+ *ret = 1; -+ goto out; -+ } -+ -+ while (!pending) -+ { -+ rv = pthread_cond_wait (&cond, &mutex); -+ -+ if (rv) -+ { -+ printf ("pthread_cond_wait: %s(%d)\n", strerror (rv), rv); -+ *ret = 1; -+ goto out; -+ } -+ } -+ -+ pending--; -+ -+ rv = pthread_mutex_unlock (&mutex); -+ if (rv) -+ { -+ printf ("pthread_mutex_unlock: %s(%d)\n", strerror (rv), rv); -+ *ret = 1; -+ goto out; -+ } -+ } -+ -+ *ret = 0; -+ -+out: -+ return ret; -+} -+ -+static int -+do_test_wait (threadfunc f) -+{ -+ int i; -+ int rv; -+ int counter = 0; -+ int retval[THREADS_NUM]; -+ -+ puts ("Starting test"); -+ -+ rv = pthread_mutexattr_init (&mutex_attr); -+ if (rv) -+ { -+ printf ("pthread_mutexattr_init: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ -+ rv = pthread_mutexattr_setprotocol (&mutex_attr, PTHREAD_PRIO_INHERIT); -+ if (rv) -+ { -+ printf ("pthread_mutexattr_setprotocol: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ -+ rv = pthread_mutex_init (&mutex, &mutex_attr); -+ if (rv) -+ { -+ printf ("pthread_mutex_init: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ -+ rv = pthread_cond_init (&cond, NULL); -+ if (rv) -+ { -+ printf ("pthread_cond_init: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ -+ for (i = 0; i < THREADS_NUM; i++) -+ { -+ retval[i] = i; -+ rv = pthread_create (&threads[i], NULL, f, &retval[i]); -+ if (rv) -+ { -+ printf ("pthread_create: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ } -+ -+ for (; counter < MAXITER; counter++) -+ { -+ rv = pthread_mutex_lock (&mutex); -+ if (rv) -+ { -+ printf ("pthread_mutex_lock: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ -+ if (!(counter % 100)) -+ printf ("counter: %d\n", counter); -+ pending += 1; -+ -+ rv = pthread_cond_signal (&cond); -+ if (rv) -+ { -+ printf ("pthread_cond_signal: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ -+ rv = pthread_mutex_unlock (&mutex); -+ if (rv) -+ { -+ printf ("pthread_mutex_unlock: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ } -+ -+ for (i = 0; i < THREADS_NUM; i++) -+ { -+ void *ret; -+ rv = pthread_join (threads[i], &ret); -+ if (rv) -+ { -+ printf ("pthread_join: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ if (ret && *(int *)ret) -+ { -+ printf ("Thread %d returned with an error\n", i); -+ return 1; -+ } -+ } -+ -+ return 0; -+} -+ -+static int -+do_test (void) -+{ -+ puts ("Testing pthread_cond_wait"); -+ int ret = do_test_wait (thread_fun); -+ if (ret) -+ return ret; -+ -+ puts ("Testing pthread_cond_timedwait"); -+ return do_test_wait (thread_fun_timed); -+} -+ -+#define TIMEOUT 20 -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff -pruN glibc-2.12-2-gc4ccff1/nptl/tst-cond25.c glibc-2.12-2-gc4ccff1.fixed/nptl/tst-cond25.c ---- glibc-2.12-2-gc4ccff1/nptl/tst-cond25.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/tst-cond25.c 2013-07-09 10:19:15.472419335 +0530 -@@ -0,0 +1,281 @@ -+/* Verify that condition variables synchronized by PI mutexes don't hang on -+ on cancellation. -+ Copyright (C) 2012-2013 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ -+#include <pthread.h> -+#include <stdio.h> -+#include <stdlib.h> -+#include <stdint.h> -+#include <string.h> -+#include <errno.h> -+#include <sys/types.h> -+#include <sys/syscall.h> -+#include <unistd.h> -+#include <sys/time.h> -+#include <time.h> -+ -+#define NUM 5 -+#define ITERS 10000 -+#define COUNT 100 -+ -+typedef void *(*thr_func) (void *); -+ -+pthread_mutex_t mutex; -+pthread_cond_t cond; -+ -+void cleanup (void *u) -+{ -+ /* pthread_cond_wait should always return with the mutex locked. */ -+ if (pthread_mutex_unlock (&mutex)) -+ abort (); -+} -+ -+void * -+signaller (void *u) -+{ -+ int i, ret = 0; -+ void *tret = NULL; -+ -+ for (i = 0; i < ITERS; i++) -+ { -+ if ((ret = pthread_mutex_lock (&mutex)) != 0) -+ { -+ tret = (void *)1; -+ printf ("signaller:mutex_lock failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ if ((ret = pthread_cond_signal (&cond)) != 0) -+ { -+ tret = (void *)1; -+ printf ("signaller:signal failed: %s\n", strerror (ret)); -+ goto unlock_out; -+ } -+ if ((ret = pthread_mutex_unlock (&mutex)) != 0) -+ { -+ tret = (void *)1; -+ printf ("signaller:mutex_unlock failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ pthread_testcancel (); -+ } -+ -+out: -+ return tret; -+ -+unlock_out: -+ if ((ret = pthread_mutex_unlock (&mutex)) != 0) -+ printf ("signaller:mutex_unlock[2] failed: %s\n", strerror (ret)); -+ goto out; -+} -+ -+void * -+waiter (void *u) -+{ -+ int i, ret = 0; -+ void *tret = NULL; -+ int seq = (uintptr_t) u; -+ -+ for (i = 0; i < ITERS / NUM; i++) -+ { -+ if ((ret = pthread_mutex_lock (&mutex)) != 0) -+ { -+ tret = (void *) (uintptr_t) 1; -+ printf ("waiter[%u]:mutex_lock failed: %s\n", seq, strerror (ret)); -+ goto out; -+ } -+ pthread_cleanup_push (cleanup, NULL); -+ -+ if ((ret = pthread_cond_wait (&cond, &mutex)) != 0) -+ { -+ tret = (void *) (uintptr_t) 1; -+ printf ("waiter[%u]:wait failed: %s\n", seq, strerror (ret)); -+ goto unlock_out; -+ } -+ -+ if ((ret = pthread_mutex_unlock (&mutex)) != 0) -+ { -+ tret = (void *) (uintptr_t) 1; -+ printf ("waiter[%u]:mutex_unlock failed: %s\n", seq, strerror (ret)); -+ goto out; -+ } -+ pthread_cleanup_pop (0); -+ } -+ -+out: -+ puts ("waiter tests done"); -+ return tret; -+ -+unlock_out: -+ if ((ret = pthread_mutex_unlock (&mutex)) != 0) -+ printf ("waiter:mutex_unlock[2] failed: %s\n", strerror (ret)); -+ goto out; -+} -+ -+void * -+timed_waiter (void *u) -+{ -+ int i, ret; -+ void *tret = NULL; -+ int seq = (uintptr_t) u; -+ -+ for (i = 0; i < ITERS / NUM; i++) -+ { -+ struct timespec ts; -+ -+ if ((ret = clock_gettime(CLOCK_REALTIME, &ts)) != 0) -+ { -+ tret = (void *) (uintptr_t) 1; -+ printf ("%u:clock_gettime failed: %s\n", seq, strerror (errno)); -+ goto out; -+ } -+ ts.tv_sec += 20; -+ -+ if ((ret = pthread_mutex_lock (&mutex)) != 0) -+ { -+ tret = (void *) (uintptr_t) 1; -+ printf ("waiter[%u]:mutex_lock failed: %s\n", seq, strerror (ret)); -+ goto out; -+ } -+ pthread_cleanup_push (cleanup, NULL); -+ -+ /* We should not time out either. */ -+ if ((ret = pthread_cond_timedwait (&cond, &mutex, &ts)) != 0) -+ { -+ tret = (void *) (uintptr_t) 1; -+ printf ("waiter[%u]:timedwait failed: %s\n", seq, strerror (ret)); -+ goto unlock_out; -+ } -+ if ((ret = pthread_mutex_unlock (&mutex)) != 0) -+ { -+ tret = (void *) (uintptr_t) 1; -+ printf ("waiter[%u]:mutex_unlock failed: %s\n", seq, strerror (ret)); -+ goto out; -+ } -+ pthread_cleanup_pop (0); -+ } -+ -+out: -+ puts ("timed_waiter tests done"); -+ return tret; -+ -+unlock_out: -+ if ((ret = pthread_mutex_unlock (&mutex)) != 0) -+ printf ("waiter[%u]:mutex_unlock[2] failed: %s\n", seq, strerror (ret)); -+ goto out; -+} -+ -+int -+do_test_wait (thr_func f) -+{ -+ pthread_t w[NUM]; -+ pthread_t s; -+ pthread_mutexattr_t attr; -+ int i, j, ret = 0; -+ void *thr_ret; -+ -+ for (i = 0; i < COUNT; i++) -+ { -+ if ((ret = pthread_mutexattr_init (&attr)) != 0) -+ { -+ printf ("mutexattr_init failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ -+ if ((ret = pthread_mutexattr_setprotocol (&attr, -+ PTHREAD_PRIO_INHERIT)) != 0) -+ { -+ printf ("mutexattr_setprotocol failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ -+ if ((ret = pthread_cond_init (&cond, NULL)) != 0) -+ { -+ printf ("cond_init failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ -+ if ((ret = pthread_mutex_init (&mutex, &attr)) != 0) -+ { -+ printf ("mutex_init failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ -+ for (j = 0; j < NUM; j++) -+ if ((ret = pthread_create (&w[j], NULL, -+ f, (void *) (uintptr_t) j)) != 0) -+ { -+ printf ("waiter[%d]: create failed: %s\n", j, strerror (ret)); -+ goto out; -+ } -+ -+ if ((ret = pthread_create (&s, NULL, signaller, NULL)) != 0) -+ { -+ printf ("signaller: create failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ -+ for (j = 0; j < NUM; j++) -+ { -+ pthread_cancel (w[j]); -+ -+ if ((ret = pthread_join (w[j], &thr_ret)) != 0) -+ { -+ printf ("waiter[%d]: join failed: %s\n", j, strerror (ret)); -+ goto out; -+ } -+ -+ if (thr_ret != NULL && thr_ret != PTHREAD_CANCELED) -+ { -+ ret = 1; -+ goto out; -+ } -+ } -+ -+ /* The signalling thread could have ended before it was cancelled. */ -+ pthread_cancel (s); -+ -+ if ((ret = pthread_join (s, &thr_ret)) != 0) -+ { -+ printf ("signaller: join failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ -+ if (thr_ret != NULL && thr_ret != PTHREAD_CANCELED) -+ { -+ ret = 1; -+ goto out; -+ } -+ } -+ -+out: -+ return ret; -+} -+ -+int -+do_test (int argc, char **argv) -+{ -+ int ret = do_test_wait (waiter); -+ -+ if (ret) -+ return ret; -+ -+ return do_test_wait (timed_waiter); -+} -+ -+#define TIMEOUT 5 -+#include "../test-skeleton.c" -diff -pruN glibc-2.12-2-gc4ccff1/nptl/tst-cond-except.c glibc-2.12-2-gc4ccff1.fixed/nptl/tst-cond-except.c ---- glibc-2.12-2-gc4ccff1/nptl/tst-cond-except.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/tst-cond-except.c 2013-07-09 10:19:01.334420002 +0530 -@@ -0,0 +1,110 @@ -+/* Verify that exception table for pthread_cond_wait is correct. -+ Copyright (C) 2012-2013 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ -+#include <pthread.h> -+#include <stdio.h> -+#include <stdint.h> -+#include <string.h> -+#include <unistd.h> -+ -+pthread_mutex_t mutex; -+pthread_cond_t cond; -+ -+#define CHECK_RETURN_VAL_OR_FAIL(ret,str) \ -+ ({ if ((ret) != 0) \ -+ { \ -+ printf ("%s failed: %s\n", (str), strerror (ret)); \ -+ ret = 1; \ -+ goto out; \ -+ } \ -+ }) -+ -+ -+void -+clean (void *arg) -+{ -+ puts ("clean: Unlocking mutex..."); -+ pthread_mutex_unlock ((pthread_mutex_t *) arg); -+ puts ("clean: Mutex unlocked..."); -+} -+ -+void * -+thr (void *arg) -+{ -+ int ret = 0; -+ pthread_mutexattr_t mutexAttr; -+ ret = pthread_mutexattr_init (&mutexAttr); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_mutexattr_init"); -+ -+ ret = pthread_mutexattr_setprotocol (&mutexAttr, PTHREAD_PRIO_INHERIT); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_mutexattr_setprotocol"); -+ -+ ret = pthread_mutex_init (&mutex, &mutexAttr); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_mutex_init"); -+ -+ ret = pthread_cond_init (&cond, 0); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_cond_init"); -+ -+ puts ("th: Init done, entering wait..."); -+ -+ pthread_cleanup_push (clean, (void *) &mutex); -+ ret = pthread_mutex_lock (&mutex); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_mutex_lock"); -+ while (1) -+ { -+ ret = pthread_cond_wait (&cond, &mutex); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_cond_wait"); -+ } -+ pthread_cleanup_pop (1); -+ -+out: -+ return (void *) (uintptr_t) ret; -+} -+ -+int -+do_test (void) -+{ -+ pthread_t thread; -+ int ret = 0; -+ void *thr_ret = 0; -+ ret = pthread_create (&thread, 0, thr, &thr_ret); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_create"); -+ -+ puts ("main: Thread created, waiting a bit..."); -+ sleep (2); -+ -+ puts ("main: Cancelling thread..."); -+ ret = pthread_cancel (thread); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_cancel"); -+ -+ puts ("main: Joining th..."); -+ ret = pthread_join (thread, NULL); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_join"); -+ -+ if (thr_ret != NULL) -+ return 1; -+ -+ puts ("main: Joined thread, done!"); -+ -+out: -+ return ret; -+} -+ -+#define TEST_FUNCTION do_test () -+#define TIMEOUT 5 -+#include "../test-skeleton.c" diff --git a/src/patches/glibc/glibc-rh580498.patch b/src/patches/glibc/glibc-rh580498.patch deleted file mode 100644 index 05b673a..0000000 --- a/src/patches/glibc/glibc-rh580498.patch +++ /dev/null @@ -1,296 +0,0 @@ -2010-07-03 Ulrich Drepper drepper@redhat.com - - * tst-abstime.c (do_test): Some more cleanups - -2010-07-02 Ulrich Drepper drepper@redhat.com - - * tst-abstime.c: Correct testing and add test for sem_timedwait. - -2010-07-01 Andreas Schwab schwab@redhat.com - Ulrich Drepper drepper@redhat.com - - * Makefile (tests): Add tst-abstime. - * tst-abstime.c: New file. - * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S - (__lll_timedlock_wait): Check for timestamp before the Epoch. - * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S - (__lll_timedlock_wait): Likewise. - * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S - (__lll_robust_timedlock_wait): Likewise. - * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S - (__pthread_cond_timedwait): Likewise. - * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S - (pthread_rwlock_timedrdlock): Likewise. - * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S - (pthread_rwlock_timedwrlock): Likewise. - * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait): - Likewise. - -Index: glibc-2.12-2-gc4ccff1/nptl/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/Makefile -+++ glibc-2.12-2-gc4ccff1/nptl/Makefile -@@ -256,6 +256,7 @@ tests = tst-typesizes \ - tst-sched1 \ - tst-backtrace1 \ - tst-oddstacklimit \ -+ tst-abstime \ - tst-vfork1 tst-vfork2 tst-vfork1x tst-vfork2x \ - tst-getpid1 tst-getpid2 tst-getpid3 \ - tst-initializers1 $(patsubst %,tst-initializers1-%,c89 gnu89 c99 gnu99) -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S -@@ -188,6 +188,9 @@ __lll_timedlock_wait: - je .Lreltmo - # endif - -+ cmpl $0, (%edx) -+ js 8f -+ - movl %ecx, %ebx - movl %esi, %ecx - movl %edx, %esi -@@ -223,6 +226,9 @@ __lll_timedlock_wait: - cfi_restore(%ebp) - ret - -+8: movl $ETIMEDOUT, %eax -+ jmp 7b -+ - # ifndef __ASSUME_FUTEX_CLOCK_REALTIME - .Lreltmo: - /* Check for a valid timeout value. */ -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S -@@ -169,9 +169,13 @@ __lll_timedlock_wait: - je .Lreltmo - # endif - -+ cmpq $0, (%rdx) -+ js 5f -+ - pushq %r9 - cfi_adjust_cfa_offset(8) - cfi_rel_offset(%r9, 0) -+ - movq %rdx, %r10 - movl $0xffffffff, %r9d - LOAD_FUTEX_WAIT_ABS (%esi) -@@ -202,6 +206,9 @@ __lll_timedlock_wait: - cfi_restore(%r9) - retq - -+5: movl $ETIMEDOUT, %eax -+ retq -+ - # ifndef __ASSUME_FUTEX_CLOCK_REALTIME - .Lreltmo: - /* Check for a valid timeout value. */ -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S -@@ -125,6 +125,9 @@ __lll_robust_timedlock_wait: - je .Lreltmo - # endif - -+ cmpq $0, (%rdx) -+ js 7f -+ - pushq %r9 - cfi_adjust_cfa_offset(8) - cfi_rel_offset(%r9, 0) -@@ -180,6 +183,9 @@ __lll_robust_timedlock_wait: - cfi_adjust_cfa_offset(-8) - cfi_restore(%r9) - -+7: movl $ETIMEDOUT, %eax -+ retq -+ - - # ifndef __ASSUME_FUTEX_CLOCK_REALTIME - .Lreltmo: -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S -@@ -144,6 +144,10 @@ __pthread_cond_timedwait: - movq %r9, 24(%rsp) - movl %edx, 4(%rsp) - -+ cmpq $0, (%r13) -+ movq $-ETIMEDOUT, %r14 -+ js 36f -+ - 38: movl cond_futex(%rdi), %r12d - - /* Unlock. */ -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S -@@ -102,6 +102,9 @@ pthread_rwlock_timedrdlock: - je .Lreltmo - #endif - -+ cmpq $0, (%r13) -+ js 16f /* Time is already up. */ -+ - movl $FUTEX_PRIVATE_FLAG|FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %esi - xorl PSHARED(%r12), %esi - movq %r13, %r10 -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S -@@ -99,6 +99,9 @@ pthread_rwlock_timedwrlock: - je .Lreltmo - #endif - -+ cmpq $0, (%r13) -+ js 16f /* Time is already up. */ -+ - movl $FUTEX_PRIVATE_FLAG|FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %esi - xorl PSHARED(%r12), %esi - movq %r13, %r10 -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S -@@ -77,6 +77,9 @@ sem_timedwait: - je .Lreltmo - #endif - -+ cmpq $0, (%rsi) -+ js 16f -+ - /* This push is only needed to store the sem_t pointer for the - exception handler. */ - pushq %rdi -@@ -169,6 +172,19 @@ sem_timedwait: - - retq - -+16: -+#if USE___THREAD -+ movq errno@gottpoff(%rip), %rdx -+ movl $ETIMEDOUT, %fs:(%rdx) -+#else -+ callq __errno_location@plt -+ movl $ETIMEDOUT, (%rax) -+#endif -+ -+ orl $-1, %eax -+ -+ retq -+ - #ifndef __ASSUME_FUTEX_CLOCK_REALTIME - .Lreltmo: - pushq %r12 -Index: glibc-2.12-2-gc4ccff1/nptl/tst-abstime.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/nptl/tst-abstime.c -@@ -0,0 +1,98 @@ -+/* Copyright (C) 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Andreas Schwab schwab@redhat.com, 2010. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include <errno.h> -+#include <pthread.h> -+#include <semaphore.h> -+#include <stdio.h> -+ -+static pthread_cond_t c = PTHREAD_COND_INITIALIZER; -+static pthread_mutex_t m1 = PTHREAD_MUTEX_INITIALIZER; -+static pthread_mutex_t m2 = PTHREAD_MUTEX_INITIALIZER; -+static pthread_rwlock_t rw1 = PTHREAD_RWLOCK_INITIALIZER; -+static pthread_rwlock_t rw2 = PTHREAD_RWLOCK_INITIALIZER; -+static sem_t sem; -+ -+static void * -+th (void *arg) -+{ -+ long int res = 0; -+ int r; -+ struct timespec t = { -2, 0 }; -+ -+ r = pthread_mutex_timedlock (&m1, &t); -+ if (r != ETIMEDOUT) -+ { -+ puts ("pthread_mutex_timedlock did not return ETIMEDOUT"); -+ res = 1; -+ } -+ r = pthread_rwlock_timedrdlock (&rw1, &t); -+ if (r != ETIMEDOUT) -+ { -+ puts ("pthread_rwlock_timedrdlock did not return ETIMEDOUT"); -+ res = 1; -+ } -+ r = pthread_rwlock_timedwrlock (&rw2, &t); -+ if (r != ETIMEDOUT) -+ { -+ puts ("pthread_rwlock_timedwrlock did not return ETIMEDOUT"); -+ res = 1; -+ } -+ return (void *) res; -+} -+ -+static int -+do_test (void) -+{ -+ int res = 0; -+ int r; -+ struct timespec t = { -2, 0 }; -+ pthread_t pth; -+ -+ sem_init (&sem, 0, 0); -+ r = sem_timedwait (&sem, &t); -+ if (r != -1 || errno != ETIMEDOUT) -+ { -+ puts ("sem_timedwait did not fail with ETIMEDOUT"); -+ res = 1; -+ } -+ -+ pthread_mutex_lock (&m1); -+ pthread_rwlock_wrlock (&rw1); -+ pthread_rwlock_rdlock (&rw2); -+ pthread_mutex_lock (&m2); -+ if (pthread_create (&pth, 0, th, 0) != 0) -+ { -+ puts ("cannot create thread"); -+ return 1; -+ } -+ r = pthread_cond_timedwait (&c, &m2, &t); -+ if (r != ETIMEDOUT) -+ { -+ puts ("pthread_cond_timedwait did not return ETIMEDOUT"); -+ res = 1; -+ } -+ void *thres; -+ pthread_join (pth, &thres); -+ return res | (thres != NULL); -+} -+ -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" diff --git a/src/patches/glibc/glibc-rh582738.patch b/src/patches/glibc/glibc-rh582738.patch deleted file mode 100644 index 40f7b80..0000000 --- a/src/patches/glibc/glibc-rh582738.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: glibc-2.11-382-g1cdb215/nscd/nscd.init -=================================================================== ---- glibc-2.11-382-g1cdb215.orig/nscd/nscd.init -+++ glibc-2.11-382-g1cdb215/nscd/nscd.init -@@ -76,7 +76,7 @@ case "$1" in - RETVAL=$? - ;; - stop) -- stop -+ [ ! -e /var/lock/subsys/nscd ] || stop - RETVAL=$? - ;; - status) diff --git a/src/patches/glibc/glibc-rh587360.patch b/src/patches/glibc/glibc-rh587360.patch deleted file mode 100644 index 07b62e6..0000000 --- a/src/patches/glibc/glibc-rh587360.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: glibc-2.11-382-g1cdb215/posix/regexec.c -=================================================================== ---- glibc-2.11-382-g1cdb215.orig/posix/regexec.c -+++ glibc-2.11-382-g1cdb215/posix/regexec.c -@@ -4031,7 +4031,7 @@ find_collation_sequence_value (const uns - /* Skip the collation sequence value. */ - idx += sizeof (uint32_t); - /* Skip the wide char sequence of the collating element. */ -- idx = idx + sizeof (uint32_t) * (extra[idx] + 1); -+ idx = idx + sizeof (uint32_t) * (*(int32_t *) (extra + idx) + 1); - /* If we found the entry, return the sequence value. */ - if (found) - return *(uint32_t *) (extra + idx); diff --git a/src/patches/glibc/glibc-rh593396.patch b/src/patches/glibc/glibc-rh593396.patch deleted file mode 100644 index b907a36..0000000 --- a/src/patches/glibc/glibc-rh593396.patch +++ /dev/null @@ -1,42 +0,0 @@ -2010-05-06 Ulrich Drepper drepper@redhat.com - - * malloc/malloc.c (_int_free): Possible race in the most recently - added check. Only act on the data if no current modification - happened. - -Index: glibc-2.12-2-gc4ccff1/malloc/malloc.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/malloc/malloc.c -+++ glibc-2.12-2-gc4ccff1/malloc/malloc.c -@@ -4859,6 +4859,7 @@ _int_free(mstate av, mchunkptr p) - #ifdef ATOMIC_FASTBINS - mchunkptr fd; - mchunkptr old = *fb; -+ unsigned int old_idx = ~0u; - do - { - /* Another simple check: make sure the top of the bin is not the -@@ -4868,15 +4869,17 @@ _int_free(mstate av, mchunkptr p) - errstr = "double free or corruption (fasttop)"; - goto errout; - } -- if (old != NULL -- && __builtin_expect (fastbin_index(chunksize(old)) != idx, 0)) -- { -- errstr = "invalid fastbin entry (free)"; -- goto errout; -- } -+ if (old != NULL) -+ old_idx = fastbin_index(chunksize(old)); - p->fd = fd = old; - } - while ((old = catomic_compare_and_exchange_val_rel (fb, p, fd)) != fd); -+ -+ if (fd != NULL && __builtin_expect (old_idx != idx, 0)) -+ { -+ errstr = "invalid fastbin entry (free)"; -+ goto errout; -+ } - #else - /* Another simple check: make sure the top of the bin is not the - record we are going to add (i.e., double free). */ diff --git a/src/patches/glibc/glibc-rh593686.patch b/src/patches/glibc/glibc-rh593686.patch deleted file mode 100644 index 3eceb68..0000000 --- a/src/patches/glibc/glibc-rh593686.patch +++ /dev/null @@ -1,179 +0,0 @@ -2010-05-26 Andreas Schwab schwab@redhat.com - - * elf/Makefile: Add rules to build and run unload8 test. - * elf/unload8.c: New file. - * elf/unload8mod1.c: New file. - * elf/unload8mod1x.c: New file. - * elf/unload8mod2.c: New file. - * elf/unload8mod3.c: New file. - - * elf/dl-close.c (_dl_close_worker): Reset private search list if - it wasn't used. - -Index: glibc-2.12-2-gc4ccff1/elf/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/Makefile -+++ glibc-2.12-2-gc4ccff1/elf/Makefile -@@ -89,6 +89,7 @@ distribute := rtld-Rules \ - unload4mod1.c unload4mod2.c unload4mod3.c unload4mod4.c \ - unload6mod1.c unload6mod2.c unload6mod3.c \ - unload7mod1.c unload7mod2.c \ -+ unload8mod1.c unload8mod1x.c unload8mod2.c unload8mod3.c \ - tst-audit1.c tst-audit2.c tst-audit3.c tst-audit4.c \ - tst-auditmod1.c tst-auditmod3a.c tst-auditmod3b.c \ - tst-auditmod4a.c tst-auditmod4b.c \ -@@ -196,7 +197,7 @@ tests += loadtest restest1 preloadtest l - tst-align tst-align2 $(tests-execstack-$(have-z-execstack)) \ - tst-dlmodcount tst-dlopenrpath tst-deep1 \ - tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \ -- unload3 unload4 unload5 unload6 unload7 tst-global1 order2 \ -+ unload3 unload4 unload5 unload6 unload7 unload8 tst-global1 order2 \ - tst-audit1 tst-audit2 \ - tst-stackguard1 tst-addr1 tst-thrlock \ - tst-unique1 tst-unique2 -@@ -247,6 +248,7 @@ modules-names = testobj1 testobj2 testob - unload4mod1 unload4mod2 unload4mod3 unload4mod4 \ - unload6mod1 unload6mod2 unload6mod3 \ - unload7mod1 unload7mod2 \ -+ unload8mod1 unload8mod1x unload8mod2 unload8mod3 \ - order2mod1 order2mod2 order2mod3 order2mod4 \ - tst-unique1mod1 tst-unique1mod2 \ - tst-unique2mod1 tst-unique2mod2 -@@ -522,6 +524,9 @@ $(objpfx)unload6mod2.so: $(libdl) - $(objpfx)unload6mod3.so: $(libdl) - $(objpfx)unload7mod1.so: $(libdl) - $(objpfx)unload7mod2.so: $(objpfx)unload7mod1.so -+$(objpfx)unload8mod1.so: $(objpfx)unload8mod2.so -+$(objpfx)unload8mod2.so: $(objpfx)unload8mod3.so -+$(objpfx)unload8mod3.so: $(libdl) - - LDFLAGS-tst-tlsmod5.so = -nostdlib - LDFLAGS-tst-tlsmod6.so = -nostdlib -@@ -823,6 +828,9 @@ $(objpfx)unload7: $(libdl) - $(objpfx)unload7.out: $(objpfx)unload7mod1.so $(objpfx)unload7mod2.so - unload7-ENV = MALLOC_PERTURB_=85 - -+$(objpfx)unload8: $(libdl) -+$(objpfx)unload8.out: $(objpfx)unload8mod1.so $(objpfx)unload8mod1x.so -+ - ifdef libdl - $(objpfx)tst-tls9-static: $(common-objpfx)dlfcn/libdl.a - $(objpfx)tst-tls9-static.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so -Index: glibc-2.12-2-gc4ccff1/elf/dl-close.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-close.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-close.c -@@ -421,6 +421,13 @@ _dl_close_worker (struct link_map *map) - - imap->l_scope_max = new_size; - } -+ else if (new_list != NULL) -+ { -+ /* We didn't change the scope array, so reset the search -+ list. */ -+ imap->l_searchlist.r_list = NULL; -+ imap->l_searchlist.r_nlist = 0; -+ } - - /* The loader is gone, so mark the object as not having one. - Note: l_idx != IDX_STILL_USED -> object will be removed. */ -Index: glibc-2.12-2-gc4ccff1/elf/unload8.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/elf/unload8.c -@@ -0,0 +1,33 @@ -+#include <dlfcn.h> -+#include <stdio.h> -+ -+int -+main (void) -+{ -+ void *h = dlopen ("$ORIGIN/unload8mod1.so", RTLD_LAZY); -+ if (h == NULL) -+ { -+ puts ("dlopen unload8mod1.so failed"); -+ return 1; -+ } -+ -+ void *h2 = dlopen ("$ORIGIN/unload8mod1x.so", RTLD_LAZY); -+ if (h2 == NULL) -+ { -+ puts ("dlopen unload8mod1x.so failed"); -+ return 1; -+ } -+ dlclose (h2); -+ -+ int (*mod1) (void) = dlsym (h, "mod1"); -+ if (mod1 == NULL) -+ { -+ puts ("dlsym failed"); -+ return 1; -+ } -+ -+ mod1 (); -+ dlclose (h); -+ -+ return 0; -+} -Index: glibc-2.12-2-gc4ccff1/elf/unload8mod1.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/elf/unload8mod1.c -@@ -0,0 +1,7 @@ -+extern void mod2 (void); -+ -+void -+mod1 (void) -+{ -+ mod2 (); -+} -Index: glibc-2.12-2-gc4ccff1/elf/unload8mod1x.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/elf/unload8mod1x.c -@@ -0,0 +1 @@ -+int mod1x; -Index: glibc-2.12-2-gc4ccff1/elf/unload8mod2.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/elf/unload8mod2.c -@@ -0,0 +1,7 @@ -+extern void mod3 (void); -+ -+void -+mod2 (void) -+{ -+ mod3 (); -+} -Index: glibc-2.12-2-gc4ccff1/elf/unload8mod3.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/elf/unload8mod3.c -@@ -0,0 +1,27 @@ -+#include <dlfcn.h> -+#include <stdio.h> -+#include <stdlib.h> -+ -+void -+mod3_fini2 (void) -+{ -+} -+ -+void -+mod3_fini (void) -+{ -+ mod3_fini2 (); -+} -+ -+void -+mod3 (void) -+{ -+ void *h = dlopen ("$ORIGIN/unload8mod2.so", RTLD_LAZY); -+ if (h == NULL) -+ { -+ puts ("dlopen unload8mod2.so failed"); -+ exit (1); -+ } -+ -+ atexit (mod3_fini); -+} diff --git a/src/patches/glibc/glibc-rh601686.patch b/src/patches/glibc/glibc-rh601686.patch deleted file mode 100644 index 01e42dc..0000000 --- a/src/patches/glibc/glibc-rh601686.patch +++ /dev/null @@ -1,4640 +0,0 @@ -2010-11-09 H.J. Lu hongjiu.lu@intel.com - - [BZ #12205] - * string/test-strncasecmp.c (check_result): New function. - (do_one_test): Use it. - (check1): New function. - (test_main): Use it. - * sysdeps/i386/i686/multiarch/strcmp.S (nibble_ashr_use_sse4_2_exit): - Support strcasecmp and strncasecmp. - -2010-10-03 Ulrich Drepper drepper@gmail.com - - [BZ #12077] - * sysdeps/x86_64/strcmp.S: Fix handling of remaining bytes in buffer - for strncmp and strncasecmp. - * string/stratcliff.c: Add tests for strcmp and strncmp. - * wcsmbs/wcsatcliff.c: Adjust for stratcliff change. - -2010-09-20 Ulrich Drepper drepper@redhat.com - - * sysdeps/x86_64/strcmp.S: Fix another type in strncasecmp limit - detection. - -2010-08-19 Ulrich Drepper drepper@redhat.com - - * sysdeps/x86_64/multiarch/strcmp.S: Fix two typos in strncasecmp - handling. - -2010-08-15 Ulrich Drepper drepper@redhat.com - - * sysdeps/x86_64/strcmp.S: Use correct register for fourth parameter - of strncasecmp_l. - * sysdeps/multiarch/strcmp.S: Likewise. - -2010-08-14 Ulrich Drepper drepper@redhat.com - - * sysdeps/x86_64/Makefile [subdir=string] (sysdep_routines): Add - strncase_l-nonascii. - * sysdeps/x86_64/multiarch/Makefile [subdir=string] (sysdep_routines): - Add strncase_l-ssse3. - * sysdeps/x86_64/multiarch/strcmp.S: Prepare for use as strncasecmp. - * sysdeps/x86_64/strcmp.S: Likewise. - * sysdeps/x86_64/multiarch/strncase_l-ssse3.S: New file. - * sysdeps/x86_64/multiarch/strncase_l.S: New file. - * sysdeps/x86_64/strncase.S: New file. - * sysdeps/x86_64/strncase_l-nonascii.c: New file. - * sysdeps/x86_64/strncase_l.S: New file. - * string/Makefile (strop-tests): Add strncasecmp. - * string/test-strncasecmp.c: New file. - - * sysdeps/x86_64/strcasecmp_l-nonascii.c: Add prototype to avoid - warning. - - * sysdeps/x86_64/strcmp.S: Move definition of NO_NOLOCALE_ALIAS to... - * sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S: ... here. - -2010-07-31 Ulrich Drepper drepper@redhat.com - - * sysdeps/x86_64/multiarch/Makefile [subdir=string] (sysdep_routines): - Add strcasecmp_l-ssse3. - * sysdeps/x86_64/multiarch/strcmp.S: Add support to compile for - strcasecmp. - * sysdeps/x86_64/strcmp.S: Allow more flexible compiling of strcasecmp. - * sysdeps/x86_64/multiarch/strcasecmp_l.S: New file. - * sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S: New file. - -2010-07-30 Ulrich Drepper drepper@redhat.com - - * sysdeps/x86_64/multiarch/strcmp.S: Pretty printing. - - * string/Makefile (strop-tests): Add strcasecmp. - * sysdeps/x86_64/Makefile [subdir=string] (sysdep_routines): Add - strcasecmp_l-nonascii. - (gen-as-const-headers): Add locale-defines.sym. - * sysdeps/x86_64/strcmp.S: Add support for strcasecmp implementation. - * sysdeps/x86_64/strcasecmp.S: New file. - * sysdeps/x86_64/strcasecmp_l.S: New file. - * sysdeps/x86_64/strcasecmp_l-nonascii.c: New file. - * sysdeps/x86_64/locale-defines.sym: New file. - * string/test-strcasecmp.c: New file. - - * string/test-strcasestr.c: Test both ends of the range of characters. - * sysdeps/x86_64/multiarch/strstr.c: Fix UCHIGH definition. - -2010-07-26 Ulrich Drepper drepper@redhat.com - - * string/test-strnlen.c: New file. - * string/Makefile (strop-tests): Add strnlen. - * string/tester.c (test_strnlen): Add a few more test cases. - * string/tst-strlen.c: Better error reporting. - - * sysdeps/x86_64/strnlen.S: New file. - -2010-07-24 Ulrich Drepper drepper@redhat.com - - * sysdeps/x86_64/multiarch/strstr.c (__m128i_strloadu_tolower): Use - lower-latency instructions. - -2010-07-23 Ulrich Drepper drepper@redhat.com - - * string/test-strcasestr.c: New file. - * string/test-strstr.c: New file. - * string/Makefile (strop-tests): Add strstr and strcasestr. - * string/str-two-way.h: Don't undefine MAX. - * string/strcasestr.c: Don't define alias if NO_ALIAS is defined. - -2010-07-21 Andreas Schwab schwab@redhat.com - - * sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add - strcasestr-nonascii. - (CFLAGS-strcasestr-nonascii.c): Define. - * sysdeps/i386/i686/multiarch/strcasestr-nonascii.c: New file. - * sysdeps/x86_64/multiarch/strcasestr-nonascii.c (STRSTR_SSE42): - Remove unused attribute. - -2010-07-16 Ulrich Drepper drepper@redhat.com - - * sysdeps/x86_64/multiarch/strstr.c: Rewrite to avoid indirect function - call in strcasestr. - * sysdeps/x86_64/multiarch/strcasestr.c: Declare - __strcasestr_sse42_nonascii. - * sysdeps/x86_64/multiarch/Makefile: Add rules to build - strcasestr-nonascii.c. - * sysdeps/x86_64/multiarch/strcasestr-nonascii.c: New file. - -Index: glibc-2.12-2-gc4ccff1/string/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/Makefile -+++ glibc-2.12-2-gc4ccff1/string/Makefile -@@ -48,7 +48,8 @@ o-objects.ob := memcpy.o memset.o memchr - - strop-tests := memchr memcmp memcpy memmove mempcpy memset memccpy \ - stpcpy stpncpy strcat strchr strcmp strcpy strcspn \ -- strlen strncmp strncpy strpbrk strrchr strspn memmem -+ strlen strncmp strncpy strpbrk strrchr strspn memmem \ -+ strstr strcasestr strnlen strcasecmp strncasecmp - tests := tester inl-tester noinl-tester testcopy test-ffs \ - tst-strlen stratcliff tst-svc tst-inlcall \ - bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap \ -Index: glibc-2.12-2-gc4ccff1/string/str-two-way.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/str-two-way.h -+++ glibc-2.12-2-gc4ccff1/string/str-two-way.h -@@ -426,5 +426,4 @@ two_way_long_needle (const unsigned char - #undef AVAILABLE - #undef CANON_ELEMENT - #undef CMP_FUNC --#undef MAX - #undef RETURN_TYPE -Index: glibc-2.12-2-gc4ccff1/string/stratcliff.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/stratcliff.c -+++ glibc-2.12-2-gc4ccff1/string/stratcliff.c -@@ -47,6 +47,8 @@ - # define MEMCPY memcpy - # define MEMPCPY mempcpy - # define MEMCHR memchr -+# define STRCMP strcmp -+# define STRNCMP strncmp - #endif - - -@@ -277,7 +279,74 @@ do_test (void) - - adr[inner] = L('T'); - } -- } -+ } -+ -+ /* strcmp/wcscmp tests */ -+ for (outer = 1; outer < 32; ++outer) -+ for (middle = 0; middle < 16; ++middle) -+ { -+ MEMSET (adr + middle, L('T'), 256); -+ adr[256] = L('\0'); -+ MEMSET (dest + nchars - outer, L('T'), outer - 1); -+ dest[nchars - 1] = L('\0'); -+ -+ if (STRCMP (adr + middle, dest + nchars - outer) <= 0) -+ { -+ printf ("%s 1 flunked for outer = %d, middle = %d\n", -+ STRINGIFY (STRCMP), outer, middle); -+ result = 1; -+ } -+ -+ if (STRCMP (dest + nchars - outer, adr + middle) >= 0) -+ { -+ printf ("%s 2 flunked for outer = %d, middle = %d\n", -+ STRINGIFY (STRCMP), outer, middle); -+ result = 1; -+ } -+ } -+ -+ /* strncmp/wcsncmp tests */ -+ for (outer = 1; outer < 32; ++outer) -+ for (middle = 0; middle < 16; ++middle) -+ { -+ MEMSET (adr + middle, L('T'), 256); -+ adr[256] = L('\0'); -+ MEMSET (dest + nchars - outer, L('T'), outer - 1); -+ dest[nchars - 1] = L('U'); -+ -+ for (inner = 0; inner < outer; ++inner) -+ { -+ if (STRNCMP (adr + middle, dest + nchars - outer, inner) != 0) -+ { -+ printf ("%s 1 flunked for outer = %d, middle = %d, " -+ "inner = %d\n", -+ STRINGIFY (STRNCMP), outer, middle, inner); -+ result = 1; -+ } -+ -+ if (STRNCMP (dest + nchars - outer, adr + middle, inner) != 0) -+ { -+ printf ("%s 2 flunked for outer = %d, middle = %d, " -+ "inner = %d\n", -+ STRINGIFY (STRNCMP), outer, middle, inner); -+ result = 1; -+ } -+ } -+ -+ if (STRNCMP (adr + middle, dest + nchars - outer, outer) >= 0) -+ { -+ printf ("%s 1 flunked for outer = %d, middle = %d, full\n", -+ STRINGIFY (STRNCMP), outer, middle); -+ result = 1; -+ } -+ -+ if (STRNCMP (dest + nchars - outer, adr + middle, outer) <= 0) -+ { -+ printf ("%s 2 flunked for outer = %d, middle = %d, full\n", -+ STRINGIFY (STRNCMP), outer, middle); -+ result = 1; -+ } -+ } - - /* strncpy/wcsncpy tests */ - adr[nchars - 1] = L('T'); -Index: glibc-2.12-2-gc4ccff1/string/strcasestr.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/strcasestr.c -+++ glibc-2.12-2-gc4ccff1/string/strcasestr.c -@@ -103,4 +103,6 @@ STRCASESTR (const char *haystack_start, - - #undef LONG_NEEDLE_THRESHOLD - -+#ifndef NO_ALIAS - weak_alias (__strcasestr, strcasestr) -+#endif -Index: glibc-2.12-2-gc4ccff1/string/test-strcasecmp.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/string/test-strcasecmp.c -@@ -0,0 +1,276 @@ -+/* Test and measure strcasecmp functions. -+ Copyright (C) 1999, 2002, 2003, 2005, 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Jakub Jelinek jakub@redhat.com, 1999. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include <ctype.h> -+#define TEST_MAIN -+#include "test-string.h" -+ -+typedef int (*proto_t) (const char *, const char *); -+static int simple_strcasecmp (const char *, const char *); -+static int stupid_strcasecmp (const char *, const char *); -+ -+IMPL (stupid_strcasecmp, 0) -+IMPL (simple_strcasecmp, 0) -+IMPL (strcasecmp, 1) -+ -+static int -+simple_strcasecmp (const char *s1, const char *s2) -+{ -+ int ret; -+ -+ while ((ret = ((unsigned char) tolower (*s1) -+ - (unsigned char) tolower (*s2))) == 0 -+ && *s1++) -+ ++s2; -+ return ret; -+} -+ -+static int -+stupid_strcasecmp (const char *s1, const char *s2) -+{ -+ size_t ns1 = strlen (s1) + 1, ns2 = strlen (s2) + 1; -+ size_t n = ns1 < ns2 ? ns1 : ns2; -+ int ret = 0; -+ -+ while (n--) -+ { -+ if ((ret = ((unsigned char) tolower (*s1) -+ - (unsigned char) tolower (*s2))) != 0) -+ break; -+ ++s1; -+ ++s2; -+ } -+ return ret; -+} -+ -+static void -+do_one_test (impl_t *impl, const char *s1, const char *s2, int exp_result) -+{ -+ int result = CALL (impl, s1, s2); -+ if ((exp_result == 0 && result != 0) -+ || (exp_result < 0 && result >= 0) -+ || (exp_result > 0 && result <= 0)) -+ { -+ error (0, 0, "Wrong result in function %s %d %d", impl->name, -+ result, exp_result); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s1, s2); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align1, size_t align2, size_t len, int max_char, -+ int exp_result) -+{ -+ size_t i; -+ char *s1, *s2; -+ -+ if (len == 0) -+ return; -+ -+ align1 &= 7; -+ if (align1 + len + 1 >= page_size) -+ return; -+ -+ align2 &= 7; -+ if (align2 + len + 1 >= page_size) -+ return; -+ -+ s1 = (char *) (buf1 + align1); -+ s2 = (char *) (buf2 + align2); -+ -+ for (i = 0; i < len; i++) -+ { -+ s1[i] = toupper (1 + 23 * i % max_char); -+ s2[i] = tolower (s1[i]); -+ } -+ -+ s1[len] = s2[len] = 0; -+ s1[len + 1] = 23; -+ s2[len + 1] = 24 + exp_result; -+ if ((s2[len - 1] == 'z' && exp_result == -1) -+ || (s2[len - 1] == 'a' && exp_result == 1)) -+ s1[len - 1] += exp_result; -+ else -+ s2[len - 1] -= exp_result; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s1, s2, exp_result); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+static void -+do_random_tests (void) -+{ -+ size_t i, j, n, align1, align2, pos, len1, len2; -+ int result; -+ long r; -+ unsigned char *p1 = buf1 + page_size - 512; -+ unsigned char *p2 = buf2 + page_size - 512; -+ -+ for (n = 0; n < ITERATIONS; n++) -+ { -+ align1 = random () & 31; -+ if (random () & 1) -+ align2 = random () & 31; -+ else -+ align2 = align1 + (random () & 24); -+ pos = random () & 511; -+ j = align1 > align2 ? align1 : align2; -+ if (pos + j >= 511) -+ pos = 510 - j - (random () & 7); -+ len1 = random () & 511; -+ if (pos >= len1 && (random () & 1)) -+ len1 = pos + (random () & 7); -+ if (len1 + j >= 512) -+ len1 = 511 - j - (random () & 7); -+ if (pos >= len1) -+ len2 = len1; -+ else -+ len2 = len1 + (len1 != 511 - j ? random () % (511 - j - len1) : 0); -+ j = (pos > len2 ? pos : len2) + align1 + 64; -+ if (j > 512) -+ j = 512; -+ for (i = 0; i < j; ++i) -+ { -+ p1[i] = tolower (random () & 255); -+ if (i < len1 + align1 && !p1[i]) -+ { -+ p1[i] = tolower (random () & 255); -+ if (!p1[i]) -+ p1[i] = tolower (1 + (random () & 127)); -+ } -+ } -+ for (i = 0; i < j; ++i) -+ { -+ p2[i] = toupper (random () & 255); -+ if (i < len2 + align2 && !p2[i]) -+ { -+ p2[i] = toupper (random () & 255); -+ if (!p2[i]) -+ toupper (p2[i] = 1 + (random () & 127)); -+ } -+ } -+ -+ result = 0; -+ memcpy (p2 + align2, p1 + align1, pos); -+ if (pos < len1) -+ { -+ if (tolower (p2[align2 + pos]) == p1[align1 + pos]) -+ { -+ p2[align2 + pos] = toupper (random () & 255); -+ if (tolower (p2[align2 + pos]) == p1[align1 + pos]) -+ p2[align2 + pos] = toupper (p1[align1 + pos] -+ + 3 + (random () & 127)); -+ } -+ -+ if (p1[align1 + pos] < tolower (p2[align2 + pos])) -+ result = -1; -+ else -+ result = 1; -+ } -+ p1[len1 + align1] = 0; -+ p2[len2 + align2] = 0; -+ -+ FOR_EACH_IMPL (impl, 1) -+ { -+ r = CALL (impl, (char *) (p1 + align1), (char *) (p2 + align2)); -+ /* Test whether on 64-bit architectures where ABI requires -+ callee to promote has the promotion been done. */ -+ asm ("" : "=g" (r) : "0" (r)); -+ if ((r == 0 && result) -+ || (r < 0 && result >= 0) -+ || (r > 0 && result <= 0)) -+ { -+ error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd) %ld != %d, p1 %p p2 %p", -+ n, impl->name, align1, align2, len1, len2, pos, r, result, p1, p2); -+ ret = 1; -+ } -+ } -+ } -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 1; i < 16; ++i) -+ { -+ do_test (i, i, i, 127, 0); -+ do_test (i, i, i, 127, 1); -+ do_test (i, i, i, 127, -1); -+ } -+ -+ for (i = 1; i < 10; ++i) -+ { -+ do_test (0, 0, 2 << i, 127, 0); -+ do_test (0, 0, 2 << i, 254, 0); -+ do_test (0, 0, 2 << i, 127, 1); -+ do_test (0, 0, 2 << i, 254, 1); -+ do_test (0, 0, 2 << i, 127, -1); -+ do_test (0, 0, 2 << i, 254, -1); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, 2 * i, 8 << i, 127, 0); -+ do_test (2 * i, i, 8 << i, 254, 0); -+ do_test (i, 2 * i, 8 << i, 127, 1); -+ do_test (2 * i, i, 8 << i, 254, 1); -+ do_test (i, 2 * i, 8 << i, 127, -1); -+ do_test (2 * i, i, 8 << i, 254, -1); -+ } -+ -+ do_random_tests (); -+ return ret; -+} -+ -+#include "../test-skeleton.c" -Index: glibc-2.12-2-gc4ccff1/string/test-strcasestr.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/string/test-strcasestr.c -@@ -0,0 +1,197 @@ -+/* Test and measure strcasestr functions. -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Ulrich Drepper drepper@redhat.com, 2010. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#define TEST_MAIN -+#include "test-string.h" -+ -+ -+#define STRCASESTR simple_strcasestr -+#define NO_ALIAS -+#define __strncasecmp strncasecmp -+#include "strcasestr.c" -+ -+ -+static char * -+stupid_strcasestr (const char *s1, const char *s2) -+{ -+ ssize_t s1len = strlen (s1); -+ ssize_t s2len = strlen (s2); -+ -+ if (s2len > s1len) -+ return NULL; -+ -+ for (ssize_t i = 0; i <= s1len - s2len; ++i) -+ { -+ size_t j; -+ for (j = 0; j < s2len; ++j) -+ if (tolower (s1[i + j]) != tolower (s2[j])) -+ break; -+ if (j == s2len) -+ return (char *) s1 + i; -+ } -+ -+ return NULL; -+} -+ -+ -+typedef char *(*proto_t) (const char *, const char *); -+ -+IMPL (stupid_strcasestr, 0) -+IMPL (simple_strcasestr, 0) -+IMPL (strcasestr, 1) -+ -+ -+static void -+do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) -+{ -+ char *result = CALL (impl, s1, s2); -+ if (result != exp_result) -+ { -+ error (0, 0, "Wrong result in function %s %s %s", impl->name, -+ result, exp_result); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~(hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s1, s2); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+ -+static void -+do_test (size_t align1, size_t align2, size_t len1, size_t len2, -+ int fail) -+{ -+ char *s1 = (char *) (buf1 + align1); -+ char *s2 = (char *) (buf2 + align2); -+ -+ static const char d[] = "1234567890abcxyz"; -+#define dl (sizeof (d) - 1) -+ char *ss2 = s2; -+ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0) -+ { -+ size_t t = l > dl ? dl : l; -+ ss2 = mempcpy (ss2, d, t); -+ } -+ s2[len2] = '\0'; -+ -+ if (fail) -+ { -+ char *ss1 = s1; -+ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0) -+ { -+ size_t t = l > dl ? dl : l; -+ memcpy (ss1, d, t); -+ ++ss1[len2 > 7 ? 7 : len2 - 1]; -+ ss1 += t; -+ } -+ } -+ else -+ { -+ memset (s1, '0', len1); -+ for (size_t i = 0; i < len2; ++i) -+ s1[len1 - len2 + i] = toupper (s2[i]); -+ } -+ s1[len1] = '\0'; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", -+ len1, len2, align1, align2, fail ? "fail" : "found"); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+ -+static int -+test_main (void) -+{ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (size_t klen = 2; klen < 32; ++klen) -+ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen) -+ { -+ do_test (0, 0, hlen, klen, 0); -+ do_test (0, 0, hlen, klen, 1); -+ do_test (0, 3, hlen, klen, 0); -+ do_test (0, 3, hlen, klen, 1); -+ do_test (0, 9, hlen, klen, 0); -+ do_test (0, 9, hlen, klen, 1); -+ do_test (0, 15, hlen, klen, 0); -+ do_test (0, 15, hlen, klen, 1); -+ -+ do_test (3, 0, hlen, klen, 0); -+ do_test (3, 0, hlen, klen, 1); -+ do_test (3, 3, hlen, klen, 0); -+ do_test (3, 3, hlen, klen, 1); -+ do_test (3, 9, hlen, klen, 0); -+ do_test (3, 9, hlen, klen, 1); -+ do_test (3, 15, hlen, klen, 0); -+ do_test (3, 15, hlen, klen, 1); -+ -+ do_test (9, 0, hlen, klen, 0); -+ do_test (9, 0, hlen, klen, 1); -+ do_test (9, 3, hlen, klen, 0); -+ do_test (9, 3, hlen, klen, 1); -+ do_test (9, 9, hlen, klen, 0); -+ do_test (9, 9, hlen, klen, 1); -+ do_test (9, 15, hlen, klen, 0); -+ do_test (9, 15, hlen, klen, 1); -+ -+ do_test (15, 0, hlen, klen, 0); -+ do_test (15, 0, hlen, klen, 1); -+ do_test (15, 3, hlen, klen, 0); -+ do_test (15, 3, hlen, klen, 1); -+ do_test (15, 9, hlen, klen, 0); -+ do_test (15, 9, hlen, klen, 1); -+ do_test (15, 15, hlen, klen, 0); -+ do_test (15, 15, hlen, klen, 1); -+ } -+ -+ do_test (0, 0, page_size - 1, 16, 0); -+ do_test (0, 0, page_size - 1, 16, 1); -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -Index: glibc-2.12-2-gc4ccff1/string/test-strncasecmp.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/string/test-strncasecmp.c -@@ -0,0 +1,349 @@ -+/* Test and measure strncasecmp functions. -+ Copyright (C) 1999, 2002, 2003, 2005, 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Jakub Jelinek jakub@redhat.com, 1999. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include <ctype.h> -+#define TEST_MAIN -+#include "test-string.h" -+ -+typedef int (*proto_t) (const char *, const char *, size_t); -+static int simple_strncasecmp (const char *, const char *, size_t); -+static int stupid_strncasecmp (const char *, const char *, size_t); -+ -+IMPL (stupid_strncasecmp, 0) -+IMPL (simple_strncasecmp, 0) -+IMPL (strncasecmp, 1) -+ -+static int -+simple_strncasecmp (const char *s1, const char *s2, size_t n) -+{ -+ int ret; -+ -+ if (n == 0) -+ return 0; -+ -+ while ((ret = ((unsigned char) tolower (*s1) -+ - (unsigned char) tolower (*s2))) == 0 -+ && *s1++) -+ { -+ if (--n == 0) -+ return 0; -+ ++s2; -+ } -+ return ret; -+} -+ -+static int -+stupid_strncasecmp (const char *s1, const char *s2, size_t max) -+{ -+ size_t ns1 = strlen (s1) + 1; -+ size_t ns2 = strlen (s2) + 1; -+ size_t n = ns1 < ns2 ? ns1 : ns2; -+ if (n > max) -+ n = max; -+ int ret = 0; -+ -+ while (n--) -+ { -+ if ((ret = ((unsigned char) tolower (*s1) -+ - (unsigned char) tolower (*s2))) != 0) -+ break; -+ ++s1; -+ ++s2; -+ } -+ return ret; -+} -+ -+static int -+check_result (impl_t *impl, const char *s1, const char *s2, size_t n, -+ int exp_result) -+{ -+ int result = CALL (impl, s1, s2, n); -+ if ((exp_result == 0 && result != 0) -+ || (exp_result < 0 && result >= 0) -+ || (exp_result > 0 && result <= 0)) -+ { -+ error (0, 0, "Wrong result in function %s %d %d", impl->name, -+ result, exp_result); -+ ret = 1; -+ return -1; -+ } -+ -+ return 0; -+} -+ -+static void -+do_one_test (impl_t *impl, const char *s1, const char *s2, size_t n, -+ int exp_result) -+{ -+ if (check_result (impl, s1, s2, n, exp_result) < 0) -+ return; -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s1, s2, n); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align1, size_t align2, size_t n, size_t len, int max_char, -+ int exp_result) -+{ -+ size_t i; -+ char *s1, *s2; -+ -+ if (len == 0) -+ return; -+ -+ align1 &= 7; -+ if (align1 + len + 1 >= page_size) -+ return; -+ -+ align2 &= 7; -+ if (align2 + len + 1 >= page_size) -+ return; -+ -+ s1 = (char *) (buf1 + align1); -+ s2 = (char *) (buf2 + align2); -+ -+ for (i = 0; i < len; i++) -+ { -+ s1[i] = toupper (1 + 23 * i % max_char); -+ s2[i] = tolower (s1[i]); -+ } -+ -+ s1[len] = s2[len] = 0; -+ s1[len + 1] = 23; -+ s2[len + 1] = 24 + exp_result; -+ if ((s2[len - 1] == 'z' && exp_result == -1) -+ || (s2[len - 1] == 'a' && exp_result == 1)) -+ s1[len - 1] += exp_result; -+ else -+ s2[len - 1] -= exp_result; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s1, s2, n, exp_result); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+static void -+do_random_tests (void) -+{ -+ size_t i, j, n, align1, align2, pos, len1, len2; -+ int result; -+ long r; -+ unsigned char *p1 = buf1 + page_size - 512; -+ unsigned char *p2 = buf2 + page_size - 512; -+ -+ for (n = 0; n < ITERATIONS; n++) -+ { -+ align1 = random () & 31; -+ if (random () & 1) -+ align2 = random () & 31; -+ else -+ align2 = align1 + (random () & 24); -+ pos = random () & 511; -+ j = align1 > align2 ? align1 : align2; -+ if (pos + j >= 511) -+ pos = 510 - j - (random () & 7); -+ len1 = random () & 511; -+ if (pos >= len1 && (random () & 1)) -+ len1 = pos + (random () & 7); -+ if (len1 + j >= 512) -+ len1 = 511 - j - (random () & 7); -+ if (pos >= len1) -+ len2 = len1; -+ else -+ len2 = len1 + (len1 != 511 - j ? random () % (511 - j - len1) : 0); -+ j = (pos > len2 ? pos : len2) + align1 + 64; -+ if (j > 512) -+ j = 512; -+ for (i = 0; i < j; ++i) -+ { -+ p1[i] = tolower (random () & 255); -+ if (i < len1 + align1 && !p1[i]) -+ { -+ p1[i] = tolower (random () & 255); -+ if (!p1[i]) -+ p1[i] = tolower (1 + (random () & 127)); -+ } -+ } -+ for (i = 0; i < j; ++i) -+ { -+ p2[i] = toupper (random () & 255); -+ if (i < len2 + align2 && !p2[i]) -+ { -+ p2[i] = toupper (random () & 255); -+ if (!p2[i]) -+ toupper (p2[i] = 1 + (random () & 127)); -+ } -+ } -+ -+ result = 0; -+ memcpy (p2 + align2, p1 + align1, pos); -+ if (pos < len1) -+ { -+ if (tolower (p2[align2 + pos]) == p1[align1 + pos]) -+ { -+ p2[align2 + pos] = toupper (random () & 255); -+ if (tolower (p2[align2 + pos]) == p1[align1 + pos]) -+ p2[align2 + pos] = toupper (p1[align1 + pos] -+ + 3 + (random () & 127)); -+ } -+ -+ if (p1[align1 + pos] < tolower (p2[align2 + pos])) -+ result = -1; -+ else -+ result = 1; -+ } -+ p1[len1 + align1] = 0; -+ p2[len2 + align2] = 0; -+ -+ FOR_EACH_IMPL (impl, 1) -+ { -+ r = CALL (impl, (char *) (p1 + align1), (char *) (p2 + align2), -+ pos + 1 + (random () & 255)); -+ /* Test whether on 64-bit architectures where ABI requires -+ callee to promote has the promotion been done. */ -+ asm ("" : "=g" (r) : "0" (r)); -+ if ((r == 0 && result) -+ || (r < 0 && result >= 0) -+ || (r > 0 && result <= 0)) -+ { -+ error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd) %ld != %d, p1 %p p2 %p", -+ n, impl->name, align1, align2, len1, len2, pos, r, result, p1, p2); -+ ret = 1; -+ } -+ } -+ } -+} -+ -+ -+static void -+check1 (void) -+{ -+ static char cp [4096+16] __attribute__ ((aligned(4096))); -+ static char gotrel[4096] __attribute__ ((aligned(4096))); -+ char *s1 = cp + 0xffa; -+ char *s2 = gotrel + 0xcbe; -+ int exp_result; -+ size_t n = 6; -+ -+ strcpy (s1, "gottpoff"); -+ strcpy (s2, "GOTPLT"); -+ -+ exp_result = simple_strncasecmp (s1, s2, n); -+ FOR_EACH_IMPL (impl, 0) -+ check_result (impl, s1, s2, n, exp_result); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ check1 (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 1; i < 16; ++i) -+ { -+ do_test (i, i, i - 1, i, 127, 0); -+ -+ do_test (i, i, i, i, 127, 0); -+ do_test (i, i, i, i, 127, 1); -+ do_test (i, i, i, i, 127, -1); -+ -+ do_test (i, i, i + 1, i, 127, 0); -+ do_test (i, i, i + 1, i, 127, 1); -+ do_test (i, i, i + 1, i, 127, -1); -+ } -+ -+ for (i = 1; i < 10; ++i) -+ { -+ do_test (0, 0, (2 << i) - 1, 2 << i, 127, 0); -+ do_test (0, 0, 2 << i, 2 << i, 254, 0); -+ do_test (0, 0, (2 << i) + 1, 2 << i, 127, 0); -+ -+ do_test (0, 0, (2 << i) + 1, 2 << i, 254, 0); -+ -+ do_test (0, 0, 2 << i, 2 << i, 127, 1); -+ do_test (0, 0, (2 << i) + 10, 2 << i, 127, 1); -+ -+ do_test (0, 0, 2 << i, 2 << i, 254, 1); -+ do_test (0, 0, (2 << i) + 10, 2 << i, 254, 1); -+ -+ do_test (0, 0, 2 << i, 2 << i, 127, -1); -+ do_test (0, 0, (2 << i) + 10, 2 << i, 127, -1); -+ -+ do_test (0, 0, 2 << i, 2 << i, 254, -1); -+ do_test (0, 0, (2 << i) + 10, 2 << i, 254, -1); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, 2 * i, (8 << i) - 1, 8 << i, 127, 0); -+ do_test (i, 2 * i, 8 << i, 8 << i, 127, 0); -+ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, 0); -+ -+ do_test (2 * i, i, (8 << i) - 1, 8 << i, 254, 0); -+ do_test (2 * i, i, 8 << i, 8 << i, 254, 0); -+ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, 0); -+ -+ do_test (i, 2 * i, 8 << i, 8 << i, 127, 1); -+ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, 1); -+ -+ do_test (2 * i, i, 8 << i, 8 << i, 254, 1); -+ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, 1); -+ -+ do_test (i, 2 * i, 8 << i, 8 << i, 127, -1); -+ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, -1); -+ -+ do_test (2 * i, i, 8 << i, 8 << i, 254, -1); -+ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, -1); -+ } -+ -+ do_random_tests (); -+ return ret; -+} -+ -+#include "../test-skeleton.c" -Index: glibc-2.12-2-gc4ccff1/string/test-strnlen.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/string/test-strnlen.c -@@ -0,0 +1,197 @@ -+/* Test and measure strlen functions. -+ Copyright (C) 1999, 2002, 2003, 2005, 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Jakub Jelinek jakub@redhat.com, 1999. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#define TEST_MAIN -+#include "test-string.h" -+ -+typedef size_t (*proto_t) (const char *, size_t); -+size_t simple_strnlen (const char *, size_t); -+ -+IMPL (simple_strnlen, 0) -+IMPL (strnlen, 1) -+ -+size_t -+simple_strnlen (const char *s, size_t maxlen) -+{ -+ size_t i; -+ -+ for (i = 0; i < maxlen && s[i]; ++i); -+ return i; -+} -+ -+static void -+do_one_test (impl_t *impl, const char *s, size_t maxlen, size_t exp_len) -+{ -+ size_t len = CALL (impl, s, maxlen); -+ if (len != exp_len) -+ { -+ error (0, 0, "Wrong result in function %s %zd %zd", impl->name, -+ len, exp_len); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s, maxlen); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align, size_t len, size_t maxlen, int max_char) -+{ -+ size_t i; -+ -+ align &= 7; -+ if (align + len >= page_size) -+ return; -+ -+ for (i = 0; i < len; ++i) -+ buf1[align + i] = 1 + 7 * i % max_char; -+ buf1[align + len] = 0; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd:", len, align); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, (char *) (buf1 + align), maxlen, MIN (len, maxlen)); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+static void -+do_random_tests (void) -+{ -+ size_t i, j, n, align, len; -+ unsigned char *p = buf1 + page_size - 512; -+ -+ for (n = 0; n < ITERATIONS; n++) -+ { -+ align = random () & 15; -+ len = random () & 511; -+ if (len + align > 510) -+ len = 511 - align - (random () & 7); -+ j = len + align + 64; -+ if (j > 512) -+ j = 512; -+ -+ for (i = 0; i < j; i++) -+ { -+ if (i == len + align) -+ p[i] = 0; -+ else -+ { -+ p[i] = random () & 255; -+ if (i >= align && i < len + align && !p[i]) -+ p[i] = (random () & 127) + 1; -+ } -+ } -+ -+ FOR_EACH_IMPL (impl, 1) -+ { -+ if (len > 0 -+ && CALL (impl, (char *) (p + align), len - 1) != len - 1) -+ { -+ error (0, 0, "Iteration %zd (limited) - wrong result in function %s (%zd) %zd != %zd, p %p", -+ n, impl->name, align, -+ CALL (impl, (char *) (p + align), len - 1), len - 1, p); -+ ret = 1; -+ } -+ if (CALL (impl, (char *) (p + align), len) != len) -+ { -+ error (0, 0, "Iteration %zd (exact) - wrong result in function %s (%zd) %zd != %zd, p %p", -+ n, impl->name, align, -+ CALL (impl, (char *) (p + align), len), len, p); -+ ret = 1; -+ } -+ if (CALL (impl, (char *) (p + align), len + 1) != len) -+ { -+ error (0, 0, "Iteration %zd (long) - wrong result in function %s (%zd) %zd != %zd, p %p", -+ n, impl->name, align, -+ CALL (impl, (char *) (p + align), len + 1), len, p); -+ ret = 1; -+ } -+ } -+ } -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%20s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, i, i - 1, 127); -+ do_test (0, i, i, 127); -+ do_test (0, i, i + 1, 127); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, i, i - 1, 127); -+ do_test (i, i, i, 127); -+ do_test (i, i, i + 1, 127); -+ } -+ -+ for (i = 2; i <= 10; ++i) -+ { -+ do_test (0, 1 << i, 5000, 127); -+ do_test (1, 1 << i, 5000, 127); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ do_test (0, i, 5000, 255); -+ -+ for (i = 1; i < 8; ++i) -+ do_test (i, i, 5000, 255); -+ -+ for (i = 2; i <= 10; ++i) -+ { -+ do_test (0, 1 << i, 5000, 255); -+ do_test (1, 1 << i, 5000, 255); -+ } -+ -+ do_random_tests (); -+ return ret; -+} -+ -+#include "../test-skeleton.c" -Index: glibc-2.12-2-gc4ccff1/string/test-strstr.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/string/test-strstr.c -@@ -0,0 +1,194 @@ -+/* Test and measure strstr functions. -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Ulrich Drepper drepper@redhat.com, 2010. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#define TEST_MAIN -+#include "test-string.h" -+ -+ -+#define STRSTR simple_strstr -+#include "strstr.c" -+ -+ -+static char * -+stupid_strstr (const char *s1, const char *s2) -+{ -+ ssize_t s1len = strlen (s1); -+ ssize_t s2len = strlen (s2); -+ -+ if (s2len > s1len) -+ return NULL; -+ -+ for (ssize_t i = 0; i <= s1len - s2len; ++i) -+ { -+ size_t j; -+ for (j = 0; j < s2len; ++j) -+ if (s1[i + j] != s2[j]) -+ break; -+ if (j == s2len) -+ return (char *) s1 + i; -+ } -+ -+ return NULL; -+} -+ -+ -+typedef char *(*proto_t) (const char *, const char *); -+ -+IMPL (stupid_strstr, 0) -+IMPL (simple_strstr, 0) -+IMPL (strstr, 1) -+ -+ -+static void -+do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) -+{ -+ char *result = CALL (impl, s1, s2); -+ if (result != exp_result) -+ { -+ error (0, 0, "Wrong result in function %s %s %s", impl->name, -+ result, exp_result); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~(hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s1, s2); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+ -+static void -+do_test (size_t align1, size_t align2, size_t len1, size_t len2, -+ int fail) -+{ -+ char *s1 = (char *) (buf1 + align1); -+ char *s2 = (char *) (buf2 + align2); -+ -+ static const char d[] = "1234567890abcdef"; -+#define dl (sizeof (d) - 1) -+ char *ss2 = s2; -+ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0) -+ { -+ size_t t = l > dl ? dl : l; -+ ss2 = mempcpy (ss2, d, t); -+ } -+ s2[len2] = '\0'; -+ -+ if (fail) -+ { -+ char *ss1 = s1; -+ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0) -+ { -+ size_t t = l > dl ? dl : l; -+ memcpy (ss1, d, t); -+ ++ss1[len2 > 7 ? 7 : len2 - 1]; -+ ss1 += t; -+ } -+ } -+ else -+ { -+ memset (s1, '0', len1); -+ memcpy (s1 + len1 - len2, s2, len2); -+ } -+ s1[len1] = '\0'; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", -+ len1, len2, align1, align2, fail ? "fail" : "found"); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+ -+static int -+test_main (void) -+{ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (size_t klen = 2; klen < 32; ++klen) -+ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen) -+ { -+ do_test (0, 0, hlen, klen, 0); -+ do_test (0, 0, hlen, klen, 1); -+ do_test (0, 3, hlen, klen, 0); -+ do_test (0, 3, hlen, klen, 1); -+ do_test (0, 9, hlen, klen, 0); -+ do_test (0, 9, hlen, klen, 1); -+ do_test (0, 15, hlen, klen, 0); -+ do_test (0, 15, hlen, klen, 1); -+ -+ do_test (3, 0, hlen, klen, 0); -+ do_test (3, 0, hlen, klen, 1); -+ do_test (3, 3, hlen, klen, 0); -+ do_test (3, 3, hlen, klen, 1); -+ do_test (3, 9, hlen, klen, 0); -+ do_test (3, 9, hlen, klen, 1); -+ do_test (3, 15, hlen, klen, 0); -+ do_test (3, 15, hlen, klen, 1); -+ -+ do_test (9, 0, hlen, klen, 0); -+ do_test (9, 0, hlen, klen, 1); -+ do_test (9, 3, hlen, klen, 0); -+ do_test (9, 3, hlen, klen, 1); -+ do_test (9, 9, hlen, klen, 0); -+ do_test (9, 9, hlen, klen, 1); -+ do_test (9, 15, hlen, klen, 0); -+ do_test (9, 15, hlen, klen, 1); -+ -+ do_test (15, 0, hlen, klen, 0); -+ do_test (15, 0, hlen, klen, 1); -+ do_test (15, 3, hlen, klen, 0); -+ do_test (15, 3, hlen, klen, 1); -+ do_test (15, 9, hlen, klen, 0); -+ do_test (15, 9, hlen, klen, 1); -+ do_test (15, 15, hlen, klen, 0); -+ do_test (15, 15, hlen, klen, 1); -+ } -+ -+ do_test (0, 0, page_size - 1, 16, 0); -+ do_test (0, 0, page_size - 1, 16, 1); -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -Index: glibc-2.12-2-gc4ccff1/string/tester.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/tester.c -+++ glibc-2.12-2-gc4ccff1/string/tester.c -@@ -441,20 +441,21 @@ test_strnlen (void) - check (strnlen ("", 10) == 0, 1); /* Empty. */ - check (strnlen ("a", 10) == 1, 2); /* Single char. */ - check (strnlen ("abcd", 10) == 4, 3); /* Multiple chars. */ -- check (strnlen ("foo", (size_t)-1) == 3, 4); /* limits of n. */ -+ check (strnlen ("foo", (size_t) -1) == 3, 4); /* limits of n. */ -+ check (strnlen ("abcd", 0) == 0, 5); /* Restricted. */ -+ check (strnlen ("abcd", 1) == 1, 6); /* Restricted. */ -+ check (strnlen ("abcd", 2) == 2, 7); /* Restricted. */ -+ check (strnlen ("abcd", 3) == 3, 8); /* Restricted. */ -+ check (strnlen ("abcd", 4) == 4, 9); /* Restricted. */ - -- { -- char buf[4096]; -- int i; -- char *p; -- for (i=0; i < 0x100; i++) -- { -- p = (char *) ((unsigned long int)(buf + 0xff) & ~0xff) + i; -- strcpy (p, "OK"); -- strcpy (p+3, "BAD/WRONG"); -- check (strnlen (p, 100) == 2, 5+i); -- } -- } -+ char buf[4096]; -+ for (int i = 0; i < 0x100; ++i) -+ { -+ char *p = (char *) ((unsigned long int)(buf + 0xff) & ~0xff) + i; -+ strcpy (p, "OK"); -+ strcpy (p + 3, "BAD/WRONG"); -+ check (strnlen (p, 100) == 2, 10 + i); -+ } - } - - static void -Index: glibc-2.12-2-gc4ccff1/string/tst-strlen.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/tst-strlen.c -+++ glibc-2.12-2-gc4ccff1/string/tst-strlen.c -@@ -31,11 +31,21 @@ main(int argc, char *argv[]) - buf[words * 4 + 3] = (last & 8) != 0 ? 'e' : '\0'; - buf[words * 4 + 4] = '\0'; - -- if (strlen (buf) != words * 4 + lens[last] -- || strnlen (buf, -1) != words * 4 + lens[last]) -+ if (strlen (buf) != words * 4 + lens[last]) - { -- printf ("failed for base=%Zu, words=%Zu, and last=%Zu\n", -- base, words, last); -+ printf ("\ -+strlen failed for base=%Zu, words=%Zu, and last=%Zu (is %zd, expected %zd)\n", -+ base, words, last, -+ strlen (buf), words * 4 + lens[last]); -+ return 1; -+ } -+ -+ if (strnlen (buf, -1) != words * 4 + lens[last]) -+ { -+ printf ("\ -+strnlen failed for base=%Zu, words=%Zu, and last=%Zu (is %zd, expected %zd)\n", -+ base, words, last, -+ strnlen (buf, -1), words * 4 + lens[last]); - return 1; - } - } -Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/i386/i686/multiarch/Makefile -+++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/Makefile -@@ -9,7 +9,7 @@ sysdep_routines += bzero-sse2 memset-sse - memmove-ssse3-rep bcopy-ssse3 bcopy-ssse3-rep \ - memset-sse2-rep bzero-sse2-rep strcmp-ssse3 \ - strcmp-sse4 strncmp-c strncmp-ssse3 strncmp-sse4 \ -- memcmp-ssse3 memcmp-sse4 -+ memcmp-ssse3 memcmp-sse4 strcasestr-nonascii - ifeq (yes,$(config-cflags-sse4)) - sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c - CFLAGS-strcspn-c.c += -msse4 -@@ -17,6 +17,7 @@ CFLAGS-strpbrk-c.c += -msse4 - CFLAGS-strspn-c.c += -msse4 - CFLAGS-strstr.c += -msse4 - CFLAGS-strcasestr.c += -msse4 -+CFLAGS-strcasestr-nonascii.c += -msse4 - endif - endif - -Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strcasestr-nonascii.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strcasestr-nonascii.c -@@ -0,0 +1,2 @@ -+#include <nmmintrin.h> -+#include <sysdeps/x86_64/multiarch/strcasestr-nonascii.c> -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/Makefile -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/Makefile -@@ -12,7 +12,8 @@ sysdep_routines += _mcount - endif - - ifeq ($(subdir),string) --sysdep_routines += cacheinfo -+sysdep_routines += cacheinfo strcasecmp_l-nonascii strncase_l-nonascii -+gen-as-const-headers += locale-defines.sym - endif - - ifeq ($(subdir),elf) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/locale-defines.sym -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/locale-defines.sym -@@ -0,0 +1,11 @@ -+#include <locale/localeinfo.h> -+#include <langinfo.h> -+#include <stddef.h> -+ -+-- -+ -+LOCALE_T___LOCALES offsetof (struct __locale_struct, __locales) -+LC_CTYPE -+_NL_CTYPE_NONASCII_CASE -+LOCALE_DATA_VALUES offsetof (struct __locale_data, values) -+SIZEOF_VALUES sizeof (((struct __locale_data *) 0)->values[0]) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/Makefile -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/Makefile -@@ -5,7 +5,9 @@ endif - - ifeq ($(subdir),string) - sysdep_routines += stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \ -- strend-sse4 memcmp-sse4 -+ strend-sse4 memcmp-sse4 \ -+ strcasestr-nonascii strcasecmp_l-ssse3 \ -+ strncase_l-ssse3 - ifeq (yes,$(config-cflags-sse4)) - sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c - CFLAGS-strcspn-c.c += -msse4 -@@ -13,5 +15,6 @@ CFLAGS-strpbrk-c.c += -msse4 - CFLAGS-strspn-c.c += -msse4 - CFLAGS-strstr.c += -msse4 - CFLAGS-strcasestr.c += -msse4 -+CFLAGS-strcasestr-nonascii.c += -msse4 - endif - endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S -@@ -0,0 +1,6 @@ -+#define USE_SSSE3 1 -+#define USE_AS_STRCASECMP_L -+#define NO_NOLOCALE_ALIAS -+#define STRCMP __strcasecmp_l_ssse3 -+#define __strcasecmp __strcasecmp_ssse3 -+#include "../strcmp.S" -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasecmp_l.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasecmp_l.S -@@ -0,0 +1,6 @@ -+#define STRCMP __strcasecmp_l -+#define USE_AS_STRCASECMP_L -+#include "strcmp.S" -+ -+weak_alias (__strcasecmp_l, strcasecmp_l) -+libc_hidden_def (strcasecmp_l) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasestr-nonascii.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasestr-nonascii.c -@@ -0,0 +1,50 @@ -+/* strstr with SSE4.2 intrinsics -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+# include <ctype.h> -+ -+ -+/* Similar to __m128i_strloadu. Convert to lower case for none-POSIX/C -+ locale. */ -+static inline __m128i -+__m128i_strloadu_tolower (const unsigned char *p) -+{ -+ union -+ { -+ char b[16]; -+ __m128i x; -+ } u; -+ -+ for (int i = 0; i < 16; ++i) -+ if (p[i] == 0) -+ { -+ u.b[i] = 0; -+ break; -+ } -+ else -+ u.b[i] = tolower (p[i]); -+ -+ return u.x; -+} -+ -+ -+#define STRCASESTR_NONASCII -+#define USE_AS_STRCASESTR -+#define STRSTR_SSE42 __strcasestr_sse42_nonascii -+#include "strstr.c" -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasestr.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strcasestr.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasestr.c -@@ -1,3 +1,7 @@ -+extern char *__strcasestr_sse42_nonascii (const unsigned char *s1, -+ const unsigned char *s2) -+ attribute_hidden; -+ - #define USE_AS_STRCASESTR - #define STRSTR_SSE42 __strcasestr_sse42 - #include "strstr.c" -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strcmp.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S -@@ -24,7 +24,7 @@ - #ifdef USE_AS_STRNCMP - /* Since the counter, %r11, is unsigned, we branch to strcmp_exitz - if the new counter > the old one or is 0. */ --#define UPDATE_STRNCMP_COUNTER \ -+# define UPDATE_STRNCMP_COUNTER \ - /* calculate left number to compare */ \ - lea -16(%rcx, %r11), %r9; \ - cmp %r9, %r11; \ -@@ -33,23 +33,50 @@ - je LABEL(strcmp_exitz_sse4_2); \ - mov %r9, %r11 - --#define STRCMP_SSE42 __strncmp_sse42 --#define STRCMP_SSSE3 __strncmp_ssse3 --#define STRCMP_SSE2 __strncmp_sse2 --#define __GI_STRCMP __GI_strncmp -+# define STRCMP_SSE42 __strncmp_sse42 -+# define STRCMP_SSSE3 __strncmp_ssse3 -+# define STRCMP_SSE2 __strncmp_sse2 -+# define __GI_STRCMP __GI_strncmp -+#elif defined USE_AS_STRCASECMP_L -+# include "locale-defines.h" -+ -+# define UPDATE_STRNCMP_COUNTER -+ -+# define STRCMP_SSE42 __strcasecmp_l_sse42 -+# define STRCMP_SSSE3 __strcasecmp_l_ssse3 -+# define STRCMP_SSE2 __strcasecmp_l_sse2 -+# define __GI_STRCMP __GI___strcasecmp_l -+#elif defined USE_AS_STRNCASECMP_L -+# include "locale-defines.h" -+ -+/* Since the counter, %r11, is unsigned, we branch to strcmp_exitz -+ if the new counter > the old one or is 0. */ -+# define UPDATE_STRNCMP_COUNTER \ -+ /* calculate left number to compare */ \ -+ lea -16(%rcx, %r11), %r9; \ -+ cmp %r9, %r11; \ -+ jb LABEL(strcmp_exitz_sse4_2); \ -+ test %r9, %r9; \ -+ je LABEL(strcmp_exitz_sse4_2); \ -+ mov %r9, %r11 -+ -+# define STRCMP_SSE42 __strncasecmp_l_sse42 -+# define STRCMP_SSSE3 __strncasecmp_l_ssse3 -+# define STRCMP_SSE2 __strncasecmp_l_sse2 -+# define __GI_STRCMP __GI___strncasecmp_l - #else --#define UPDATE_STRNCMP_COUNTER --#ifndef STRCMP --#define STRCMP strcmp --#define STRCMP_SSE42 __strcmp_sse42 --#define STRCMP_SSSE3 __strcmp_ssse3 --#define STRCMP_SSE2 __strcmp_sse2 --#define __GI_STRCMP __GI_strcmp --#endif -+# define UPDATE_STRNCMP_COUNTER -+# ifndef STRCMP -+# define STRCMP strcmp -+# define STRCMP_SSE42 __strcmp_sse42 -+# define STRCMP_SSSE3 __strcmp_ssse3 -+# define STRCMP_SSE2 __strcmp_sse2 -+# define __GI_STRCMP __GI_strcmp -+# endif - #endif - - #ifndef LABEL --#define LABEL(l) L(l) -+# define LABEL(l) L(l) - #endif - - /* Define multiple versions only for the definition in libc. Don't -@@ -73,6 +100,43 @@ ENTRY(STRCMP) - 2: ret - END(STRCMP) - -+# ifdef USE_AS_STRCASECMP_L -+ENTRY(__strcasecmp) -+ .type __strcasecmp, @gnu_indirect_function -+ cmpl $0, __cpu_features+KIND_OFFSET(%rip) -+ jne 1f -+ call __init_cpu_features -+1: -+ leaq __strcasecmp_sse42(%rip), %rax -+ testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip) -+ jnz 2f -+ leaq __strcasecmp_ssse3(%rip), %rax -+ testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip) -+ jnz 2f -+ leaq __strcasecmp_sse2(%rip), %rax -+2: ret -+END(__strcasecmp) -+weak_alias (__strcasecmp, strcasecmp) -+# endif -+# ifdef USE_AS_STRNCASECMP_L -+ENTRY(__strncasecmp) -+ .type __strncasecmp, @gnu_indirect_function -+ cmpl $0, __cpu_features+KIND_OFFSET(%rip) -+ jne 1f -+ call __init_cpu_features -+1: -+ leaq __strncasecmp_sse42(%rip), %rax -+ testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip) -+ jnz 2f -+ leaq __strncasecmp_ssse3(%rip), %rax -+ testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip) -+ jnz 2f -+ leaq __strncasecmp_sse2(%rip), %rax -+2: ret -+END(__strncasecmp) -+weak_alias (__strncasecmp, strncasecmp) -+# endif -+ - /* We use 0x1a: - _SIDD_SBYTE_OPS - | _SIDD_CMP_EQUAL_EACH -@@ -101,8 +165,31 @@ END(STRCMP) - - /* Put all SSE 4.2 functions together. */ - .section .text.sse4.2,"ax",@progbits -- .align 16 -+ .align 16 - .type STRCMP_SSE42, @function -+# ifdef USE_AS_STRCASECMP_L -+ENTRY (__strcasecmp_sse42) -+ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax -+ movq %fs:(%rax),%rdx -+ -+ // XXX 5 byte should be before the function -+ /* 5-byte NOP. */ -+ .byte 0x0f,0x1f,0x44,0x00,0x00 -+END (__strcasecmp_sse42) -+ /* FALLTHROUGH to strcasecmp_l. */ -+# endif -+# ifdef USE_AS_STRNCASECMP_L -+ENTRY (__strncasecmp_sse42) -+ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax -+ movq %fs:(%rax),%rcx -+ -+ // XXX 5 byte should be before the function -+ /* 5-byte NOP. */ -+ .byte 0x0f,0x1f,0x44,0x00,0x00 -+END (__strncasecmp_sse42) -+ /* FALLTHROUGH to strncasecmp_l. */ -+# endif -+ - STRCMP_SSE42: - cfi_startproc - CALL_MCOUNT -@@ -110,24 +197,87 @@ STRCMP_SSE42: - /* - * This implementation uses SSE to compare up to 16 bytes at a time. - */ --#ifdef USE_AS_STRNCMP -+# ifdef USE_AS_STRCASECMP_L -+ /* We have to fall back on the C implementation for locales -+ with encodings not matching ASCII for single bytes. */ -+# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0 -+ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rdx), %rax -+# else -+ movq (%rdx), %rax -+# endif -+ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) -+ jne __strcasecmp_l_nonascii -+# endif -+# ifdef USE_AS_STRNCASECMP_L -+ /* We have to fall back on the C implementation for locales -+ with encodings not matching ASCII for single bytes. */ -+# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0 -+ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rcx), %rax -+# else -+ movq (%rcx), %rax -+# endif -+ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) -+ jne __strncasecmp_l_nonascii -+# endif -+ -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - test %rdx, %rdx - je LABEL(strcmp_exitz_sse4_2) - cmp $1, %rdx - je LABEL(Byte0_sse4_2) - mov %rdx, %r11 --#endif -+# endif - mov %esi, %ecx - mov %edi, %eax - /* Use 64bit AND here to avoid long NOP padding. */ - and $0x3f, %rcx /* rsi alignment in cache line */ - and $0x3f, %rax /* rdi alignment in cache line */ -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+ .section .rodata.cst16,"aM",@progbits,16 -+ .align 16 -+.Lbelowupper_sse4: -+ .quad 0x4040404040404040 -+ .quad 0x4040404040404040 -+.Ltopupper_sse4: -+ .quad 0x5b5b5b5b5b5b5b5b -+ .quad 0x5b5b5b5b5b5b5b5b -+.Ltouppermask_sse4: -+ .quad 0x2020202020202020 -+ .quad 0x2020202020202020 -+ .previous -+ movdqa .Lbelowupper_sse4(%rip), %xmm4 -+# define UCLOW_reg %xmm4 -+ movdqa .Ltopupper_sse4(%rip), %xmm5 -+# define UCHIGH_reg %xmm5 -+ movdqa .Ltouppermask_sse4(%rip), %xmm6 -+# define LCQWORD_reg %xmm6 -+# endif - cmp $0x30, %ecx - ja LABEL(crosscache_sse4_2)/* rsi: 16-byte load will cross cache line */ - cmp $0x30, %eax - ja LABEL(crosscache_sse4_2)/* rdi: 16-byte load will cross cache line */ - movdqu (%rdi), %xmm1 - movdqu (%rsi), %xmm2 -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+# define TOLOWER(reg1, reg2) \ -+ movdqa reg1, %xmm7; \ -+ movdqa UCHIGH_reg, %xmm8; \ -+ movdqa reg2, %xmm9; \ -+ movdqa UCHIGH_reg, %xmm10; \ -+ pcmpgtb UCLOW_reg, %xmm7; \ -+ pcmpgtb reg1, %xmm8; \ -+ pcmpgtb UCLOW_reg, %xmm9; \ -+ pcmpgtb reg2, %xmm10; \ -+ pand %xmm8, %xmm7; \ -+ pand %xmm10, %xmm9; \ -+ pand LCQWORD_reg, %xmm7; \ -+ pand LCQWORD_reg, %xmm9; \ -+ por %xmm7, reg1; \ -+ por %xmm9, reg2 -+ TOLOWER (%xmm1, %xmm2) -+# else -+# define TOLOWER(reg1, reg2) -+# endif - pxor %xmm0, %xmm0 /* clear %xmm0 for null char checks */ - pcmpeqb %xmm1, %xmm0 /* Any null chars? */ - pcmpeqb %xmm2, %xmm1 /* compare first 16 bytes for equality */ -@@ -135,10 +285,10 @@ STRCMP_SSE42: - pmovmskb %xmm1, %edx - sub $0xffff, %edx /* if first 16 bytes are same, edx == 0xffff */ - jnz LABEL(less16bytes_sse4_2)/* If not, find different value or null char */ --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2)/* finish comparision */ --#endif -+# endif - add $16, %rsi /* prepare to search next 16 bytes */ - add $16, %rdi /* prepare to search next 16 bytes */ - -@@ -180,7 +330,13 @@ LABEL(ashr_0_sse4_2): - movdqa (%rsi), %xmm1 - pxor %xmm0, %xmm0 /* clear %xmm0 for null char check */ - pcmpeqb %xmm1, %xmm0 /* Any null chars? */ -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpeqb (%rdi), %xmm1 /* compare 16 bytes for equality */ -+# else -+ movdqa (%rdi), %xmm2 -+ TOLOWER (%xmm1, %xmm2) -+ pcmpeqb %xmm2, %xmm1 /* compare 16 bytes for equality */ -+# endif - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ - pmovmskb %xmm1, %r9d - shr %cl, %edx /* adjust 0xffff for offset */ -@@ -204,44 +360,60 @@ LABEL(ashr_0_sse4_2): - .p2align 4 - LABEL(ashr_0_use_sse4_2): - movdqa (%rdi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - lea 16(%rdx), %rdx - jbe LABEL(ashr_0_use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - movdqa (%rdi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - lea 16(%rdx), %rdx - jbe LABEL(ashr_0_use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - jmp LABEL(ashr_0_use_sse4_2) - - - .p2align 4 - LABEL(ashr_0_use_sse4_2_exit): - jnc LABEL(strcmp_exitz_sse4_2) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub %rcx, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - lea -16(%rdx, %rcx), %rcx - movzbl (%rdi, %rcx), %eax - movzbl (%rsi, %rcx), %edx -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rcx -+ movl (%rcx,%rax,4), %eax -+ movl (%rcx,%rdx,4), %edx -+# endif - sub %edx, %eax - ret - - - -- - /* - * The following cases will be handled by ashr_1 -- * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case - * n(15) n -15 0(15 +(n-15) - n) ashr_1 - */ - .p2align 4 -@@ -251,6 +423,7 @@ LABEL(ashr_1_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 /* Any null chars? */ - pslldq $15, %xmm2 /* shift first string to align with second */ -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 /* compare 16 bytes for equality */ - psubb %xmm0, %xmm2 /* packed sub of comparison results*/ - pmovmskb %xmm2, %r9d -@@ -281,12 +454,18 @@ LABEL(loop_ashr_1_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $1, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -294,12 +473,18 @@ LABEL(loop_ashr_1_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $1, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_1_use_sse4_2) - -@@ -309,10 +494,10 @@ LABEL(nibble_ashr_1_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $1, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $14, %ecx - ja LABEL(loop_ashr_1_use_sse4_2) - -@@ -320,7 +505,7 @@ LABEL(nibble_ashr_1_use_sse4_2): - - /* - * The following cases will be handled by ashr_2 -- * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case - * n(14~15) n -14 1(15 +(n-14) - n) ashr_2 - */ - .p2align 4 -@@ -330,6 +515,7 @@ LABEL(ashr_2_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $14, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -360,12 +546,18 @@ LABEL(loop_ashr_2_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $2, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -373,12 +565,18 @@ LABEL(loop_ashr_2_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $2, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_2_use_sse4_2) - -@@ -388,10 +586,10 @@ LABEL(nibble_ashr_2_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $2, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $13, %ecx - ja LABEL(loop_ashr_2_use_sse4_2) - -@@ -409,6 +607,7 @@ LABEL(ashr_3_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $13, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -439,12 +638,18 @@ LABEL(loop_ashr_3_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $3, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -452,12 +657,18 @@ LABEL(loop_ashr_3_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $3, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_3_use_sse4_2) - -@@ -467,10 +678,10 @@ LABEL(nibble_ashr_3_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $3, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $12, %ecx - ja LABEL(loop_ashr_3_use_sse4_2) - -@@ -488,6 +699,7 @@ LABEL(ashr_4_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $12, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -519,12 +731,18 @@ LABEL(loop_ashr_4_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $4, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -532,12 +750,18 @@ LABEL(loop_ashr_4_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $4, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_4_use_sse4_2) - -@@ -547,10 +771,10 @@ LABEL(nibble_ashr_4_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $4, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $11, %ecx - ja LABEL(loop_ashr_4_use_sse4_2) - -@@ -559,7 +783,7 @@ LABEL(nibble_ashr_4_use_sse4_2): - /* - * The following cases will be handled by ashr_5 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(11~15) n - 11 4(15 +(n-11) - n) ashr_5 -+ * n(11~15) n - 11 4(15 +(n-11) - n) ashr_5 - */ - .p2align 4 - LABEL(ashr_5_sse4_2): -@@ -568,6 +792,7 @@ LABEL(ashr_5_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $11, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -599,12 +824,18 @@ LABEL(loop_ashr_5_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $5, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -613,12 +844,18 @@ LABEL(loop_ashr_5_use_sse4_2): - movdqa (%rdi, %rdx), %xmm0 - - palignr $5, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_5_use_sse4_2) - -@@ -628,10 +865,10 @@ LABEL(nibble_ashr_5_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $5, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $10, %ecx - ja LABEL(loop_ashr_5_use_sse4_2) - -@@ -640,7 +877,7 @@ LABEL(nibble_ashr_5_use_sse4_2): - /* - * The following cases will be handled by ashr_6 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(10~15) n - 10 5(15 +(n-10) - n) ashr_6 -+ * n(10~15) n - 10 5(15 +(n-10) - n) ashr_6 - */ - .p2align 4 - LABEL(ashr_6_sse4_2): -@@ -649,6 +886,7 @@ LABEL(ashr_6_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $10, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -680,12 +918,18 @@ LABEL(loop_ashr_6_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $6, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -693,12 +937,18 @@ LABEL(loop_ashr_6_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $6, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_6_use_sse4_2) - -@@ -708,10 +958,10 @@ LABEL(nibble_ashr_6_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $6, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $9, %ecx - ja LABEL(loop_ashr_6_use_sse4_2) - -@@ -720,7 +970,7 @@ LABEL(nibble_ashr_6_use_sse4_2): - /* - * The following cases will be handled by ashr_7 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(9~15) n - 9 6(15 +(n - 9) - n) ashr_7 -+ * n(9~15) n - 9 6(15 +(n - 9) - n) ashr_7 - */ - .p2align 4 - LABEL(ashr_7_sse4_2): -@@ -729,6 +979,7 @@ LABEL(ashr_7_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $9, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -760,12 +1011,18 @@ LABEL(loop_ashr_7_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $7, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -773,12 +1030,18 @@ LABEL(loop_ashr_7_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $7, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_7_use_sse4_2) - -@@ -788,10 +1051,10 @@ LABEL(nibble_ashr_7_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $7, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $8, %ecx - ja LABEL(loop_ashr_7_use_sse4_2) - -@@ -800,7 +1063,7 @@ LABEL(nibble_ashr_7_use_sse4_2): - /* - * The following cases will be handled by ashr_8 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(8~15) n - 8 7(15 +(n - 8) - n) ashr_8 -+ * n(8~15) n - 8 7(15 +(n - 8) - n) ashr_8 - */ - .p2align 4 - LABEL(ashr_8_sse4_2): -@@ -809,6 +1072,7 @@ LABEL(ashr_8_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $8, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -840,12 +1104,18 @@ LABEL(loop_ashr_8_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $8, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -853,12 +1123,18 @@ LABEL(loop_ashr_8_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $8, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_8_use_sse4_2) - -@@ -868,10 +1144,10 @@ LABEL(nibble_ashr_8_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $8, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $7, %ecx - ja LABEL(loop_ashr_8_use_sse4_2) - -@@ -880,7 +1156,7 @@ LABEL(nibble_ashr_8_use_sse4_2): - /* - * The following cases will be handled by ashr_9 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(7~15) n - 7 8(15 +(n - 7) - n) ashr_9 -+ * n(7~15) n - 7 8(15 +(n - 7) - n) ashr_9 - */ - .p2align 4 - LABEL(ashr_9_sse4_2): -@@ -889,6 +1165,7 @@ LABEL(ashr_9_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $7, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -921,12 +1198,18 @@ LABEL(loop_ashr_9_use_sse4_2): - movdqa (%rdi, %rdx), %xmm0 - - palignr $9, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -934,12 +1217,18 @@ LABEL(loop_ashr_9_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $9, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_9_use_sse4_2) - -@@ -949,10 +1238,10 @@ LABEL(nibble_ashr_9_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $9, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $6, %ecx - ja LABEL(loop_ashr_9_use_sse4_2) - -@@ -961,7 +1250,7 @@ LABEL(nibble_ashr_9_use_sse4_2): - /* - * The following cases will be handled by ashr_10 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(6~15) n - 6 9(15 +(n - 6) - n) ashr_10 -+ * n(6~15) n - 6 9(15 +(n - 6) - n) ashr_10 - */ - .p2align 4 - LABEL(ashr_10_sse4_2): -@@ -970,6 +1259,7 @@ LABEL(ashr_10_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $6, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1001,12 +1291,18 @@ LABEL(loop_ashr_10_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $10, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -1014,12 +1310,18 @@ LABEL(loop_ashr_10_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $10, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_10_use_sse4_2) - -@@ -1029,10 +1331,10 @@ LABEL(nibble_ashr_10_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $10, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $5, %ecx - ja LABEL(loop_ashr_10_use_sse4_2) - -@@ -1041,7 +1343,7 @@ LABEL(nibble_ashr_10_use_sse4_2): - /* - * The following cases will be handled by ashr_11 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(5~15) n - 5 10(15 +(n - 5) - n) ashr_11 -+ * n(5~15) n - 5 10(15 +(n - 5) - n) ashr_11 - */ - .p2align 4 - LABEL(ashr_11_sse4_2): -@@ -1050,6 +1352,7 @@ LABEL(ashr_11_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $5, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1081,12 +1384,18 @@ LABEL(loop_ashr_11_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $11, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -1094,12 +1403,18 @@ LABEL(loop_ashr_11_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $11, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_11_use_sse4_2) - -@@ -1109,10 +1424,10 @@ LABEL(nibble_ashr_11_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $11, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $4, %ecx - ja LABEL(loop_ashr_11_use_sse4_2) - -@@ -1121,7 +1436,7 @@ LABEL(nibble_ashr_11_use_sse4_2): - /* - * The following cases will be handled by ashr_12 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(4~15) n - 4 11(15 +(n - 4) - n) ashr_12 -+ * n(4~15) n - 4 11(15 +(n - 4) - n) ashr_12 - */ - .p2align 4 - LABEL(ashr_12_sse4_2): -@@ -1130,6 +1445,7 @@ LABEL(ashr_12_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $4, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1161,12 +1477,18 @@ LABEL(loop_ashr_12_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $12, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -1174,12 +1496,18 @@ LABEL(loop_ashr_12_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $12, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_12_use_sse4_2) - -@@ -1189,10 +1517,10 @@ LABEL(nibble_ashr_12_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $12, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $3, %ecx - ja LABEL(loop_ashr_12_use_sse4_2) - -@@ -1201,7 +1529,7 @@ LABEL(nibble_ashr_12_use_sse4_2): - /* - * The following cases will be handled by ashr_13 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(3~15) n - 3 12(15 +(n - 3) - n) ashr_13 -+ * n(3~15) n - 3 12(15 +(n - 3) - n) ashr_13 - */ - .p2align 4 - LABEL(ashr_13_sse4_2): -@@ -1210,6 +1538,7 @@ LABEL(ashr_13_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $3, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1242,12 +1571,18 @@ LABEL(loop_ashr_13_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $13, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -1255,12 +1590,18 @@ LABEL(loop_ashr_13_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $13, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_13_use_sse4_2) - -@@ -1270,10 +1611,10 @@ LABEL(nibble_ashr_13_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $13, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $2, %ecx - ja LABEL(loop_ashr_13_use_sse4_2) - -@@ -1282,7 +1623,7 @@ LABEL(nibble_ashr_13_use_sse4_2): - /* - * The following cases will be handled by ashr_14 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(2~15) n - 2 13(15 +(n - 2) - n) ashr_14 -+ * n(2~15) n - 2 13(15 +(n - 2) - n) ashr_14 - */ - .p2align 4 - LABEL(ashr_14_sse4_2): -@@ -1291,6 +1632,7 @@ LABEL(ashr_14_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $2, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1323,12 +1665,18 @@ LABEL(loop_ashr_14_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $14, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -1336,12 +1684,18 @@ LABEL(loop_ashr_14_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $14, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_14_use_sse4_2) - -@@ -1351,10 +1705,10 @@ LABEL(nibble_ashr_14_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $14, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $1, %ecx - ja LABEL(loop_ashr_14_use_sse4_2) - -@@ -1363,7 +1717,7 @@ LABEL(nibble_ashr_14_use_sse4_2): - /* - * The following cases will be handled by ashr_15 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(1~15) n - 1 14(15 +(n - 1) - n) ashr_15 -+ * n(1~15) n - 1 14(15 +(n - 1) - n) ashr_15 - */ - .p2align 4 - LABEL(ashr_15_sse4_2): -@@ -1372,6 +1726,7 @@ LABEL(ashr_15_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $1, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1406,12 +1761,18 @@ LABEL(loop_ashr_15_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $15, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -1419,12 +1780,18 @@ LABEL(loop_ashr_15_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $15, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_15_use_sse4_2) - -@@ -1434,22 +1801,28 @@ LABEL(nibble_ashr_15_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $15, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $0, %ecx - ja LABEL(loop_ashr_15_use_sse4_2) - - LABEL(nibble_ashr_use_sse4_2_exit): -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - .p2align 4 - LABEL(use_sse4_2_exit): - jnc LABEL(strcmp_exitz_sse4_2) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub %rcx, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add %rcx, %rdx - lea -16(%rdi, %r9), %rdi - movzbl (%rdi, %rdx), %eax -@@ -1458,6 +1831,12 @@ LABEL(use_sse4_2_exit): - jz LABEL(use_sse4_2_ret_sse4_2) - xchg %eax, %edx - LABEL(use_sse4_2_ret_sse4_2): -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rcx -+ movl (%rcx,%rdx,4), %edx -+ movl (%rcx,%rax,4), %eax -+# endif -+ - sub %edx, %eax - ret - -@@ -1473,13 +1852,19 @@ LABEL(ret_sse4_2): - LABEL(less16bytes_sse4_2): - bsf %rdx, %rdx /* find and store bit index in %rdx */ - --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub %rdx, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - movzbl (%rsi, %rdx), %ecx - movzbl (%rdi, %rdx), %eax - -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx -+ movl (%rdx,%rcx,4), %ecx -+ movl (%rdx,%rax,4), %eax -+# endif -+ - sub %ecx, %eax - ret - -@@ -1488,15 +1873,27 @@ LABEL(strcmp_exitz_sse4_2): - ret - - .p2align 4 -+ // XXX Same as code above - LABEL(Byte0_sse4_2): - movzx (%rsi), %ecx - movzx (%rdi), %eax - -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx -+ movl (%rdx,%rcx,4), %ecx -+ movl (%rdx,%rax,4), %eax -+# endif -+ - sub %ecx, %eax - ret - cfi_endproc - .size STRCMP_SSE42, .-STRCMP_SSE42 - -+# undef UCLOW_reg -+# undef UCHIGH_reg -+# undef LCQWORD_reg -+# undef TOLOWER -+ - /* Put all SSE 4.2 functions together. */ - .section .rodata.sse4.2,"a",@progbits - .p2align 3 -@@ -1528,6 +1925,27 @@ LABEL(unaligned_table_sse4_2): - # undef END - # define END(name) \ - cfi_endproc; .size STRCMP_SSE2, .-STRCMP_SSE2 -+ -+# ifdef USE_AS_STRCASECMP_L -+# define ENTRY2(name) \ -+ .type __strcasecmp_sse2, @function; \ -+ .align 16; \ -+ __strcasecmp_sse2: cfi_startproc; \ -+ CALL_MCOUNT -+# define END2(name) \ -+ cfi_endproc; .size __strcasecmp_sse2, .-__strcasecmp_sse2 -+# endif -+ -+# ifdef USE_AS_STRNCASECMP_L -+# define ENTRY2(name) \ -+ .type __strncasecmp_sse2, @function; \ -+ .align 16; \ -+ __strncasecmp_sse2: cfi_startproc; \ -+ CALL_MCOUNT -+# define END2(name) \ -+ cfi_endproc; .size __strncasecmp_sse2, .-__strncasecmp_sse2 -+# endif -+ - # undef libc_hidden_builtin_def - /* It doesn't make sense to send libc-internal strcmp calls through a PLT. - The speedup we get from using SSE4.2 instruction is likely eaten away -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strncase_l-ssse3.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strncase_l-ssse3.S -@@ -0,0 +1,6 @@ -+#define USE_SSSE3 1 -+#define USE_AS_STRNCASECMP_L -+#define NO_NOLOCALE_ALIAS -+#define STRCMP __strncasecmp_l_ssse3 -+#define __strncasecmp __strncasecmp_ssse3 -+#include "../strcmp.S" -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strncase_l.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strncase_l.S -@@ -0,0 +1,6 @@ -+#define STRCMP __strncasecmp_l -+#define USE_AS_STRNCASECMP_L -+#include "strcmp.S" -+ -+weak_alias (__strncasecmp_l, strncasecmp_l) -+libc_hidden_def (strncasecmp_l) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strstr.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strstr.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strstr.c -@@ -67,10 +67,10 @@ - - case ECX CFlag ZFlag SFlag - 3 X 1 0 0/1 -- 4a 0 1 0 0 -- 4b 0 1 0 1 -- 4c 0 < X 1 0 0/1 -- 5 16 0 1 0 -+ 4a 0 1 0 0 -+ 4b 0 1 0 1 -+ 4c 0 < X 1 0 0/1 -+ 5 16 0 1 0 - - 3. An initial ordered-comparison fragment match, we fix up to do - subsequent string comparison -@@ -147,8 +147,7 @@ __m128i_shift_right (__m128i value, int - If EOS occurs within less than 16B before 4KB boundary, we don't - cross to next page. */ - --static __m128i --__attribute__ ((section (".text.sse4.2"))) -+static inline __m128i - __m128i_strloadu (const unsigned char * p) - { - int offset = ((size_t) p & (16 - 1)); -@@ -164,59 +163,36 @@ __m128i_strloadu (const unsigned char * - return _mm_loadu_si128 ((__m128i *) p); - } - --#ifdef USE_AS_STRCASESTR -+#if defined USE_AS_STRCASESTR && !defined STRCASESTR_NONASCII - - /* Similar to __m128i_strloadu. Convert to lower case for POSIX/C - locale. */ -- --static __m128i --__attribute__ ((section (".text.sse4.2"))) --__m128i_strloadu_tolower_posix (const unsigned char * p) -+static inline __m128i -+__m128i_strloadu_tolower (const unsigned char *p, __m128i rangeuc, -+ __m128i u2ldelta) - { - __m128i frag = __m128i_strloadu (p); - -- /* Convert frag to lower case for POSIX/C locale. */ -- __m128i rangeuc = _mm_set_epi64x (0x0, 0x5a41); -- __m128i u2ldelta = _mm_set1_epi64x (0xe0e0e0e0e0e0e0e0); -- __m128i mask1 = _mm_cmpistrm (rangeuc, frag, 0x44); -- __m128i mask2 = _mm_blendv_epi8 (u2ldelta, frag, mask1); -- mask2 = _mm_sub_epi8 (mask2, u2ldelta); -- return _mm_blendv_epi8 (frag, mask2, mask1); -+#define UCLOW 0x4040404040404040ULL -+#define UCHIGH 0x5b5b5b5b5b5b5b5bULL -+#define LCQWORD 0x2020202020202020ULL -+ /* Compare if 'Z' > bytes. Inverted way to get a mask for byte <= 'Z'. */ -+ __m128i r2 = _mm_cmpgt_epi8 (_mm_set1_epi64x (UCHIGH), frag); -+ /* Compare if bytes are > 'A' - 1. */ -+ __m128i r1 = _mm_cmpgt_epi8 (frag, _mm_set1_epi64x (UCLOW)); -+ /* Mask byte == ff if byte(r2) <= 'Z' and byte(r1) > 'A' - 1. */ -+ __m128i mask = _mm_and_si128 (r2, r1); -+ /* Apply lowercase bit 6 mask for above mask bytes == ff. */ -+ return _mm_or_si128 (frag, _mm_and_si128 (mask, _mm_set1_epi64x (LCQWORD))); - } - --/* Similar to __m128i_strloadu. Convert to lower case for none-POSIX/C -- locale. */ -- --static __m128i --__attribute__ ((section (".text.sse4.2"))) --__m128i_strloadu_tolower (const unsigned char * p) --{ -- union -- { -- char b[16]; -- __m128i x; -- } u; -- -- for (int i = 0; i < 16; i++) -- if (p[i] == 0) -- { -- u.b[i] = 0; -- break; -- } -- else -- u.b[i] = tolower (p[i]); -- -- return u.x; --} - #endif - - /* Calculate Knuth-Morris-Pratt string searching algorithm (or KMP - algorithm) overlap for a fully populated 16B vector. - Input parameter: 1st 16Byte loaded from the reference string of a - strstr function. -- We don't use KMP algorithm if reference string is less than 16B. -- */ -- -+ We don't use KMP algorithm if reference string is less than 16B. */ - static int - __inline__ __attribute__ ((__always_inline__,)) - KMP16Bovrlap (__m128i s2) -@@ -236,7 +212,7 @@ KMP16Bovrlap (__m128i s2) - return 1; - else if (!k1) - { -- /* There are al least two ditinct char in s2. If byte 0 and 1 are -+ /* There are al least two distinct chars in s2. If byte 0 and 1 are - idential and the distinct value lies farther down, we can deduce - the next byte offset to restart full compare is least no earlier - than byte 3. */ -@@ -256,23 +232,30 @@ STRSTR_SSE42 (const unsigned char *s1, c - #define p1 s1 - const unsigned char *p2 = s2; - -- if (p2[0] == '\0') -+#ifndef STRCASESTR_NONASCII -+ if (__builtin_expect (p2[0] == '\0', 0)) - return (char *) p1; - -- if (p1[0] == '\0') -+ if (__builtin_expect (p1[0] == '\0', 0)) - return NULL; - - /* Check if p1 length is 1 byte long. */ -- if (p1[1] == '\0') -+ if (__builtin_expect (p1[1] == '\0', 0)) - return p2[1] == '\0' && CMPBYTE (p1[0], p2[0]) ? (char *) p1 : NULL; -+#endif - - #ifdef USE_AS_STRCASESTR -- __m128i (*strloadu) (const unsigned char *); -- -- if (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_NONASCII_CASE) == 0) -- strloadu = __m128i_strloadu_tolower_posix; -- else -- strloadu = __m128i_strloadu_tolower; -+# ifndef STRCASESTR_NONASCII -+ if (__builtin_expect (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_NONASCII_CASE) -+ != 0, 0)) -+ return __strcasestr_sse42_nonascii (s1, s2); -+ -+ const __m128i rangeuc = _mm_set_epi64x (0x0, 0x5a41); -+ const __m128i u2ldelta = _mm_set1_epi64x (0xe0e0e0e0e0e0e0e0); -+# define strloadu(p) __m128i_strloadu_tolower (p, rangeuc, u2ldelta) -+# else -+# define strloadu __m128i_strloadu_tolower -+# endif - #else - # define strloadu __m128i_strloadu - #endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp.S -@@ -0,0 +1 @@ -+/* In strcasecmp_l.S. */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp_l-nonascii.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp_l-nonascii.c -@@ -0,0 +1,8 @@ -+#include <string.h> -+ -+extern int __strcasecmp_l_nonascii (__const char *__s1, __const char *__s2, -+ __locale_t __loc); -+ -+#define __strcasecmp_l __strcasecmp_l_nonascii -+#define USE_IN_EXTENDED_LOCALE_MODEL 1 -+#include <string/strcasecmp.c> -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp_l.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp_l.S -@@ -0,0 +1,6 @@ -+#define STRCMP __strcasecmp_l -+#define USE_AS_STRCASECMP_L -+#include "strcmp.S" -+ -+weak_alias (__strcasecmp_l, strcasecmp_l) -+libc_hidden_def (strcasecmp_l) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcmp.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/strcmp.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcmp.S -@@ -51,6 +51,31 @@ - je LABEL(strcmp_exitz); \ - mov %r9, %r11 - -+#elif defined USE_AS_STRCASECMP_L -+# include "locale-defines.h" -+ -+/* No support for strcasecmp outside libc so far since it is not needed. */ -+# ifdef NOT_IN_lib -+# error "strcasecmp_l not implemented so far" -+# endif -+ -+# define UPDATE_STRNCMP_COUNTER -+#elif defined USE_AS_STRNCASECMP_L -+# include "locale-defines.h" -+ -+/* No support for strncasecmp outside libc so far since it is not needed. */ -+# ifdef NOT_IN_lib -+# error "strncasecmp_l not implemented so far" -+# endif -+ -+# define UPDATE_STRNCMP_COUNTER \ -+ /* calculate left number to compare */ \ -+ lea -16(%rcx, %r11), %r9; \ -+ cmp %r9, %r11; \ -+ jb LABEL(strcmp_exitz); \ -+ test %r9, %r9; \ -+ je LABEL(strcmp_exitz); \ -+ mov %r9, %r11 - #else - # define UPDATE_STRNCMP_COUNTER - # ifndef STRCMP -@@ -64,6 +89,46 @@ - .section .text.ssse3,"ax",@progbits - #endif - -+#ifdef USE_AS_STRCASECMP_L -+# ifndef ENTRY2 -+# define ENTRY2(name) ENTRY (name) -+# define END2(name) END (name) -+# endif -+ -+ENTRY2 (__strcasecmp) -+ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax -+ movq %fs:(%rax),%rdx -+ -+ // XXX 5 byte should be before the function -+ /* 5-byte NOP. */ -+ .byte 0x0f,0x1f,0x44,0x00,0x00 -+END2 (__strcasecmp) -+# ifndef NO_NOLOCALE_ALIAS -+weak_alias (__strcasecmp, strcasecmp) -+libc_hidden_def (__strcasecmp) -+# endif -+ /* FALLTHROUGH to strcasecmp_l. */ -+#elif defined USE_AS_STRNCASECMP_L -+# ifndef ENTRY2 -+# define ENTRY2(name) ENTRY (name) -+# define END2(name) END (name) -+# endif -+ -+ENTRY2 (__strncasecmp) -+ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax -+ movq %fs:(%rax),%rcx -+ -+ // XXX 5 byte should be before the function -+ /* 5-byte NOP. */ -+ .byte 0x0f,0x1f,0x44,0x00,0x00 -+END2 (__strncasecmp) -+# ifndef NO_NOLOCALE_ALIAS -+weak_alias (__strncasecmp, strncasecmp) -+libc_hidden_def (__strncasecmp) -+# endif -+ /* FALLTHROUGH to strncasecmp_l. */ -+#endif -+ - ENTRY (BP_SYM (STRCMP)) - #ifdef NOT_IN_libc - /* Simple version since we can't use SSE registers in ld.so. */ -@@ -84,10 +149,32 @@ L(neq): movl $1, %eax - ret - END (BP_SYM (STRCMP)) - #else /* NOT_IN_libc */ -+# ifdef USE_AS_STRCASECMP_L -+ /* We have to fall back on the C implementation for locales -+ with encodings not matching ASCII for single bytes. */ -+# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0 -+ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rdx), %rax -+# else -+ movq (%rdx), %rax -+# endif -+ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) -+ jne __strcasecmp_l_nonascii -+# elif defined USE_AS_STRNCASECMP_L -+ /* We have to fall back on the C implementation for locales -+ with encodings not matching ASCII for single bytes. */ -+# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0 -+ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rcx), %rax -+# else -+ movq (%rcx), %rax -+# endif -+ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) -+ jne __strncasecmp_l_nonascii -+# endif -+ - /* - * This implementation uses SSE to compare up to 16 bytes at a time. - */ --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - test %rdx, %rdx - je LABEL(strcmp_exitz) - cmp $1, %rdx -@@ -99,6 +186,26 @@ END (BP_SYM (STRCMP)) - /* Use 64bit AND here to avoid long NOP padding. */ - and $0x3f, %rcx /* rsi alignment in cache line */ - and $0x3f, %rax /* rdi alignment in cache line */ -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+ .section .rodata.cst16,"aM",@progbits,16 -+ .align 16 -+.Lbelowupper: -+ .quad 0x4040404040404040 -+ .quad 0x4040404040404040 -+.Ltopupper: -+ .quad 0x5b5b5b5b5b5b5b5b -+ .quad 0x5b5b5b5b5b5b5b5b -+.Ltouppermask: -+ .quad 0x2020202020202020 -+ .quad 0x2020202020202020 -+ .previous -+ movdqa .Lbelowupper(%rip), %xmm5 -+# define UCLOW_reg %xmm5 -+ movdqa .Ltopupper(%rip), %xmm6 -+# define UCHIGH_reg %xmm6 -+ movdqa .Ltouppermask(%rip), %xmm7 -+# define LCQWORD_reg %xmm7 -+# endif - cmp $0x30, %ecx - ja LABEL(crosscache) /* rsi: 16-byte load will cross cache line */ - cmp $0x30, %eax -@@ -107,6 +214,26 @@ END (BP_SYM (STRCMP)) - movlpd (%rsi), %xmm2 - movhpd 8(%rdi), %xmm1 - movhpd 8(%rsi), %xmm2 -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+# define TOLOWER(reg1, reg2) \ -+ movdqa reg1, %xmm8; \ -+ movdqa UCHIGH_reg, %xmm9; \ -+ movdqa reg2, %xmm10; \ -+ movdqa UCHIGH_reg, %xmm11; \ -+ pcmpgtb UCLOW_reg, %xmm8; \ -+ pcmpgtb reg1, %xmm9; \ -+ pcmpgtb UCLOW_reg, %xmm10; \ -+ pcmpgtb reg2, %xmm11; \ -+ pand %xmm9, %xmm8; \ -+ pand %xmm11, %xmm10; \ -+ pand LCQWORD_reg, %xmm8; \ -+ pand LCQWORD_reg, %xmm10; \ -+ por %xmm8, reg1; \ -+ por %xmm10, reg2 -+ TOLOWER (%xmm1, %xmm2) -+# else -+# define TOLOWER(reg1, reg2) -+# endif - pxor %xmm0, %xmm0 /* clear %xmm0 for null char checks */ - pcmpeqb %xmm1, %xmm0 /* Any null chars? */ - pcmpeqb %xmm2, %xmm1 /* compare first 16 bytes for equality */ -@@ -114,7 +241,7 @@ END (BP_SYM (STRCMP)) - pmovmskb %xmm1, %edx - sub $0xffff, %edx /* if first 16 bytes are same, edx == 0xffff */ - jnz LABEL(less16bytes) /* If not, find different value or null char */ --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) /* finish comparision */ - # endif -@@ -159,7 +286,13 @@ LABEL(ashr_0): - movdqa (%rsi), %xmm1 - pxor %xmm0, %xmm0 /* clear %xmm0 for null char check */ - pcmpeqb %xmm1, %xmm0 /* Any null chars? */ -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpeqb (%rdi), %xmm1 /* compare 16 bytes for equality */ -+# else -+ movdqa (%rdi), %xmm2 -+ TOLOWER (%xmm1, %xmm2) -+ pcmpeqb %xmm2, %xmm1 /* compare 16 bytes for equality */ -+# endif - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ - pmovmskb %xmm1, %r9d - shr %cl, %edx /* adjust 0xffff for offset */ -@@ -183,6 +316,7 @@ LABEL(ashr_0): - LABEL(loop_ashr_0): - movdqa (%rsi, %rcx), %xmm1 - movdqa (%rdi, %rcx), %xmm2 -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -191,13 +325,14 @@ LABEL(loop_ashr_0): - sub $0xffff, %edx - jnz LABEL(exit) /* mismatch or null char seen */ - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif - add $16, %rcx - movdqa (%rsi, %rcx), %xmm1 - movdqa (%rdi, %rcx), %xmm2 -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -205,7 +340,7 @@ LABEL(loop_ashr_0): - pmovmskb %xmm1, %edx - sub $0xffff, %edx - jnz LABEL(exit) --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -214,7 +349,7 @@ LABEL(loop_ashr_0): - - /* - * The following cases will be handled by ashr_1 -- * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case - * n(15) n -15 0(15 +(n-15) - n) ashr_1 - */ - .p2align 4 -@@ -224,6 +359,7 @@ LABEL(ashr_1): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 /* Any null chars? */ - pslldq $15, %xmm2 /* shift first string to align with second */ -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 /* compare 16 bytes for equality */ - psubb %xmm0, %xmm2 /* packed sub of comparison results*/ - pmovmskb %xmm2, %r9d -@@ -263,6 +399,7 @@ LABEL(gobble_ashr_1): - # else - palignr $1, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -271,7 +408,7 @@ LABEL(gobble_ashr_1): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -292,6 +429,7 @@ LABEL(gobble_ashr_1): - # else - palignr $1, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -300,7 +438,7 @@ LABEL(gobble_ashr_1): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -319,8 +457,8 @@ LABEL(nibble_ashr_1): - test $0xfffe, %edx - jnz LABEL(ashr_1_exittail) /* find null char*/ - --# ifdef USE_AS_STRNCMP -- cmp $14, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $15, %r11 - jbe LABEL(ashr_1_exittail) - # endif - -@@ -351,6 +489,7 @@ LABEL(ashr_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $14, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -390,6 +529,7 @@ LABEL(gobble_ashr_2): - # else - palignr $2, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -398,7 +538,7 @@ LABEL(gobble_ashr_2): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -420,6 +560,7 @@ LABEL(gobble_ashr_2): - # else - palignr $2, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -428,7 +569,7 @@ LABEL(gobble_ashr_2): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -444,8 +585,8 @@ LABEL(nibble_ashr_2): - test $0xfffc, %edx - jnz LABEL(ashr_2_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $13, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $14, %r11 - jbe LABEL(ashr_2_exittail) - # endif - -@@ -472,6 +613,7 @@ LABEL(ashr_3): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $13, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -512,6 +654,7 @@ LABEL(gobble_ashr_3): - # else - palignr $3, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -520,7 +663,7 @@ LABEL(gobble_ashr_3): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -542,6 +685,7 @@ LABEL(gobble_ashr_3): - # else - palignr $3, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -550,7 +694,7 @@ LABEL(gobble_ashr_3): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -566,8 +710,8 @@ LABEL(nibble_ashr_3): - test $0xfff8, %edx - jnz LABEL(ashr_3_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $12, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $13, %r11 - jbe LABEL(ashr_3_exittail) - # endif - -@@ -594,6 +738,7 @@ LABEL(ashr_4): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $12, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -634,6 +779,7 @@ LABEL(gobble_ashr_4): - # else - palignr $4, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -642,7 +788,7 @@ LABEL(gobble_ashr_4): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -664,6 +810,7 @@ LABEL(gobble_ashr_4): - # else - palignr $4, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -672,7 +819,7 @@ LABEL(gobble_ashr_4): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -688,8 +835,8 @@ LABEL(nibble_ashr_4): - test $0xfff0, %edx - jnz LABEL(ashr_4_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $11, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $12, %r11 - jbe LABEL(ashr_4_exittail) - # endif - -@@ -716,6 +863,7 @@ LABEL(ashr_5): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $11, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -756,6 +904,7 @@ LABEL(gobble_ashr_5): - # else - palignr $5, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -764,7 +913,7 @@ LABEL(gobble_ashr_5): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -786,6 +935,7 @@ LABEL(gobble_ashr_5): - # else - palignr $5, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -794,7 +944,7 @@ LABEL(gobble_ashr_5): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -810,8 +960,8 @@ LABEL(nibble_ashr_5): - test $0xffe0, %edx - jnz LABEL(ashr_5_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $10, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $11, %r11 - jbe LABEL(ashr_5_exittail) - # endif - -@@ -838,6 +988,7 @@ LABEL(ashr_6): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $10, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -878,6 +1029,7 @@ LABEL(gobble_ashr_6): - # else - palignr $6, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -886,7 +1038,7 @@ LABEL(gobble_ashr_6): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -908,6 +1060,7 @@ LABEL(gobble_ashr_6): - # else - palignr $6, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -916,7 +1069,7 @@ LABEL(gobble_ashr_6): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -932,8 +1085,8 @@ LABEL(nibble_ashr_6): - test $0xffc0, %edx - jnz LABEL(ashr_6_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $9, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $10, %r11 - jbe LABEL(ashr_6_exittail) - # endif - -@@ -960,6 +1113,7 @@ LABEL(ashr_7): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $9, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1000,6 +1154,7 @@ LABEL(gobble_ashr_7): - # else - palignr $7, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1008,7 +1163,7 @@ LABEL(gobble_ashr_7): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1030,6 +1185,7 @@ LABEL(gobble_ashr_7): - # else - palignr $7, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1038,7 +1194,7 @@ LABEL(gobble_ashr_7): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1054,8 +1210,8 @@ LABEL(nibble_ashr_7): - test $0xff80, %edx - jnz LABEL(ashr_7_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $8, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $9, %r11 - jbe LABEL(ashr_7_exittail) - # endif - -@@ -1082,6 +1238,7 @@ LABEL(ashr_8): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $8, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1122,6 +1279,7 @@ LABEL(gobble_ashr_8): - # else - palignr $8, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1130,7 +1288,7 @@ LABEL(gobble_ashr_8): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1152,6 +1310,7 @@ LABEL(gobble_ashr_8): - # else - palignr $8, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1160,7 +1319,7 @@ LABEL(gobble_ashr_8): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1176,8 +1335,8 @@ LABEL(nibble_ashr_8): - test $0xff00, %edx - jnz LABEL(ashr_8_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $7, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $8, %r11 - jbe LABEL(ashr_8_exittail) - # endif - -@@ -1204,6 +1363,7 @@ LABEL(ashr_9): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $7, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1244,6 +1404,7 @@ LABEL(gobble_ashr_9): - # else - palignr $9, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1252,7 +1413,7 @@ LABEL(gobble_ashr_9): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1274,6 +1435,7 @@ LABEL(gobble_ashr_9): - # else - palignr $9, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1282,7 +1444,7 @@ LABEL(gobble_ashr_9): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1298,8 +1460,8 @@ LABEL(nibble_ashr_9): - test $0xfe00, %edx - jnz LABEL(ashr_9_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $6, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $7, %r11 - jbe LABEL(ashr_9_exittail) - # endif - -@@ -1326,6 +1488,7 @@ LABEL(ashr_10): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $6, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1366,6 +1529,7 @@ LABEL(gobble_ashr_10): - # else - palignr $10, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1374,7 +1538,7 @@ LABEL(gobble_ashr_10): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1396,6 +1560,7 @@ LABEL(gobble_ashr_10): - # else - palignr $10, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1404,7 +1569,7 @@ LABEL(gobble_ashr_10): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1420,8 +1585,8 @@ LABEL(nibble_ashr_10): - test $0xfc00, %edx - jnz LABEL(ashr_10_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $5, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $6, %r11 - jbe LABEL(ashr_10_exittail) - # endif - -@@ -1448,6 +1613,7 @@ LABEL(ashr_11): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $5, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1488,6 +1654,7 @@ LABEL(gobble_ashr_11): - # else - palignr $11, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1496,7 +1663,7 @@ LABEL(gobble_ashr_11): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1518,6 +1685,7 @@ LABEL(gobble_ashr_11): - # else - palignr $11, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1526,7 +1694,7 @@ LABEL(gobble_ashr_11): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1542,8 +1710,8 @@ LABEL(nibble_ashr_11): - test $0xf800, %edx - jnz LABEL(ashr_11_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $4, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $5, %r11 - jbe LABEL(ashr_11_exittail) - # endif - -@@ -1570,6 +1738,7 @@ LABEL(ashr_12): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $4, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1610,6 +1779,7 @@ LABEL(gobble_ashr_12): - # else - palignr $12, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1618,7 +1788,7 @@ LABEL(gobble_ashr_12): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1640,6 +1810,7 @@ LABEL(gobble_ashr_12): - # else - palignr $12, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1648,7 +1819,7 @@ LABEL(gobble_ashr_12): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1664,8 +1835,8 @@ LABEL(nibble_ashr_12): - test $0xf000, %edx - jnz LABEL(ashr_12_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $3, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $4, %r11 - jbe LABEL(ashr_12_exittail) - # endif - -@@ -1692,6 +1863,7 @@ LABEL(ashr_13): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $3, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1732,6 +1904,7 @@ LABEL(gobble_ashr_13): - # else - palignr $13, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1740,7 +1913,7 @@ LABEL(gobble_ashr_13): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1762,6 +1935,7 @@ LABEL(gobble_ashr_13): - # else - palignr $13, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1770,7 +1944,7 @@ LABEL(gobble_ashr_13): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1786,8 +1960,8 @@ LABEL(nibble_ashr_13): - test $0xe000, %edx - jnz LABEL(ashr_13_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $2, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $3, %r11 - jbe LABEL(ashr_13_exittail) - # endif - -@@ -1814,6 +1988,7 @@ LABEL(ashr_14): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $2, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1854,6 +2029,7 @@ LABEL(gobble_ashr_14): - # else - palignr $14, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1862,7 +2038,7 @@ LABEL(gobble_ashr_14): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1884,6 +2060,7 @@ LABEL(gobble_ashr_14): - # else - palignr $14, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1892,7 +2069,7 @@ LABEL(gobble_ashr_14): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP | defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1908,8 +2085,8 @@ LABEL(nibble_ashr_14): - test $0xc000, %edx - jnz LABEL(ashr_14_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $1, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $2, %r11 - jbe LABEL(ashr_14_exittail) - # endif - -@@ -1936,6 +2113,7 @@ LABEL(ashr_15): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $1, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1978,6 +2156,7 @@ LABEL(gobble_ashr_15): - # else - palignr $15, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1986,7 +2165,7 @@ LABEL(gobble_ashr_15): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -2008,6 +2187,7 @@ LABEL(gobble_ashr_15): - # else - palignr $15, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -2016,7 +2196,7 @@ LABEL(gobble_ashr_15): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -2032,9 +2212,9 @@ LABEL(nibble_ashr_15): - test $0x8000, %edx - jnz LABEL(ashr_15_exittail) - --# ifdef USE_AS_STRNCMP -- test %r11, %r11 -- je LABEL(ashr_15_exittail) -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmpq $1, %r11 -+ jbe LABEL(ashr_15_exittail) - # endif - - pxor %xmm0, %xmm0 -@@ -2049,6 +2229,7 @@ LABEL(ashr_15_exittail): - - .p2align 4 - LABEL(aftertail): -+ TOLOWER (%xmm1, %xmm3) - pcmpeqb %xmm3, %xmm1 - psubb %xmm0, %xmm1 - pmovmskb %xmm1, %edx -@@ -2069,13 +2250,19 @@ LABEL(ret): - LABEL(less16bytes): - bsf %rdx, %rdx /* find and store bit index in %rdx */ - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub %rdx, %r11 - jbe LABEL(strcmp_exitz) - # endif - movzbl (%rsi, %rdx), %ecx - movzbl (%rdi, %rdx), %eax - -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx -+ movl (%rdx,%rcx,4), %ecx -+ movl (%rdx,%rax,4), %eax -+# endif -+ - sub %ecx, %eax - ret - -@@ -2088,6 +2275,12 @@ LABEL(Byte0): - movzx (%rsi), %ecx - movzx (%rdi), %eax - -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx -+ movl (%rdx,%rcx,4), %ecx -+ movl (%rdx,%rax,4), %eax -+# endif -+ - sub %ecx, %eax - ret - END (BP_SYM (STRCMP)) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase.S -@@ -0,0 +1 @@ -+/* In strncase_l.S. */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase_l-nonascii.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase_l-nonascii.c -@@ -0,0 +1,8 @@ -+#include <string.h> -+ -+extern int __strncasecmp_l_nonascii (__const char *__s1, __const char *__s2, -+ size_t __n, __locale_t __loc); -+ -+#define __strncasecmp_l __strncasecmp_l_nonascii -+#define USE_IN_EXTENDED_LOCALE_MODEL 1 -+#include <string/strncase.c> -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase_l.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase_l.S -@@ -0,0 +1,6 @@ -+#define STRCMP __strncasecmp_l -+#define USE_AS_STRNCASECMP_L -+#include "strcmp.S" -+ -+weak_alias (__strncasecmp_l, strncasecmp_l) -+libc_hidden_def (strncasecmp_l) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strnlen.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strnlen.S -@@ -0,0 +1,64 @@ -+/* strnlen(str,maxlen) -- determine the length of the string STR up to MAXLEN. -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ Contributed by Ulrich Drepper drepper@redhat.com. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include <sysdep.h> -+ -+ -+ .text -+ENTRY(__strnlen) -+ movq %rsi, %rax -+ testq %rsi, %rsi -+ jz 3f -+ pxor %xmm2, %xmm2 -+ movq %rdi, %rcx -+ movq %rdi, %r8 -+ movq $16, %r9 -+ andq $~15, %rdi -+ movdqa %xmm2, %xmm1 -+ pcmpeqb (%rdi), %xmm2 -+ orl $0xffffffff, %r10d -+ subq %rdi, %rcx -+ shll %cl, %r10d -+ subq %rcx, %r9 -+ pmovmskb %xmm2, %edx -+ andl %r10d, %edx -+ jnz 1f -+ subq %r9, %rsi -+ jbe 3f -+ -+2: movdqa 16(%rdi), %xmm0 -+ leaq 16(%rdi), %rdi -+ pcmpeqb %xmm1, %xmm0 -+ pmovmskb %xmm0, %edx -+ testl %edx, %edx -+ jnz 1f -+ subq $16, %rsi -+ jnbe 2b -+3: ret -+ -+1: subq %r8, %rdi -+ bsfl %edx, %edx -+ addq %rdi, %rdx -+ cmpq %rdx, %rax -+ cmovnbq %rdx, %rax -+ ret -+END(__strnlen) -+weak_alias (__strnlen, strnlen) -+libc_hidden_def (strnlen) -Index: glibc-2.12-2-gc4ccff1/wcsmbs/wcsatcliff.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/wcsmbs/wcsatcliff.c -+++ glibc-2.12-2-gc4ccff1/wcsmbs/wcsatcliff.c -@@ -16,6 +16,8 @@ - #define MEMCPY wmemcpy - #define MEMPCPY wmempcpy - #define MEMCHR wmemchr -+#define STRCMP wcscmp -+#define STRNCMP wcsncmp - - - #include "../string/stratcliff.c" diff --git a/src/patches/glibc/glibc-rh607010.patch b/src/patches/glibc/glibc-rh607010.patch deleted file mode 100644 index 6952dad..0000000 --- a/src/patches/glibc/glibc-rh607010.patch +++ /dev/null @@ -1,26 +0,0 @@ -2010-09-07 H.J. Lu hongjiu.lu@intel.com - - * sysdeps/x86_64/cacheinfo.c (init_cacheinfo): Round cache sizes - up to multiple of 256 bytes. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/cacheinfo.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c -@@ -661,12 +661,16 @@ init_cacheinfo (void) - - if (data > 0) - { -+ /* Round data cache size up to multiple of 256 bytes. */ -+ data = (data + 255) & ~255L; - __x86_64_data_cache_size_half = data / 2; - __x86_64_data_cache_size = data; - } - - if (shared > 0) - { -+ /* Round shared cache size up to multiple of 256 bytes. */ -+ shared = (shared + 255) & ~255L; - __x86_64_shared_cache_size_half = shared / 2; - __x86_64_shared_cache_size = shared; - } diff --git a/src/patches/glibc/glibc-rh607461.patch b/src/patches/glibc/glibc-rh607461.patch deleted file mode 100644 index 79fc72c..0000000 --- a/src/patches/glibc/glibc-rh607461.patch +++ /dev/null @@ -1,22 +0,0 @@ -Index: glibc-2.12-2-gc4ccff1/nptl/allocatestack.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/allocatestack.c -+++ glibc-2.12-2-gc4ccff1/nptl/allocatestack.c -@@ -994,7 +994,16 @@ setxid_mark_thread (struct xid_command * - - /* If the thread is exiting right now, ignore it. */ - if ((ch & EXITING_BITMASK) != 0) -- return; -+ { -+ /* Release the futex if there is no other setxid in -+ progress. */ -+ if ((ch & SETXID_BITMASK) == 0) -+ { -+ t->setxid_futex = 1; -+ lll_futex_wake (&t->setxid_futex, 1, LLL_PRIVATE); -+ } -+ return; -+ } - } - while (atomic_compare_and_exchange_bool_acq (&t->cancelhandling, - ch | SETXID_BITMASK, ch)); diff --git a/src/patches/glibc/glibc-rh615090.patch b/src/patches/glibc/glibc-rh615090.patch deleted file mode 100644 index e6c00f0..0000000 --- a/src/patches/glibc/glibc-rh615090.patch +++ /dev/null @@ -1,21 +0,0 @@ -2010-07-27 Andreas Schwab schwab@redhat.com - - * manual/memory.texi (Malloc Tunable Parameters): Document - M_PERTURB. - -Index: glibc-2.12-2-gc4ccff1/manual/memory.texi -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/manual/memory.texi -+++ glibc-2.12-2-gc4ccff1/manual/memory.texi -@@ -702,6 +702,11 @@ be allocated via @code{mmap}. - @item M_MMAP_MAX - The maximum number of chunks to allocate with @code{mmap}. Setting this - to zero disables all use of @code{mmap}. -+@item M_PERTURB -+If non-zero, memory blocks are filled with values depending on some -+low order bits of this parameter when they are allocated (except when -+allocated by @code{calloc}) and freed. This can be used to debug the -+use of uninitialized or freed heap memory. - @end table - - @end deftypefun diff --git a/src/patches/glibc/glibc-rh615701.patch b/src/patches/glibc/glibc-rh615701.patch deleted file mode 100644 index 283e3fe..0000000 --- a/src/patches/glibc/glibc-rh615701.patch +++ /dev/null @@ -1,23 +0,0 @@ -2010-07-20 Roland McGrath roland@redhat.com - - * elf/dl-sysdep.c (_dl_important_hwcaps): Add dsocaps mask to - dl_hwcap_mask as well as dl_hwcap. Without this, dsocaps matching in - ld.so.cache was broken. With it, there is no way to disable dsocaps - like LD_HWCAP_MASK can disable hwcaps. - -Index: glibc-2.12-2-gc4ccff1/elf/dl-sysdep.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-sysdep.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-sysdep.c -@@ -425,6 +425,11 @@ _dl_important_hwcaps (const char *platfo - { - const ElfW(Word) mask = ((const ElfW(Word) *) dsocaps)[-1]; - GLRO(dl_hwcap) |= (uint64_t) mask << _DL_FIRST_EXTRA; -+ /* Note that we add the dsocaps to the set already chosen by the -+ LD_HWCAP_MASK environment variable (or default HWCAP_IMPORTANT). -+ So there is no way to request ignoring an OS-supplied dsocap -+ string and bit like you can ignore an OS-supplied HWCAP bit. */ -+ GLRO(dl_hwcap_mask) |= (uint64_t) mask << _DL_FIRST_EXTRA; - size_t len; - for (const char *p = dsocaps; p < dsocaps + dsocapslen; p += len + 1) - { diff --git a/src/patches/glibc/glibc-rh621959.patch b/src/patches/glibc/glibc-rh621959.patch deleted file mode 100644 index 315521f..0000000 --- a/src/patches/glibc/glibc-rh621959.patch +++ /dev/null @@ -1,120 +0,0 @@ -2010-08-06 Ulrich Drepper drepper@redhat.com - - * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): - Also fail if tpwd after pwuid call is NULL. - -2010-06-21 Andreas Schwab schwab@redhat.com - - * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): - Restore proper fallback handling. - -2010-06-19 Ulrich Drepper drepper@redhat.com - - * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): Handle - OOM in getpwuid_r correctly. Return error number when the caller - should return, otherwise -1. - (getlogin_r): Adjust to return also for result of __getlogin_r_loginuid - call returning > 0 value. - * sysdeps/unix/sysv/linux/getlogin.c (getlogin): Likewise. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/getlogin.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin.c -@@ -32,8 +32,9 @@ - char * - getlogin (void) - { -- if (__getlogin_r_loginuid (name, sizeof (name)) == 0) -- return name; -+ int res = __getlogin_r_loginuid (name, sizeof (name)); -+ if (res >= 0) -+ return res == 0 ? name : NULL; - - return getlogin_fd0 (); - } -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/getlogin_r.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c -@@ -27,6 +27,10 @@ static int getlogin_r_fd0 (char *name, s - #undef getlogin_r - - -+/* Try to determine login name from /proc/self/loginuid and return 0 -+ if successful. If /proc/self/loginuid cannot be read return -1. -+ Otherwise return the error number. */ -+ - int - attribute_hidden - __getlogin_r_loginuid (name, namesize) -@@ -35,7 +39,7 @@ __getlogin_r_loginuid (name, namesize) - { - int fd = open_not_cancel_2 ("/proc/self/loginuid", O_RDONLY); - if (fd == -1) -- return 1; -+ return -1; - - /* We are reading a 32-bit number. 12 bytes are enough for the text - representation. If not, something is wrong. */ -@@ -51,37 +55,38 @@ __getlogin_r_loginuid (name, namesize) - || (uidbuf[n] = '\0', - uid = strtoul (uidbuf, &endp, 10), - endp == uidbuf || *endp != '\0')) -- return 1; -+ return -1; - - size_t buflen = 1024; - char *buf = alloca (buflen); - bool use_malloc = false; - struct passwd pwd; - struct passwd *tpwd; -+ int result = 0; - int res; - -- while ((res = __getpwuid_r (uid, &pwd, buf, buflen, &tpwd)) != 0) -+ while ((res = __getpwuid_r (uid, &pwd, buf, buflen, &tpwd)) == ERANGE) - if (__libc_use_alloca (2 * buflen)) -- extend_alloca (buf, buflen, 2 * buflen); -+ buf = extend_alloca (buf, buflen, 2 * buflen); - else - { - buflen *= 2; - char *newp = realloc (use_malloc ? buf : NULL, buflen); - if (newp == NULL) - { -- fail: -- if (use_malloc) -- free (buf); -- return 1; -+ result = ENOMEM; -+ goto out; - } - buf = newp; - use_malloc = true; - } - -- if (tpwd == NULL) -- goto fail; -+ if (res != 0 || tpwd == NULL) -+ { -+ result = -1; -+ goto out; -+ } - -- int result = 0; - size_t needed = strlen (pwd.pw_name) + 1; - if (needed > namesize) - { -@@ -109,8 +114,9 @@ getlogin_r (name, namesize) - char *name; - size_t namesize; - { -- if (__getlogin_r_loginuid (name, namesize) == 0) -- return 0; -+ int res = __getlogin_r_loginuid (name, namesize); -+ if (res >= 0) -+ return res; - - return getlogin_r_fd0 (name, namesize); - } diff --git a/src/patches/glibc/glibc-rh623187.patch b/src/patches/glibc/glibc-rh623187.patch deleted file mode 100644 index 596fdd6..0000000 --- a/src/patches/glibc/glibc-rh623187.patch +++ /dev/null @@ -1,18 +0,0 @@ -2010-08-10 Dinakar Guniguntala dino@in.ibm.com - Stefan Hajnoczi stefanha@linux.vnet.ibm.com - - * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: If - FUTEX_WAKE_OP fails make sure to call FUTEX_WAKE instead. - -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S -@@ -163,7 +163,6 @@ __pthread_cond_signal: - #endif - orl $FUTEX_WAKE, %ecx - -- xorl $(FUTEX_WAKE ^ FUTEX_WAKE_OP), %ecx - movl $SYS_futex, %eax - /* %edx should be 1 already from $FUTEX_WAKE_OP syscall. - movl $1, %edx */ diff --git a/src/patches/glibc/glibc-rh625893.patch b/src/patches/glibc/glibc-rh625893.patch deleted file mode 100644 index 5337a42..0000000 --- a/src/patches/glibc/glibc-rh625893.patch +++ /dev/null @@ -1,79 +0,0 @@ -2010-08-12 Andreas Schwab schwab@redhat.com - - [BZ #11904] - * locale/programs/locale.c (print_assignment): New function. - (show_locale_vars): Use it. - -Index: glibc-2.12-2-gc4ccff1/locale/programs/locale.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/locale/programs/locale.c -+++ glibc-2.12-2-gc4ccff1/locale/programs/locale.c -@@ -762,6 +762,29 @@ write_charmaps (void) - twalk (all_data, print_names); - } - -+/* Print a properly quoted assignment of NAME with VAL, using double -+ quotes iff DQUOTE is true. */ -+static void -+print_assignment (const char *name, const char *val, bool dquote) -+{ -+ printf ("%s=", name); -+ if (dquote) -+ putchar ('"'); -+ while (*val != '\0') -+ { -+ size_t segment -+ = strcspn (val, dquote ? "$`"\" : "~|&;<>()$`\"' \t\n"); -+ printf ("%.*s", (int) segment, val); -+ val += segment; -+ if (*val == '\0') -+ break; -+ putchar ('\'); -+ putchar (*val++); -+ } -+ if (dquote) -+ putchar ('"'); -+ putchar ('\n'); -+} - - /* We have to show the contents of the environments determining the - locale. */ -@@ -769,7 +792,7 @@ static void - show_locale_vars (void) - { - size_t cat_no; -- const char *lcall = getenv ("LC_ALL"); -+ const char *lcall = getenv ("LC_ALL") ? : ""; - const char *lang = getenv ("LANG") ? : ""; - - auto void get_source (const char *name); -@@ -778,15 +801,15 @@ show_locale_vars (void) - { - char *val = getenv (name); - -- if ((lcall ?: "")[0] != '\0' || val == NULL) -- printf ("%s="%s"\n", name, -- (lcall ?: "")[0] ? lcall : (lang ?: "")[0] ? lang : "POSIX"); -+ if (lcall[0] != '\0' || val == NULL) -+ print_assignment (name, lcall[0] ? lcall : lang[0] ? lang : "POSIX", -+ true); - else -- printf ("%s=%s\n", name, val); -+ print_assignment (name, val, false); - } - - /* LANG has to be the first value. */ -- printf ("LANG=%s\n", lang); -+ print_assignment ("LANG", lang, false); - - /* Now all categories in an unspecified order. */ - for (cat_no = 0; cat_no < NCATEGORIES; ++cat_no) -@@ -794,7 +817,7 @@ show_locale_vars (void) - get_source (category[cat_no].name); - - /* The last is the LC_ALL value. */ -- printf ("LC_ALL=%s\n", lcall ? : ""); -+ print_assignment ("LC_ALL", lcall, false); - } - - diff --git a/src/patches/glibc/glibc-rh629823-2.patch b/src/patches/glibc/glibc-rh629823-2.patch deleted file mode 100644 index d3e4f45..0000000 --- a/src/patches/glibc/glibc-rh629823-2.patch +++ /dev/null @@ -1,95 +0,0 @@ -commit 50fd745b4dec07e8e213cf2703b5cabcfa128225 -Author: Andreas Schwab schwab@suse.de -Date: Mon Jun 10 14:39:09 2013 +0200 - - Fix handling of netgroup cache in nscd - -diff --git a/nscd/connections.c b/nscd/connections.c -index 7099215..69e3e7d 100644 ---- a/nscd/connections.c -+++ b/nscd/connections.c -@@ -1779,7 +1779,7 @@ nscd_run_worker (void *p) - else - { - /* Get the key. */ -- char keybuf[MAXKEYLEN]; -+ char keybuf[MAXKEYLEN + 1]; - - if (__builtin_expect (TEMP_FAILURE_RETRY (read (fd, keybuf, - req.key_len)) -@@ -1791,6 +1791,7 @@ nscd_run_worker (void *p) - strerror_r (errno, buf, sizeof (buf))); - goto close_and_out; - } -+ keybuf[req.key_len] = '\0'; - - if (__builtin_expect (debug_level, 0) > 0) - { -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c -index 2d6c5aa..dd06ce4 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c -@@ -192,18 +192,26 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - const char *nuser = data.val.triple.user; - const char *ndomain = data.val.triple.domain; - -- if (data.val.triple.host > data.val.triple.user -- || data.val.triple.user > data.val.triple.domain) -+ if (nhost == NULL || nuser == NULL || ndomain == NULL -+ || nhost > nuser || nuser > ndomain) - { -- const char *last = MAX (nhost, -- MAX (nuser, ndomain)); -- size_t bufused = (last + strlen (last) + 1 -- - buffer); -+ const char *last = nhost; -+ if (last == NULL -+ || (nuser != NULL && nuser > last)) -+ last = nuser; -+ if (last == NULL -+ || (ndomain != NULL && ndomain > last)) -+ last = ndomain; -+ -+ size_t bufused -+ = (last == NULL -+ ? buffilled -+ : last + strlen (last) + 1 - buffer); - - /* We have to make temporary copies. */ -- size_t hostlen = strlen (nhost) + 1; -- size_t userlen = strlen (nuser) + 1; -- size_t domainlen = strlen (ndomain) + 1; -+ size_t hostlen = strlen (nhost ?: "") + 1; -+ size_t userlen = strlen (nuser ?: "") + 1; -+ size_t domainlen = strlen (ndomain ?: "") + 1; - size_t needed = hostlen + userlen + domainlen; - - if (buflen - req->key_len - bufused < needed) -@@ -226,11 +234,11 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - } - - nhost = memcpy (buffer + bufused, -- nhost, hostlen); -+ nhost ?: "", hostlen); - nuser = memcpy ((char *) nhost + hostlen, -- nuser, userlen); -+ nuser ?: "", userlen); - ndomain = memcpy ((char *) nuser + userlen, -- ndomain, domainlen); -+ ndomain ?: "", domainlen); - } - - char *wp = buffer + buffilled; -diff --git a/nscd/nscd_netgroup.c b/nscd/nscd_netgroup.c -index cac4ebf..acb2c81 100644 ---- a/nscd/nscd_netgroup.c -+++ b/nscd/nscd_netgroup.c -@@ -48,7 +48,7 @@ __nscd_setnetgrent (const char *group, struct __netgrent *datap) - { - int gc_cycle; - int nretries = 0; -- size_t group_len = strlen (group); -+ size_t group_len = strlen (group) + 1; - - /* If the mapping is available, try to search there instead of - communicating with the nscd. */ diff --git a/src/patches/glibc/glibc-rh629823.patch b/src/patches/glibc/glibc-rh629823.patch deleted file mode 100644 index 6315246..0000000 --- a/src/patches/glibc/glibc-rh629823.patch +++ /dev/null @@ -1,1954 +0,0 @@ -diff -Nrup a/grp/initgroups.c b/grp/initgroups.c ---- a/grp/initgroups.c 2012-08-06 15:07:48.935060494 -0600 -+++ b/grp/initgroups.c 2012-08-23 14:19:49.370442142 -0600 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1989,91,93,1996-2005,2006,2008 Free Software Foundation, Inc. -+/* Copyright (C) 1989,91,93,1996-2006,2008,2010 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -58,7 +58,8 @@ internal_getgrouplist (const char *user, - if (__nss_not_use_nscd_group > 0 - && ++__nss_not_use_nscd_group > NSS_NSCD_RETRY) - __nss_not_use_nscd_group = 0; -- if (!__nss_not_use_nscd_group) -+ if (!__nss_not_use_nscd_group -+ && !__nss_database_custom[NSS_DBSIDX_group]) - { - int n = __nscd_getgrouplist (user, group, size, groupsp, limit); - if (n >= 0) -diff -Nrup a/inet/getnetgrent_r.c b/inet/getnetgrent_r.c ---- a/inet/getnetgrent_r.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/inet/getnetgrent_r.c 2012-08-06 15:10:05.865520055 -0600 -@@ -28,6 +28,7 @@ - #include "netgroup.h" - #include "nsswitch.h" - #include <sysdep.h> -+#include <nscd/nscd_proto.h> - - - /* Protect above variable against multiple uses at the same time. */ -@@ -101,7 +102,7 @@ endnetgrent_hook (struct __netgrent *dat - { - enum nss_status (*endfct) (struct __netgrent *); - -- if (datap->nip == NULL) -+ if (datap->nip == NULL || datap->nip == (service_user *) -1l) - return; - - endfct = __nss_lookup_function (datap->nip, "endnetgrent"); -@@ -189,8 +190,21 @@ setnetgrent (const char *group) - - __libc_lock_lock (lock); - -+ if (__nss_not_use_nscd_netgroup > 0 -+ && ++__nss_not_use_nscd_netgroup > NSS_NSCD_RETRY) -+ __nss_not_use_nscd_netgroup = 0; -+ -+ if (!__nss_not_use_nscd_netgroup -+ && !__nss_database_custom[NSS_DBSIDX_netgroup]) -+ { -+ result = __nscd_setnetgrent (group, &dataset); -+ if (result >= 0) -+ goto out; -+ } -+ - result = internal_setnetgrent (group, &dataset); - -+ out: - __libc_lock_unlock (lock); - - return result; -@@ -226,6 +240,26 @@ int internal_getnetgrent_r (char **hostp - char *buffer, size_t buflen, int *errnop); - libc_hidden_proto (internal_getnetgrent_r) - -+ -+static enum nss_status -+nscd_getnetgrent (struct __netgrent *datap, char *buffer, size_t buflen, -+ int *errnop) -+{ -+ if (datap->cursor >= datap->data + datap->data_size) -+ return NSS_STATUS_UNAVAIL; -+ -+ datap->type = triple_val; -+ datap->val.triple.host = datap->cursor; -+ datap->cursor = (char *) __rawmemchr (datap->cursor, '\0') + 1; -+ datap->val.triple.user = datap->cursor; -+ datap->cursor = (char *) __rawmemchr (datap->cursor, '\0') + 1; -+ datap->val.triple.domain = datap->cursor; -+ datap->cursor = (char *) __rawmemchr (datap->cursor, '\0') + 1; -+ -+ return NSS_STATUS_SUCCESS; -+} -+ -+ - int - internal_getnetgrent_r (char **hostp, char **userp, char **domainp, - struct __netgrent *datap, -@@ -239,9 +273,18 @@ internal_getnetgrent_r (char **hostp, ch - /* Run through available functions, starting with the same function last - run. We will repeat each function as long as it succeeds, and then go - on to the next service action. */ -- int no_more = (datap->nip == NULL -- || (fct = __nss_lookup_function (datap->nip, "getnetgrent_r")) -- == NULL); -+ int no_more = datap->nip == NULL; -+ if (! no_more) -+ { -+ if (datap->nip == (service_user *) -1l) -+ fct = nscd_getnetgrent; -+ else -+ { -+ fct = __nss_lookup_function (datap->nip, "getnetgrent_r"); -+ no_more = fct == NULL; -+ } -+ } -+ - while (! no_more) - { - status = (*fct) (datap, buffer, buflen, &errno); -@@ -337,6 +380,18 @@ int - innetgr (const char *netgroup, const char *host, const char *user, - const char *domain) - { -+ if (__nss_not_use_nscd_netgroup > 0 -+ && ++__nss_not_use_nscd_netgroup > NSS_NSCD_RETRY) -+ __nss_not_use_nscd_netgroup = 0; -+ -+ if (!__nss_not_use_nscd_netgroup -+ && !__nss_database_custom[NSS_DBSIDX_netgroup]) -+ { -+ int result = __nscd_innetgr (netgroup, host, user, domain); -+ if (result >= 0) -+ return result; -+ } -+ - union - { - int (*f) (const char *, struct __netgrent *); -@@ -444,7 +499,7 @@ innetgr (const char *netgroup, const cha - entry.needed_groups = tmp->next; - tmp->next = entry.known_groups; - entry.known_groups = tmp; -- current_group = entry.known_groups->name; -+ current_group = tmp->name; - continue; - } - -diff -Nrup a/nscd/Makefile b/nscd/Makefile ---- a/nscd/Makefile 2010-05-04 05:27:23.000000000 -0600 -+++ b/nscd/Makefile 2012-08-06 15:08:19.045941627 -0600 -@@ -22,7 +22,7 @@ - subdir := nscd - - routines := nscd_getpw_r nscd_getgr_r nscd_gethst_r nscd_getai \ -- nscd_initgroups nscd_getserv_r -+ nscd_initgroups nscd_getserv_r nscd_netgroup - aux := nscd_helper - - include ../Makeconfig -@@ -34,7 +34,8 @@ nscd-modules := nscd connections pwdcach - getgrnam_r getgrgid_r hstcache gethstbyad_r gethstbynm3_r \ - getsrvbynm_r getsrvbypt_r servicescache \ - dbg_log nscd_conf nscd_stat cache mem nscd_setup_thread \ -- xmalloc xstrdup aicache initgrcache gai res_hconf -+ xmalloc xstrdup aicache initgrcache gai res_hconf \ -+ netgroupcache - - ifeq ($(have-thread-library),yes) - -@@ -122,6 +123,7 @@ CFLAGS-servicescache.c += $(nscd-cflags) - CFLAGS-getsrvbynm_r.c += $(nscd-cflags) - CFLAGS-getsrvbypt_r.c += $(nscd-cflags) - CFLAGS-res_hconf.c += $(nscd-cflags) -+CFLAGS-netgroupcache.c += $(nscd-cflags) - - ifeq (yesyes,$(have-fpie)$(build-shared)) - relro-LDFLAGS += -Wl,-z,now -diff -Nrup a/nscd/cache.c b/nscd/cache.c ---- a/nscd/cache.c 2012-08-06 15:07:48.973060344 -0600 -+++ b/nscd/cache.c 2012-08-06 15:08:19.046941626 -0600 -@@ -60,7 +60,9 @@ static time_t (*const readdfcts[LASTREQ] - [GETAI] = readdhstai, - [INITGROUPS] = readdinitgroups, - [GETSERVBYNAME] = readdservbyname, -- [GETSERVBYPORT] = readdservbyport -+ [GETSERVBYPORT] = readdservbyport, -+ [GETNETGRENT] = readdgetnetgrent, -+ [INNETGR] = readdinnetgr - }; - - -@@ -70,7 +72,7 @@ static time_t (*const readdfcts[LASTREQ] - - This function must be called with the read-lock held. */ - struct datahead * --cache_search (request_type type, void *key, size_t len, -+cache_search (request_type type, const void *key, size_t len, - struct database_dyn *table, uid_t owner) - { - unsigned long int hash = __nis_hash (key, len) % table->head->module; -diff -Nrup a/nscd/connections.c b/nscd/connections.c ---- a/nscd/connections.c 2012-08-06 15:07:49.076059937 -0600 -+++ b/nscd/connections.c 2012-08-21 21:36:10.210358578 -0600 -@@ -57,11 +57,6 @@ - #endif - - --/* Wrapper functions with error checking for standard functions. */ --extern void *xmalloc (size_t n); --extern void *xcalloc (size_t n, size_t s); --extern void *xrealloc (void *o, size_t n); -- - /* Support to run nscd as an unprivileged user */ - const char *server_user; - static uid_t server_uid; -@@ -100,7 +95,10 @@ const char *const serv2str[LASTREQ] = - [INITGROUPS] = "INITGROUPS", - [GETSERVBYNAME] = "GETSERVBYNAME", - [GETSERVBYPORT] = "GETSERVBYPORT", -- [GETFDSERV] = "GETFDSERV" -+ [GETFDSERV] = "GETFDSERV", -+ [GETNETGRENT] = "GETNETGRENT", -+ [INNETGR] = "INNETGR", -+ [GETFDNETGR] = "GETFDNETGR" - }; - - /* The control data structures for the services. */ -@@ -189,6 +187,27 @@ struct database_dyn dbs[lastdb] = - .wr_fd = -1, - .ro_fd = -1, - .mmap_used = false -+ }, -+ [netgrdb] = { -+ .lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP, -+ .prune_lock = PTHREAD_MUTEX_INITIALIZER, -+ .prune_run_lock = PTHREAD_MUTEX_INITIALIZER, -+ .enabled = 0, -+ .check_file = 1, -+ .persistent = 0, -+ .propagate = 0, /* Not used. */ -+ .shared = 0, -+ .max_db_size = DEFAULT_MAX_DB_SIZE, -+ .suggested_module = DEFAULT_SUGGESTED_MODULE, -+ .reset_res = 0, -+ .filename = "/etc/netgroup", -+ .db_filename = _PATH_NSCD_NETGROUP_DB, -+ .disabled_iov = &netgroup_iov_disabled, -+ .postimeout = 28800, -+ .negtimeout = 20, -+ .wr_fd = -1, -+ .ro_fd = -1, -+ .mmap_used = false - } - }; - -@@ -218,7 +237,10 @@ static struct - [INITGROUPS] = { true, &dbs[grpdb] }, - [GETSERVBYNAME] = { true, &dbs[servdb] }, - [GETSERVBYPORT] = { true, &dbs[servdb] }, -- [GETFDSERV] = { false, &dbs[servdb] } -+ [GETFDSERV] = { false, &dbs[servdb] }, -+ [GETNETGRENT] = { true, &dbs[netgrdb] }, -+ [INNETGR] = { true, &dbs[netgrdb] }, -+ [GETFDNETGR] = { false, &dbs[netgrdb] } - }; - - -@@ -366,7 +388,8 @@ check_use (const char *data, nscd_ssize_ - static int - verify_persistent_db (void *mem, struct database_pers_head *readhead, int dbnr) - { -- assert (dbnr == pwddb || dbnr == grpdb || dbnr == hstdb || dbnr == servdb); -+ assert (dbnr == pwddb || dbnr == grpdb || dbnr == hstdb || dbnr == servdb -+ || dbnr == netgrdb); - - time_t now = time (NULL); - -@@ -1241,6 +1264,14 @@ request from '%s' [%ld] not handled due - addservbyport (db, fd, req, key, uid); - break; - -+ case GETNETGRENT: -+ addgetnetgrent (db, fd, req, key, uid); -+ break; -+ -+ case INNETGR: -+ addinnetgr (db, fd, req, key, uid); -+ break; -+ - case GETSTAT: - case SHUTDOWN: - case INVALIDATE: -@@ -1287,6 +1318,7 @@ request from '%s' [%ld] not handled due - case GETFDGR: - case GETFDHST: - case GETFDSERV: -+ case GETFDNETGR: - #ifdef SCM_RIGHTS - send_ro_fd (reqinfo[req->type].db, key, fd); - #endif -diff -Nrup a/nscd/netgroupcache.c b/nscd/netgroupcache.c ---- a/nscd/netgroupcache.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/nscd/netgroupcache.c 2012-08-24 11:38:05.118254176 -0600 -@@ -0,0 +1,667 @@ -+/* Cache handling for netgroup lookup. -+ Copyright (C) 2011 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Ulrich Drepper drepper@gmail.com, 2011. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published -+ by the Free Software Foundation; version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software Foundation, -+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -+ -+#include <alloca.h> -+#include <assert.h> -+#include <errno.h> -+#include <libintl.h> -+#include <stdbool.h> -+#include <unistd.h> -+#include <sys/mman.h> -+ -+#include "../inet/netgroup.h" -+#include "nscd.h" -+#include "dbg_log.h" -+#ifdef HAVE_SENDFILE -+# include <kernel-features.h> -+#endif -+ -+ -+/* This is the standard reply in case the service is disabled. */ -+static const netgroup_response_header disabled = -+{ -+ .version = NSCD_VERSION, -+ .found = -1, -+ .nresults = 0, -+ .result_len = 0 -+}; -+ -+/* This is the struct describing how to write this record. */ -+const struct iovec netgroup_iov_disabled = -+{ -+ .iov_base = (void *) &disabled, -+ .iov_len = sizeof (disabled) -+}; -+ -+ -+/* This is the standard reply in case we haven't found the dataset. */ -+static const netgroup_response_header notfound = -+{ -+ .version = NSCD_VERSION, -+ .found = 0, -+ .nresults = 0, -+ .result_len = 0 -+}; -+ -+ -+struct dataset -+{ -+ struct datahead head; -+ netgroup_response_header resp; -+ char strdata[0]; -+}; -+ -+ -+static time_t -+addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, -+ const char *key, uid_t uid, struct hashentry *he, -+ struct datahead *dh, struct dataset **resultp) -+{ -+ if (__builtin_expect (debug_level > 0, 0)) -+ { -+ if (he == NULL) -+ dbg_log (_("Haven't found "%s" in netgroup cache!"), key); -+ else -+ dbg_log (_("Reloading "%s" in netgroup cache!"), key); -+ } -+ -+ static service_user *netgroup_database; -+ time_t timeout; -+ struct dataset *dataset; -+ bool cacheable = false; -+ ssize_t total; -+ -+ char *key_copy = NULL; -+ struct __netgrent data; -+ size_t buflen = MAX (1024, sizeof (*dataset) + req->key_len); -+ size_t buffilled = sizeof (*dataset); -+ char *buffer = NULL; -+ size_t nentries = 0; -+ bool use_malloc = false; -+ size_t group_len = strlen (key) + 1; -+ union -+ { -+ struct name_list elem; -+ char mem[sizeof (struct name_list) + group_len]; -+ } first_needed; -+ -+ if (netgroup_database == NULL -+ && __nss_database_lookup ("netgroup", NULL, NULL, &netgroup_database)) -+ { -+ /* No such service. */ -+ total = sizeof (notfound); -+ timeout = time (NULL) + db->negtimeout; -+ -+ if (fd != -1) -+ TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); -+ -+ dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1); -+ /* If we cannot permanently store the result, so be it. */ -+ if (dataset != NULL) -+ { -+ dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -+ dataset->head.recsize = total; -+ dataset->head.notfound = true; -+ dataset->head.nreloads = 0; -+ dataset->head.usable = true; -+ -+ /* Compute the timeout time. */ -+ timeout = dataset->head.timeout = time (NULL) + db->negtimeout; -+ dataset->head.ttl = db->negtimeout; -+ -+ /* This is the reply. */ -+ memcpy (&dataset->resp, ¬found, total); -+ -+ /* Copy the key data. */ -+ memcpy (dataset->strdata, key, req->key_len); -+ -+ cacheable = true; -+ } -+ -+ goto writeout; -+ } -+ -+ memset (&data, '\0', sizeof (data)); -+ buffer = alloca (buflen); -+ first_needed.elem.next = &first_needed.elem; -+ memcpy (first_needed.elem.name, key, group_len); -+ data.needed_groups = &first_needed.elem; -+ -+ while (data.needed_groups != NULL) -+ { -+ /* Add the next group to the list of those which are known. */ -+ struct name_list *this_group = data.needed_groups->next; -+ if (this_group == data.needed_groups) -+ data.needed_groups = NULL; -+ else -+ data.needed_groups->next = this_group->next; -+ this_group->next = data.known_groups; -+ data.known_groups = this_group; -+ -+ union -+ { -+ enum nss_status (*f) (const char *, struct __netgrent *); -+ void *ptr; -+ } setfct; -+ -+ service_user *nip = netgroup_database; -+ int no_more = __nss_lookup (&nip, "setnetgrent", NULL, &setfct.ptr); -+ while (!no_more) -+ { -+ enum nss_status status -+ = DL_CALL_FCT (*setfct.f, (data.known_groups->name, &data)); -+ -+ if (status == NSS_STATUS_SUCCESS) -+ { -+ union -+ { -+ enum nss_status (*f) (struct __netgrent *, char *, size_t, -+ int *); -+ void *ptr; -+ } getfct; -+ getfct.ptr = __nss_lookup_function (nip, "getnetgrent_r"); -+ if (getfct.f != NULL) -+ while (1) -+ { -+ int e; -+ status = getfct.f (&data, buffer + buffilled, -+ buflen - buffilled, &e); -+ if (status == NSS_STATUS_RETURN) -+ /* This was the last one for this group. Look -+ at next group if available. */ -+ break; -+ if (status == NSS_STATUS_SUCCESS) -+ { -+ if (data.type == triple_val) -+ { -+ const char *nhost = data.val.triple.host; -+ const char *nuser = data.val.triple.user; -+ const char *ndomain = data.val.triple.domain; -+ -+ if (data.val.triple.host > data.val.triple.user -+ || data.val.triple.user > data.val.triple.domain) -+ { -+ const char *last = MAX (nhost, -+ MAX (nuser, ndomain)); -+ size_t bufused = (last + strlen (last) + 1 -+ - buffer); -+ -+ /* We have to make temporary copies. */ -+ size_t hostlen = strlen (nhost) + 1; -+ size_t userlen = strlen (nuser) + 1; -+ size_t domainlen = strlen (ndomain) + 1; -+ size_t needed = hostlen + userlen + domainlen; -+ -+ if (buflen - req->key_len - bufused < needed) -+ { -+ size_t newsize = MAX (2 * buflen, -+ buflen + 2 * needed); -+ if (use_malloc || newsize > 1024 * 1024) -+ { -+ buflen = newsize; -+ char *newbuf = xrealloc (use_malloc -+ ? buffer -+ : NULL, -+ buflen); -+ -+ buffer = newbuf; -+ use_malloc = true; -+ } -+ else -+ extend_alloca (buffer, buflen, newsize); -+ } -+ -+ nhost = memcpy (buffer + bufused, -+ nhost, hostlen); -+ nuser = memcpy ((char *) nhost + hostlen, -+ nuser, userlen); -+ ndomain = memcpy ((char *) nuser + userlen, -+ ndomain, domainlen); -+ } -+ -+ char *wp = buffer + buffilled; -+ wp = stpcpy (wp, nhost) + 1; -+ wp = stpcpy (wp, nuser) + 1; -+ wp = stpcpy (wp, ndomain) + 1; -+ buffilled = wp - buffer; -+ ++nentries; -+ } -+ else -+ { -+ /* Check that the group has not been -+ requested before. */ -+ struct name_list *runp = data.needed_groups; -+ if (runp != NULL) -+ while (1) -+ { -+ if (strcmp (runp->name, data.val.group) == 0) -+ break; -+ -+ runp = runp->next; -+ if (runp == data.needed_groups) -+ { -+ runp = NULL; -+ break; -+ } -+ } -+ -+ if (runp == NULL) -+ { -+ runp = data.known_groups; -+ while (runp != NULL) -+ if (strcmp (runp->name, data.val.group) == 0) -+ break; -+ else -+ runp = runp->next; -+ } -+ -+ if (runp == NULL) -+ { -+ /* A new group is requested. */ -+ size_t namelen = strlen (data.val.group) + 1; -+ struct name_list *newg = alloca (sizeof (*newg) -+ + namelen); -+ memcpy (newg->name, data.val.group, namelen); -+ if (data.needed_groups == NULL) -+ data.needed_groups = newg->next = newg; -+ else -+ { -+ newg->next = data.needed_groups->next; -+ data.needed_groups->next = newg; -+ data.needed_groups = newg; -+ } -+ } -+ } -+ } -+ else if (status == NSS_STATUS_UNAVAIL && e == ERANGE) -+ { -+ size_t newsize = 2 * buflen; -+ if (use_malloc || newsize > 1024 * 1024) -+ { -+ buflen = newsize; -+ char *newbuf = xrealloc (use_malloc -+ ? buffer : NULL, buflen); -+ -+ buffer = newbuf; -+ use_malloc = true; -+ } -+ else -+ extend_alloca (buffer, buflen, newsize); -+ } -+ } -+ -+ enum nss_status (*endfct) (struct __netgrent *); -+ endfct = __nss_lookup_function (nip, "endnetgrent"); -+ if (endfct != NULL) -+ (void) DL_CALL_FCT (*endfct, (&data)); -+ -+ break; -+ } -+ -+ no_more = __nss_next2 (&nip, "setnetgrent", NULL, &setfct.ptr, -+ status, 0); -+ } -+ } -+ -+ total = buffilled; -+ -+ /* Fill in the dataset. */ -+ dataset = (struct dataset *) buffer; -+ dataset->head.allocsize = total + req->key_len; -+ dataset->head.recsize = total - offsetof (struct dataset, resp); -+ dataset->head.notfound = false; -+ dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -+ dataset->head.usable = true; -+ dataset->head.ttl = db->postimeout; -+ timeout = dataset->head.timeout = time (NULL) + dataset->head.ttl; -+ -+ dataset->resp.version = NSCD_VERSION; -+ dataset->resp.found = 1; -+ dataset->resp.nresults = nentries; -+ dataset->resp.result_len = buffilled - sizeof (*dataset); -+ -+ assert (buflen - buffilled >= req->key_len); -+ key_copy = memcpy (buffer + buffilled, key, req->key_len); -+ buffilled += req->key_len; -+ -+ /* Now we can determine whether on refill we have to create a new -+ record or not. */ -+ if (he != NULL) -+ { -+ assert (fd == -1); -+ -+ if (dataset->head.allocsize == dh->allocsize -+ && dataset->head.recsize == dh->recsize -+ && memcmp (&dataset->resp, dh->data, -+ dh->allocsize - offsetof (struct dataset, resp)) == 0) -+ { -+ /* The data has not changed. We will just bump the timeout -+ value. Note that the new record has been allocated on -+ the stack and need not be freed. */ -+ dh->timeout = dataset->head.timeout; -+ dh->ttl = dataset->head.ttl; -+ ++dh->nreloads; -+ dataset = (struct dataset *) dh; -+ -+ goto out; -+ } -+ } -+ -+ { -+ struct dataset *newp -+ = (struct dataset *) mempool_alloc (db, total + req->key_len, 1); -+ if (__builtin_expect (newp != NULL, 1)) -+ { -+ /* Adjust pointer into the memory block. */ -+ key_copy = (char *) newp + (key_copy - buffer); -+ -+ dataset = memcpy (newp, dataset, total + req->key_len); -+ cacheable = true; -+ -+ if (he != NULL) -+ /* Mark the old record as obsolete. */ -+ dh->usable = false; -+ } -+ } -+ -+ if (he == NULL && fd != -1) -+ { -+ /* We write the dataset before inserting it to the database -+ since while inserting this thread might block and so would -+ unnecessarily let the receiver wait. */ -+ writeout: -+#ifdef HAVE_SENDFILE -+ if (__builtin_expect (db->mmap_used, 1) && cacheable) -+ { -+ assert (db->wr_fd != -1); -+ assert ((char *) &dataset->resp > (char *) db->data); -+ assert ((char *) dataset - (char *) db->head + total -+ <= (sizeof (struct database_pers_head) -+ + db->head->module * sizeof (ref_t) -+ + db->head->data_size)); -+# ifndef __ASSUME_SENDFILE -+ ssize_t written = -+# endif -+ sendfileall (fd, db->wr_fd, (char *) &dataset->resp -+ - (char *) db->head, dataset->head.recsize); -+# ifndef __ASSUME_SENDFILE -+ if (written == -1 && errno == ENOSYS) -+ goto use_write; -+# endif -+ } -+ else -+#endif -+ { -+#if defined HAVE_SENDFILE && !defined __ASSUME_SENDFILE -+ use_write: -+#endif -+ writeall (fd, &dataset->resp, dataset->head.recsize); -+ } -+ } -+ -+ if (cacheable) -+ { -+ /* If necessary, we also propagate the data to disk. */ -+ if (db->persistent) -+ { -+ // XXX async OK? -+ uintptr_t pval = (uintptr_t) dataset & ~pagesize_m1; -+ msync ((void *) pval, -+ ((uintptr_t) dataset & pagesize_m1) + total + req->key_len, -+ MS_ASYNC); -+ } -+ -+ (void) cache_add (req->type, key_copy, req->key_len, &dataset->head, -+ true, db, uid, he == NULL); -+ -+ pthread_rwlock_unlock (&db->lock); -+ -+ /* Mark the old entry as obsolete. */ -+ if (dh != NULL) -+ dh->usable = false; -+ } -+ -+ out: -+ if (use_malloc) -+ free (buffer); -+ -+ *resultp = dataset; -+ -+ return timeout; -+} -+ -+ -+static time_t -+addinnetgrX (struct database_dyn *db, int fd, request_header *req, -+ char *key, uid_t uid, struct hashentry *he, -+ struct datahead *dh) -+{ -+ const char *group = key; -+ key = (char *) rawmemchr (key, '\0') + 1; -+ size_t group_len = key - group - 1; -+ const char *host = *key++ ? key : NULL; -+ if (host != NULL) -+ key = (char *) rawmemchr (key, '\0') + 1; -+ const char *user = *key++ ? key : NULL; -+ if (user != NULL) -+ key = (char *) rawmemchr (key, '\0') + 1; -+ const char *domain = *key++ ? key : NULL; -+ -+ if (__builtin_expect (debug_level > 0, 0)) -+ { -+ if (he == NULL) -+ dbg_log (_("Haven't found "%s (%s,%s,%s)" in netgroup cache!"), -+ group, host ?: "", user ?: "", domain ?: ""); -+ else -+ dbg_log (_("Reloading "%s (%s,%s,%s)" in netgroup cache!"), -+ group, host ?: "", user ?: "", domain ?: ""); -+ } -+ -+ struct dataset *result = (struct dataset *) cache_search (GETNETGRENT, -+ group, group_len, -+ db, uid); -+ time_t timeout; -+ if (result != NULL) -+ timeout = result->head.timeout; -+ else -+ { -+ request_header req_get = -+ { -+ .type = GETNETGRENT, -+ .key_len = group_len -+ }; -+ timeout = addgetnetgrentX (db, -1, &req_get, group, uid, NULL, NULL, -+ &result); -+ } -+ -+ struct indataset -+ { -+ struct datahead head; -+ innetgroup_response_header resp; -+ } *dataset -+ = (struct indataset *) mempool_alloc (db, -+ sizeof (*dataset) + req->key_len, -+ 1); -+ struct indataset dataset_mem; -+ bool cacheable = true; -+ if (__builtin_expect (dataset == NULL, 0)) -+ { -+ cacheable = false; -+ dataset = &dataset_mem; -+ } -+ -+ dataset->head.allocsize = sizeof (*dataset) + req->key_len; -+ dataset->head.recsize = sizeof (innetgroup_response_header); -+ dataset->head.notfound = result->head.notfound; -+ dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -+ dataset->head.usable = true; -+ dataset->head.ttl = result->head.ttl; -+ dataset->head.timeout = timeout; -+ -+ dataset->resp.version = NSCD_VERSION; -+ dataset->resp.found = result->resp.found; -+ /* Until we find a matching entry the result is 0. */ -+ dataset->resp.result = 0; -+ -+ char *key_copy = memcpy ((char *) (dataset + 1), group, req->key_len); -+ -+ if (dataset->resp.found) -+ { -+ const char *triplets = (const char *) (&result->resp + 1); -+ -+ for (nscd_ssize_t i = result->resp.nresults; i > 0; --i) -+ { -+ bool success = true; -+ -+ if (host != NULL) -+ success = strcmp (host, triplets) == 0; -+ triplets = (const char *) rawmemchr (triplets, '\0') + 1; -+ -+ if (success && user != NULL) -+ success = strcmp (user, triplets) == 0; -+ triplets = (const char *) rawmemchr (triplets, '\0') + 1; -+ -+ if (success && (domain == NULL || strcmp (domain, triplets) == 0)) -+ { -+ dataset->resp.result = 1; -+ break; -+ } -+ triplets = (const char *) rawmemchr (triplets, '\0') + 1; -+ } -+ } -+ -+ if (he != NULL && dh->data[0].innetgroupdata.result == dataset->resp.result) -+ { -+ /* The data has not changed. We will just bump the timeout -+ value. Note that the new record has been allocated on -+ the stack and need not be freed. */ -+ dh->timeout = timeout; -+ dh->ttl = dataset->head.ttl; -+ ++dh->nreloads; -+ return timeout; -+ } -+ -+ if (he == NULL) -+ { -+ /* We write the dataset before inserting it to the database -+ since while inserting this thread might block and so would -+ unnecessarily let the receiver wait. */ -+ assert (fd != -1); -+ -+#ifdef HAVE_SENDFILE -+ if (__builtin_expect (db->mmap_used, 1) && cacheable) -+ { -+ assert (db->wr_fd != -1); -+ assert ((char *) &dataset->resp > (char *) db->data); -+ assert ((char *) dataset - (char *) db->head + sizeof (*dataset) -+ <= (sizeof (struct database_pers_head) -+ + db->head->module * sizeof (ref_t) -+ + db->head->data_size)); -+# ifndef __ASSUME_SENDFILE -+ ssize_t written = -+# endif -+ sendfileall (fd, db->wr_fd, -+ (char *) &dataset->resp - (char *) db->head, -+ sizeof (innetgroup_response_header)); -+# ifndef __ASSUME_SENDFILE -+ if (written == -1 && errno == ENOSYS) -+ goto use_write; -+# endif -+ } -+ else -+# ifndef __ASSUME_SENDFILE -+ use_write: -+# endif -+#endif -+ writeall (fd, &dataset->resp, sizeof (innetgroup_response_header)); -+ } -+ -+ if (cacheable) -+ { -+ /* If necessary, we also propagate the data to disk. */ -+ if (db->persistent) -+ { -+ // XXX async OK? -+ uintptr_t pval = (uintptr_t) dataset & ~pagesize_m1; -+ msync ((void *) pval, -+ ((uintptr_t) dataset & pagesize_m1) + sizeof (*dataset) -+ + req->key_len, -+ MS_ASYNC); -+ } -+ -+ (void) cache_add (req->type, key_copy, req->key_len, &dataset->head, -+ true, db, uid, he == NULL); -+ -+ pthread_rwlock_unlock (&db->lock); -+ -+ /* Mark the old entry as obsolete. */ -+ if (dh != NULL) -+ dh->usable = false; -+ } -+ -+ return timeout; -+} -+ -+ -+void -+addgetnetgrent (struct database_dyn *db, int fd, request_header *req, -+ void *key, uid_t uid) -+{ -+ struct dataset *ignore; -+ -+ addgetnetgrentX (db, fd, req, key, uid, NULL, NULL, &ignore); -+} -+ -+ -+time_t -+readdgetnetgrent (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh) -+{ -+ request_header req = -+ { -+ .type = GETNETGRENT, -+ .key_len = he->len -+ }; -+ struct dataset *ignore; -+ -+ return addgetnetgrentX (db, -1, &req, db->data + he->key, he->owner, he, dh, -+ &ignore); -+} -+ -+ -+void -+addinnetgr (struct database_dyn *db, int fd, request_header *req, -+ void *key, uid_t uid) -+{ -+ addinnetgrX (db, fd, req, key, uid, NULL, NULL); -+} -+ -+ -+time_t -+readdinnetgr (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh) -+{ -+ request_header req = -+ { -+ .type = INNETGR, -+ .key_len = he->len -+ }; -+ -+ return addinnetgrX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+} -diff -Nrup a/nscd/nscd-client.h b/nscd/nscd-client.h ---- a/nscd/nscd-client.h 2012-08-06 15:07:49.082059915 -0600 -+++ b/nscd/nscd-client.h 2012-08-06 15:08:19.090941456 -0600 -@@ -70,6 +70,9 @@ typedef enum - GETSERVBYNAME, - GETSERVBYPORT, - GETFDSERV, -+ GETNETGRENT, -+ INNETGR, -+ GETFDNETGR, - LASTREQ - } request_type; - -@@ -171,6 +174,24 @@ typedef struct - } serv_response_header; - - -+/* Structure send in reply to netgroup query. Note that this struct is -+ sent also if the service is disabled or there is no record found. */ -+typedef struct -+{ -+ int32_t version; -+ int32_t found; -+ nscd_ssize_t nresults; -+ nscd_ssize_t result_len; -+} netgroup_response_header; -+ -+typedef struct -+{ -+ int32_t version; -+ int32_t found; -+ int32_t result; -+} innetgroup_response_header; -+ -+ - /* Type for offsets in data part of database. */ - typedef uint32_t ref_t; - /* Value for invalid/no reference. */ -@@ -210,6 +231,8 @@ struct datahead - ai_response_header aidata; - initgr_response_header initgrdata; - serv_response_header servdata; -+ netgroup_response_header netgroupdata; -+ innetgroup_response_header innetgroupdata; - nscd_ssize_t align1; - nscd_time_t align2; - } data[0]; -diff -Nrup a/nscd/nscd.conf b/nscd/nscd.conf ---- a/nscd/nscd.conf 2012-08-06 15:07:48.553062002 -0600 -+++ b/nscd/nscd.conf 2012-08-06 15:08:19.091941452 -0600 -@@ -77,3 +77,12 @@ - persistent services yes - shared services yes - max-db-size services 33554432 -+ -+ enable-cache netgroup yes -+ positive-time-to-live netgroup 28800 -+ negative-time-to-live netgroup 20 -+ suggested-size netgroup 211 -+ check-files netgroup yes -+ persistent netgroup yes -+ shared netgroup yes -+ max-db-size netgroup 33554432 -diff -Nrup a/nscd/nscd.h b/nscd/nscd.h ---- a/nscd/nscd.h 2012-08-06 15:07:49.085059903 -0600 -+++ b/nscd/nscd.h 2012-08-06 15:08:19.093941443 -0600 -@@ -38,6 +38,7 @@ typedef enum - grpdb, - hstdb, - servdb, -+ netgrdb, - lastdb - } dbtype; - -@@ -107,6 +108,7 @@ struct database_dyn - #define _PATH_NSCD_GROUP_DB "/var/db/nscd/group" - #define _PATH_NSCD_HOSTS_DB "/var/db/nscd/hosts" - #define _PATH_NSCD_SERVICES_DB "/var/db/nscd/services" -+#define _PATH_NSCD_NETGROUP_DB "/var/db/nscd/netgroup" - - /* Path used when not using persistent storage. */ - #define _PATH_NSCD_XYZ_DB_TMP "/var/run/nscd/dbXXXXXX" -@@ -140,6 +142,7 @@ extern const struct iovec pwd_iov_disabl - extern const struct iovec grp_iov_disabled; - extern const struct iovec hst_iov_disabled; - extern const struct iovec serv_iov_disabled; -+extern const struct iovec netgroup_iov_disabled; - - - /* Initial number of threads to run. */ -@@ -185,6 +188,11 @@ extern gid_t old_gid; - - /* Prototypes for global functions. */ - -+/* Wrapper functions with error checking for standard functions. */ -+extern void *xmalloc (size_t n); -+extern void *xcalloc (size_t n, size_t s); -+extern void *xrealloc (void *o, size_t n); -+ - /* nscd.c */ - extern void termination_handler (int signum) __attribute__ ((__noreturn__)); - extern int nscd_open_socket (void); -@@ -203,8 +211,8 @@ extern void send_stats (int fd, struct d - extern int receive_print_stats (void) __attribute__ ((__noreturn__)); - - /* cache.c */ --extern struct datahead *cache_search (request_type, void *key, size_t len, -- struct database_dyn *table, -+extern struct datahead *cache_search (request_type, const void *key, -+ size_t len, struct database_dyn *table, - uid_t owner); - extern int cache_add (int type, const void *key, size_t len, - struct datahead *packet, bool first, -@@ -273,6 +281,16 @@ extern void addservbyport (struct databa - extern time_t readdservbyport (struct database_dyn *db, struct hashentry *he, - struct datahead *dh); - -+/* netgroupcache.c */ -+extern void addinnetgr (struct database_dyn *db, int fd, request_header *req, -+ void *key, uid_t uid); -+extern time_t readdinnetgr (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); -+extern void addgetnetgrent (struct database_dyn *db, int fd, -+ request_header *req, void *key, uid_t uid); -+extern time_t readdgetnetgrent (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); -+ - /* mem.c */ - extern void *mempool_alloc (struct database_dyn *db, size_t len, - int data_alloc); -diff -Nrup a/nscd/nscd_conf.c b/nscd/nscd_conf.c ---- a/nscd/nscd_conf.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/nscd/nscd_conf.c 2012-08-06 15:08:19.093941443 -0600 -@@ -43,7 +43,8 @@ const char *const dbnames[lastdb] = - [pwddb] = "passwd", - [grpdb] = "group", - [hstdb] = "hosts", -- [servdb] = "services" -+ [servdb] = "services", -+ [netgrdb] = "netgroup" - }; - - -diff -Nrup a/nscd/nscd_netgroup.c b/nscd/nscd_netgroup.c ---- a/nscd/nscd_netgroup.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/nscd/nscd_netgroup.c 2012-08-06 15:08:19.094941439 -0600 -@@ -0,0 +1,290 @@ -+/* Copyright (C) 2011 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Ulrich Drepper drepper@gmail.com, 2011. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include <alloca.h> -+#include <errno.h> -+#include <stdlib.h> -+#include <string.h> -+#include <not-cancel.h> -+ -+#include "nscd-client.h" -+#include "nscd_proto.h" -+ -+int __nss_not_use_nscd_netgroup; -+ -+ -+libc_locked_map_ptr (static, map_handle); -+/* Note that we only free the structure if necessary. The memory -+ mapping is not removed since it is not visible to the malloc -+ handling. */ -+libc_freeres_fn (pw_map_free) -+{ -+ if (map_handle.mapped != NO_MAPPING) -+ { -+ void *p = map_handle.mapped; -+ map_handle.mapped = NO_MAPPING; -+ free (p); -+ } -+} -+ -+ -+int -+__nscd_setnetgrent (const char *group, struct __netgrent *datap) -+{ -+ int gc_cycle; -+ int nretries = 0; -+ size_t group_len = strlen (group); -+ -+ /* If the mapping is available, try to search there instead of -+ communicating with the nscd. */ -+ struct mapped_database *mapped; -+ mapped = __nscd_get_map_ref (GETFDNETGR, "netgroup", &map_handle, &gc_cycle); -+ -+ retry:; -+ char *respdata = NULL; -+ int retval = -1; -+ netgroup_response_header netgroup_resp; -+ -+ if (mapped != NO_MAPPING) -+ { -+ struct datahead *found = __nscd_cache_search (GETNETGRENT, group, -+ group_len, mapped, -+ sizeof netgroup_resp); -+ if (found != NULL) -+ { -+ respdata = (char *) (&found->data[0].netgroupdata + 1); -+ netgroup_resp = found->data[0].netgroupdata; -+ /* Now check if we can trust pw_resp fields. If GC is -+ in progress, it can contain anything. */ -+ if (mapped->head->gc_cycle != gc_cycle) -+ { -+ retval = -2; -+ goto out; -+ } -+ } -+ } -+ -+ int sock = -1; -+ if (respdata == NULL) -+ { -+ sock = __nscd_open_socket (group, group_len, GETNETGRENT, -+ &netgroup_resp, sizeof (netgroup_resp)); -+ if (sock == -1) -+ { -+ /* nscd not running or wrong version. */ -+ __nss_not_use_nscd_netgroup = 1; -+ goto out; -+ } -+ } -+ -+ if (netgroup_resp.found == 1) -+ { -+ size_t datalen = netgroup_resp.result_len; -+ -+ /* If we do not have to read the data here it comes from the -+ mapped data and does not have to be freed. */ -+ if (respdata == NULL) -+ { -+ /* The data will come via the socket. */ -+ respdata = malloc (datalen); -+ if (respdata == NULL) -+ goto out_close; -+ -+ if ((size_t) __readall (sock, respdata, datalen) != datalen) -+ { -+ free (respdata); -+ goto out_close; -+ } -+ } -+ -+ datap->data = respdata; -+ datap->data_size = datalen; -+ datap->cursor = respdata; -+ datap->first = 1; -+ datap->nip = (service_user *) -1l; -+ datap->known_groups = NULL; -+ datap->needed_groups = NULL; -+ -+ retval = 1; -+ } -+ else -+ { -+ if (__builtin_expect (netgroup_resp.found == -1, 0)) -+ { -+ /* The daemon does not cache this database. */ -+ __nss_not_use_nscd_netgroup = 1; -+ goto out_close; -+ } -+ -+ /* Set errno to 0 to indicate no error, just no found record. */ -+ __set_errno (0); -+ /* Even though we have not found anything, the result is zero. */ -+ retval = 0; -+ } -+ -+ out_close: -+ if (sock != -1) -+ close_not_cancel_no_status (sock); -+ out: -+ if (__nscd_drop_map_ref (mapped, &gc_cycle) != 0) -+ { -+ /* When we come here this means there has been a GC cycle while we -+ were looking for the data. This means the data might have been -+ inconsistent. Retry if possible. */ -+ if ((gc_cycle & 1) != 0 || ++nretries == 5 || retval == -1) -+ { -+ /* nscd is just running gc now. Disable using the mapping. */ -+ if (atomic_decrement_val (&mapped->counter) == 0) -+ __nscd_unmap (mapped); -+ mapped = NO_MAPPING; -+ } -+ -+ if (retval != -1) -+ goto retry; -+ } -+ -+ return retval; -+} -+ -+ -+int -+__nscd_innetgr (const char *netgroup, const char *host, const char *user, -+ const char *domain) -+{ -+ size_t key_len = (strlen (netgroup) + strlen (host ?: "") -+ + strlen (user ?: "") + strlen (domain ?: "") + 7); -+ char *key; -+ bool use_alloca = __libc_use_alloca (key_len); -+ if (use_alloca) -+ key = alloca (key_len); -+ else -+ { -+ key = malloc (key_len); -+ if (key == NULL) -+ return -1; -+ } -+ char *wp = stpcpy (key, netgroup) + 1; -+ if (host != NULL) -+ { -+ *wp++ = '\1'; -+ wp = stpcpy (wp, host) + 1; -+ } -+ else -+ *wp++ = '\0'; -+ if (user != NULL) -+ { -+ *wp++ = '\1'; -+ wp = stpcpy (wp, user) + 1; -+ } -+ else -+ *wp++ = '\0'; -+ if (domain != NULL) -+ { -+ *wp++ = '\1'; -+ wp = stpcpy (wp, domain) + 1; -+ } -+ else -+ *wp++ = '\0'; -+ key_len = wp - key; -+ -+ /* If the mapping is available, try to search there instead of -+ communicating with the nscd. */ -+ int gc_cycle; -+ int nretries = 0; -+ struct mapped_database *mapped; -+ mapped = __nscd_get_map_ref (GETFDNETGR, "netgroup", &map_handle, &gc_cycle); -+ -+ retry:; -+ int retval = -1; -+ innetgroup_response_header innetgroup_resp; -+ int sock = -1; -+ -+ if (mapped != NO_MAPPING) -+ { -+ struct datahead *found = __nscd_cache_search (INNETGR, key, -+ key_len, mapped, -+ sizeof innetgroup_resp); -+ if (found != NULL) -+ { -+ innetgroup_resp = found->data[0].innetgroupdata; -+ /* Now check if we can trust pw_resp fields. If GC is -+ in progress, it can contain anything. */ -+ if (mapped->head->gc_cycle != gc_cycle) -+ { -+ retval = -2; -+ goto out; -+ } -+ -+ goto found_entry; -+ } -+ } -+ -+ sock = __nscd_open_socket (key, key_len, INNETGR, -+ &innetgroup_resp, sizeof (innetgroup_resp)); -+ if (sock == -1) -+ { -+ /* nscd not running or wrong version. */ -+ __nss_not_use_nscd_netgroup = 1; -+ goto out; -+ } -+ -+ found_entry: -+ if (innetgroup_resp.found == 1) -+ retval = innetgroup_resp.result; -+ else -+ { -+ if (__builtin_expect (innetgroup_resp.found == -1, 0)) -+ { -+ /* The daemon does not cache this database. */ -+ __nss_not_use_nscd_netgroup = 1; -+ goto out_close; -+ } -+ -+ /* Set errno to 0 to indicate no error, just no found record. */ -+ __set_errno (0); -+ /* Even though we have not found anything, the result is zero. */ -+ retval = 0; -+ } -+ -+ out_close: -+ if (sock != -1) -+ close_not_cancel_no_status (sock); -+ out: -+ if (__nscd_drop_map_ref (mapped, &gc_cycle) != 0) -+ { -+ /* When we come here this means there has been a GC cycle while we -+ were looking for the data. This means the data might have been -+ inconsistent. Retry if possible. */ -+ if ((gc_cycle & 1) != 0 || ++nretries == 5 || retval == -1) -+ { -+ /* nscd is just running gc now. Disable using the mapping. */ -+ if (atomic_decrement_val (&mapped->counter) == 0) -+ __nscd_unmap (mapped); -+ mapped = NO_MAPPING; -+ } -+ -+ if (retval != -1) -+ goto retry; -+ } -+ -+ if (! use_alloca) -+ free (key); -+ -+ return retval; -+} -diff -Nrup a/nscd/nscd_proto.h b/nscd/nscd_proto.h ---- a/nscd/nscd_proto.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/nscd/nscd_proto.h 2012-08-06 15:14:24.446648305 -0600 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1998-2000, 2002, 2004, 2007 Free Software Foundation, Inc. -+/* Copyright (C) 1998-2000,2002,2004,2007,2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Thorsten Kukuk kukuk@suse.de, 1998. - -@@ -36,6 +36,7 @@ extern int __nss_not_use_nscd_passwd att - extern int __nss_not_use_nscd_group attribute_hidden; - extern int __nss_not_use_nscd_hosts attribute_hidden; - extern int __nss_not_use_nscd_services attribute_hidden; -+extern int __nss_not_use_nscd_netgroup attribute_hidden; - - extern int __nscd_getpwnam_r (const char *name, struct passwd *resultbuf, - char *buffer, size_t buflen, -@@ -71,5 +72,9 @@ extern int __nscd_getservbyname_r (const - extern int __nscd_getservbyport_r (int port, const char *proto, - struct servent *result_buf, char *buf, - size_t buflen, struct servent **result); -+extern int __nscd_innetgr (const char *netgroup, const char *host, -+ const char *user, const char *domain); -+extern int __nscd_setnetgrent (const char *group, struct __netgrent *datap); -+ - - #endif /* _NSCD_PROTO_H */ -diff -Nrup a/nscd/selinux.c b/nscd/selinux.c ---- a/nscd/selinux.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/nscd/selinux.c 2012-08-06 15:08:19.096941431 -0600 -@@ -1,5 +1,5 @@ - /* SELinux access controls for nscd. -- Copyright (C) 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc. -+ Copyright (C) 2004,2005,2006,2007,2009,2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Matthew Rickard mjricka@epoch.ncsc.mil, 2004. - -@@ -46,7 +46,7 @@ - int selinux_enabled; - - /* Define mappings of access vector permissions to request types. */ --static const int perms[LASTREQ] = -+static const access_vector_t perms[LASTREQ] = - { - [GETPWBYNAME] = NSCD__GETPWD, - [GETPWBYUID] = NSCD__GETPWD, -@@ -69,6 +69,11 @@ static const int perms[LASTREQ] = - [GETSERVBYPORT] = NSCD__GETSERV, - [GETFDSERV] = NSCD__SHMEMSERV, - #endif -+#ifdef NSCD__GETNETGRP -+ [GETNETGRENT] = NSCD__GETNETGRP, -+ [INNETGR] = NSCD__GETNETGRP, -+ [GETFDNETGR] = NSCD__SHMEMNETGRP, -+#endif - }; - - /* Store an entry ref to speed AVC decisions. */ -diff -Nrup a/nss/Makefile b/nss/Makefile ---- a/nss/Makefile 2012-08-06 15:07:48.938060482 -0600 -+++ b/nss/Makefile 2012-08-23 14:19:49.382442094 -0600 -@@ -1,4 +1,5 @@ --# Copyright (C) 1996-1998,2000-2002,2007,2009 Free Software Foundation, Inc. -+# Copyright (C) 1996-1998,2000-2002,2007,2009,2010 -+# Free Software Foundation, Inc. - # This file is part of the GNU C Library. - - # The GNU C Library is free software; you can redistribute it and/or -@@ -39,7 +40,7 @@ databases = proto service hosts network - others := getent - install-bin := getent - --tests = test-netdb -+tests = test-netdb tst-nss-test1 - xtests = bug-erange - - include ../Makeconfig -@@ -85,3 +86,14 @@ endif - # a statically-linked program that hasn't already loaded it. - $(services:%=$(objpfx)libnss_%.so): $(common-objpfx)libc.so \ - $(common-objpfx)libc_nonshared.a -+ -+ -+distribute += nss_test1.c -+ -+CFLAGS-nss_test1.c = -DNOT_IN_libc=1 -+$(objpfx)/libnss_test1.so: $(objpfx)nss_test1.os $(common-objpfx)libc.so \ -+ $(common-objpfx)libc_nonshared.a -+ $(build-module) -+$(objpfx)/libnss_test1.so$(libnss_test1.so-version): $(objpfx)/libnss_test1.so -+ $(make-link) -+$(objpfx)tst-nss-test1.out: $(objpfx)/libnss_test1.so$(libnss_test1.so-version) -diff -Nrup a/nss/Versions b/nss/Versions ---- a/nss/Versions 2012-08-06 15:07:48.939060479 -0600 -+++ b/nss/Versions 2012-08-06 15:08:19.096941431 -0600 -@@ -12,7 +12,7 @@ libc { - __nss_disable_nscd; __nss_lookup_function; _nss_files_parse_sgent; - - __nss_passwd_lookup2; __nss_group_lookup2; __nss_hosts_lookup2; -- __nss_services_lookup2; __nss_next2; -+ __nss_services_lookup2; __nss_next2; __nss_lookup; - } - } - -diff -Nrup a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c ---- a/nss/getXXbyYY_r.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/nss/getXXbyYY_r.c 2012-08-23 14:19:49.403442011 -0600 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1996-2004, 2006, 2007, 2009 Free Software Foundation, Inc. -+/* Copyright (C) 1996-2004,2006,2007,2009,2010 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper drepper@cygnus.com, 1996. - -@@ -87,6 +87,8 @@ - # define NOT_USENSCD_NAME ADD_NOT_NSCDUSE (DATABASE_NAME) - # define ADD_NOT_NSCDUSE(name) ADD_NOT_NSCDUSE1 (name) - # define ADD_NOT_NSCDUSE1(name) __nss_not_use_nscd_##name -+# define CONCAT2(arg1, arg2) CONCAT2_2 (arg1, arg2) -+# define CONCAT2_2(arg1, arg2) arg1##arg2 - #endif - - #define FUNCTION_NAME_STRING STRINGIZE (FUNCTION_NAME) -@@ -186,7 +188,8 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, L - if (NOT_USENSCD_NAME > 0 && ++NOT_USENSCD_NAME > NSS_NSCD_RETRY) - NOT_USENSCD_NAME = 0; - -- if (!NOT_USENSCD_NAME) -+ if (!NOT_USENSCD_NAME -+ && !__nss_database_custom[CONCAT2 (NSS_DBSIDX_, DATABASE_NAME)]) - { - nscd_status = NSCD_NAME (ADD_VARIABLES, resbuf, buffer, buflen, result - H_ERRNO_VAR); -diff -Nrup a/nss/getent.c b/nss/getent.c ---- a/nss/getent.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/nss/getent.c 2012-08-06 15:15:06.479427609 -0600 -@@ -466,7 +466,6 @@ static int - netgroup_keys (int number, char *key[]) - { - int result = 0; -- int i; - - if (number == 0) - { -@@ -474,18 +473,28 @@ netgroup_keys (int number, char *key[]) - return 3; - } - -- for (i = 0; i < number; ++i) -+ if (number == 4) - { -- if (!setnetgrent (key[i])) -+ char *host = strcmp (key[1], "*") == 0 ? NULL : key[1]; -+ char *user = strcmp (key[2], "*") == 0 ? NULL : key[2]; -+ char *domain = strcmp (key[3], "*") == 0 ? NULL : key[3]; -+ -+ printf ("%-21s (%s,%s,%s) = %d\n", -+ key[0], host ?: "", user ?: "", domain ?: "", -+ innetgr (key[0], host, user, domain)); -+ } -+ else if (number == 1) -+ { -+ if (!setnetgrent (key[0])) - result = 2; - else - { - char *p[3]; - -- printf ("%-21s", key[i]); -+ printf ("%-21s", key[0]); - - while (getnetgrent (p, p + 1, p + 2)) -- printf (" (%s, %s, %s)", p[0] ?: " ", p[1] ?: "", p[2] ?: ""); -+ printf (" (%s,%s,%s)", p[0] ?: " ", p[1] ?: "", p[2] ?: ""); - putchar_unlocked ('\n'); - } - } -diff -Nrup a/nss/nss_files/files-parse.c b/nss/nss_files/files-parse.c ---- a/nss/nss_files/files-parse.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/nss/nss_files/files-parse.c 2012-08-23 14:19:49.418441951 -0600 -@@ -1,5 +1,5 @@ - /* Common code for file-based database parsers in nss_files module. -- Copyright (C) 1996-2000, 2003, 2004, 2009 Free Software Foundation, Inc. -+ Copyright (C) 1996-2000,2003,2004,2009,2010 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -29,7 +29,7 @@ - DATABASE -- string of the database file's name ("hosts", "passwd"). - - ENTDATA -- if defined, `struct ENTDATA' is used by the parser to store -- things pointed to by the resultant `struct STRUCTURE'. -+ things pointed to by the resultant `struct STRUCTURE'. - - NEED_H_ERRNO - defined iff an arg `int *herrnop' is used. - -@@ -229,7 +229,7 @@ strtou32 (const char *nptr, char **endpt - char **list = parse_list (&line, buf_start, buf_end, '\0', errnop); \ - if (list) \ - result->TRAILING_LIST_MEMBER = list; \ -- else \ -+ else \ - return -1; /* -1 indicates we ran out of space. */ \ - } - -diff -Nrup a/nss/nss_test1.c b/nss/nss_test1.c ---- a/nss/nss_test1.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/nss/nss_test1.c 2012-08-23 14:19:49.418441951 -0600 -@@ -0,0 +1,154 @@ -+#include <errno.h> -+#include <nss.h> -+#include <pthread.h> -+#include <string.h> -+ -+ -+#define COPY_IF_ROOM(s) \ -+ ({ size_t len_ = strlen (s) + 1; \ -+ char *start_ = cp; \ -+ buflen - (cp - buffer) < len_ \ -+ ? NULL \ -+ : (cp = mempcpy (cp, s, len_), start_); }) -+ -+ -+/* Password handling. */ -+#include <pwd.h> -+ -+static struct passwd pwd_data[] = -+ { -+#define PWD(u) \ -+ { .pw_name = (char *) "name" #u, .pw_passwd = (char *) "*", .pw_uid = u, \ -+ .pw_gid = 100, .pw_gecos = (char *) "*", .pw_dir = (char *) "*", \ -+ .pw_shell = (char *) "*" } -+ PWD (100), -+ PWD (30), -+ PWD (200), -+ PWD (60), -+ PWD (20000) -+ }; -+#define npwd_data (sizeof (pwd_data) / sizeof (pwd_data[0])) -+ -+static size_t pwd_iter; -+#define CURPWD pwd_data[pwd_iter] -+ -+static pthread_mutex_t pwd_lock = PTHREAD_MUTEX_INITIALIZER; -+ -+ -+enum nss_status -+_nss_test1_setpwent (int stayopen) -+{ -+ pwd_iter = 0; -+ return NSS_STATUS_SUCCESS; -+} -+ -+ -+enum nss_status -+_nss_test1_endpwent (void) -+{ -+ return NSS_STATUS_SUCCESS; -+} -+ -+ -+enum nss_status -+_nss_test1_getpwent_r (struct passwd *result, char *buffer, size_t buflen, -+ int *errnop) -+{ -+ char *cp = buffer; -+ int res = NSS_STATUS_SUCCESS; -+ -+ pthread_mutex_lock (&pwd_lock); -+ -+ if (pwd_iter >= npwd_data) -+ res = NSS_STATUS_NOTFOUND; -+ else -+ { -+ result->pw_name = COPY_IF_ROOM (CURPWD.pw_name); -+ result->pw_passwd = COPY_IF_ROOM (CURPWD.pw_passwd); -+ result->pw_uid = CURPWD.pw_uid; -+ result->pw_gid = CURPWD.pw_gid; -+ result->pw_gecos = COPY_IF_ROOM (CURPWD.pw_gecos); -+ result->pw_dir = COPY_IF_ROOM (CURPWD.pw_dir); -+ result->pw_shell = COPY_IF_ROOM (CURPWD.pw_shell); -+ -+ if (result->pw_name == NULL || result->pw_passwd == NULL -+ || result->pw_gecos == NULL || result->pw_dir == NULL -+ || result->pw_shell == NULL) -+ { -+ *errnop = ERANGE; -+ res = NSS_STATUS_TRYAGAIN; -+ } -+ -+ ++pwd_iter; -+ } -+ -+ pthread_mutex_unlock (&pwd_lock); -+ -+ return res; -+} -+ -+ -+enum nss_status -+_nss_test1_getpwuid_r (uid_t uid, struct passwd *result, char *buffer, -+ size_t buflen, int *errnop) -+{ -+ for (size_t idx = 0; idx < npwd_data; ++idx) -+ if (pwd_data[idx].pw_uid == uid) -+ { -+ char *cp = buffer; -+ int res = NSS_STATUS_SUCCESS; -+ -+ result->pw_name = COPY_IF_ROOM (pwd_data[idx].pw_name); -+ result->pw_passwd = COPY_IF_ROOM (pwd_data[idx].pw_passwd); -+ result->pw_uid = pwd_data[idx].pw_uid; -+ result->pw_gid = pwd_data[idx].pw_gid; -+ result->pw_gecos = COPY_IF_ROOM (pwd_data[idx].pw_gecos); -+ result->pw_dir = COPY_IF_ROOM (pwd_data[idx].pw_dir); -+ result->pw_shell = COPY_IF_ROOM (pwd_data[idx].pw_shell); -+ -+ if (result->pw_name == NULL || result->pw_passwd == NULL -+ || result->pw_gecos == NULL || result->pw_dir == NULL -+ || result->pw_shell == NULL) -+ { -+ *errnop = ERANGE; -+ res = NSS_STATUS_TRYAGAIN; -+ } -+ -+ return res; -+ } -+ -+ return NSS_STATUS_NOTFOUND; -+} -+ -+ -+enum nss_status -+_nss_test1_getpwnam_r (const char *name, struct passwd *result, char *buffer, -+ size_t buflen, int *errnop) -+{ -+ for (size_t idx = 0; idx < npwd_data; ++idx) -+ if (strcmp (pwd_data[idx].pw_name, name) == 0) -+ { -+ char *cp = buffer; -+ int res = NSS_STATUS_SUCCESS; -+ -+ result->pw_name = COPY_IF_ROOM (pwd_data[idx].pw_name); -+ result->pw_passwd = COPY_IF_ROOM (pwd_data[idx].pw_passwd); -+ result->pw_uid = pwd_data[idx].pw_uid; -+ result->pw_gid = pwd_data[idx].pw_gid; -+ result->pw_gecos = COPY_IF_ROOM (pwd_data[idx].pw_gecos); -+ result->pw_dir = COPY_IF_ROOM (pwd_data[idx].pw_dir); -+ result->pw_shell = COPY_IF_ROOM (pwd_data[idx].pw_shell); -+ -+ if (result->pw_name == NULL || result->pw_passwd == NULL -+ || result->pw_gecos == NULL || result->pw_dir == NULL -+ || result->pw_shell == NULL) -+ { -+ *errnop = ERANGE; -+ res = NSS_STATUS_TRYAGAIN; -+ } -+ -+ return res; -+ } -+ -+ return NSS_STATUS_NOTFOUND; -+} -diff -Nrup a/nss/nsswitch.c b/nss/nsswitch.c ---- a/nss/nsswitch.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/nss/nsswitch.c 2012-08-23 14:19:49.430441903 -0600 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1996-1999, 2001-2007, 2009 Free Software Foundation, Inc. -+/* Copyright (C) 1996-1999,2001-2007,2009,2010 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper drepper@cygnus.com, 1996. - -@@ -71,6 +71,9 @@ static const struct - }; - #define ndatabases (sizeof (databases) / sizeof (databases[0])) - -+/* Flags whether custom rules for database is set. */ -+bool __nss_database_custom[NSS_DBSIDX_max]; -+ - - __libc_lock_define_initialized (static, lock) - -@@ -165,6 +168,7 @@ __nss_lookup (service_user **ni, const c - - return *fctp != NULL ? 0 : (*ni)->next == NULL ? 1 : -1; - } -+libc_hidden_def (__nss_lookup) - - - /* -1 == not found -@@ -265,6 +269,7 @@ __nss_configure_lookup (const char *dbna - - /* Install new rules. */ - *databases[cnt].dbp = new_db; -+ __nss_database_custom[cnt] = true; - - __libc_lock_unlock (lock); - -@@ -729,6 +734,7 @@ __nss_disable_nscd (void) - __nss_not_use_nscd_group = -1; - __nss_not_use_nscd_hosts = -1; - __nss_not_use_nscd_services = -1; -+ __nss_not_use_nscd_netgroup = -1; - } - - -diff -Nrup a/nss/nsswitch.h b/nss/nsswitch.h ---- a/nss/nsswitch.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/nss/nsswitch.h 2012-08-23 14:19:49.431441899 -0600 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1996-1999,2001,2002,2003,2004,2007 -+/* Copyright (C) 1996-1999,2001,2002,2003,2004,2007,2010 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - -@@ -28,6 +28,7 @@ - #include <resolv.h> - #include <search.h> - #include <dlfcn.h> -+#include <stdbool.h> - - /* Actions performed after lookup finished. */ - typedef enum -@@ -96,6 +97,19 @@ typedef struct name_database - } name_database; - - -+/* Indices into DATABASES in nsswitch.c and __NSS_DATABASE_CUSTOM. */ -+enum -+ { -+#define DEFINE_DATABASE(arg) NSS_DBSIDX_##arg, -+#include "databases.def" -+#undef DEFINE_DATABASE -+ NSS_DBSIDX_max -+ }; -+ -+/* Flags whether custom rules for database is set. */ -+extern bool __nss_database_custom[NSS_DBSIDX_max]; -+ -+ - /* Interface functions for NSS. */ - - /* Get the data structure representing the specified database. -@@ -111,7 +125,8 @@ libc_hidden_proto (__nss_database_lookup - position is remembered in NI. The function returns a value < 0 if - an error occurred or no such function exists. */ - extern int __nss_lookup (service_user **ni, const char *fct_name, -- const char *fct2_name, void **fctp) attribute_hidden; -+ const char *fct2_name, void **fctp); -+libc_hidden_proto (__nss_lookup) - - /* Determine the next step in the lookup process according to the - result STATUS of the call to the last function returned by -diff -Nrup a/nss/tst-nss-test1.c b/nss/tst-nss-test1.c ---- a/nss/tst-nss-test1.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/nss/tst-nss-test1.c 2012-08-23 14:19:49.432441895 -0600 -@@ -0,0 +1,72 @@ -+#include <nss.h> -+#include <pwd.h> -+#include <stdio.h> -+#include <stdlib.h> -+#include <string.h> -+ -+ -+static int -+do_test (void) -+{ -+ int retval = 0; -+ -+ __nss_configure_lookup ("passwd", "test1"); -+ -+ static const unsigned int pwdids[] = { 100, 30, 200, 60, 20000 }; -+#define npwdids (sizeof (pwdids) / sizeof (pwdids[0])) -+ setpwent (); -+ -+ const unsigned int *np = pwdids; -+ for (struct passwd *p = getpwent (); p != NULL; ++np, p = getpwent ()) -+ if (p->pw_uid != *np || strncmp (p->pw_name, "name", 4) != 0 -+ || atol (p->pw_name + 4) != *np) -+ { -+ printf ("passwd entry %ju wrong (%s, %u)\n", -+ np - pwdids, p->pw_name, p->pw_uid); -+ retval = 1; -+ break; -+ } -+ -+ endpwent (); -+ -+ for (int i = npwdids - 1; i >= 0; --i) -+ { -+ char buf[30]; -+ snprintf (buf, sizeof (buf), "name%u", pwdids[i]); -+ -+ struct passwd *p = getpwnam (buf); -+ if (p == NULL || p->pw_uid != pwdids[i] || strcmp (buf, p->pw_name) != 0) -+ { -+ printf ("passwd entry "%s" wrong\n", buf); -+ retval = 1; -+ } -+ -+ p = getpwuid (pwdids[i]); -+ if (p == NULL || p->pw_uid != pwdids[i] || strcmp (buf, p->pw_name) != 0) -+ { -+ printf ("passwd entry %u wrong\n", pwdids[i]); -+ retval = 1; -+ } -+ -+ snprintf (buf, sizeof (buf), "name%u", pwdids[i] + 1); -+ -+ p = getpwnam (buf); -+ if (p != NULL) -+ { -+ printf ("passwd entry "%s" wrong\n", buf); -+ retval = 1; -+ } -+ -+ p = getpwuid (pwdids[i] + 1); -+ if (p != NULL) -+ { -+ printf ("passwd entry %u wrong\n", pwdids[i] + 1); -+ retval = 1; -+ } -+ } -+ -+ return retval; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff -Nrup a/shlib-versions b/shlib-versions ---- a/shlib-versions 2010-05-04 05:27:23.000000000 -0600 -+++ b/shlib-versions 2012-08-23 14:19:49.473441732 -0600 -@@ -114,6 +114,10 @@ alpha.*-.*-linux.* libresolv=2.1 - .*-.*-.* libnss_ldap=2 - .*-.*-.* libnss_hesiod=2 - -+# Tests for NSS. They must have the same NSS_SHLIB_REVISION number as -+# the rest. -+.*-.*-.* libnss_test1=2 -+ - # Version for libnsl with YP and NIS+ functions. - alpha.*-.*-linux.* libnsl=1.1 - .*-.*-.* libnsl=1 -diff -Nrup a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c ---- a/sysdeps/posix/getaddrinfo.c 2012-08-06 15:07:49.571057983 -0600 -+++ b/sysdeps/posix/getaddrinfo.c 2012-08-23 14:19:49.541441461 -0600 -@@ -669,7 +669,8 @@ gaih_inet (const char *name, const struc - && ++__nss_not_use_nscd_hosts > NSS_NSCD_RETRY) - __nss_not_use_nscd_hosts = 0; - -- if (!__nss_not_use_nscd_hosts) -+ if (!__nss_not_use_nscd_hosts -+ && !__nss_database_custom[NSS_DBSIDX_hosts]) - { - /* Try to use nscd. */ - struct nscd_ai_result *air = NULL; diff --git a/src/patches/glibc/glibc-rh630801.patch b/src/patches/glibc/glibc-rh630801.patch deleted file mode 100644 index 5bd3c66..0000000 --- a/src/patches/glibc/glibc-rh630801.patch +++ /dev/null @@ -1,29 +0,0 @@ -2010-05-26 H.J. Lu hongjiu.lu@intel.com - - [BZ #11640] - * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): - Properly check family and model. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c -@@ -62,15 +62,15 @@ __init_cpu_features (void) - unsigned int eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax; - unsigned int extended_family = (eax >> 20) & 0xff; - unsigned int extended_model = (eax >> 12) & 0xf0; -- if (__cpu_features.family == 0x0f) -+ if (family == 0x0f) - { - family += extended_family; - model += extended_model; - } -- else if (__cpu_features.family == 0x06) -+ else if (family == 0x06) - { - model += extended_model; -- switch (__cpu_features.model) -+ switch (model) - { - case 0x1a: - case 0x1e: diff --git a/src/patches/glibc/glibc-rh631011.patch b/src/patches/glibc/glibc-rh631011.patch deleted file mode 100644 index 42a1a56..0000000 --- a/src/patches/glibc/glibc-rh631011.patch +++ /dev/null @@ -1,17 +0,0 @@ -2010-08-19 Andreas Schwab schwab@redhat.com - - * sysdeps/i386/i686/multiarch/strspn.S [!SHARED]: Fix SSE4.2 check. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strspn.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/i386/i686/multiarch/strspn.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strspn.S -@@ -65,7 +65,7 @@ ENTRY(strspn) - jne 1f - call __init_cpu_features - 1: leal __strspn_ia32, %eax -- testl $index_SSE2, CPUID_OFFSET+index_SSE4_2+__cpu_features -+ testl $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features - jz 2f - leal __strspn_sse42, %eax - 2: ret diff --git a/src/patches/glibc/glibc-rh641128.patch b/src/patches/glibc/glibc-rh641128.patch deleted file mode 100644 index 52df4ae..0000000 --- a/src/patches/glibc/glibc-rh641128.patch +++ /dev/null @@ -1,78 +0,0 @@ -2010-10-06 Ulrich Drepper drepper@gmail.com - - * string/bug-strstr1.c: New file. - * string/Makefile: Add rules to build and run bug-strstr1. - -2010-10-05 Eric Blake eblake@redhat.com - - [BZ #12092] - * string/str-two-way.h (two_way_long_needle): Always clear memory - when skipping input due to the shift table. - -Index: glibc-2.12-2-gc4ccff1/string/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/Makefile -+++ glibc-2.12-2-gc4ccff1/string/Makefile -@@ -54,7 +54,8 @@ tests := tester inl-tester noinl-tester - bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap \ - tst-strtok tst-strxfrm bug-strcoll1 tst-strfry \ - bug-strtok1 $(addprefix test-,$(strop-tests)) \ -- bug-envz1 tst-strxfrm2 tst-endian tst-svc2 -+ bug-envz1 tst-strxfrm2 tst-endian tst-svc2 \ -+ bug-strstr1 - distribute := memcopy.h pagecopy.h tst-svc.expect test-string.h \ - str-two-way.h - -@@ -73,6 +74,7 @@ CFLAGS-tst-strlen.c = -fno-builtin - CFLAGS-stratcliff.c = -fno-builtin - CFLAGS-test-ffs.c = -fno-builtin - CFLAGS-tst-inlcall.c = -fno-builtin -+CFLAGS-bug-strstr1.c = -fno-builtin - - ifeq ($(cross-compiling),no) - tests: $(objpfx)tst-svc.out -Index: glibc-2.12-2-gc4ccff1/string/bug-strstr1.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/string/bug-strstr1.c -@@ -0,0 +1,26 @@ -+#include <stdio.h> -+#include <string.h> -+ -+int main (int argc, char** argv) -+{ -+ const char haystack[] = -+ "F_BD_CE_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_C3_88_20_EF_BF_BD_EF_BF_BD_EF_BF_BD_C3_A7_20_EF_BF_BD"; -+ -+ const char needle[] = -+ "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD"; -+ -+ const char* sub = strstr (haystack, needle); -+ -+ if (sub != NULL) -+ { -+ int j; -+ -+ fprintf (stderr, "BUG: expected NULL, got:\n%s\n%s\n", sub, needle); -+ for (j = 0; needle[j] != '\0'; ++j) -+ putchar (needle[j] == sub[j] ? ' ' : '^'); -+ puts (""); -+ return 1; -+ } -+ -+ return 0; -+} -Index: glibc-2.12-2-gc4ccff1/string/str-two-way.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/str-two-way.h -+++ glibc-2.12-2-gc4ccff1/string/str-two-way.h -@@ -350,8 +350,8 @@ two_way_long_needle (const unsigned char - a byte out of place, there can be no match until - after the mismatch. */ - shift = needle_len - period; -- memory = 0; - } -+ memory = 0; - j += shift; - continue; - } diff --git a/src/patches/glibc/glibc-rh642584.patch b/src/patches/glibc/glibc-rh642584.patch deleted file mode 100644 index 7fd390d..0000000 --- a/src/patches/glibc/glibc-rh642584.patch +++ /dev/null @@ -1,41 +0,0 @@ -2010-10-13 H.J. Lu hongjiu.lu@intel.com - - [BZ #12113] - * sysdeps/x86_64/pthreaddef.h (TCB_ALIGNMENT): Changed to 32. - * sysdeps/x86_64/tls.h (TLS_TCB_ALIGN): Defined with alignment - of "struct pthread". - -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/x86_64/pthreaddef.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/x86_64/pthreaddef.h -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/x86_64/pthreaddef.h -@@ -27,8 +27,9 @@ - /* Minimal stack size after allocating thread descriptor and guard size. */ - #define MINIMAL_REST_STACK 2048 - --/* Alignment requirement for TCB. */ --#define TCB_ALIGNMENT 16 -+/* Alignment requirement for TCB. Need to store post-AVX vector registers -+ in the TCB and we want the storage to be aligned at 32-byte. */ -+#define TCB_ALIGNMENT 32 - - - /* Location of current stack frame. The frame pointer is not usable. */ -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/x86_64/tls.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/x86_64/tls.h -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/x86_64/tls.h -@@ -117,12 +117,7 @@ typedef struct - # define TLS_TCB_SIZE sizeof (struct pthread) - - /* Alignment requirements for the TCB. */ --//# define TLS_TCB_ALIGN __alignof__ (struct pthread) --// Normally the above would be correct But we have to store post-AVX --// vector registers in the TCB and we want the storage to be aligned. --// unfortunately there isn't yet a type for these values and hence no --// 32-byte alignment requirement. Make this explicit, for now. --# define TLS_TCB_ALIGN 32 -+# define TLS_TCB_ALIGN __alignof__ (struct pthread) - - /* The TCB can have any size and the memory following the address the - thread pointer points to is unspecified. Allocate the TCB there. */ diff --git a/src/patches/glibc/glibc-rh643822.patch b/src/patches/glibc/glibc-rh643822.patch deleted file mode 100644 index c32c1fe..0000000 --- a/src/patches/glibc/glibc-rh643822.patch +++ /dev/null @@ -1,64 +0,0 @@ -2010-12-09 Andreas Schwab schwab@redhat.com - - * elf/dl-object.c (_dl_new_object): Ignore origin of privileged - program. - -2010-10-18 Andreas Schwab schwab@redhat.com - - * elf/dl-open.c (dl_open_worker): Don't expand DST here, let - _dl_map_object do it. - -Index: glibc-2.12-2-gc4ccff1/elf/dl-object.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-object.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-object.c -@@ -214,6 +214,9 @@ _dl_new_object (char *realname, const ch - out: - new->l_origin = origin; - } -+ else if (INTUSE(__libc_enable_secure) && type == lt_executable) -+ /* The origin of a privileged program cannot be trusted. */ -+ new->l_origin = (char *) -1; - - return new; - } -Index: glibc-2.12-2-gc4ccff1/elf/dl-open.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-open.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-open.c -@@ -221,35 +221,6 @@ dl_open_worker (void *a) - - assert (_dl_debug_initialize (0, args->nsid)->r_state == RT_CONSISTENT); - -- /* Maybe we have to expand a DST. */ -- if (__builtin_expect (dst != NULL, 0)) -- { -- size_t len = strlen (file); -- -- /* Determine how much space we need. We have to allocate the -- memory locally. */ -- size_t required = DL_DST_REQUIRED (call_map, file, len, -- _dl_dst_count (dst, 0)); -- -- /* Get space for the new file name. */ -- char *new_file = (char *) alloca (required + 1); -- -- /* Generate the new file name. */ -- _dl_dst_substitute (call_map, file, new_file, 0); -- -- /* If the substitution failed don't try to load. */ -- if (*new_file == '\0') -- _dl_signal_error (0, "dlopen", NULL, -- N_("empty dynamic string token substitution")); -- -- /* Now we have a new file name. */ -- file = new_file; -- -- /* It does not matter whether call_map is set even if we -- computed it only because of the DST. Since the path contains -- a slash the value is not used. See dl-load.c. */ -- } -- - /* Load the named object. */ - struct link_map *new; - args->map = new = _dl_map_object (call_map, file, 0, lt_loaded, 0, diff --git a/src/patches/glibc/glibc-rh645672.patch b/src/patches/glibc/glibc-rh645672.patch deleted file mode 100644 index 644614e..0000000 --- a/src/patches/glibc/glibc-rh645672.patch +++ /dev/null @@ -1,215 +0,0 @@ -2010-10-22 Andreas Schwab schwab@redhat.com - - * include/dlfcn.h (__RTLD_SECURE): Define. - * elf/dl-load.c (_dl_map_object): Remove preloaded parameter. Use - mode & __RTLD_SECURE instead. - (open_path): Remove preloaded parameter to secure. - * sysdeps/generic/ldsodefs.h (_dl_map_object): Adjust declaration. - * elf/dl-open.c (dl_open_worker): Adjust call to _dl_map_object. - * elf/dl-deps.c (openaux): Likewise. - * elf/rtld.c (struct map_args): Remove is_preloaded. - (map_doit): Don't use it. - (dl_main): Likewise. - (do_preload): Use __RTLD_SECURE instead of is_preloaded. - (dlmopen_doit): Add __RTLD_SECURE to mode bits. - -Index: glibc-2.12-2-gc4ccff1/elf/dl-deps.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-deps.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-deps.c -@@ -62,7 +62,7 @@ openaux (void *a) - { - struct openaux_args *args = (struct openaux_args *) a; - -- args->aux = _dl_map_object (args->map, args->name, 0, -+ args->aux = _dl_map_object (args->map, args->name, - (args->map->l_type == lt_executable - ? lt_library : args->map->l_type), - args->trace_mode, args->open_mode, -Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-load.c -@@ -1811,7 +1811,7 @@ open_verify (const char *name, struct fi - if MAY_FREE_DIRS is true. */ - - static int --open_path (const char *name, size_t namelen, int preloaded, -+open_path (const char *name, size_t namelen, int secure, - struct r_search_path_struct *sps, char **realname, - struct filebuf *fbp, struct link_map *loader, int whatcode, - bool *found_other_class) -@@ -1893,7 +1893,7 @@ open_path (const char *name, size_t name - /* Remember whether we found any existing directory. */ - here_any |= this_dir->status[cnt] != nonexisting; - -- if (fd != -1 && __builtin_expect (preloaded, 0) -+ if (fd != -1 && __builtin_expect (secure, 0) - && INTUSE(__libc_enable_secure)) - { - /* This is an extra security effort to make sure nobody can -@@ -1962,7 +1962,7 @@ open_path (const char *name, size_t name - - struct link_map * - internal_function --_dl_map_object (struct link_map *loader, const char *name, int preloaded, -+_dl_map_object (struct link_map *loader, const char *name, - int type, int trace_mode, int mode, Lmid_t nsid) - { - int fd; -@@ -2066,7 +2066,8 @@ _dl_map_object (struct link_map *loader, - for (l = loader; l; l = l->l_loader) - if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH")) - { -- fd = open_path (name, namelen, preloaded, &l->l_rpath_dirs, -+ fd = open_path (name, namelen, mode & __RTLD_SECURE, -+ &l->l_rpath_dirs, - &realname, &fb, loader, LA_SER_RUNPATH, - &found_other_class); - if (fd != -1) -@@ -2081,14 +2082,15 @@ _dl_map_object (struct link_map *loader, - && main_map != NULL && main_map->l_type != lt_loaded - && cache_rpath (main_map, &main_map->l_rpath_dirs, DT_RPATH, - "RPATH")) -- fd = open_path (name, namelen, preloaded, &main_map->l_rpath_dirs, -+ fd = open_path (name, namelen, mode & __RTLD_SECURE, -+ &main_map->l_rpath_dirs, - &realname, &fb, loader ?: main_map, LA_SER_RUNPATH, - &found_other_class); - } - - /* Try the LD_LIBRARY_PATH environment variable. */ - if (fd == -1 && env_path_list.dirs != (void *) -1) -- fd = open_path (name, namelen, preloaded, &env_path_list, -+ fd = open_path (name, namelen, mode & __RTLD_SECURE, &env_path_list, - &realname, &fb, - loader ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded, - LA_SER_LIBPATH, &found_other_class); -@@ -2097,12 +2099,12 @@ _dl_map_object (struct link_map *loader, - if (fd == -1 && loader != NULL - && cache_rpath (loader, &loader->l_runpath_dirs, - DT_RUNPATH, "RUNPATH")) -- fd = open_path (name, namelen, preloaded, -+ fd = open_path (name, namelen, mode & __RTLD_SECURE, - &loader->l_runpath_dirs, &realname, &fb, loader, - LA_SER_RUNPATH, &found_other_class); - - if (fd == -1 -- && (__builtin_expect (! preloaded, 1) -+ && (__builtin_expect (! (mode & __RTLD_SECURE), 1) - || ! INTUSE(__libc_enable_secure))) - { - /* Check the list of libraries in the file /etc/ld.so.cache, -@@ -2168,7 +2170,7 @@ _dl_map_object (struct link_map *loader, - && ((l = loader ?: GL(dl_ns)[nsid]._ns_loaded) == NULL - || __builtin_expect (!(l->l_flags_1 & DF_1_NODEFLIB), 1)) - && rtld_search_dirs.dirs != (void *) -1) -- fd = open_path (name, namelen, preloaded, &rtld_search_dirs, -+ fd = open_path (name, namelen, mode & __RTLD_SECURE, &rtld_search_dirs, - &realname, &fb, l, LA_SER_DEFAULT, &found_other_class); - - /* Add another newline when we are tracing the library loading. */ -Index: glibc-2.12-2-gc4ccff1/elf/dl-open.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-open.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-open.c -@@ -252,7 +252,7 @@ dl_open_worker (void *a) - - /* Load the named object. */ - struct link_map *new; -- args->map = new = _dl_map_object (call_map, file, 0, lt_loaded, 0, -+ args->map = new = _dl_map_object (call_map, file, lt_loaded, 0, - mode | __RTLD_CALLMAP, args->nsid); - - /* If the pointer returned is NULL this means the RTLD_NOLOAD flag is -Index: glibc-2.12-2-gc4ccff1/elf/rtld.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c -+++ glibc-2.12-2-gc4ccff1/elf/rtld.c -@@ -589,7 +589,6 @@ struct map_args - /* Argument to map_doit. */ - char *str; - struct link_map *loader; -- int is_preloaded; - int mode; - /* Return value of map_doit. */ - struct link_map *map; -@@ -627,16 +626,17 @@ static void - map_doit (void *a) - { - struct map_args *args = (struct map_args *) a; -- args->map = _dl_map_object (args->loader, args->str, -- args->is_preloaded, lt_library, 0, args->mode, -- LM_ID_BASE); -+ args->map = _dl_map_object (args->loader, args->str, lt_library, 0, -+ args->mode, LM_ID_BASE); - } - - static void - dlmopen_doit (void *a) - { - struct dlmopen_args *args = (struct dlmopen_args *) a; -- args->map = _dl_open (args->fname, RTLD_LAZY | __RTLD_DLOPEN | __RTLD_AUDIT, -+ args->map = _dl_open (args->fname, -+ (RTLD_LAZY | __RTLD_DLOPEN | __RTLD_AUDIT -+ | __RTLD_SECURE), - dl_main, LM_ID_NEWLM, _dl_argc, INTUSE(_dl_argv), - __environ); - } -@@ -806,8 +806,7 @@ do_preload (char *fname, struct link_map - - args.str = fname; - args.loader = main_map; -- args.is_preloaded = 1; -- args.mode = 0; -+ args.mode = __RTLD_SECURE; - - unsigned int old_nloaded = GL(dl_ns)[LM_ID_BASE]._ns_nloaded; - -@@ -1054,7 +1053,6 @@ of this helper program; chances are you - - args.str = rtld_progname; - args.loader = NULL; -- args.is_preloaded = 0; - args.mode = __RTLD_OPENEXEC; - (void) _dl_catch_error (&objname, &err_str, &malloced, map_doit, - &args); -@@ -1066,7 +1064,7 @@ of this helper program; chances are you - else - { - HP_TIMING_NOW (start); -- _dl_map_object (NULL, rtld_progname, 0, lt_library, 0, -+ _dl_map_object (NULL, rtld_progname, lt_library, 0, - __RTLD_OPENEXEC, LM_ID_BASE); - HP_TIMING_NOW (stop); - -Index: glibc-2.12-2-gc4ccff1/include/dlfcn.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/include/dlfcn.h -+++ glibc-2.12-2-gc4ccff1/include/dlfcn.h -@@ -9,6 +9,7 @@ - #define __RTLD_OPENEXEC 0x20000000 - #define __RTLD_CALLMAP 0x10000000 - #define __RTLD_AUDIT 0x08000000 -+#define __RTLD_SECURE 0x04000000 /* Apply additional security checks. */ - - #define __LM_ID_CALLER -2 - -Index: glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h -@@ -824,11 +824,9 @@ extern void _dl_receive_error (receiver_ - - /* Open the shared object NAME and map in its segments. - LOADER's DT_RPATH is used in searching for NAME. -- If the object is already opened, returns its existing map. -- For preloaded shared objects PRELOADED is set to a non-zero -- value to allow additional security checks. */ -+ If the object is already opened, returns its existing map. */ - extern struct link_map *_dl_map_object (struct link_map *loader, -- const char *name, int preloaded, -+ const char *name, - int type, int trace_mode, int mode, - Lmid_t nsid) - internal_function attribute_hidden; diff --git a/src/patches/glibc/glibc-rh646954.patch b/src/patches/glibc/glibc-rh646954.patch deleted file mode 100644 index bbb959e..0000000 --- a/src/patches/glibc/glibc-rh646954.patch +++ /dev/null @@ -1,216 +0,0 @@ -2010-10-26 Ulrich Drepper drepper@gmail.com - - * elf/rtld.c (dl_main): Move assertion after the point where rtld map - is added to the list. - -2010-10-20 Andreas Krebbel Andreas.Krebbel@de.ibm.com - Ulrich Drepper drepper@gmail.com - - * elf/dl-object.c (_dl_new_object): Don't append the new object to - the global list here. Move code to... - (_dl_add_to_namespace_list): ...here. New function. - * elf/rtld.c (dl_main): Invoke _dl_add_to_namespace_list. - * sysdeps/generic/ldsodefs.h (_dl_add_to_namespace_list): Declare. - * elf/dl-load.c (lose): Don't remove the element from the list. - (_dl_map_object_from_fd): Invoke _dl_add_to_namespace_list. - (_dl_map_object): Likewise. - -Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-load.c -@@ -797,22 +797,7 @@ lose (int code, int fd, const char *name - /* The file might already be closed. */ - if (fd != -1) - (void) __close (fd); -- if (l != NULL) -- { -- /* We modify the list of loaded objects. */ -- __rtld_lock_lock_recursive (GL(dl_load_write_lock)); -- /* Remove the stillborn object from the list and free it. */ -- assert (l->l_next == NULL); -- if (l->l_prev == NULL) -- /* No other module loaded. This happens only in the static library, -- or in rtld under --verify. */ -- GL(dl_ns)[l->l_ns]._ns_loaded = NULL; -- else -- l->l_prev->l_next = NULL; -- --GL(dl_ns)[l->l_ns]._ns_nloaded; -- free (l); -- __rtld_lock_unlock_recursive (GL(dl_load_write_lock)); -- } -+ free (l); - free (realname); - - if (r != NULL) -@@ -897,6 +882,9 @@ _dl_map_object_from_fd (const char *name - never be unloaded. */ - __close (fd); - -+ /* Add the map for the mirrored object to the object list. */ -+ _dl_add_to_namespace_list (l, nsid); -+ - return l; - } - #endif -@@ -1491,6 +1479,9 @@ cannot enable executable stack as shared - add_name_to_object (l, ((const char *) D_PTR (l, l_info[DT_STRTAB]) - + l->l_info[DT_SONAME]->d_un.d_val)); - -+ /* Now that the object is fully initialized add it to the object list. */ -+ _dl_add_to_namespace_list (l, nsid); -+ - #ifdef SHARED - /* Auditing checkpoint: we have a new object. */ - if (__builtin_expect (GLRO(dl_naudit) > 0, 0) -@@ -2215,7 +2206,7 @@ _dl_map_object (struct link_map *loader, - have. */ - static const Elf_Symndx dummy_bucket = STN_UNDEF; - -- /* Enter the new object in the list of loaded objects. */ -+ /* Allocate a new object map. */ - if ((name_copy = local_strdup (name)) == NULL - || (l = _dl_new_object (name_copy, name, type, loader, - mode, nsid)) == NULL) -@@ -2233,6 +2224,9 @@ _dl_map_object (struct link_map *loader, - l->l_nbuckets = 1; - l->l_relocated = 1; - -+ /* Enter the object in the object list. */ -+ _dl_add_to_namespace_list (l, nsid); -+ - return l; - } - else if (found_other_class) -Index: glibc-2.12-2-gc4ccff1/elf/dl-object.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-object.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-object.c -@@ -26,16 +26,41 @@ - #include <assert.h> - - -+/* Add the new link_map NEW to the end of the namespace list. */ -+void -+internal_function -+_dl_add_to_namespace_list (struct link_map *new, Lmid_t nsid) -+{ -+ /* We modify the list of loaded objects. */ -+ __rtld_lock_lock_recursive (GL(dl_load_write_lock)); -+ -+ if (GL(dl_ns)[nsid]._ns_loaded != NULL) -+ { -+ struct link_map *l = GL(dl_ns)[nsid]._ns_loaded; -+ while (l->l_next != NULL) -+ l = l->l_next; -+ new->l_prev = l; -+ /* new->l_next = NULL; Would be necessary but we use calloc. */ -+ l->l_next = new; -+ } -+ else -+ GL(dl_ns)[nsid]._ns_loaded = new; -+ ++GL(dl_ns)[nsid]._ns_nloaded; -+ new->l_serial = GL(dl_load_adds); -+ ++GL(dl_load_adds); -+ -+ __rtld_lock_unlock_recursive (GL(dl_load_write_lock)); -+} -+ -+ - /* Allocate a `struct link_map' for a new object being loaded, - and enter it into the _dl_loaded list. */ -- - struct link_map * - internal_function - _dl_new_object (char *realname, const char *libname, int type, - struct link_map *loader, int mode, Lmid_t nsid) - { - struct link_map *l; -- int idx; - size_t libname_len = strlen (libname) + 1; - struct link_map *new; - struct libname_list *newname; -@@ -93,31 +118,12 @@ _dl_new_object (char *realname, const ch - new->l_scope = new->l_scope_mem; - new->l_scope_max = sizeof (new->l_scope_mem) / sizeof (new->l_scope_mem[0]); - -- /* We modify the list of loaded objects. */ -- __rtld_lock_lock_recursive (GL(dl_load_write_lock)); -- - /* Counter for the scopes we have to handle. */ -- idx = 0; -+ int idx = 0; - - if (GL(dl_ns)[nsid]._ns_loaded != NULL) -- { -- l = GL(dl_ns)[nsid]._ns_loaded; -- while (l->l_next != NULL) -- l = l->l_next; -- new->l_prev = l; -- /* new->l_next = NULL; Would be necessary but we use calloc. */ -- l->l_next = new; -- -- /* Add the global scope. */ -- new->l_scope[idx++] = &GL(dl_ns)[nsid]._ns_loaded->l_searchlist; -- } -- else -- GL(dl_ns)[nsid]._ns_loaded = new; -- ++GL(dl_ns)[nsid]._ns_nloaded; -- new->l_serial = GL(dl_load_adds); -- ++GL(dl_load_adds); -- -- __rtld_lock_unlock_recursive (GL(dl_load_write_lock)); -+ /* Add the global scope. */ -+ new->l_scope[idx++] = &GL(dl_ns)[nsid]._ns_loaded->l_searchlist; - - /* If we have no loader the new object acts as it. */ - if (loader == NULL) -Index: glibc-2.12-2-gc4ccff1/elf/rtld.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c -+++ glibc-2.12-2-gc4ccff1/elf/rtld.c -@@ -1108,11 +1108,15 @@ of this helper program; chances are you - main_map = _dl_new_object ((char *) "", "", lt_executable, NULL, - __RTLD_OPENEXEC, LM_ID_BASE); - assert (main_map != NULL); -- assert (main_map == GL(dl_ns)[LM_ID_BASE]._ns_loaded); - main_map->l_phdr = phdr; - main_map->l_phnum = phnum; - main_map->l_entry = *user_entry; - -+ /* Even though the link map is not yet fully initialized we can add -+ it to the map list since there are no possible users running yet. */ -+ _dl_add_to_namespace_list (main_map, LM_ID_BASE); -+ assert (main_map == GL(dl_ns)[LM_ID_BASE]._ns_loaded); -+ - /* At this point we are in a bit of trouble. We would have to - fill in the values for l_dev and l_ino. But in general we - do not know where the file is. We also do not handle AT_EXECFD -@@ -1380,6 +1384,9 @@ of this helper program; chances are you - l->l_libname->name = memcpy (copy, dsoname, len); - } - -+ /* Add the vDSO to the object list. */ -+ _dl_add_to_namespace_list (l, LM_ID_BASE); -+ - /* Rearrange the list so this DSO appears after rtld_map. */ - assert (l->l_next == NULL); - assert (l->l_prev == main_map); -Index: glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h -@@ -891,8 +891,11 @@ extern lookup_t _dl_lookup_symbol_x (con - extern ElfW(Addr) _dl_symbol_value (struct link_map *map, const char *name) - internal_function; - --/* Allocate a `struct link_map' for a new object being loaded, -- and enter it into the _dl_main_map list. */ -+/* Add the new link_map NEW to the end of the namespace list. */ -+extern void _dl_add_to_namespace_list (struct link_map *new, Lmid_t nsid) -+ internal_function attribute_hidden; -+ -+/* Allocate a `struct link_map' for a new object being loaded. */ - extern struct link_map *_dl_new_object (char *realname, const char *libname, - int type, struct link_map *loader, - int mode, Lmid_t nsid) diff --git a/src/patches/glibc/glibc-rh647448.patch b/src/patches/glibc/glibc-rh647448.patch deleted file mode 100644 index ff55945..0000000 --- a/src/patches/glibc/glibc-rh647448.patch +++ /dev/null @@ -1,58 +0,0 @@ -2010-10-25 Ulrich Drepper drepper@redhat.com - - [BZ #12159] - * sysdeps/x86_64/multiarch/strchr.S: Fix propagation of search byte - into all bytes of SSE register. - Patch by Richard Li richardpku@gmail.com. - -Index: glibc-2.12-2-gc4ccff1/string/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/Makefile -+++ glibc-2.12-2-gc4ccff1/string/Makefile -@@ -55,7 +55,7 @@ tests := tester inl-tester noinl-tester - tst-strtok tst-strxfrm bug-strcoll1 tst-strfry \ - bug-strtok1 $(addprefix test-,$(strop-tests)) \ - bug-envz1 tst-strxfrm2 tst-endian tst-svc2 \ -- bug-strstr1 -+ bug-strstr1 bug-strchr1 - distribute := memcopy.h pagecopy.h tst-svc.expect test-string.h \ - str-two-way.h - -Index: glibc-2.12-2-gc4ccff1/string/bug-strchr1.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/string/bug-strchr1.c -@@ -0,0 +1,14 @@ -+#include <stdio.h> -+#include <string.h> -+ -+static int -+do_test (void) -+{ -+ char s[] __attribute__((aligned(16))) = "\xff"; -+ char *p = strchr (s, '\xfe'); -+ printf ("%p\n", p); -+ return p != NULL; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strchr.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strchr.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strchr.S -@@ -87,13 +87,13 @@ __strchr_sse42: - pxor %xmm2, %xmm2 - movd %esi, %xmm1 - movl %edi, %ecx -+ pshufb %xmm2, %xmm1 - andl $15, %ecx - movq %rdi, %r8 - je L(aligned_start) - - /* Handle unaligned string. */ - andq $-16, %r8 -- pshufb %xmm2, %xmm1 - movdqa (%r8), %xmm0 - pcmpeqb %xmm0, %xmm2 - pcmpeqb %xmm1, %xmm0 diff --git a/src/patches/glibc/glibc-rh652661.patch b/src/patches/glibc/glibc-rh652661.patch deleted file mode 100644 index 79a3212..0000000 --- a/src/patches/glibc/glibc-rh652661.patch +++ /dev/null @@ -1,21 +0,0 @@ -2010-05-20 Andreas Schwab schwab@redhat.com - - * sysdeps/unix/sysv/linux/sys/timex.h: Use __REDIRECT_NTH. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sys/timex.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/sys/timex.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sys/timex.h -@@ -140,9 +140,9 @@ __BEGIN_DECLS - extern int __adjtimex (struct timex *__ntx) __THROW; - extern int adjtimex (struct timex *__ntx) __THROW; - --#if defined __GNUC__ && __GNUC__ >= 2 --extern int ntp_gettime (struct ntptimeval *__ntv) -- __asm__ ("ntp_gettimex") __THROW; -+#ifdef __REDIRECT_NTH -+extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv), -+ ntp_gettimex); - #else - extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW; - # define ntp_gettime ntp_gettimex diff --git a/src/patches/glibc/glibc-rh656014.patch b/src/patches/glibc/glibc-rh656014.patch deleted file mode 100644 index 5ef68dc..0000000 --- a/src/patches/glibc/glibc-rh656014.patch +++ /dev/null @@ -1,45 +0,0 @@ -2010-11-24 Andreas Schwab schwab@redhat.com - - * resolv/nss_dns/dns-host.c (getanswer_r): Don't handle ttl == 0 - specially. - (gaih_getanswer_slice): Likewise. - -Index: glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-host.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/nss_dns/dns-host.c -+++ glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-host.c -@@ -599,7 +599,6 @@ getanswer_r (const querybuf *answer, int - int (*name_ok) (const char *); - u_char packtmp[NS_MAXCDNAME]; - int have_to_map = 0; -- int32_t ttl = 0; - uintptr_t pad = -(uintptr_t) buffer % __alignof__ (struct host_data); - buffer += pad; - if (__builtin_expect (buflen < sizeof (struct host_data) + pad, 0)) -@@ -733,7 +732,7 @@ getanswer_r (const querybuf *answer, int - cp += INT16SZ; /* type */ - class = __ns_get16 (cp); - cp += INT16SZ; /* class */ -- ttl = __ns_get32 (cp); -+ int32_t ttl = __ns_get32 (cp); - cp += INT32SZ; /* TTL */ - n = __ns_get16 (cp); - cp += INT16SZ; /* len */ -@@ -907,7 +906,7 @@ getanswer_r (const querybuf *answer, int - { - register int nn; - -- if (ttlp != NULL && ttl != 0) -+ if (ttlp != NULL) - *ttlp = ttl; - if (canonp != NULL) - *canonp = bp; -@@ -1163,7 +1162,7 @@ gaih_getanswer_slice (const querybuf *an - - if (*firstp) - { -- if (ttl != 0 && ttlp != NULL) -+ if (ttlp != NULL) - *ttlp = ttl; - - (*pat)->name = canon ?: h_name; diff --git a/src/patches/glibc/glibc-rh656530.patch b/src/patches/glibc/glibc-rh656530.patch deleted file mode 100644 index f101430..0000000 --- a/src/patches/glibc/glibc-rh656530.patch +++ /dev/null @@ -1,21 +0,0 @@ -2010-11-10 Luis Machado luisgpm@br.ibm.com - - * sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c (__ieee754_sqrtl): Force - signed comparison. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c -@@ -73,9 +73,9 @@ long double __ieee754_sqrtl(long double - m = ((a.i[2] >> 20) & 0x7ff) - 54; - } - m += n; -- if (m > 0) -+ if ((int) m > 0) - a.i[2] = (a.i[2] & 0x800fffff) | (m << 20); -- else if (m <= -54) { -+ else if ((int) m <= -54) { - a.i[2] &= 0x80000000; - a.i[3] = 0; - } else { diff --git a/src/patches/glibc/glibc-rh657572.patch b/src/patches/glibc/glibc-rh657572.patch deleted file mode 100644 index a720130..0000000 --- a/src/patches/glibc/glibc-rh657572.patch +++ /dev/null @@ -1,141 +0,0 @@ -commit 42c5011242e48f846111237552d3bf3ca18c4885 -Author: Ulrich Drepper drepper@gmail.com -Date: Fri Dec 23 09:51:10 2011 -0500 - - Various fixes to fi_FI - - 2011-12-23 Ulrich Drepper drepper@gmail.com - - [BZ #12962] - * locales/fi_FI: Various fixups. - Patch by Marko Myllynen myllynen@redhat.com. - -diff --git a/localedata/locales/fi_FI b/localedata/locales/fi_FI -index acc9ce6..f51700c 100644 ---- a/localedata/locales/fi_FI -+++ b/localedata/locales/fi_FI -@@ -1,4 +1,4 @@ --escape_char / -+escape_char / - comment_char % - - % Finnish language locale for Finland -@@ -45,10 +45,10 @@ category "fi_FI:2000";LC_NUMERIC - category "fi_FI:2000";LC_MONETARY - category "fi_FI:2000";LC_MESSAGES - category "fi_FI:2000";LC_PAPER -+category "fi_FI:2000";LC_MEASUREMENT - category "fi_FI:2000";LC_NAME - category "fi_FI:2000";LC_ADDRESS - category "fi_FI:2000";LC_TELEPHONE -- - END LC_IDENTIFICATION - - LC_COLLATE -@@ -125,7 +125,6 @@ reorder-after <U0044> - <U0110> <d>;<OBL>;<CAP>;IGNORE - - reorder-end -- - END LC_COLLATE - - LC_CTYPE -@@ -146,12 +145,10 @@ positive_sign "" - negative_sign "<U002D>" - int_frac_digits 2 - frac_digits 2 --% int_curr_symbol precedes --% curr_symbol succeeds - p_cs_precedes 0 --p_sep_by_space 2 -+p_sep_by_space 1 - n_cs_precedes 0 --n_sep_by_space 2 -+n_sep_by_space 1 - p_sign_posn 1 - n_sign_posn 1 - END LC_MONETARY -@@ -173,18 +170,18 @@ day "<U0073><U0075><U006E><U006E><U0075><U006E><U0074><U0061><U0069>";/ - "<U0074><U006F><U0072><U0073><U0074><U0061><U0069>";/ - "<U0070><U0065><U0072><U006A><U0061><U006E><U0074><U0061><U0069>";/ - "<U006C><U0061><U0075><U0061><U006E><U0074><U0061><U0069>" --abmon "<U0074><U0061><U006D><U006D><U0069><U00A0>";/ -- "<U0068><U0065><U006C><U006D><U0069><U00A0>";/ -+abmon "<U0074><U0061><U006D><U006D><U0069>";/ -+ "<U0068><U0065><U006C><U006D><U0069>";/ - "<U006D><U0061><U0061><U006C><U0069><U0073>";/ -- "<U0068><U0075><U0068><U0074><U0069><U00A0>";/ -- "<U0074><U006F><U0075><U006B><U006F><U00A0>";/ -- "<U006B><U0065><U0073><U00E4><U00A0><U00A0>";/ -- "<U0068><U0065><U0069><U006E><U00E4><U00A0>";/ -- "<U0065><U006C><U006F><U00A0><U00A0><U00A0>";/ -- "<U0073><U0079><U0079><U0073><U00A0><U00A0>";/ -- "<U006C><U006F><U006B><U0061><U00A0><U00A0>";/ -+ "<U0068><U0075><U0068><U0074><U0069>";/ -+ "<U0074><U006F><U0075><U006B><U006F>";/ -+ "<U006B><U0065><U0073><U00E4>";/ -+ "<U0068><U0065><U0069><U006E><U00E4>";/ -+ "<U0065><U006C><U006F>";/ -+ "<U0073><U0079><U0079><U0073>";/ -+ "<U006C><U006F><U006B><U0061>";/ - "<U006D><U0061><U0072><U0072><U0061><U0073>";/ -- "<U006A><U006F><U0075><U006C><U0075><U00A0>" -+ "<U006A><U006F><U0075><U006C><U0075>" - mon "<U0074><U0061><U006D><U006D><U0069><U006B><U0075><U0075>";/ - "<U0068><U0065><U006C><U006D><U0069><U006B><U0075><U0075>";/ - "<U006D><U0061><U0061><U006C><U0069><U0073><U006B><U0075><U0075>";/ -@@ -207,13 +204,14 @@ t_fmt_ampm "" - date_fmt "<U0025><U0061><U0020><U0025><U002D><U0064><U002E><U0025>/ - <U002D><U006D><U002E><U0025><U0059><U0020><U0025><U0048><U002E><U0025>/ - <U004D><U002E><U0025><U0053><U0020><U0025><U007A>" -+week 7;19971130;4 - first_weekday 2 % Monday - first_workday 2 % Monday - END LC_TIME - - LC_MESSAGES --yesexpr "<U005E><U005B><U004B><U006B><U004A><U006A><U0059><U0079><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U004E><U006E><U0045><U0065><U005D><U002E><U002A>" -+yesexpr "<U005E><U005B><U004B><U006B><U0059><U0079><U005D><U002E><U002A>" -+noexpr "<U005E><U005B><U0045><U0065><U004E><U006E><U005D><U002E><U002A>" - END LC_MESSAGES - - LC_PAPER -@@ -222,6 +220,7 @@ width 210 - END LC_PAPER - - LC_TELEPHONE -+tel_dom_fmt "<U0028><U0025><U0041><U0029><U0020><U0025><U006C>" - tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/ - <U006C>" - int_prefix "<U0033><U0035><U0038>" -@@ -235,15 +234,25 @@ END LC_MEASUREMENT - LC_NAME - name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/ - <U0025><U006D><U0025><U0074><U0025><U0066>" -+% Finnish equivalents for Mr/Mrs/Miss/Ms are herra/rouva/rouva/neiti -+% but they are practically never used, thus we don't define them here. - END LC_NAME - - LC_ADDRESS --postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/ --<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/ --<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/ --<U004E><U0025><U007A><U0020><U0025><U0054><U0025>/ -+postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0064><U0025><U004E>/ -+<U0025><U0062><U0025><U004E><U0025><U0061><U0025><U004E><U0025><U0073>/ -+<U0020><U0025><U0068><U0025><U0074><U0025><U0065><U0025><U0074><U0025>/ -+<U0072><U0025><U004E><U0025><U007A><U0020><U0025><U0054><U0025>/ - <U004E><U0025><U0063><U0025><U004E>" - country_ab2 "<U0046><U0049>" - country_ab3 "<U0046><U0049><U004E>" - country_num 246 -+country_name "<U0053><U0075><U006F><U006D><U0069>" -+country_post "<U0046><U0049>" -+country_car "<U0046><U0049><U004E>" -+country_isbn 952 -+lang_name "<U0073><U0075><U006F><U006D><U0069>" -+lang_ab "<U0066><U0069>" -+lang_term "<U0066><U0069><U006E>" -+lang_lib "<U0066><U0069><U006E>" - END LC_ADDRESS diff --git a/src/patches/glibc/glibc-rh661982.patch b/src/patches/glibc/glibc-rh661982.patch deleted file mode 100644 index 60b840b..0000000 --- a/src/patches/glibc/glibc-rh661982.patch +++ /dev/null @@ -1,188 +0,0 @@ -2010-12-10 Andreas Schwab schwab@redhat.com - - * wcsmbs/wchar.h (wcpcpy, wcpncpy): Only declare under - _GNU_SOURCE. - -2010-12-10 Andreas Schwab schwab@redhat.com - - * wcsmbs/wchar.h (wcpcpy, wcpncpy): Add __restrict. - * wcsmbs/bits/wchar2.h (__wmemmove_chk_warn, wmemmove, wmemset): - Remove __restrict. - (wcscpy, __wcpcpy_chk, __wcpcpy_alias, wcpcpy, wcsncpy, wcpncpy) - (wcscat, wcsncat, __wcrtomb_chk, wcrtomb): Add __restrict. - -2010-12-09 Jakub Jelinek jakub@redhat.com - - * string/bits/string3.h (memmove, bcopy): Remove __restrict. - -Index: glibc-2.12-2-gc4ccff1/string/bits/string3.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/bits/string3.h -+++ glibc-2.12-2-gc4ccff1/string/bits/string3.h -@@ -53,8 +53,7 @@ __NTH (memcpy (void *__restrict __dest, - } - - __extern_always_inline void * --__NTH (memmove (void *__restrict __dest, __const void *__restrict __src, -- size_t __len)) -+__NTH (memmove (void *__dest, __const void *__src, size_t __len)) - { - return __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest)); - } -@@ -88,8 +87,7 @@ __NTH (memset (void *__dest, int __ch, s - - #ifdef __USE_BSD - __extern_always_inline void --__NTH (bcopy (__const void *__restrict __src, void *__restrict __dest, -- size_t __len)) -+__NTH (bcopy (__const void *__src, void *__dest, size_t __len)) - { - (void) __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest)); - } -Index: glibc-2.12-2-gc4ccff1/wcsmbs/bits/wchar2.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/wcsmbs/bits/wchar2.h -+++ glibc-2.12-2-gc4ccff1/wcsmbs/bits/wchar2.h -@@ -60,15 +60,13 @@ extern wchar_t *__REDIRECT_NTH (__wmemmo - __const wchar_t *__s2, - size_t __n), wmemmove); - extern wchar_t *__REDIRECT_NTH (__wmemmove_chk_warn, -- (wchar_t *__restrict __s1, -- __const wchar_t *__restrict __s2, size_t __n, -- size_t __ns1), __wmemmove_chk) -+ (wchar_t *__s1, __const wchar_t *__s2, -+ size_t __n, size_t __ns1), __wmemmove_chk) - __warnattr ("wmemmove called with length bigger than size of destination " - "buffer"); - - __extern_always_inline wchar_t * --__NTH (wmemmove (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, -- size_t __n)) -+__NTH (wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)) - { - if (__bos0 (__s1) != (size_t) -1) - { -@@ -129,7 +127,7 @@ extern wchar_t *__REDIRECT_NTH (__wmemse - "buffer"); - - __extern_always_inline wchar_t * --__NTH (wmemset (wchar_t *__restrict __s, wchar_t __c, size_t __n)) -+__NTH (wmemset (wchar_t *__s, wchar_t __c, size_t __n)) - { - if (__bos0 (__s) != (size_t) -1) - { -@@ -152,7 +150,7 @@ extern wchar_t *__REDIRECT_NTH (__wcscpy - __const wchar_t *__restrict __src), wcscpy); - - __extern_always_inline wchar_t * --__NTH (wcscpy (wchar_t *__dest, __const wchar_t *__src)) -+__NTH (wcscpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src)) - { - if (__bos (__dest) != (size_t) -1) - return __wcscpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); -@@ -160,14 +158,15 @@ __NTH (wcscpy (wchar_t *__dest, __const - } - - --extern wchar_t *__wcpcpy_chk (wchar_t *__dest, __const wchar_t *__src, -+extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, -+ __const wchar_t *__restrict __src, - size_t __destlen) __THROW; --extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias, (wchar_t *__dest, -- __const wchar_t *__src), -- wcpcpy); -+extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias, -+ (wchar_t *__restrict __dest, -+ __const wchar_t *__restrict __src), wcpcpy); - - __extern_always_inline wchar_t * --__NTH (wcpcpy (wchar_t *__dest, __const wchar_t *__src)) -+__NTH (wcpcpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src)) - { - if (__bos (__dest) != (size_t) -1) - return __wcpcpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); -@@ -190,7 +189,8 @@ extern wchar_t *__REDIRECT_NTH (__wcsncp - "buffer"); - - __extern_always_inline wchar_t * --__NTH (wcsncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)) -+__NTH (wcsncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, -+ size_t __n)) - { - if (__bos (__dest) != (size_t) -1) - { -@@ -220,7 +220,8 @@ extern wchar_t *__REDIRECT_NTH (__wcpncp - "buffer"); - - __extern_always_inline wchar_t * --__NTH (wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)) -+__NTH (wcpncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, -+ size_t __n)) - { - if (__bos (__dest) != (size_t) -1) - { -@@ -243,7 +244,7 @@ extern wchar_t *__REDIRECT_NTH (__wcscat - __const wchar_t *__restrict __src), wcscat); - - __extern_always_inline wchar_t * --__NTH (wcscat (wchar_t *__dest, __const wchar_t *__src)) -+__NTH (wcscat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src)) - { - if (__bos (__dest) != (size_t) -1) - return __wcscat_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); -@@ -260,7 +261,8 @@ extern wchar_t *__REDIRECT_NTH (__wcsnca - size_t __n), wcsncat); - - __extern_always_inline wchar_t * --__NTH (wcsncat (wchar_t *__dest, __const wchar_t *__src, size_t __n)) -+__NTH (wcsncat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, -+ size_t __n)) - { - if (__bos (__dest) != (size_t) -1) - return __wcsncat_chk (__dest, __src, __n, -@@ -428,14 +430,16 @@ fgetws_unlocked (wchar_t *__restrict __s - #endif - - --extern size_t __wcrtomb_chk (char *__s, wchar_t __wchar, mbstate_t *__p, -- size_t __buflen) __THROW __wur; -+extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, -+ mbstate_t *__restrict __p, -+ size_t __buflen) __THROW __wur; - extern size_t __REDIRECT_NTH (__wcrtomb_alias, - (char *__restrict __s, wchar_t __wchar, - mbstate_t *__restrict __ps), wcrtomb) __wur; - - __extern_always_inline __wur size_t --__NTH (wcrtomb (char *__s, wchar_t __wchar, mbstate_t *__ps)) -+__NTH (wcrtomb (char *__restrict __s, wchar_t __wchar, -+ mbstate_t *__restrict __ps)) - { - /* We would have to include <limits.h> to get a definition of MB_LEN_MAX. - But this would only disturb the namespace. So we define our own -Index: glibc-2.12-2-gc4ccff1/wcsmbs/wchar.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/wcsmbs/wchar.h -+++ glibc-2.12-2-gc4ccff1/wcsmbs/wchar.h -@@ -555,17 +555,17 @@ extern float wcstof_l (__const wchar_t * - extern long double wcstold_l (__const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, - __locale_t __loc) __THROW; --#endif /* GNU */ - - --#ifdef __USE_XOPEN2K8 - /* Copy SRC to DEST, returning the address of the terminating L'\0' in - DEST. */ --extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) __THROW; -+extern wchar_t *wcpcpy (wchar_t *__restrict __dest, -+ __const wchar_t *__restrict __src) __THROW; - - /* Copy no more than N characters of SRC to DEST, returning the address of - the last character written into DEST. */ --extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n) -+extern wchar_t *wcpncpy (wchar_t *__restrict __dest, -+ __const wchar_t *__restrict __src, size_t __n) - __THROW; - #endif /* use GNU */ - diff --git a/src/patches/glibc/glibc-rh663641-2.patch b/src/patches/glibc/glibc-rh663641-2.patch deleted file mode 100644 index 13c1bee..0000000 --- a/src/patches/glibc/glibc-rh663641-2.patch +++ /dev/null @@ -1,279 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/csu/libc-start.c glibc-2.12-2-gc4ccff1.fixed/csu/libc-start.c ---- glibc-2.12-2-gc4ccff1/csu/libc-start.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/csu/libc-start.c 2013-07-09 23:34:59.596859295 +0530 -@@ -33,7 +33,7 @@ extern int __libc_multiple_libcs; - #include <tls.h> - #ifndef SHARED - # include <dl-osinfo.h> --extern void __pthread_initialize_minimal (void); -+extern void __pthread_initialize_minimal (int, char **, char **); - # ifndef THREAD_SET_STACK_GUARD - /* Only exported for architectures that don't store the stack guard canary - in thread local area. */ -@@ -143,7 +143,7 @@ LIBC_START_MAIN (int (*main) (int, char - /* Initialize the thread library at least a bit since the libgcc - functions are using thread functions if these are available and - we need to setup errno. */ -- __pthread_initialize_minimal (); -+ __pthread_initialize_minimal (argc, argv, __environ); - - /* Set up the stack checker's canary. */ - uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard (_dl_random); -diff -pruN glibc-2.12-2-gc4ccff1/csu/libc-tls.c glibc-2.12-2-gc4ccff1.fixed/csu/libc-tls.c ---- glibc-2.12-2-gc4ccff1/csu/libc-tls.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/csu/libc-tls.c 2013-07-09 23:34:59.596859295 +0530 -@@ -244,7 +244,7 @@ _dl_tls_setup (void) - not used. */ - void - __attribute__ ((weak)) --__pthread_initialize_minimal (void) -+__pthread_initialize_minimal (int argc, char **argv, char **envp) - { - __libc_setup_tls (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN); - } -diff -pruN glibc-2.12-2-gc4ccff1/nptl/Makefile glibc-2.12-2-gc4ccff1.fixed/nptl/Makefile ---- glibc-2.12-2-gc4ccff1/nptl/Makefile 2013-07-09 23:35:21.692858252 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/Makefile 2013-07-09 23:34:59.597859295 +0530 -@@ -197,7 +197,7 @@ CFLAGS-pt-system.c = -fexceptions - - - tests = tst-typesizes \ -- tst-attr1 tst-attr2 tst-attr3 \ -+ tst-attr1 tst-attr2 tst-attr3 tst-default-attr \ - tst-mutex1 tst-mutex2 tst-mutex3 tst-mutex4 tst-mutex5 tst-mutex6 \ - tst-mutex7 tst-mutex8 tst-mutex9 tst-mutex5a tst-mutex7a \ - tst-mutexpi1 tst-mutexpi2 tst-mutexpi3 tst-mutexpi4 tst-mutexpi5 \ -@@ -279,6 +279,13 @@ LDFLAGS-pthread.so = -Wl,--enable-new-dt - LDFLAGS-tst-cond24 = -lrt - LDFLAGS-tst-cond25 = -lrt - -+# The size is 1MB + 4KB. The extra 4KB has been added to prevent allocatestack -+# from resizing the input size to avoid the 64K aliasing conflict on Intel -+# processors. -+DEFAULT_STACKSIZE=1052672 -+CFLAGS-tst-default-attr.c = -DDEFAULT_STACKSIZE=$(DEFAULT_STACKSIZE) -+tst-default-attr-ENV = GLIBC_PTHREAD_STACKSIZE=$(DEFAULT_STACKSIZE) -+ - include ../Makeconfig - - ifeq ($(have-forced-unwind),yes) -diff -pruN glibc-2.12-2-gc4ccff1/nptl/nptl-init.c glibc-2.12-2-gc4ccff1.fixed/nptl/nptl-init.c ---- glibc-2.12-2-gc4ccff1/nptl/nptl-init.c 2013-07-09 23:35:21.723858250 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/nptl-init.c 2013-07-09 23:36:35.070854789 +0530 -@@ -36,6 +36,7 @@ - #include <smp.h> - #include <lowlevellock.h> - #include <kernel-features.h> -+#include <libc-internal.h> - - - /* Size and alignment of static TLS block. */ -@@ -288,8 +289,28 @@ extern void **__libc_dl_error_tsd (void) - /* This can be set by the debugger before initialization is complete. */ - static bool __nptl_initial_report_events __attribute_used__; - -+/* Validate and set the default stacksize. */ -+static void -+set_default_stacksize (size_t stacksize) -+{ -+ if (stacksize < PTHREAD_STACK_MIN) -+ stacksize = PTHREAD_STACK_MIN; -+ -+ /* Make sure it meets the minimum size that allocate_stack -+ (allocatestack.c) will demand, which depends on the page size. */ -+ const uintptr_t pagesz = GLRO(dl_pagesize); -+ const size_t minstack = pagesz + __static_tls_size + MINIMAL_REST_STACK; -+ -+ if (stacksize < minstack) -+ stacksize = minstack; -+ -+ /* Round the resource limit up to page size. */ -+ stacksize = ALIGN_UP (stacksize, pagesz); -+ __default_pthread_attr.stacksize = stacksize; -+} -+ - void --__pthread_initialize_minimal_internal (void) -+__pthread_initialize_minimal_internal (int argc, char **argv, char **envp) - { - #ifndef SHARED - /* Unlike in the dynamically linked case the dynamic linker has not -@@ -413,29 +434,44 @@ __pthread_initialize_minimal_internal (v - - __static_tls_size = roundup (__static_tls_size, static_tls_align); - -- /* Determine the default allowed stack size. This is the size used -- in case the user does not specify one. */ -- struct rlimit limit; -- if (getrlimit (RLIMIT_STACK, &limit) != 0 -- || limit.rlim_cur == RLIM_INFINITY) -- /* The system limit is not usable. Use an architecture-specific -- default. */ -- limit.rlim_cur = ARCH_STACK_DEFAULT_SIZE; -- else if (limit.rlim_cur < PTHREAD_STACK_MIN) -- /* The system limit is unusably small. -- Use the minimal size acceptable. */ -- limit.rlim_cur = PTHREAD_STACK_MIN; -+ /* Initialize the environment. libc.so gets initialized after us due to a -+ circular dependency and hence __environ is not available otherwise. */ -+ __environ = envp; - -- /* Make sure it meets the minimum size that allocate_stack -- (allocatestack.c) will demand, which depends on the page size. */ -- const uintptr_t pagesz = __sysconf (_SC_PAGESIZE); -- const size_t minstack = pagesz + __static_tls_size + MINIMAL_REST_STACK; -- if (limit.rlim_cur < minstack) -- limit.rlim_cur = minstack; -+#ifndef SHARED -+ __libc_init_secure (); -+#endif - -- /* Round the resource limit up to page size. */ -- limit.rlim_cur = (limit.rlim_cur + pagesz - 1) & -pagesz; -- __default_pthread_attr.stacksize = limit.rlim_cur; -+ /* Get the default stack size from the environment variable if it is set and -+ is valid. */ -+ size_t stacksize = 0; -+ char *envval = __secure_getenv ("GLIBC_PTHREAD_STACKSIZE"); -+ -+ if (__builtin_expect (envval != NULL && envval[0] != '\0', 0)) -+ { -+ char *env_conv = envval; -+ size_t ret = strtoul (envval, &env_conv, 0); -+ -+ if (*env_conv == '\0' && env_conv != envval) -+ stacksize = ret; -+ } -+ -+ if (stacksize == 0) -+ { -+ /* Determine the default allowed stack size. */ -+ struct rlimit limit; -+ if (getrlimit (RLIMIT_STACK, &limit) != 0 -+ || limit.rlim_cur == RLIM_INFINITY) -+ /* The system limit is not usable. Use an architecture-specific -+ default. */ -+ stacksize = ARCH_STACK_DEFAULT_SIZE; -+ else -+ stacksize = limit.rlim_cur; -+ } -+ -+ /* Finally, set the default stack size. This size is used when the user does -+ not specify a stack size during thread creation. */ -+ set_default_stacksize (stacksize); - __default_pthread_attr.guardsize = GLRO (dl_pagesize); - - #ifdef SHARED -diff -pruN glibc-2.12-2-gc4ccff1/nptl/tst-default-attr.c glibc-2.12-2-gc4ccff1.fixed/nptl/tst-default-attr.c ---- glibc-2.12-2-gc4ccff1/nptl/tst-default-attr.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/tst-default-attr.c 2013-07-09 23:34:59.598859295 +0530 -@@ -0,0 +1,109 @@ -+/* Verify that default stack size gets set correctly from the environment -+ variable. -+ -+ Copyright (C) 2013 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ -+#include <pthread.h> -+#include <stdio.h> -+#include <stdint.h> -+#include <string.h> -+#include <unistd.h> -+#include <errno.h> -+ -+#define RETURN_IF_FAIL(f, ...) \ -+ ({ \ -+ int ret = f (__VA_ARGS__); \ -+ if (ret != 0) \ -+ { \ -+ printf ("%s:%d: %s returned %d (errno = %d)\n", __FILE__, __LINE__, \ -+ #f, ret, errno); \ -+ return ret; \ -+ } \ -+ }) -+ -+/* DEFAULT_STACKSIZE macro is defined in the Makefile. */ -+static size_t stacksize = DEFAULT_STACKSIZE; -+ -+static int -+verify_stacksize_result (pthread_attr_t *attr) -+{ -+ size_t stack; -+ -+ RETURN_IF_FAIL (pthread_attr_getstacksize, attr, &stack); -+ -+ if (stacksize != stack) -+ { -+ printf ("failed to set default stacksize (%zu, %zu)\n", stacksize, stack); -+ return 1; -+ } -+ -+ return 0; -+} -+ -+static void * -+thr (void *unused __attribute__ ((unused))) -+{ -+ pthread_attr_t attr; -+ int ret; -+ -+ memset (&attr, 0xab, sizeof attr); -+ /* To verify that the attributes actually got applied. */ -+ if ((ret = pthread_getattr_np (pthread_self (), &attr)) != 0) -+ { -+ printf ("pthread_getattr_np failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ -+ ret = verify_stacksize_result (&attr); -+ -+out: -+ return (void *) (uintptr_t) ret; -+} -+ -+static int -+run_threads (void) -+{ -+ pthread_t t; -+ void *tret = NULL; -+ -+ /* Run twice to ensure that the attributes do not get overwritten in the -+ first run somehow. */ -+ for (int i = 0; i < 2; i++) -+ { -+ RETURN_IF_FAIL (pthread_create, &t, NULL, thr, NULL); -+ RETURN_IF_FAIL (pthread_join, t, &tret); -+ -+ if (tret != NULL) -+ { -+ puts ("Thread failed"); -+ return 1; -+ } -+ } -+ -+ return 0; -+} -+ -+static int -+do_test (void) -+{ -+ RETURN_IF_FAIL (run_threads); -+ return 0; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" diff --git a/src/patches/glibc/glibc-rh663641-3.patch b/src/patches/glibc/glibc-rh663641-3.patch deleted file mode 100644 index 182fe99..0000000 --- a/src/patches/glibc/glibc-rh663641-3.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/pt-initfini.c glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/pthread/pt-initfini.c ---- glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/pt-initfini.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/pthread/pt-initfini.c 2013-07-22 21:52:03.519184065 +0530 -@@ -63,21 +63,21 @@ asm ("\n/*@TESTS_END*/"); - asm ("\n/*@_init_PROLOG_BEGINS*/"); - - static void --call_initialize_minimal (void) -+call_initialize_minimal (int argc, char **argv, char **envp) - { -- extern void __pthread_initialize_minimal_internal (void) -+ extern void __pthread_initialize_minimal_internal (int, char **, char **) - __attribute ((visibility ("hidden"))); - -- __pthread_initialize_minimal_internal (); -+ __pthread_initialize_minimal_internal (argc, argv, envp); - } - - SECTION (".init"); --extern void __attribute__ ((section (".init"))) _init (void); -+extern void __attribute__ ((section (".init"))) _init (int, char **, char **); - void --_init (void) -+_init (int argc, char **argv, char **envp) - { - /* The very first thing we must do is to set up the registers. */ -- call_initialize_minimal (); -+ call_initialize_minimal (argc, argv, envp); - - asm ("ALIGN"); - asm("END_INIT"); diff --git a/src/patches/glibc/glibc-rh663641.patch b/src/patches/glibc/glibc-rh663641.patch deleted file mode 100644 index e1ca4f1..0000000 --- a/src/patches/glibc/glibc-rh663641.patch +++ /dev/null @@ -1,191 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/include/libc-internal.h glibc-2.12-2-gc4ccff1.fixed/include/libc-internal.h ---- glibc-2.12-2-gc4ccff1/include/libc-internal.h 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/include/libc-internal.h 2013-07-09 23:44:00.272833779 +0530 -@@ -34,4 +34,24 @@ extern void __libc_thread_freeres (void) - /* Define and initialize `__progname' et. al. */ - extern void __init_misc (int, char **, char **); - -+/* Align a value by rounding down to closest size. -+ e.g. Using size of 4096, we get this behavior: -+ {4095, 4096, 4097} = {0, 4096, 4096}. */ -+#define ALIGN_DOWN(base, size) ((base) & -((__typeof__ (base)) (size))) -+ -+/* Align a value by rounding up to closest size. -+ e.g. Using size of 4096, we get this behavior: -+ {4095, 4096, 4097} = {4096, 4096, 8192}. -+ -+ Note: The size argument has side effects (expanded multiple times). */ -+#define ALIGN_UP(base, size) ALIGN_DOWN ((base) + (size) - 1, (size)) -+ -+/* Same as ALIGN_DOWN(), but automatically casts when base is a pointer. */ -+#define PTR_ALIGN_DOWN(base, size) \ -+ ((__typeof__ (base)) ALIGN_DOWN ((uintptr_t) (base), (size))) -+ -+/* Same as ALIGN_UP(), but automatically casts when base is a pointer. */ -+#define PTR_ALIGN_UP(base, size) \ -+ ((__typeof__ (base)) ALIGN_UP ((uintptr_t) (base), (size))) -+ - #endif /* _LIBC_INTERNAL */ -diff -pruN glibc-2.12-2-gc4ccff1/nptl/allocatestack.c glibc-2.12-2-gc4ccff1.fixed/nptl/allocatestack.c ---- glibc-2.12-2-gc4ccff1/nptl/allocatestack.c 2013-07-09 23:43:09.427836179 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/allocatestack.c 2013-07-09 23:43:52.727834136 +0530 -@@ -351,7 +351,7 @@ allocate_stack (const struct pthread_att - - /* Get the stack size from the attribute if it is set. Otherwise we - use the default we determined at start time. */ -- size = attr->stacksize ?: __default_stacksize; -+ size = attr->stacksize ?: __default_pthread_attr.stacksize; - - /* Get memory for the stack. */ - if (__builtin_expect (attr->flags & ATTR_FLAG_STACKADDR, 0)) -diff -pruN glibc-2.12-2-gc4ccff1/nptl/nptl-init.c glibc-2.12-2-gc4ccff1.fixed/nptl/nptl-init.c ---- glibc-2.12-2-gc4ccff1/nptl/nptl-init.c 2013-07-09 23:43:09.553836173 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/nptl-init.c 2013-07-09 23:43:52.728834135 +0530 -@@ -435,7 +435,8 @@ __pthread_initialize_minimal_internal (v - - /* Round the resource limit up to page size. */ - limit.rlim_cur = (limit.rlim_cur + pagesz - 1) & -pagesz; -- __default_stacksize = limit.rlim_cur; -+ __default_pthread_attr.stacksize = limit.rlim_cur; -+ __default_pthread_attr.guardsize = GLRO (dl_pagesize); - - #ifdef SHARED - /* Transfer the old value from the dynamic linker's internal location. */ -diff -pruN glibc-2.12-2-gc4ccff1/nptl/pthread_attr_getstacksize.c glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_attr_getstacksize.c ---- glibc-2.12-2-gc4ccff1/nptl/pthread_attr_getstacksize.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_attr_getstacksize.c 2013-07-09 23:43:52.817834131 +0530 -@@ -33,7 +33,7 @@ __pthread_attr_getstacksize (attr, stack - - /* If the user has not set a stack size we return what the system - will use as the default. */ -- *stacksize = iattr->stacksize ?: __default_stacksize; -+ *stacksize = iattr->stacksize ?: __default_pthread_attr.stacksize; - - return 0; - } -diff -pruN glibc-2.12-2-gc4ccff1/nptl/pthread_barrier_init.c glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_barrier_init.c ---- glibc-2.12-2-gc4ccff1/nptl/pthread_barrier_init.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_barrier_init.c 2013-07-09 23:43:52.821834131 +0530 -@@ -23,7 +23,7 @@ - #include <kernel-features.h> - - --static const struct pthread_barrierattr default_attr = -+static const struct pthread_barrierattr default_barrierattr = - { - .pshared = PTHREAD_PROCESS_PRIVATE - }; -@@ -43,7 +43,7 @@ pthread_barrier_init (barrier, attr, cou - const struct pthread_barrierattr *iattr - = (attr != NULL - ? iattr = (struct pthread_barrierattr *) attr -- : &default_attr); -+ : &default_barrierattr); - - if (iattr->pshared != PTHREAD_PROCESS_PRIVATE - && __builtin_expect (iattr->pshared != PTHREAD_PROCESS_SHARED, 0)) -diff -pruN glibc-2.12-2-gc4ccff1/nptl/pthread_create.c glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_create.c ---- glibc-2.12-2-gc4ccff1/nptl/pthread_create.c 2013-07-09 23:43:09.542836173 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_create.c 2013-07-09 23:43:52.822834131 +0530 -@@ -425,15 +425,6 @@ start_thread (void *arg) - } - - --/* Default thread attributes for the case when the user does not -- provide any. */ --static const struct pthread_attr default_attr = -- { -- /* Just some value > 0 which gets rounded to the nearest page size. */ -- .guardsize = 1, -- }; -- -- - int - __pthread_create_2_1 (newthread, attr, start_routine, arg) - pthread_t *newthread; -@@ -447,7 +438,7 @@ __pthread_create_2_1 (newthread, attr, s - if (iattr == NULL) - /* Is this the best idea? On NUMA machines this could mean - accessing far-away memory. */ -- iattr = &default_attr; -+ iattr = &__default_pthread_attr; - - struct pthread *pd = NULL; - int err = ALLOCATE_STACK (iattr, &pd); -diff -pruN glibc-2.12-2-gc4ccff1/nptl/pthread_mutex_init.c glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_mutex_init.c ---- glibc-2.12-2-gc4ccff1/nptl/pthread_mutex_init.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_mutex_init.c 2013-07-09 23:43:52.822834131 +0530 -@@ -24,7 +24,7 @@ - #include <kernel-features.h> - #include "pthreadP.h" - --static const struct pthread_mutexattr default_attr = -+static const struct pthread_mutexattr default_mutexattr = - { - /* Default is a normal mutex, not shared between processes. */ - .mutexkind = PTHREAD_MUTEX_NORMAL -@@ -45,7 +45,8 @@ __pthread_mutex_init (mutex, mutexattr) - - assert (sizeof (pthread_mutex_t) <= __SIZEOF_PTHREAD_MUTEX_T); - -- imutexattr = (const struct pthread_mutexattr *) mutexattr ?: &default_attr; -+ imutexattr = ((const struct pthread_mutexattr *) mutexattr -+ ?: &default_mutexattr); - - /* Sanity checks. */ - switch (__builtin_expect (imutexattr->mutexkind -diff -pruN glibc-2.12-2-gc4ccff1/nptl/pthreadP.h glibc-2.12-2-gc4ccff1.fixed/nptl/pthreadP.h ---- glibc-2.12-2-gc4ccff1/nptl/pthreadP.h 2013-07-09 23:43:09.553836173 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/pthreadP.h 2013-07-09 23:43:52.823834131 +0530 -@@ -148,8 +148,8 @@ enum - /* Internal variables. */ - - --/* Default stack size. */ --extern size_t __default_stacksize attribute_hidden; -+/* Default pthread attributes. */ -+extern struct pthread_attr __default_pthread_attr attribute_hidden; - - /* Size and alignment of static TLS block. */ - extern size_t __static_tls_size attribute_hidden; -diff -pruN glibc-2.12-2-gc4ccff1/nptl/pthread_rwlock_init.c glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_rwlock_init.c ---- glibc-2.12-2-gc4ccff1/nptl/pthread_rwlock_init.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_rwlock_init.c 2013-07-09 23:43:52.823834131 +0530 -@@ -21,7 +21,7 @@ - #include <kernel-features.h> - - --static const struct pthread_rwlockattr default_attr = -+static const struct pthread_rwlockattr default_rwlockattr = - { - .lockkind = PTHREAD_RWLOCK_DEFAULT_NP, - .pshared = PTHREAD_PROCESS_PRIVATE -@@ -35,7 +35,7 @@ __pthread_rwlock_init (rwlock, attr) - { - const struct pthread_rwlockattr *iattr; - -- iattr = ((const struct pthread_rwlockattr *) attr) ?: &default_attr; -+ iattr = ((const struct pthread_rwlockattr *) attr) ?: &default_rwlockattr; - - memset (rwlock, '\0', sizeof (*rwlock)); - -diff -pruN glibc-2.12-2-gc4ccff1/nptl/vars.c glibc-2.12-2-gc4ccff1.fixed/nptl/vars.c ---- glibc-2.12-2-gc4ccff1/nptl/vars.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/vars.c 2013-07-09 23:43:52.824834131 +0530 -@@ -21,13 +21,9 @@ - #include <tls.h> - #include <unistd.h> - --/* Default stack size. */ --size_t __default_stacksize attribute_hidden --#ifdef SHARED --; --#else -- = PTHREAD_STACK_MIN; --#endif -+/* Default thread attributes for the case when the user does not -+ provide any. */ -+struct pthread_attr __default_pthread_attr attribute_hidden; - - /* Flag whether the machine is SMP or not. */ - int __is_smp attribute_hidden; diff --git a/src/patches/glibc/glibc-rh667974.patch b/src/patches/glibc/glibc-rh667974.patch deleted file mode 100644 index 48aacac..0000000 --- a/src/patches/glibc/glibc-rh667974.patch +++ /dev/null @@ -1,160 +0,0 @@ -2011-03-14 Andreas Schwab schwab@redhat.com - - * elf/dl-load.c (is_dst): Remove parameter secure, all callers - changed. Don't check for isolated use. - (_dl_dst_substitute): Ignore rpath elements containing - non-isolated use of $ORIGIN when privileged. - - * elf/dl-load.c (_dl_dst_substitute): When skipping the first - rpath element also skip the following colon. - (expand_dynamic_string_token): Add is_path parameter and pass - down to DL_DST_REQUIRED and _dl_dst_substitute. - (decompose_rpath): Call expand_dynamic_string_token with - non-zero is_path. Ignore empty rpaths. - (_dl_map_object_from_fd): Call expand_dynamic_string_token - with zero is_path. - -Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-load.c -@@ -169,8 +169,7 @@ local_strdup (const char *s) - - - static size_t --is_dst (const char *start, const char *name, const char *str, -- int is_path, int secure) -+is_dst (const char *start, const char *name, const char *str, int is_path) - { - size_t len; - bool is_curly = false; -@@ -199,11 +198,6 @@ is_dst (const char *start, const char *n - && (!is_path || name[len] != ':')) - return 0; - -- if (__builtin_expect (secure, 0) -- && ((name[len] != '\0' && (!is_path || name[len] != ':')) -- || (name != start + 1 && (!is_path || name[-2] != ':')))) -- return 0; -- - return len; - } - -@@ -218,13 +212,10 @@ _dl_dst_count (const char *name, int is_ - { - size_t len; - -- /* $ORIGIN is not expanded for SUID/GUID programs (except if it -- is $ORIGIN alone) and it must always appear first in path. */ - ++name; -- if ((len = is_dst (start, name, "ORIGIN", is_path, -- INTUSE(__libc_enable_secure))) != 0 -- || (len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0 -- || (len = is_dst (start, name, "LIB", is_path, 0)) != 0) -+ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0 -+ || (len = is_dst (start, name, "PLATFORM", is_path)) != 0 -+ || (len = is_dst (start, name, "LIB", is_path)) != 0) - ++cnt; - - name = strchr (name + len, '$'); -@@ -256,9 +247,16 @@ _dl_dst_substitute (struct link_map *l, - size_t len; - - ++name; -- if ((len = is_dst (start, name, "ORIGIN", is_path, -- INTUSE(__libc_enable_secure))) != 0) -+ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0) - { -+ /* $ORIGIN is not expanded for SUID/GUID programs -+ (except if it is $ORIGIN alone) and it must always -+ appear first in path. */ -+ if (__builtin_expect (INTUSE(__libc_enable_secure), 0) -+ && ((name[len] != '\0' && (!is_path || name[len] != ':')) -+ || (name != start + 1 && (!is_path || name[-2] != ':')))) -+ repl = (const char *) -1; -+ else - #ifndef SHARED - if (l == NULL) - repl = _dl_get_origin (); -@@ -266,9 +264,9 @@ _dl_dst_substitute (struct link_map *l, - #endif - repl = l->l_origin; - } -- else if ((len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0) -+ else if ((len = is_dst (start, name, "PLATFORM", is_path)) != 0) - repl = GLRO(dl_platform); -- else if ((len = is_dst (start, name, "LIB", is_path, 0)) != 0) -+ else if ((len = is_dst (start, name, "LIB", is_path)) != 0) - repl = DL_DST_LIB; - - if (repl != NULL && repl != (const char *) -1) -@@ -284,6 +282,10 @@ _dl_dst_substitute (struct link_map *l, - name += len; - while (*name != '\0' && (!is_path || *name != ':')) - ++name; -+ /* Also skip following colon if this is the first rpath -+ element, but keep an empty element at the end. */ -+ if (wp == result && is_path && *name == ':' && name[1] != '\0') -+ ++name; - } - else - /* No DST we recognize. */ -@@ -310,7 +312,7 @@ _dl_dst_substitute (struct link_map *l, - belonging to the map is loaded. In this case the path element - containing $ORIGIN is left out. */ - static char * --expand_dynamic_string_token (struct link_map *l, const char *s) -+expand_dynamic_string_token (struct link_map *l, const char *s, int is_path) - { - /* We make two runs over the string. First we determine how large the - resulting string is and then we copy it over. Since this is no -@@ -321,7 +323,7 @@ expand_dynamic_string_token (struct link - char *result; - - /* Determine the number of DST elements. */ -- cnt = DL_DST_COUNT (s, 1); -+ cnt = DL_DST_COUNT (s, is_path); - - /* If we do not have to replace anything simply copy the string. */ - if (__builtin_expect (cnt, 0) == 0) -@@ -335,7 +337,7 @@ expand_dynamic_string_token (struct link - if (result == NULL) - return NULL; - -- return _dl_dst_substitute (l, s, result, 1); -+ return _dl_dst_substitute (l, s, result, is_path); - } - - -@@ -551,13 +553,21 @@ decompose_rpath (struct r_search_path_st - - /* Make a writable copy. At the same time expand possible dynamic - string tokens. */ -- copy = expand_dynamic_string_token (l, rpath); -+ copy = expand_dynamic_string_token (l, rpath, 1); - if (copy == NULL) - { - errstring = N_("cannot create RUNPATH/RPATH copy"); - goto signal_error; - } - -+ /* Ignore empty rpaths. */ -+ if (*copy == 0) -+ { -+ free (copy); -+ sps->dirs = (char *) -1; -+ return false; -+ } -+ - /* Count the number of necessary elements in the result array. */ - nelems = 0; - for (cp = copy; *cp != '\0'; ++cp) -@@ -2176,7 +2186,7 @@ _dl_map_object (struct link_map *loader, - { - /* The path may contain dynamic string tokens. */ - realname = (loader -- ? expand_dynamic_string_token (loader, name) -+ ? expand_dynamic_string_token (loader, name, 0) - : local_strdup (name)); - if (realname == NULL) - fd = -1; diff --git a/src/patches/glibc/glibc-rh676076.patch b/src/patches/glibc/glibc-rh676076.patch deleted file mode 100644 index c5aa2d4..0000000 --- a/src/patches/glibc/glibc-rh676076.patch +++ /dev/null @@ -1,714 +0,0 @@ -2011-03-02 Harsha Jagasia harsha.jagasia@amd.com - Ulrich Drepper drepper@gmail.com - - * sysdeps/x86_64/memset.S: After aligning destination, code - branches to different locations depending on the value of - misalignment, when multiarch is enabled. Fix this. - -2011-03-02 Harsha Jagasia harsha.jagasia@amd.com - - * sysdeps/x86_64/cacheinfo.c (init_cacheinfo): - Set _x86_64_preferred_memory_instruction for AMD processsors. - * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): - Set bit_Prefer_SSE_for_memop for AMD processors. - -2010-11-07 H.J. Lu hongjiu.lu@intel.com - - * sysdeps/x86_64/memset.S: Check USE_MULTIARCH and USE_SSE2 for - IFUNC support. - * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add - memset-x86-64. - * sysdeps/x86_64/multiarch/bzero.S: New file. - * sysdeps/x86_64/multiarch/cacheinfo.c: New file. - * sysdeps/x86_64/multiarch/memset-x86-64.S: New file. - * sysdeps/x86_64/multiarch/memset.S: New file. - * sysdeps/x86_64/multiarch/memset_chk.S: New file. - * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): - Set bit_Prefer_SSE_for_memop for Intel processors. - * sysdeps/x86_64/multiarch/init-arch.h (bit_Prefer_SSE_for_memop): - Define. - (index_Prefer_SSE_for_memop): Define. - (HAS_PREFER_SSE_FOR_MEMOP): Define. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/cacheinfo.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c -@@ -613,6 +613,25 @@ init_cacheinfo (void) - long int core = handle_amd (_SC_LEVEL2_CACHE_SIZE); - shared = handle_amd (_SC_LEVEL3_CACHE_SIZE); - -+#ifndef DISABLE_PREFERRED_MEMORY_INSTRUCTION -+# ifdef USE_MULTIARCH -+ eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax; -+ ebx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ebx; -+ ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx; -+ edx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].edx; -+# else -+ __cpuid (1, eax, ebx, ecx, edx); -+# endif -+ -+ /* AMD prefers SSSE3 instructions for memory/string routines -+ if they are avaiable, otherwise it prefers integer -+ instructions. */ -+ if ((ecx & 0x200)) -+ __x86_64_preferred_memory_instruction = 3; -+ else -+ __x86_64_preferred_memory_instruction = 0; -+#endif -+ - /* Get maximum extended function. */ - __cpuid (0x80000000, max_cpuid_ex, ebx, ecx, edx); - -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/memset.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/memset.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/memset.S -@@ -24,7 +24,7 @@ - #define __STOS_UPPER_BOUNDARY $65536 - - .text --#ifndef NOT_IN_libc -+#if !defined NOT_IN_libc && !defined USE_MULTIARCH - ENTRY(__bzero) - mov %rsi,%rdx /* Adjust parameter. */ - xorl %esi,%esi /* Fill with 0s. */ -@@ -34,10 +34,10 @@ weak_alias (__bzero, bzero) - #endif - - #if defined PIC && !defined NOT_IN_libc --ENTRY (__memset_chk) -+ENTRY_CHK (__memset_chk) - cmpq %rdx, %rcx - jb HIDDEN_JUMPTARGET (__chk_fail) --END (__memset_chk) -+END_CHK (__memset_chk) - #endif - ENTRY (memset) - L(memset_entry): -@@ -591,157 +591,15 @@ L(A6Q1): mov %dx,-0xe(%rdi) - L(A7Q0): mov %dl,-0x7(%rdi) - L(A6Q0): mov %dx,-0x6(%rdi) - mov %edx,-0x4(%rdi) -- jmp L(aligned_now) -- -- .balign 16 --L(aligned_now): -- -- cmpl $0x1,__x86_64_preferred_memory_instruction(%rip) -- jg L(SSE_pre) -- --L(8byte_move_try): -- cmpq __STOS_LOWER_BOUNDARY,%r8 -- jae L(8byte_stos_try) -- -- .balign 16 --L(8byte_move): -- movq %r8,%rcx -- shrq $7,%rcx -- jz L(8byte_move_skip) -- -- .p2align 4 -- --L(8byte_move_loop): -- decq %rcx -- -- movq %rdx, (%rdi) -- movq %rdx, 8 (%rdi) -- movq %rdx, 16 (%rdi) -- movq %rdx, 24 (%rdi) -- movq %rdx, 32 (%rdi) -- movq %rdx, 40 (%rdi) -- movq %rdx, 48 (%rdi) -- movq %rdx, 56 (%rdi) -- movq %rdx, 64 (%rdi) -- movq %rdx, 72 (%rdi) -- movq %rdx, 80 (%rdi) -- movq %rdx, 88 (%rdi) -- movq %rdx, 96 (%rdi) -- movq %rdx, 104 (%rdi) -- movq %rdx, 112 (%rdi) -- movq %rdx, 120 (%rdi) -- -- leaq 128 (%rdi),%rdi -- -- jnz L(8byte_move_loop) -- --L(8byte_move_skip): -- andl $127,%r8d -- lea (%rdi,%r8,1),%rdi -- --#ifndef PIC -- lea L(setPxQx)(%rip),%r11 -- jmpq *(%r11,%r8,8) # old scheme remained for nonPIC --#else -- lea L(Got0)(%rip),%r11 -- lea L(setPxQx)(%rip),%rcx -- movswq (%rcx,%r8,2),%rcx -- lea (%rcx,%r11,1),%r11 -- jmpq *%r11 --#endif -- -- .balign 16 --L(8byte_stos_try): -- mov __x86_64_shared_cache_size(%rip),%r9d // ck largest cache size -- cmpq %r8,%r9 // calculate the lesser of remaining -- cmovaq %r8,%r9 // bytes and largest cache size -- jbe L(8byte_stos) -- --L(8byte_move_reuse_try): -- cmp __STOS_UPPER_BOUNDARY,%r8 -- jae L(8byte_move) -- -- .balign 16 --L(8byte_stos): -- movq %r9,%rcx -- andq $-8,%r9 -- -- shrq $3,%rcx -- jz L(8byte_stos_skip) -- -- xchgq %rax,%rdx -- -- rep -- stosq -- -- xchgq %rax,%rdx -- --L(8byte_stos_skip): -- subq %r9,%r8 -- ja L(8byte_nt_move) -- -- andl $7,%r8d -- lea (%rdi,%r8,1),%rdi --#ifndef PIC -- lea L(setPxQx)(%rip),%r11 -- jmpq *(%r11,%r8,8) # old scheme remained for nonPIC --#else -- lea L(Got0)(%rip),%r11 -- lea L(setPxQx)(%rip),%rcx -- movswq (%rcx,%r8,2),%rcx -- lea (%rcx,%r11,1),%r11 -- jmpq *%r11 --#endif - -- .balign 16 --L(8byte_nt_move): -- movq %r8,%rcx -- shrq $7,%rcx -- jz L(8byte_nt_move_skip) -- -- .balign 16 --L(8byte_nt_move_loop): -- decq %rcx -- -- movntiq %rdx, (%rdi) -- movntiq %rdx, 8 (%rdi) -- movntiq %rdx, 16 (%rdi) -- movntiq %rdx, 24 (%rdi) -- movntiq %rdx, 32 (%rdi) -- movntiq %rdx, 40 (%rdi) -- movntiq %rdx, 48 (%rdi) -- movntiq %rdx, 56 (%rdi) -- movntiq %rdx, 64 (%rdi) -- movntiq %rdx, 72 (%rdi) -- movntiq %rdx, 80 (%rdi) -- movntiq %rdx, 88 (%rdi) -- movntiq %rdx, 96 (%rdi) -- movntiq %rdx, 104 (%rdi) -- movntiq %rdx, 112 (%rdi) -- movntiq %rdx, 120 (%rdi) -- -- leaq 128 (%rdi),%rdi -- -- jnz L(8byte_nt_move_loop) -- -- sfence -- --L(8byte_nt_move_skip): -- andl $127,%r8d -+#ifndef USE_MULTIARCH -+ jmp L(aligned_now) - -- lea (%rdi,%r8,1),%rdi --#ifndef PIC -- lea L(setPxQx)(%rip),%r11 -- jmpq *(%r11,%r8,8) # old scheme remained for nonPIC -+L(SSE_pre): - #else -- lea L(Got0)(%rip),%r11 -- lea L(setPxQx)(%rip),%rcx -- movswq (%rcx,%r8,2),%rcx -- lea (%rcx,%r11,1),%r11 -- jmpq *%r11 -+L(aligned_now): - #endif -- --L(SSE_pre): -+#if !defined USE_MULTIARCH || defined USE_SSE2 - # fill RegXMM0 with the pattern - movd %rdx,%xmm0 - punpcklqdq %xmm0,%xmm0 -@@ -1342,11 +1200,162 @@ L(SSExDx): - .short L(SSE15QB)-L(SSE0Q0) - #endif - .popsection -+#endif /* !defined USE_MULTIARCH || defined USE_SSE2 */ -+ -+ .balign 16 -+#ifndef USE_MULTIARCH -+L(aligned_now): -+ -+ cmpl $0x1,__x86_64_preferred_memory_instruction(%rip) -+ jg L(SSE_pre) -+#endif /* USE_MULTIARCH */ -+ -+L(8byte_move_try): -+ cmpq __STOS_LOWER_BOUNDARY,%r8 -+ jae L(8byte_stos_try) -+ -+ .balign 16 -+L(8byte_move): -+ movq %r8,%rcx -+ shrq $7,%rcx -+ jz L(8byte_move_skip) -+ -+ .p2align 4 -+ -+L(8byte_move_loop): -+ decq %rcx -+ -+ movq %rdx, (%rdi) -+ movq %rdx, 8 (%rdi) -+ movq %rdx, 16 (%rdi) -+ movq %rdx, 24 (%rdi) -+ movq %rdx, 32 (%rdi) -+ movq %rdx, 40 (%rdi) -+ movq %rdx, 48 (%rdi) -+ movq %rdx, 56 (%rdi) -+ movq %rdx, 64 (%rdi) -+ movq %rdx, 72 (%rdi) -+ movq %rdx, 80 (%rdi) -+ movq %rdx, 88 (%rdi) -+ movq %rdx, 96 (%rdi) -+ movq %rdx, 104 (%rdi) -+ movq %rdx, 112 (%rdi) -+ movq %rdx, 120 (%rdi) -+ -+ leaq 128 (%rdi),%rdi -+ -+ jnz L(8byte_move_loop) -+ -+L(8byte_move_skip): -+ andl $127,%r8d -+ lea (%rdi,%r8,1),%rdi -+ -+#ifndef PIC -+ lea L(setPxQx)(%rip),%r11 -+ jmpq *(%r11,%r8,8) # old scheme remained for nonPIC -+#else -+ lea L(Got0)(%rip),%r11 -+ lea L(setPxQx)(%rip),%rcx -+ movswq (%rcx,%r8,2),%rcx -+ lea (%rcx,%r11,1),%r11 -+ jmpq *%r11 -+#endif -+ -+ .balign 16 -+L(8byte_stos_try): -+ mov __x86_64_shared_cache_size(%rip),%r9d // ck largest cache size -+ cmpq %r8,%r9 // calculate the lesser of remaining -+ cmovaq %r8,%r9 // bytes and largest cache size -+ jbe L(8byte_stos) -+ -+L(8byte_move_reuse_try): -+ cmp __STOS_UPPER_BOUNDARY,%r8 -+ jae L(8byte_move) -+ -+ .balign 16 -+L(8byte_stos): -+ movq %r9,%rcx -+ andq $-8,%r9 -+ -+ shrq $3,%rcx -+ jz L(8byte_stos_skip) -+ -+ xchgq %rax,%rdx -+ -+ rep -+ stosq -+ -+ xchgq %rax,%rdx -+ -+L(8byte_stos_skip): -+ subq %r9,%r8 -+ ja L(8byte_nt_move) -+ -+ andl $7,%r8d -+ lea (%rdi,%r8,1),%rdi -+#ifndef PIC -+ lea L(setPxQx)(%rip),%r11 -+ jmpq *(%r11,%r8,8) # old scheme remained for nonPIC -+#else -+ lea L(Got0)(%rip),%r11 -+ lea L(setPxQx)(%rip),%rcx -+ movswq (%rcx,%r8,2),%rcx -+ lea (%rcx,%r11,1),%r11 -+ jmpq *%r11 -+#endif -+ -+ .balign 16 -+L(8byte_nt_move): -+ movq %r8,%rcx -+ shrq $7,%rcx -+ jz L(8byte_nt_move_skip) -+ -+ .balign 16 -+L(8byte_nt_move_loop): -+ decq %rcx -+ -+ movntiq %rdx, (%rdi) -+ movntiq %rdx, 8 (%rdi) -+ movntiq %rdx, 16 (%rdi) -+ movntiq %rdx, 24 (%rdi) -+ movntiq %rdx, 32 (%rdi) -+ movntiq %rdx, 40 (%rdi) -+ movntiq %rdx, 48 (%rdi) -+ movntiq %rdx, 56 (%rdi) -+ movntiq %rdx, 64 (%rdi) -+ movntiq %rdx, 72 (%rdi) -+ movntiq %rdx, 80 (%rdi) -+ movntiq %rdx, 88 (%rdi) -+ movntiq %rdx, 96 (%rdi) -+ movntiq %rdx, 104 (%rdi) -+ movntiq %rdx, 112 (%rdi) -+ movntiq %rdx, 120 (%rdi) -+ -+ leaq 128 (%rdi),%rdi -+ -+ jnz L(8byte_nt_move_loop) -+ -+ sfence -+ -+L(8byte_nt_move_skip): -+ andl $127,%r8d -+ -+ lea (%rdi,%r8,1),%rdi -+#ifndef PIC -+ lea L(setPxQx)(%rip),%r11 -+ jmpq *(%r11,%r8,8) # old scheme remained for nonPIC -+#else -+ lea L(Got0)(%rip),%r11 -+ lea L(setPxQx)(%rip),%rcx -+ movswq (%rcx,%r8,2),%rcx -+ lea (%rcx,%r11,1),%r11 -+ jmpq *%r11 -+#endif - - END (memset) - libc_hidden_builtin_def (memset) - --#if defined PIC && !defined NOT_IN_libc -+#if defined PIC && !defined NOT_IN_libc && !defined USE_MULTIARCH - strong_alias (__memset_chk, __memset_zero_constant_len_parameter) - .section .gnu.warning.__memset_zero_constant_len_parameter - .string "memset used with constant zero length parameter; this could be due to transposed parameters" -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/Makefile -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/Makefile -@@ -7,7 +7,8 @@ ifeq ($(subdir),string) - sysdep_routines += stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \ - strend-sse4 memcmp-sse4 \ - strcasestr-nonascii strcasecmp_l-ssse3 \ -- strncase_l-ssse3 -+ strncase_l-ssse3 \ -+ memset-x86-64 - ifeq (yes,$(config-cflags-sse4)) - sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c - CFLAGS-strcspn-c.c += -msse4 -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/bzero.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/bzero.S -@@ -0,0 +1,56 @@ -+/* Multiple versions of bzero -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include <sysdep.h> -+#include <init-arch.h> -+ -+ .text -+ENTRY(__bzero) -+ .type __bzero, @gnu_indirect_function -+ cmpl $0, __cpu_features+KIND_OFFSET(%rip) -+ jne 1f -+ call __init_cpu_features -+1: leaq __bzero_x86_64(%rip), %rax -+ testl $bit_Prefer_SSE_for_memop, __cpu_features+FEATURE_OFFSET+index_Prefer_SSE_for_memop(%rip) -+ jz 2f -+ leaq __bzero_sse2(%rip), %rax -+2: ret -+END(__bzero) -+ -+ .type __bzero_sse2, @function -+__bzero_sse2: -+ cfi_startproc -+ CALL_MCOUNT -+ mov %rsi,%rdx /* Adjust parameter. */ -+ xorl %esi,%esi /* Fill with 0s. */ -+ jmp __memset_sse2 -+ cfi_endproc -+ .size __bzero_sse2, .-__bzero_sse2 -+ -+ .type __bzero_x86_64, @function -+__bzero_x86_64: -+ cfi_startproc -+ CALL_MCOUNT -+ mov %rsi,%rdx /* Adjust parameter. */ -+ xorl %esi,%esi /* Fill with 0s. */ -+ jmp __memset_x86_64 -+ cfi_endproc -+ .size __bzero_x86_64, .-__bzero_x86_64 -+ -+weak_alias (__bzero, bzero) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/cacheinfo.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/cacheinfo.c -@@ -0,0 +1,2 @@ -+#define DISABLE_PREFERRED_MEMORY_INSTRUCTION -+#include "../cacheinfo.c" -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c -@@ -59,6 +59,11 @@ __init_cpu_features (void) - - get_common_indeces (&family, &model); - -+ /* Intel processors prefer SSE instruction for memory/string -+ routines if they are avaiable. */ -+ __cpu_features.feature[index_Prefer_SSE_for_memop] -+ |= bit_Prefer_SSE_for_memop; -+ - unsigned int eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax; - unsigned int extended_family = (eax >> 20) & 0xff; - unsigned int extended_model = (eax >> 12) & 0xf0; -@@ -92,6 +97,14 @@ __init_cpu_features (void) - kind = arch_kind_amd; - - get_common_indeces (&family, &model); -+ -+ unsigned int ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx; -+ -+ /* AMD processors prefer SSE instructions for memory/string routines -+ if they are available, otherwise they prefer integer instructions. */ -+ if ((ecx & 0x200)) -+ __cpu_features.feature[index_Prefer_SSE_for_memop] -+ |= bit_Prefer_SSE_for_memop; - } - else - kind = arch_kind_other; -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.h -@@ -16,7 +16,8 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - --#define bit_Fast_Rep_String (1 << 0) -+#define bit_Fast_Rep_String (1 << 0) -+#define bit_Prefer_SSE_for_memop (1 << 3) - - #ifdef __ASSEMBLER__ - -@@ -33,6 +34,7 @@ - # define index_SSE4_2 COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET - - #define index_Fast_Rep_String FEATURE_INDEX_1*FEATURE_SIZE -+# define index_Prefer_SSE_for_memop FEATURE_INDEX_1*FEATURE_SIZE - - #else /* __ASSEMBLER__ */ - -@@ -103,5 +105,12 @@ extern const struct cpu_features *__get_ - # define HAS_FMA HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, 12) - - # define index_Fast_Rep_String FEATURE_INDEX_1 -+# define index_Prefer_SSE_for_memop FEATURE_INDEX_1 -+ -+#define HAS_ARCH_FEATURE(idx, bit) \ -+ ((__get_cpu_features ()->feature[idx] & (bit)) != 0) -+ -+#define HAS_PREFER_SSE_FOR_MEMOP \ -+ HAS_ARCH_FEATURE (index_Prefer_SSE_for_memop, bit_Prefer_SSE_for_memop) - - #endif /* __ASSEMBLER__ */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset-x86-64.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset-x86-64.S -@@ -0,0 +1,18 @@ -+#include <sysdep.h> -+ -+#ifndef NOT_IN_libc -+# undef ENTRY_CHK -+# define ENTRY_CHK(name) \ -+ .type __memset_chk_x86_64, @function; \ -+ .globl __memset_chk_x86_64; \ -+ .p2align 4; \ -+ __memset_chk_x86_64: cfi_startproc; \ -+ CALL_MCOUNT -+# undef END_CHK -+# define END_CHK(name) \ -+ cfi_endproc; .size __memset_chk_x86_64, .-__memset_chk_x86_64 -+ -+# define libc_hidden_builtin_def(name) -+# define memset __memset_x86_64 -+# include "../memset.S" -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset.S -@@ -0,0 +1,74 @@ -+/* Multiple versions of memset -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include <sysdep.h> -+#include <init-arch.h> -+ -+/* Define multiple versions only for the definition in lib. */ -+#ifndef NOT_IN_libc -+ENTRY(memset) -+ .type memset, @gnu_indirect_function -+ cmpl $0, __cpu_features+KIND_OFFSET(%rip) -+ jne 1f -+ call __init_cpu_features -+1: leaq __memset_x86_64(%rip), %rax -+ testl $bit_Prefer_SSE_for_memop, __cpu_features+FEATURE_OFFSET+index_Prefer_SSE_for_memop(%rip) -+ jz 2f -+ leaq __memset_sse2(%rip), %rax -+2: ret -+END(memset) -+ -+# define USE_SSE2 1 -+ -+# undef ENTRY -+# define ENTRY(name) \ -+ .type __memset_sse2, @function; \ -+ .globl __memset_sse2; \ -+ .p2align 4; \ -+ __memset_sse2: cfi_startproc; \ -+ CALL_MCOUNT -+# undef END -+# define END(name) \ -+ cfi_endproc; .size __memset_sse2, .-__memset_sse2 -+ -+# undef ENTRY_CHK -+# define ENTRY_CHK(name) \ -+ .type __memset_chk_sse2, @function; \ -+ .globl __memset_chk_sse2; \ -+ .p2align 4; \ -+ __memset_chk_sse2: cfi_startproc; \ -+ CALL_MCOUNT -+# undef END_CHK -+# define END_CHK(name) \ -+ cfi_endproc; .size __memset_chk_sse2, .-__memset_chk_sse2 -+ -+# ifdef SHARED -+# undef libc_hidden_builtin_def -+/* It doesn't make sense to send libc-internal memset calls through a PLT. -+ The speedup we get from using GPR instruction is likely eaten away -+ by the indirect call in the PLT. */ -+# define libc_hidden_builtin_def(name) \ -+ .globl __GI_memset; __GI_memset = __memset_sse2 -+# endif -+ -+# undef strong_alias -+# define strong_alias(original, alias) -+#endif -+ -+#include "../memset.S" -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset_chk.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset_chk.S -@@ -0,0 +1,44 @@ -+/* Multiple versions of __memset_chk -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include <sysdep.h> -+#include <init-arch.h> -+ -+/* Define multiple versions only for the definition in lib. */ -+#ifndef NOT_IN_libc -+# ifdef SHARED -+ENTRY(__memset_chk) -+ .type __memset_chk, @gnu_indirect_function -+ cmpl $0, __cpu_features+KIND_OFFSET(%rip) -+ jne 1f -+ call __init_cpu_features -+1: leaq __memset_chk_x86_64(%rip), %rax -+ testl $bit_Prefer_SSE_for_memop, __cpu_features+FEATURE_OFFSET+index_Prefer_SSE_for_memop(%rip) -+ jz 2f -+ leaq __memset_chk_sse2(%rip), %rax -+2: ret -+END(__memset_chk) -+ -+strong_alias (__memset_chk, __memset_zero_constant_len_parameter) -+ .section .gnu.warning.__memset_zero_constant_len_parameter -+ .string "memset used with constant zero length parameter; this could be due to transposed parameters" -+# else -+# include "../memset_chk.S" -+# endif -+#endif diff --git a/src/patches/glibc/glibc-rh676591.patch b/src/patches/glibc/glibc-rh676591.patch deleted file mode 100644 index fd6df1e..0000000 --- a/src/patches/glibc/glibc-rh676591.patch +++ /dev/null @@ -1,352 +0,0 @@ -2011-05-15 Ulrich Drepper drepper@gmail.com - - [BZ #11901] - * include/stdlib.h: Move include protection to the right place. - Define abort_msg_s. Declare __abort_msg with it. - * stdlib/abort.c (__abort_msg): Adjust type. - * assert/assert.c (__assert_fail_base): New function. Majority - of code from __assert_fail. Allocate memory for __abort_msg with - mmap. - (__assert_fail): Now call __assert_fail_base. - * assert/assert-perr.c: Remove bulk of implementation. Use - __assert_fail_base. - * include/assert.hL Declare __assert_fail_base. - * sysdeps/posix/libc_fatal.c: Allocate memory for __abort_msg with - mmap. - * sysdeps/unix/sysv/linux/libc_fatal.c: Likewise. - -Index: glibc-2.12-2-gc4ccff1/assert/assert-perr.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/assert/assert-perr.c -+++ glibc-2.12-2-gc4ccff1/assert/assert-perr.c -@@ -17,66 +17,23 @@ - 02111-1307 USA. */ - - #include <assert.h> --#include <atomic.h> - #include <libintl.h> --#include <stdio.h> --#include <stdlib.h> - #include <string.h> --#include <sysdep.h> --#include <unistd.h> - - --extern const char *__progname; -- --#ifdef USE_IN_LIBIO --# include <wchar.h> --# include <libio/iolibio.h> --# define fflush(s) INTUSE(_IO_fflush) (s) --#endif -- - /* This function, when passed an error number, a filename, and a line - number, prints a message on the standard error stream of the form: -- a.c:10: foobar: Unexpected error: Computer bought the farm -+ a.c:10: foobar: Unexpected error: Computer bought the farm - It then aborts program execution via a call to `abort'. */ -- --#ifdef FATAL_PREPARE_INCLUDE --# include FATAL_PREPARE_INCLUDE --#endif -- - void - __assert_perror_fail (int errnum, - const char *file, unsigned int line, - const char *function) - { - char errbuf[1024]; -- char *buf; -- --#ifdef FATAL_PREPARE -- FATAL_PREPARE; --#endif -- -- if (__asprintf (&buf, _("%s%s%s:%u: %s%sUnexpected error: %s.\n"), -- __progname, __progname[0] ? ": " : "", -- file, line, -- function ? function : "", function ? ": " : "", -- __strerror_r (errnum, errbuf, sizeof errbuf)) >= 0) -- { -- /* Print the message. */ -- (void) __fxprintf (NULL, "%s", buf); -- (void) fflush (stderr); -- -- /* We have to free the old buffer since the application might -- catch the SIGABRT signal. */ -- char *old = atomic_exchange_acq (&__abort_msg, buf); -- free (old); -- } -- else -- { -- /* At least print a minimal message. */ -- static const char errstr[] = "Unexpected error.\n"; -- __libc_write (STDERR_FILENO, errstr, sizeof (errstr) - 1); -- } - -- abort (); -+ char *e = __strerror_r (errnum, errbuf, sizeof errbuf); -+ __assert_fail_base (_("%s%s%s:%u: %s%sUnexpected error: %s.\n"), -+ e, file, line, function); - } - libc_hidden_def (__assert_perror_fail) -Index: glibc-2.12-2-gc4ccff1/assert/assert.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/assert/assert.c -+++ glibc-2.12-2-gc4ccff1/assert/assert.c -@@ -19,11 +19,13 @@ - - #include <assert.h> - #include <atomic.h> -+#include <ldsodefs.h> - #include <libintl.h> - #include <stdio.h> - #include <stdlib.h> - #include <sysdep.h> - #include <unistd.h> -+#include <sys/mman.h> - - - extern const char *__progname; -@@ -45,31 +47,44 @@ extern const char *__progname; - #endif - - --#undef __assert_fail - void --__assert_fail (const char *assertion, const char *file, unsigned int line, -- const char *function) -+__assert_fail_base (const char *fmt, const char *assertion, const char *file, -+ unsigned int line, const char *function) - { -- char *buf; -+ char *str; - - #ifdef FATAL_PREPARE - FATAL_PREPARE; - #endif - -- if (__asprintf (&buf, _("%s%s%s:%u: %s%sAssertion `%s' failed.\n"), -+ int total; -+ if (__asprintf (&str, fmt, - __progname, __progname[0] ? ": " : "", - file, line, - function ? function : "", function ? ": " : "", -- assertion) >= 0) -+ assertion, &total) >= 0) - { - /* Print the message. */ -- (void) __fxprintf (NULL, "%s", buf); -+ (void) __fxprintf (NULL, "%s", str); - (void) fflush (stderr); - -- /* We have to free the old buffer since the application might -- catch the SIGABRT signal. */ -- char *old = atomic_exchange_acq (&__abort_msg, buf); -- free (old); -+ total = (total + 1 + GLRO(dl_pagesize) - 1) & ~(GLRO(dl_pagesize) - 1); -+ struct abort_msg_s *buf = __mmap (NULL, total, PROT_READ | PROT_WRITE, -+ MAP_ANON | MAP_PRIVATE, -1, 0); -+ if (__builtin_expect (buf != MAP_FAILED, 1)) -+ { -+ buf->size = total; -+ strcpy (buf->msg, str); -+ -+ /* We have to free the old buffer since the application might -+ catch the SIGABRT signal. */ -+ struct abort_msg_s *old = atomic_exchange_acq (&__abort_msg, buf); -+ -+ if (old != NULL) -+ __munmap (old, old->size); -+ } -+ -+ free (str); - } - else - { -@@ -80,4 +95,14 @@ __assert_fail (const char *assertion, co - - abort (); - } -+ -+ -+#undef __assert_fail -+void -+__assert_fail (const char *assertion, const char *file, unsigned int line, -+ const char *function) -+{ -+ __assert_fail_base (_("%s%s%s:%u: %s%sAssertion `%s' failed.\n%n"), -+ assertion, file, line, function); -+} - hidden_def(__assert_fail) -Index: glibc-2.12-2-gc4ccff1/include/assert.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/include/assert.h -+++ glibc-2.12-2-gc4ccff1/include/assert.h -@@ -13,6 +13,12 @@ extern void __assert_perror_fail (int __ - __const char *__function) - __THROW __attribute__ ((__noreturn__)); - -+/* The real implementation of the two functions above. */ -+extern void __assert_fail_base (const char *fmt, const char *assertion, -+ const char *file, unsigned int line, -+ const char *function) -+ __THROW __attribute__ ((__noreturn__)); -+ - #if !defined NOT_IN_libc || defined IS_IN_rtld - hidden_proto (__assert_fail) - hidden_proto (__assert_perror_fail) -Index: glibc-2.12-2-gc4ccff1/include/stdlib.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/include/stdlib.h -+++ glibc-2.12-2-gc4ccff1/include/stdlib.h -@@ -223,16 +223,21 @@ extern int __qfcvt_r (long double __valu - # define __cxa_atexit(func, arg, d) INTUSE(__cxa_atexit) (func, arg, d) - # endif - --#endif -- - extern void *__default_morecore (ptrdiff_t) __THROW; - libc_hidden_proto (__default_morecore) - --extern char *__abort_msg; -+struct abort_msg_s -+{ -+ unsigned int size; -+ char msg[0]; -+}; -+extern struct abort_msg_s *__abort_msg; - libc_hidden_proto (__abort_msg) - - __END_DECLS - -+#endif -+ - #undef __Need_M_And_C - - #endif /* include/stdlib.h */ -Index: glibc-2.12-2-gc4ccff1/stdlib/abort.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/stdlib/abort.c -+++ glibc-2.12-2-gc4ccff1/stdlib/abort.c -@@ -37,7 +37,7 @@ - #endif - - /* Exported variable to locate abort message in core files etc. */ --char *__abort_msg __attribute__ ((nocommon)); -+struct abort_msg_s *__abort_msg __attribute__ ((nocommon)); - libc_hidden_def (__abort_msg) - - /* We must avoid to run in circles. Therefore we remember how far we -Index: glibc-2.12-2-gc4ccff1/sysdeps/posix/libc_fatal.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/posix/libc_fatal.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/posix/libc_fatal.c -@@ -20,6 +20,7 @@ - #include <atomic.h> - #include <errno.h> - #include <fcntl.h> -+#include <ldsodefs.h> - #include <paths.h> - #include <stdarg.h> - #include <stdbool.h> -@@ -125,18 +126,28 @@ __libc_message (int do_abort, const char - if (TEMP_FAILURE_RETRY (__writev (fd, iov, nlist)) == total) - written = true; - -- char *buf = do_abort ? malloc (total + 1) : NULL; -- if (buf != NULL) -+ if (do_abort) - { -- char *wp = buf; -- for (int cnt = 0; cnt < nlist; ++cnt) -- wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len); -- *wp = '\0'; -- -- /* We have to free the old buffer since the application might -- catch the SIGABRT signal. */ -- char *old = atomic_exchange_acq (&__abort_msg, buf); -- free (old); -+ total = ((total + 1 + GLRO(dl_pagesize) - 1) -+ & ~(GLRO(dl_pagesize) - 1)); -+ struct abort_msg_s *buf = __mmap (NULL, total, -+ PROT_READ | PROT_WRITE, -+ MAP_ANON | MAP_PRIVATE, -1, 0); -+ if (buf != MAP_FAILED) -+ { -+ buf->size = total; -+ char *wp = buf->msg; -+ for (int cnt = 0; cnt < nlist; ++cnt) -+ wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len); -+ *wp = '\0'; -+ -+ /* We have to free the old buffer since the application might -+ catch the SIGABRT signal. */ -+ struct abort_msg_s *old = atomic_exchange_acq (&__abort_msg, -+ buf); -+ if (old != NULL) -+ __munmap (old, old->size); -+ } - } - } - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/libc_fatal.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/libc_fatal.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/libc_fatal.c -@@ -20,6 +20,7 @@ - #include <atomic.h> - #include <errno.h> - #include <fcntl.h> -+#include <ldsodefs.h> - #include <paths.h> - #include <stdarg.h> - #include <stdbool.h> -@@ -28,6 +29,7 @@ - #include <string.h> - #include <sysdep.h> - #include <unistd.h> -+#include <sys/mman.h> - #include <sys/syslog.h> - #include <execinfo.h> - -@@ -134,18 +136,28 @@ __libc_message (int do_abort, const char - if (cnt == total) - written = true; - -- char *buf = do_abort ? malloc (total + 1) : NULL; -- if (buf != NULL) -+ if (do_abort) - { -- char *wp = buf; -- for (int cnt = 0; cnt < nlist; ++cnt) -- wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len); -- *wp = '\0'; -- -- /* We have to free the old buffer since the application might -- catch the SIGABRT signal. */ -- char *old = atomic_exchange_acq (&__abort_msg, buf); -- free (old); -+ total = ((total + 1 + GLRO(dl_pagesize) - 1) -+ & ~(GLRO(dl_pagesize) - 1)); -+ struct abort_msg_s *buf = __mmap (NULL, total, -+ PROT_READ | PROT_WRITE, -+ MAP_ANON | MAP_PRIVATE, -1, 0); -+ if (__builtin_expect (buf != MAP_FAILED, 1)) -+ { -+ buf->size = total; -+ char *wp = buf->msg; -+ for (int cnt = 0; cnt < nlist; ++cnt) -+ wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len); -+ *wp = '\0'; -+ -+ /* We have to free the old buffer since the application might -+ catch the SIGABRT signal. */ -+ struct abort_msg_s *old = atomic_exchange_acq (&__abort_msg, -+ buf); -+ if (old != NULL) -+ __munmap (old, old->size); -+ } - } - } - diff --git a/src/patches/glibc/glibc-rh681054.patch b/src/patches/glibc/glibc-rh681054.patch deleted file mode 100644 index 27b7361..0000000 --- a/src/patches/glibc/glibc-rh681054.patch +++ /dev/null @@ -1,514 +0,0 @@ -2011-03-18 Ulrich Drepper drepper@gmail.com - - * posix/fnmatch.c (fnmatch): Check size of pattern in wide - character representation. - Partly based on a patch by Tomas Hoger thoger@redhat.com. - -2010-11-11 Andreas Schwab schwab@redhat.com - - * posix/fnmatch_loop.c (NEW_PATTERN): Fix use of alloca. - * posix/Makefile (tests): Add $(objpfx)tst-fnmatch-mem. - (tst-fnmatch-ENV): Set MALLOC_TRACE. - ($(objpfx)tst-fnmatch-mem): New rule. - (generated): Add tst-fnmatch-mem and tst-fnmatch.mtrace. - * posix/tst-fnmatch.c (main): Call mtrace. - -2010-08-09 Ulrich Drepper drepper@redhat.com - - [BZ #11883] - * posix/fnmatch.c: Keep track of alloca use and fall back on malloc. - * posix/fnmatch_loop.c: Likewise. - -Index: glibc-2.12-2-gc4ccff1/posix/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/posix/Makefile -+++ glibc-2.12-2-gc4ccff1/posix/Makefile -@@ -114,7 +114,8 @@ generated := $(addprefix wordexp-test-re - tst-rxspencer-mem tst-rxspencer.mtrace tst-getconf.out \ - tst-pcre-mem tst-pcre.mtrace tst-boost-mem tst-boost.mtrace \ - bug-ga2.mtrace bug-ga2-mem bug-glob2.mtrace bug-glob2-mem \ -- tst-vfork3-mem tst-vfork3.mtrace getconf.speclist -+ tst-vfork3-mem tst-vfork3.mtrace getconf.speclist \ -+ tst-fnmatch-mem tst-fnmatch.mtrace - - include ../Rules - -@@ -226,7 +227,7 @@ ifeq (no,$(cross-compiling)) - tests: $(objpfx)bug-regex2-mem $(objpfx)bug-regex14-mem \ - $(objpfx)bug-regex21-mem $(objpfx)tst-rxspencer-mem \ - $(objpfx)tst-pcre-mem $(objpfx)tst-boost-mem $(objpfx)tst-getconf.out \ -- $(objpfx)bug-glob2-mem $(objpfx)tst-vfork3-mem -+ $(objpfx)bug-glob2-mem $(objpfx)tst-vfork3-mem $(objpfx)tst-fnmatch-mem - xtests: $(objpfx)bug-ga2-mem - endif - -@@ -238,6 +239,11 @@ annexc-CFLAGS = -O - $(objpfx)annexc: annexc.c - $(native-compile) - -+tst-fnmatch-ENV += MALLOC_TRACE=$(objpfx)tst-fnmatch.mtrace -+ -+$(objpfx)tst-fnmatch-mem: $(objpfx)tst-fnmatch.out -+ $(common-objpfx)malloc/mtrace $(objpfx)tst-fnmatch.mtrace > $@ -+ - bug-regex2-ENV = MALLOC_TRACE=$(objpfx)bug-regex2.mtrace - - $(objpfx)bug-regex2-mem: $(objpfx)bug-regex2.out -Index: glibc-2.12-2-gc4ccff1/posix/fnmatch.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/posix/fnmatch.c -+++ glibc-2.12-2-gc4ccff1/posix/fnmatch.c -@@ -41,6 +41,12 @@ - # include <stdlib.h> - #endif - -+#ifdef _LIBC -+# include <alloca.h> -+#else -+# define alloca_account(size., var) alloca (size) -+#endif -+ - /* For platform which support the ISO C amendement 1 functionality we - support user defined character classes. */ - #if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H) -@@ -330,8 +336,11 @@ fnmatch (pattern, string, flags) - mbstate_t ps; - size_t n; - const char *p; -+ wchar_t *wpattern_malloc = NULL; - wchar_t *wpattern; -+ wchar_t *wstring_malloc = NULL; - wchar_t *wstring; -+ size_t alloca_used = 0; - - /* Convert the strings into wide characters. */ - memset (&ps, '\0', sizeof (ps)); -@@ -343,7 +352,8 @@ fnmatch (pattern, string, flags) - #endif - if (__builtin_expect (n < 1024, 1)) - { -- wpattern = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); -+ wpattern = (wchar_t *) alloca_account ((n + 1) * sizeof (wchar_t), -+ alloca_used); - n = mbsrtowcs (wpattern, &p, n + 1, &ps); - if (__builtin_expect (n == (size_t) -1, 0)) - /* Something wrong. -@@ -365,8 +375,16 @@ fnmatch (pattern, string, flags) - XXX Do we have to set `errno' to something which mbsrtows hasn't - already done? */ - return -1; -- wpattern = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); -+ if (__builtin_expect (n >= (size_t) -1 / sizeof (wchar_t), 0)) -+ { -+ __set_errno (ENOMEM); -+ return -2; -+ } -+ wpattern_malloc = wpattern -+ = (wchar_t *) malloc ((n + 1) * sizeof (wchar_t)); - assert (mbsinit (&ps)); -+ if (wpattern == NULL) -+ return -2; - (void) mbsrtowcs (wpattern, &pattern, n + 1, &ps); - } - -@@ -379,13 +397,18 @@ fnmatch (pattern, string, flags) - p = string; - if (__builtin_expect (n < 1024, 1)) - { -- wstring = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); -+ wstring = (wchar_t *) alloca_account ((n + 1) * sizeof (wchar_t), -+ alloca_used); - n = mbsrtowcs (wstring, &p, n + 1, &ps); - if (__builtin_expect (n == (size_t) -1, 0)) -- /* Something wrong. -- XXX Do we have to set `errno' to something which mbsrtows hasn't -- already done? */ -- return -1; -+ { -+ /* Something wrong. -+ XXX Do we have to set `errno' to something which -+ mbsrtows hasn't already done? */ -+ free_return: -+ free (wpattern_malloc); -+ return -1; -+ } - if (p) - { - memset (&ps, '\0', sizeof (ps)); -@@ -400,19 +423,38 @@ fnmatch (pattern, string, flags) - /* Something wrong. - XXX Do we have to set `errno' to something which mbsrtows hasn't - already done? */ -- return -1; -- wstring = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); -+ goto free_return; -+ if (__builtin_expect (n >= (size_t) -1 / sizeof (wchar_t), 0)) -+ { -+ free (wpattern_malloc); -+ __set_errno (ENOMEM); -+ return -2; -+ } -+ -+ wstring_malloc = wstring -+ = (wchar_t *) malloc ((n + 1) * sizeof (wchar_t)); -+ if (wstring == NULL) -+ { -+ free (wpattern_malloc); -+ return -2; -+ } - assert (mbsinit (&ps)); - (void) mbsrtowcs (wstring, &string, n + 1, &ps); - } - -- return internal_fnwmatch (wpattern, wstring, wstring + n, -- flags & FNM_PERIOD, flags, NULL); -+ int res = internal_fnwmatch (wpattern, wstring, wstring + n, -+ flags & FNM_PERIOD, flags, NULL, -+ alloca_used); -+ -+ free (wstring_malloc); -+ free (wpattern_malloc); -+ -+ return res; - } - # endif /* mbstate_t and mbsrtowcs or _LIBC. */ - - return internal_fnmatch (pattern, string, string + strlen (string), -- flags & FNM_PERIOD, flags, NULL); -+ flags & FNM_PERIOD, flags, NULL, 0); - } - - # ifdef _LIBC -Index: glibc-2.12-2-gc4ccff1/posix/fnmatch_loop.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/posix/fnmatch_loop.c -+++ glibc-2.12-2-gc4ccff1/posix/fnmatch_loop.c -@@ -28,22 +28,24 @@ struct STRUCT - it matches, nonzero if not. */ - static int FCT (const CHAR *pattern, const CHAR *string, - const CHAR *string_end, int no_leading_period, int flags, -- struct STRUCT *ends) -+ struct STRUCT *ends, size_t alloca_used) - internal_function; - static int EXT (INT opt, const CHAR *pattern, const CHAR *string, -- const CHAR *string_end, int no_leading_period, int flags) -+ const CHAR *string_end, int no_leading_period, int flags, -+ size_t alloca_used) - internal_function; - static const CHAR *END (const CHAR *patternp) internal_function; - - static int - internal_function --FCT (pattern, string, string_end, no_leading_period, flags, ends) -+FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used) - const CHAR *pattern; - const CHAR *string; - const CHAR *string_end; - int no_leading_period; - int flags; - struct STRUCT *ends; -+ size_t alloca_used; - { - register const CHAR *p = pattern, *n = string; - register UCHAR c; -@@ -67,10 +69,8 @@ FCT (pattern, string, string_end, no_lea - case L('?'): - if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(') - { -- int res; -- -- res = EXT (c, p, n, string_end, no_leading_period, -- flags); -+ int res = EXT (c, p, n, string_end, no_leading_period, -+ flags, alloca_used); - if (res != -1) - return res; - } -@@ -99,10 +99,8 @@ FCT (pattern, string, string_end, no_lea - case L('*'): - if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(') - { -- int res; -- -- res = EXT (c, p, n, string_end, no_leading_period, -- flags); -+ int res = EXT (c, p, n, string_end, no_leading_period, -+ flags, alloca_used); - if (res != -1) - return res; - } -@@ -191,7 +189,7 @@ FCT (pattern, string, string_end, no_lea - - for (--p; n < endp; ++n, no_leading_period = 0) - if (FCT (p, n, string_end, no_leading_period, flags2, -- &end) == 0) -+ &end, alloca_used) == 0) - goto found; - } - else if (c == L('/') && (flags & FNM_FILE_NAME)) -@@ -200,7 +198,7 @@ FCT (pattern, string, string_end, no_lea - ++n; - if (n < string_end && *n == L('/') - && (FCT (p, n + 1, string_end, flags & FNM_PERIOD, flags, -- NULL) == 0)) -+ NULL, alloca_used) == 0)) - return 0; - } - else -@@ -214,7 +212,7 @@ FCT (pattern, string, string_end, no_lea - for (--p; n < endp; ++n, no_leading_period = 0) - if (FOLD ((UCHAR) *n) == c - && (FCT (p, n, string_end, no_leading_period, flags2, -- &end) == 0)) -+ &end, alloca_used) == 0)) - { - found: - if (end.pattern == NULL) -@@ -749,7 +747,7 @@ FCT (pattern, string, string_end, no_lea - _NL_COLLATE_SYMB_EXTRAMB); - - /* Locate the character in the hashing -- table. */ -+ table. */ - hash = elem_hash (str, c1); - - idx = 0; -@@ -971,9 +969,8 @@ FCT (pattern, string, string_end, no_lea - case L('!'): - if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(') - { -- int res; -- -- res = EXT (c, p, n, string_end, no_leading_period, flags); -+ int res = EXT (c, p, n, string_end, no_leading_period, flags, -+ alloca_used); - if (res != -1) - return res; - } -@@ -1052,26 +1049,32 @@ END (const CHAR *pattern) - static int - internal_function - EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end, -- int no_leading_period, int flags) -+ int no_leading_period, int flags, size_t alloca_used) - { - const CHAR *startp; - int level; - struct patternlist - { - struct patternlist *next; -+ CHAR malloced; - CHAR str[0]; - } *list = NULL; - struct patternlist **lastp = &list; - size_t pattern_len = STRLEN (pattern); -+ int any_malloced = 0; - const CHAR *p; - const CHAR *rs; -+ int retval = 0; - - /* Parse the pattern. Store the individual parts in the list. */ - level = 0; - for (startp = p = pattern + 1; level >= 0; ++p) - if (*p == L('\0')) -- /* This is an invalid pattern. */ -- return -1; -+ { -+ /* This is an invalid pattern. */ -+ retval = -1; -+ goto out; -+ } - else if (*p == L('[')) - { - /* Handle brackets special. */ -@@ -1088,8 +1091,11 @@ EXT (INT opt, const CHAR *pattern, const - /* Skip over all characters of the list. */ - while (*p != L(']')) - if (*p++ == L('\0')) -- /* This is no valid pattern. */ -- return -1; -+ { -+ /* This is no valid pattern. */ -+ retval = -1; -+ goto out; -+ } - } - else if ((*p == L('?') || *p == L('*') || *p == L('+') || *p == L('@') - || *p == L('!')) && p[1] == L('(')) -@@ -1102,15 +1108,25 @@ EXT (INT opt, const CHAR *pattern, const - /* This means we found the end of the pattern. */ - #define NEW_PATTERN \ - struct patternlist *newp; \ -- \ -- if (opt == L('?') || opt == L('@')) \ -- newp = alloca (sizeof (struct patternlist) \ -- + (pattern_len * sizeof (CHAR))); \ -+ size_t slen = (opt == L('?') || opt == L('@') \ -+ ? pattern_len : (p - startp + 1)); \ -+ slen = sizeof (struct patternlist) + (slen * sizeof (CHAR)); \ -+ int malloced = ! __libc_use_alloca (alloca_used + slen); \ -+ if (__builtin_expect (malloced, 0)) \ -+ { \ -+ newp = malloc (slen); \ -+ if (newp == NULL) \ -+ { \ -+ retval = -2; \ -+ goto out; \ -+ } \ -+ any_malloced = 1; \ -+ } \ - else \ -- newp = alloca (sizeof (struct patternlist) \ -- + ((p - startp + 1) * sizeof (CHAR))); \ -- *((CHAR *) MEMPCPY (newp->str, startp, p - startp)) = L('\0'); \ -+ newp = alloca_account (slen, alloca_used); \ - newp->next = NULL; \ -+ newp->malloced = malloced; \ -+ *((CHAR *) MEMPCPY (newp->str, startp, p - startp)) = L('\0'); \ - *lastp = newp; \ - lastp = &newp->next - NEW_PATTERN; -@@ -1131,8 +1147,9 @@ EXT (INT opt, const CHAR *pattern, const - switch (opt) - { - case L('*'): -- if (FCT (p, string, string_end, no_leading_period, flags, NULL) == 0) -- return 0; -+ if (FCT (p, string, string_end, no_leading_period, flags, NULL, -+ alloca_used) == 0) -+ goto success; - /* FALLTHROUGH */ - - case L('+'): -@@ -1143,7 +1160,7 @@ EXT (INT opt, const CHAR *pattern, const - current pattern. */ - if (FCT (list->str, string, rs, no_leading_period, - flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD, -- NULL) == 0 -+ NULL, alloca_used) == 0 - /* This was successful. Now match the rest with the rest - of the pattern. */ - && (FCT (p, rs, string_end, -@@ -1151,7 +1168,7 @@ EXT (INT opt, const CHAR *pattern, const - ? no_leading_period - : rs[-1] == '/' && NO_LEADING_PERIOD (flags) ? 1 : 0, - flags & FNM_FILE_NAME -- ? flags : flags & ~FNM_PERIOD, NULL) == 0 -+ ? flags : flags & ~FNM_PERIOD, NULL, alloca_used) == 0 - /* This didn't work. Try the whole pattern. */ - || (rs != string - && FCT (pattern - 1, rs, string_end, -@@ -1160,18 +1177,21 @@ EXT (INT opt, const CHAR *pattern, const - : (rs[-1] == '/' && NO_LEADING_PERIOD (flags) - ? 1 : 0), - flags & FNM_FILE_NAME -- ? flags : flags & ~FNM_PERIOD, NULL) == 0))) -+ ? flags : flags & ~FNM_PERIOD, NULL, -+ alloca_used) == 0))) - /* It worked. Signal success. */ -- return 0; -+ goto success; - } - while ((list = list->next) != NULL); - - /* None of the patterns lead to a match. */ -- return FNM_NOMATCH; -+ retval = FNM_NOMATCH; -+ break; - - case L('?'): -- if (FCT (p, string, string_end, no_leading_period, flags, NULL) == 0) -- return 0; -+ if (FCT (p, string, string_end, no_leading_period, flags, NULL, -+ alloca_used) == 0) -+ goto success; - /* FALLTHROUGH */ - - case L('@'): -@@ -1183,13 +1203,14 @@ EXT (INT opt, const CHAR *pattern, const - if (FCT (STRCAT (list->str, p), string, string_end, - no_leading_period, - flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD, -- NULL) == 0) -+ NULL, alloca_used) == 0) - /* It worked. Signal success. */ -- return 0; -+ goto success; - while ((list = list->next) != NULL); - - /* None of the patterns lead to a match. */ -- return FNM_NOMATCH; -+ retval = FNM_NOMATCH; -+ break; - - case L('!'): - for (rs = string; rs <= string_end; ++rs) -@@ -1199,7 +1220,7 @@ EXT (INT opt, const CHAR *pattern, const - for (runp = list; runp != NULL; runp = runp->next) - if (FCT (runp->str, string, rs, no_leading_period, - flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD, -- NULL) == 0) -+ NULL, alloca_used) == 0) - break; - - /* If none of the patterns matched see whether the rest does. */ -@@ -1209,21 +1230,34 @@ EXT (INT opt, const CHAR *pattern, const - ? no_leading_period - : rs[-1] == '/' && NO_LEADING_PERIOD (flags) ? 1 : 0, - flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD, -- NULL) == 0)) -+ NULL, alloca_used) == 0)) - /* This is successful. */ -- return 0; -+ goto success; - } - - /* None of the patterns together with the rest of the pattern - lead to a match. */ -- return FNM_NOMATCH; -+ retval = FNM_NOMATCH; -+ break; - - default: - assert (! "Invalid extended matching operator"); -+ retval = -1; - break; - } - -- return -1; -+ success: -+ out: -+ if (any_malloced) -+ while (list != NULL) -+ { -+ struct patternlist *old = list; -+ list = list->next; -+ if (old->malloced) -+ free (old); -+ } -+ -+ return retval; - } - - -Index: glibc-2.12-2-gc4ccff1/posix/tst-fnmatch.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/posix/tst-fnmatch.c -+++ glibc-2.12-2-gc4ccff1/posix/tst-fnmatch.c -@@ -25,6 +25,7 @@ - #include <stdlib.h> - #include <string.h> - #include <sys/types.h> -+#include <mcheck.h> - - - static char *next_input (char **line, int first, int last); -@@ -46,6 +47,8 @@ main (void) - size_t escpatternlen = 0; - int nr = 0; - -+ mtrace (); -+ - /* Read lines from stdin with the following format: - - locale input-string match-string flags result diff --git a/src/patches/glibc/glibc-rh688720.patch b/src/patches/glibc/glibc-rh688720.patch deleted file mode 100644 index 0c86f25..0000000 --- a/src/patches/glibc/glibc-rh688720.patch +++ /dev/null @@ -1,1638 +0,0 @@ -2011-11-11 Ulrich Drepper drepper@gmail.com - - [BZ #13147] - * locales/de_AT: Use de_DE for LC_NUMERIC. - * locales/es_BO: Use es_ES for LC_MESSAGES and LC_NUMERIC. - * locales/es_CL: Likewise. - * locales/es_CO: Likewise. - * locales/es_DO: Likewise. - * locales/es_EC: Likewise. - * locales/es_GT: Likewise. - * locales/es_HN: Likewise. - * locales/es_MX: Likewise. - * locales/es_NI: Likewise. - * locales/es_PA: Likewise. - * locales/es_PE: Likewise. - * locales/es_PR: Likewise. - * locales/es_PY: Likewise. - * locales/es_SV: Likewise. - * locales/es_UY: Likewise. - * locales/es_VE: Likewise. - * locales/es_ES: Fix LC_NUMERIC. - * locales/es_CR: Use es_ES for LC_MESSAGES. - * locales/fr_BE: Actually use grouping in LC_NUMERIC. - * locales/fr_CA: Use fr_FR for LC_MESSAGES and LC_NUMERIC. - * locales/fr_CH: Use de_CH for LC_NUMERIC. - * locales/fr_LU: Use same grouping in LC_NUMERIC as in LC_MONETARY. - -2010-05-17 Andreas Schwab schwab@redhat.com - - * locales/es_CR (LC_ADDRESS): Fix character names in lang_ab. - -Index: glibc-2.12-2-gc4ccff1/localedata/locales/de_AT -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/de_AT -+++ glibc-2.12-2-gc4ccff1/localedata/locales/de_AT -@@ -78,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002C>" --thousands_sep "" --grouping 0;0 -+copy "de_DE" - END LC_NUMERIC - - LC_TIME - abday "<U0053><U006F><U006E>";"<U004D><U006F><U006E>";/ -- "<U0044><U0069><U0065>";"<U004D><U0069><U0074>";/ -- "<U0044><U006F><U006E>";"<U0046><U0072><U0065>";/ -- "<U0053><U0061><U006D>" -+ "<U0044><U0069><U0065>";"<U004D><U0069><U0074>";/ -+ "<U0044><U006F><U006E>";"<U0046><U0072><U0065>";/ -+ "<U0053><U0061><U006D>" - day "<U0053><U006F><U006E><U006E><U0074><U0061><U0067>";/ -- "<U004D><U006F><U006E><U0074><U0061><U0067>";/ -- "<U0044><U0069><U0065><U006E><U0073><U0074><U0061><U0067>";/ -- "<U004D><U0069><U0074><U0074><U0077><U006F><U0063><U0068>";/ -- "<U0044><U006F><U006E><U006E><U0065><U0072><U0073><U0074><U0061><U0067>";/ -- "<U0046><U0072><U0065><U0069><U0074><U0061><U0067>";/ -- "<U0053><U0061><U006D><U0073><U0074><U0061><U0067>" -+ "<U004D><U006F><U006E><U0074><U0061><U0067>";/ -+ "<U0044><U0069><U0065><U006E><U0073><U0074><U0061><U0067>";/ -+ "<U004D><U0069><U0074><U0074><U0077><U006F><U0063><U0068>";/ -+ "<U0044><U006F><U006E><U006E><U0065><U0072><U0073><U0074><U0061><U0067>";/ -+ "<U0046><U0072><U0065><U0069><U0074><U0061><U0067>";/ -+ "<U0053><U0061><U006D><U0073><U0074><U0061><U0067>" - abmon "<U004A><U00E4><U006E>";"<U0046><U0065><U0062>";/ -- "<U004D><U00E4><U0072>";"<U0041><U0070><U0072>";/ -- "<U004D><U0061><U0069>";"<U004A><U0075><U006E>";/ -- "<U004A><U0075><U006C>";"<U0041><U0075><U0067>";/ -- "<U0053><U0065><U0070>";"<U004F><U006B><U0074>";/ -- "<U004E><U006F><U0076>";"<U0044><U0065><U007A>" -+ "<U004D><U00E4><U0072>";"<U0041><U0070><U0072>";/ -+ "<U004D><U0061><U0069>";"<U004A><U0075><U006E>";/ -+ "<U004A><U0075><U006C>";"<U0041><U0075><U0067>";/ -+ "<U0053><U0065><U0070>";"<U004F><U006B><U0074>";/ -+ "<U004E><U006F><U0076>";"<U0044><U0065><U007A>" - mon "<U004A><U00E4><U006E><U006E><U0065><U0072>";/ -- "<U0046><U0065><U0062><U0065><U0072>";/ -- "<U004D><U00E4><U0072><U007A>";/ -- "<U0041><U0070><U0072><U0069><U006C>";/ -- "<U004D><U0061><U0069>";/ -- "<U004A><U0075><U006E><U0069>";/ -- "<U004A><U0075><U006C><U0069>";/ -- "<U0041><U0075><U0067><U0075><U0073><U0074>";/ -- "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/ -- "<U004F><U006B><U0074><U006F><U0062><U0065><U0072>";/ -- "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/ -- "<U0044><U0065><U007A><U0065><U006D><U0062><U0065><U0072>" -+ "<U0046><U0065><U0062><U0065><U0072>";/ -+ "<U004D><U00E4><U0072><U007A>";/ -+ "<U0041><U0070><U0072><U0069><U006C>";/ -+ "<U004D><U0061><U0069>";/ -+ "<U004A><U0075><U006E><U0069>";/ -+ "<U004A><U0075><U006C><U0069>";/ -+ "<U0041><U0075><U0067><U0075><U0073><U0074>";/ -+ "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/ -+ "<U004F><U006B><U0074><U006F><U0062><U0065><U0072>";/ -+ "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/ -+ "<U0044><U0065><U007A><U0065><U006D><U0062><U0065><U0072>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064>" - t_fmt "<U0025><U0054>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_BO -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_BO -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_BO -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002C>" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -- "<U0073><U00E1><U0062>" -+ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -+ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -+ "<U0073><U00E1><U0062>" - day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ -- "<U006C><U0075><U006E><U0065><U0073>";/ -- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -- "<U0073><U00E1><U0062><U0061><U0064><U006F>" -+ "<U006C><U0075><U006E><U0065><U0073>";/ -+ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -+ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -+ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -+ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -+ "<U0073><U00E1><U0062><U0061><U0064><U006F>" - abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ -- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -+ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" - mon "<U0065><U006E><U0065><U0072><U006F>";/ -- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -- "<U006D><U0061><U0072><U007A><U006F>";/ -- "<U0061><U0062><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0079><U006F>";/ -- "<U006A><U0075><U006E><U0069><U006F>";/ -- "<U006A><U0075><U006C><U0069><U006F>";/ -- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -+ "<U006D><U0061><U0072><U007A><U006F>";/ -+ "<U0061><U0062><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0079><U006F>";/ -+ "<U006A><U0075><U006E><U0069><U006F>";/ -+ "<U006A><U0075><U006C><U0069><U006F>";/ -+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -+ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" - t_fmt "<U0025><U0054>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_CL -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_CL -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_CL -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002C>" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -- "<U0073><U00E1><U0062>" -+ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -+ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -+ "<U0073><U00E1><U0062>" - day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ -- "<U006C><U0075><U006E><U0065><U0073>";/ -- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -- "<U0073><U00E1><U0062><U0061><U0064><U006F>" -+ "<U006C><U0075><U006E><U0065><U0073>";/ -+ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -+ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -+ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -+ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -+ "<U0073><U00E1><U0062><U0061><U0064><U006F>" - abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ -- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -+ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" - mon "<U0065><U006E><U0065><U0072><U006F>";/ -- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -- "<U006D><U0061><U0072><U007A><U006F>";/ -- "<U0061><U0062><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0079><U006F>";/ -- "<U006A><U0075><U006E><U0069><U006F>";/ -- "<U006A><U0075><U006C><U0069><U006F>";/ -- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -+ "<U006D><U0061><U0072><U007A><U006F>";/ -+ "<U0061><U0062><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0079><U006F>";/ -+ "<U006A><U0075><U006E><U0069><U006F>";/ -+ "<U006A><U0075><U006C><U0069><U006F>";/ -+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -+ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" - t_fmt "<U0025><U0054>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_CO -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_CO -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_CO -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002C>" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -- "<U0073><U00E1><U0062>" -+ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -+ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -+ "<U0073><U00E1><U0062>" - day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ -- "<U006C><U0075><U006E><U0065><U0073>";/ -- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -- "<U0073><U00E1><U0062><U0061><U0064><U006F>" -+ "<U006C><U0075><U006E><U0065><U0073>";/ -+ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -+ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -+ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -+ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -+ "<U0073><U00E1><U0062><U0061><U0064><U006F>" - abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ -- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -+ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" - mon "<U0065><U006E><U0065><U0072><U006F>";/ -- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -- "<U006D><U0061><U0072><U007A><U006F>";/ -- "<U0061><U0062><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0079><U006F>";/ -- "<U006A><U0075><U006E><U0069><U006F>";/ -- "<U006A><U0075><U006C><U0069><U006F>";/ -- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -+ "<U006D><U0061><U0072><U007A><U006F>";/ -+ "<U0061><U0062><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0079><U006F>";/ -+ "<U006A><U0075><U006E><U0069><U006F>";/ -+ "<U006A><U0075><U006C><U0069><U006F>";/ -+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -+ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" - t_fmt "<U0025><U0054>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_CR -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_CR -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_CR -@@ -47,8 +47,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,34 +78,34 @@ END LC_NUMERIC - - LC_TIME - abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -- "<U0073><U00E1><U0062>" -+ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -+ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -+ "<U0073><U00E1><U0062>" - day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ -- "<U006C><U0075><U006E><U0065><U0073>";/ -- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -- "<U0073><U00E1><U0062><U0061><U0064><U006F>" -+ "<U006C><U0075><U006E><U0065><U0073>";/ -+ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -+ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -+ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -+ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -+ "<U0073><U00E1><U0062><U0061><U0064><U006F>" - abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ -- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -+ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" - mon "<U0065><U006E><U0065><U0072><U006F>";/ -- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -- "<U006D><U0061><U0072><U007A><U006F>";/ -- "<U0061><U0062><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0079><U006F>";/ -- "<U006A><U0075><U006E><U0069><U006F>";/ -- "<U006A><U0075><U006C><U0069><U006F>";/ -- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -+ "<U006D><U0061><U0072><U007A><U006F>";/ -+ "<U0061><U0062><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0079><U006F>";/ -+ "<U006A><U0075><U006E><U0069><U006F>";/ -+ "<U006A><U0075><U006C><U0069><U006F>";/ -+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -+ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>" - t_fmt "<U0025><U0054>" -@@ -157,7 +156,7 @@ country_post "<U0043><U0052>" - country_car "<U0043><U0052>" - country_isbn "9930,9977,9968" - lang_name "<U0045><U0073><U0070><U0061><U00F1><U006F><U006C>" --lang_ab "<0065><0073>" -+lang_ab "<U0065><U0073>" - lang_term "<U0073><U0070><U0061>" - country_ab2 "<U0043><U0052>" - country_ab3 "<U0043><U0052><U0049>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_DO -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_DO -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_DO -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002E>" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -- "<U0073><U00E1><U0062>" -+ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -+ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -+ "<U0073><U00E1><U0062>" - day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ -- "<U006C><U0075><U006E><U0065><U0073>";/ -- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -- "<U0073><U00E1><U0062><U0061><U0064><U006F>" -+ "<U006C><U0075><U006E><U0065><U0073>";/ -+ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -+ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -+ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -+ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -+ "<U0073><U00E1><U0062><U0061><U0064><U006F>" - abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ -- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -+ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" - mon "<U0065><U006E><U0065><U0072><U006F>";/ -- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -- "<U006D><U0061><U0072><U007A><U006F>";/ -- "<U0061><U0062><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0079><U006F>";/ -- "<U006A><U0075><U006E><U0069><U006F>";/ -- "<U006A><U0075><U006C><U0069><U006F>";/ -- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -+ "<U006D><U0061><U0072><U007A><U006F>";/ -+ "<U0061><U0062><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0079><U006F>";/ -+ "<U006A><U0075><U006E><U0069><U006F>";/ -+ "<U006A><U0075><U006C><U0069><U006F>";/ -+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -+ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" - t_fmt "<U0025><U0054>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_EC -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_EC -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_EC -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002C>" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -- "<U0073><U00E1><U0062>" -+ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -+ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -+ "<U0073><U00E1><U0062>" - day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ -- "<U006C><U0075><U006E><U0065><U0073>";/ -- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -- "<U0073><U00E1><U0062><U0061><U0064><U006F>" -+ "<U006C><U0075><U006E><U0065><U0073>";/ -+ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -+ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -+ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -+ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -+ "<U0073><U00E1><U0062><U0061><U0064><U006F>" - abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ -- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -+ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" - mon "<U0065><U006E><U0065><U0072><U006F>";/ -- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -- "<U006D><U0061><U0072><U007A><U006F>";/ -- "<U0061><U0062><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0079><U006F>";/ -- "<U006A><U0075><U006E><U0069><U006F>";/ -- "<U006A><U0075><U006C><U0069><U006F>";/ -- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -+ "<U006D><U0061><U0072><U007A><U006F>";/ -+ "<U0061><U0062><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0079><U006F>";/ -+ "<U006A><U0075><U006E><U0069><U006F>";/ -+ "<U006A><U0075><U006C><U0069><U006F>";/ -+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -+ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" - t_fmt "<U0025><U0054>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_ES -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_ES -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_ES -@@ -85,40 +85,40 @@ END LC_MONETARY - - LC_NUMERIC - decimal_point "<U002C>" --thousands_sep "" --grouping 0;0 -+thousands_sep "<U002E>" -+grouping 3;3 - END LC_NUMERIC - - LC_TIME - abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -- "<U0073><U00E1><U0062>" -+ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -+ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -+ "<U0073><U00E1><U0062>" - day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ -- "<U006C><U0075><U006E><U0065><U0073>";/ -- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -- "<U0073><U00E1><U0062><U0061><U0064><U006F>" -+ "<U006C><U0075><U006E><U0065><U0073>";/ -+ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -+ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -+ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -+ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -+ "<U0073><U00E1><U0062><U0061><U0064><U006F>" - abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ -- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -+ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" - mon "<U0065><U006E><U0065><U0072><U006F>";/ -- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -- "<U006D><U0061><U0072><U007A><U006F>";/ -- "<U0061><U0062><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0079><U006F>";/ -- "<U006A><U0075><U006E><U0069><U006F>";/ -- "<U006A><U0075><U006C><U0069><U006F>";/ -- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -+ "<U006D><U0061><U0072><U007A><U006F>";/ -+ "<U0061><U0062><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0079><U006F>";/ -+ "<U006A><U0075><U006E><U0069><U006F>";/ -+ "<U006A><U0075><U006C><U0069><U006F>";/ -+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -+ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" - t_fmt "<U0025><U0054>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_GT -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_GT -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_GT -@@ -55,8 +55,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -78,9 +77,7 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002E>" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_HN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_HN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_HN -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002E>" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -- "<U0073><U00E1><U0062>" -+ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -+ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -+ "<U0073><U00E1><U0062>" - day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ -- "<U006C><U0075><U006E><U0065><U0073>";/ -- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -- "<U0073><U00E1><U0062><U0061><U0064><U006F>" -+ "<U006C><U0075><U006E><U0065><U0073>";/ -+ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -+ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -+ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -+ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -+ "<U0073><U00E1><U0062><U0061><U0064><U006F>" - abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ -- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -+ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" - mon "<U0065><U006E><U0065><U0072><U006F>";/ -- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -- "<U006D><U0061><U0072><U007A><U006F>";/ -- "<U0061><U0062><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0079><U006F>";/ -- "<U006A><U0075><U006E><U0069><U006F>";/ -- "<U006A><U0075><U006C><U0069><U006F>";/ -- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -+ "<U006D><U0061><U0072><U007A><U006F>";/ -+ "<U0061><U0062><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0079><U006F>";/ -+ "<U006A><U0075><U006E><U0069><U006F>";/ -+ "<U006A><U0075><U006C><U0069><U006F>";/ -+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -+ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" - t_fmt "<U0025><U0054>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_MX -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_MX -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_MX -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002E>" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -- "<U0073><U00E1><U0062>" -+ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -+ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -+ "<U0073><U00E1><U0062>" - day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ -- "<U006C><U0075><U006E><U0065><U0073>";/ -- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -- "<U0073><U00E1><U0062><U0061><U0064><U006F>" -+ "<U006C><U0075><U006E><U0065><U0073>";/ -+ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -+ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -+ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -+ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -+ "<U0073><U00E1><U0062><U0061><U0064><U006F>" - abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ -- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -+ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" - mon "<U0065><U006E><U0065><U0072><U006F>";/ -- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -- "<U006D><U0061><U0072><U007A><U006F>";/ -- "<U0061><U0062><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0079><U006F>";/ -- "<U006A><U0075><U006E><U0069><U006F>";/ -- "<U006A><U0075><U006C><U0069><U006F>";/ -- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -+ "<U006D><U0061><U0072><U007A><U006F>";/ -+ "<U0061><U0062><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0079><U006F>";/ -+ "<U006A><U0075><U006E><U0069><U006F>";/ -+ "<U006A><U0075><U006C><U0069><U006F>";/ -+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -+ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" - t_fmt "<U0025><U0054>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_NI -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_NI -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_NI -@@ -47,8 +47,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -70,9 +69,7 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002E>" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_PA -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_PA -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_PA -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002E>" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -- "<U0073><U00E1><U0062>" -+ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -+ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -+ "<U0073><U00E1><U0062>" - day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ -- "<U006C><U0075><U006E><U0065><U0073>";/ -- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -- "<U0073><U00E1><U0062><U0061><U0064><U006F>" -+ "<U006C><U0075><U006E><U0065><U0073>";/ -+ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -+ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -+ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -+ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -+ "<U0073><U00E1><U0062><U0061><U0064><U006F>" - abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ -- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -+ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" - mon "<U0065><U006E><U0065><U0072><U006F>";/ -- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -- "<U006D><U0061><U0072><U007A><U006F>";/ -- "<U0061><U0062><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0079><U006F>";/ -- "<U006A><U0075><U006E><U0069><U006F>";/ -- "<U006A><U0075><U006C><U0069><U006F>";/ -- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -+ "<U006D><U0061><U0072><U007A><U006F>";/ -+ "<U0061><U0062><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0079><U006F>";/ -+ "<U006A><U0075><U006E><U0069><U006F>";/ -+ "<U006A><U0075><U006C><U0069><U006F>";/ -+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -+ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" - t_fmt "<U0025><U0054>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_PE -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_PE -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_PE -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002E>" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -- "<U0073><U00E1><U0062>" -+ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -+ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -+ "<U0073><U00E1><U0062>" - day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ -- "<U006C><U0075><U006E><U0065><U0073>";/ -- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -- "<U0073><U00E1><U0062><U0061><U0064><U006F>" -+ "<U006C><U0075><U006E><U0065><U0073>";/ -+ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -+ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -+ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -+ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -+ "<U0073><U00E1><U0062><U0061><U0064><U006F>" - abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ -- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -+ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" - mon "<U0065><U006E><U0065><U0072><U006F>";/ -- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -- "<U006D><U0061><U0072><U007A><U006F>";/ -- "<U0061><U0062><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0079><U006F>";/ -- "<U006A><U0075><U006E><U0069><U006F>";/ -- "<U006A><U0075><U006C><U0069><U006F>";/ -- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -+ "<U006D><U0061><U0072><U007A><U006F>";/ -+ "<U0061><U0062><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0079><U006F>";/ -+ "<U006A><U0075><U006E><U0069><U006F>";/ -+ "<U006A><U0075><U006C><U0069><U006F>";/ -+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -+ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" - t_fmt "<U0025><U0054>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_PR -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_PR -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_PR -@@ -47,8 +47,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -70,41 +69,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002E>" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -- "<U0073><U00E1><U0062>" -+ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -+ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -+ "<U0073><U00E1><U0062>" - day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ -- "<U006C><U0075><U006E><U0065><U0073>";/ -- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -- "<U0073><U00E1><U0062><U0061><U0064><U006F>" -+ "<U006C><U0075><U006E><U0065><U0073>";/ -+ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -+ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -+ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -+ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -+ "<U0073><U00E1><U0062><U0061><U0064><U006F>" - abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ -- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -+ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" - mon "<U0065><U006E><U0065><U0072><U006F>";/ -- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -- "<U006D><U0061><U0072><U007A><U006F>";/ -- "<U0061><U0062><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0079><U006F>";/ -- "<U006A><U0075><U006E><U0069><U006F>";/ -- "<U006A><U0075><U006C><U0069><U006F>";/ -- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -+ "<U006D><U0061><U0072><U007A><U006F>";/ -+ "<U0061><U0062><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0079><U006F>";/ -+ "<U006A><U0075><U006E><U0069><U006F>";/ -+ "<U006A><U0075><U006C><U0069><U006F>";/ -+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -+ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" - t_fmt "<U0025><U0054>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_PY -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_PY -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_PY -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002C>" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -- "<U0073><U00E1><U0062>" -+ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -+ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -+ "<U0073><U00E1><U0062>" - day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ -- "<U006C><U0075><U006E><U0065><U0073>";/ -- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -- "<U0073><U00E1><U0062><U0061><U0064><U006F>" -+ "<U006C><U0075><U006E><U0065><U0073>";/ -+ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -+ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -+ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -+ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -+ "<U0073><U00E1><U0062><U0061><U0064><U006F>" - abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ -- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -+ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" - mon "<U0065><U006E><U0065><U0072><U006F>";/ -- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -- "<U006D><U0061><U0072><U007A><U006F>";/ -- "<U0061><U0062><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0079><U006F>";/ -- "<U006A><U0075><U006E><U0069><U006F>";/ -- "<U006A><U0075><U006C><U0069><U006F>";/ -- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -+ "<U006D><U0061><U0072><U007A><U006F>";/ -+ "<U0061><U0062><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0079><U006F>";/ -+ "<U006A><U0075><U006E><U0069><U006F>";/ -+ "<U006A><U0075><U006C><U0069><U006F>";/ -+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -+ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" - t_fmt "<U0025><U0054>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_SV -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_SV -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_SV -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,9 +78,7 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002E>" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_UY -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_UY -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_UY -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002C>" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -- "<U0073><U00E1><U0062>" -+ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -+ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -+ "<U0073><U00E1><U0062>" - day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ -- "<U006C><U0075><U006E><U0065><U0073>";/ -- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -- "<U0073><U00E1><U0062><U0061><U0064><U006F>" -+ "<U006C><U0075><U006E><U0065><U0073>";/ -+ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -+ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -+ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -+ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -+ "<U0073><U00E1><U0062><U0061><U0064><U006F>" - abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ -- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -+ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" - mon "<U0065><U006E><U0065><U0072><U006F>";/ -- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -- "<U006D><U0061><U0072><U007A><U006F>";/ -- "<U0061><U0062><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0079><U006F>";/ -- "<U006A><U0075><U006E><U0069><U006F>";/ -- "<U006A><U0075><U006C><U0069><U006F>";/ -- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -+ "<U006D><U0061><U0072><U007A><U006F>";/ -+ "<U0061><U0062><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0079><U006F>";/ -+ "<U006A><U0075><U006E><U0069><U006F>";/ -+ "<U006A><U0075><U006C><U0069><U006F>";/ -+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -+ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" - t_fmt "<U0025><U0054>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_VE -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_VE -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_VE -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002C>" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -- "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -- "<U0073><U00E1><U0062>" -+ "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/ -+ "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/ -+ "<U0073><U00E1><U0062>" - day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/ -- "<U006C><U0075><U006E><U0065><U0073>";/ -- "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -- "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -- "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -- "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -- "<U0073><U00E1><U0062><U0061><U0064><U006F>" -+ "<U006C><U0075><U006E><U0065><U0073>";/ -+ "<U006D><U0061><U0072><U0074><U0065><U0073>";/ -+ "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/ -+ "<U006A><U0075><U0065><U0076><U0065><U0073>";/ -+ "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/ -+ "<U0073><U00E1><U0062><U0061><U0064><U006F>" - abmon "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/ -- "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -- "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/ -+ "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U0069><U0063>" - mon "<U0065><U006E><U0065><U0072><U006F>";/ -- "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -- "<U006D><U0061><U0072><U007A><U006F>";/ -- "<U0061><U0062><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0079><U006F>";/ -- "<U006A><U0075><U006E><U0069><U006F>";/ -- "<U006A><U0075><U006C><U0069><U006F>";/ -- "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -- "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/ -+ "<U006D><U0061><U0072><U007A><U006F>";/ -+ "<U0061><U0062><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0079><U006F>";/ -+ "<U006A><U0075><U006E><U0069><U006F>";/ -+ "<U006A><U0075><U006C><U0069><U006F>";/ -+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/ -+ "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>" - t_fmt "<U0025><U0054>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/fr_BE -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/fr_BE -+++ glibc-2.12-2-gc4ccff1/localedata/locales/fr_BE -@@ -79,7 +79,7 @@ END LC_MONETARY - LC_NUMERIC - decimal_point "<U002C>" - thousands_sep "<U002E>" --grouping 0;0 -+grouping 3;3 - END LC_NUMERIC - - LC_TIME -Index: glibc-2.12-2-gc4ccff1/localedata/locales/fr_CA -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/fr_CA -+++ glibc-2.12-2-gc4ccff1/localedata/locales/fr_CA -@@ -55,8 +55,7 @@ copy "en_CA" - END LC_COLLATE - - LC_MESSAGES --yesexpr "<U005E><U005B><U006F><U004F><U0079><U0059><U005D><U002E><U002A>" --noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>" -+copy "fr_FR" - END LC_MESSAGES - - LC_MONETARY -@@ -78,41 +77,39 @@ n_sign_posn 0 - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002C>" --thousands_sep "<U0020>" --grouping 0;0 -+copy "fr_FR" - END LC_NUMERIC - - LC_TIME - abday "<U0064><U0069><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0065><U0072>";/ -- "<U006A><U0065><U0075>";"<U0076><U0065><U006E>";/ -- "<U0073><U0061><U006D>" -+ "<U006D><U0061><U0072>";"<U006D><U0065><U0072>";/ -+ "<U006A><U0065><U0075>";"<U0076><U0065><U006E>";/ -+ "<U0073><U0061><U006D>" - day "<U0064><U0069><U006D><U0061><U006E><U0063><U0068><U0065>";/ -- "<U006C><U0075><U006E><U0064><U0069>";/ -- "<U006D><U0061><U0072><U0064><U0069>";/ -- "<U006D><U0065><U0072><U0063><U0072><U0065><U0064><U0069>";/ -- "<U006A><U0065><U0075><U0064><U0069>";/ -- "<U0076><U0065><U006E><U0064><U0072><U0065><U0064><U0069>";/ -- "<U0073><U0061><U006D><U0065><U0064><U0069>" -+ "<U006C><U0075><U006E><U0064><U0069>";/ -+ "<U006D><U0061><U0072><U0064><U0069>";/ -+ "<U006D><U0065><U0072><U0063><U0072><U0065><U0064><U0069>";/ -+ "<U006A><U0065><U0075><U0064><U0069>";/ -+ "<U0076><U0065><U006E><U0064><U0072><U0065><U0064><U0069>";/ -+ "<U0073><U0061><U006D><U0065><U0064><U0069>" - abmon "<U006A><U0061><U006E>";"<U0066><U00E9><U0076>";/ -- "<U006D><U0061><U0072>";"<U0061><U0076><U0072>";/ -- "<U006D><U0061><U0069>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U0069>";"<U0061><U006F><U00FB>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U00E9><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0076><U0072>";/ -+ "<U006D><U0061><U0069>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U0069>";"<U0061><U006F><U00FB>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U00E9><U0063>" - mon "<U006A><U0061><U006E><U0076><U0069><U0065><U0072>";/ -- "<U0066><U00E9><U0076><U0072><U0069><U0065><U0072>";/ -- "<U006D><U0061><U0072><U0073>";/ -- "<U0061><U0076><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0069>";/ -- "<U006A><U0075><U0069><U006E>";/ -- "<U006A><U0075><U0069><U006C><U006C><U0065><U0074>";/ -- "<U0061><U006F><U00FB><U0074>";/ -- "<U0073><U0065><U0070><U0074><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U006F><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U00E9><U0063><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U00E9><U0076><U0072><U0069><U0065><U0072>";/ -+ "<U006D><U0061><U0072><U0073>";/ -+ "<U0061><U0076><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0069>";/ -+ "<U006A><U0075><U0069><U006E>";/ -+ "<U006A><U0075><U0069><U006C><U006C><U0065><U0074>";/ -+ "<U0061><U006F><U00FB><U0074>";/ -+ "<U0073><U0065><U0070><U0074><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U006F><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U00E9><U0063><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064>" - t_fmt "<U0025><U0054>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/fr_CH -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/fr_CH -+++ glibc-2.12-2-gc4ccff1/localedata/locales/fr_CH -@@ -64,41 +64,39 @@ copy "de_CH" - END LC_MONETARY - - LC_NUMERIC --decimal_point "<U002C>" --thousands_sep "" --grouping 0;0 -+copy "de_CH" - END LC_NUMERIC - - LC_TIME - abday "<U0064><U0069><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0065><U0072>";/ -- "<U006A><U0065><U0075>";"<U0076><U0065><U006E>";/ -- "<U0073><U0061><U006D>" -+ "<U006D><U0061><U0072>";"<U006D><U0065><U0072>";/ -+ "<U006A><U0065><U0075>";"<U0076><U0065><U006E>";/ -+ "<U0073><U0061><U006D>" - day "<U0064><U0069><U006D><U0061><U006E><U0063><U0068><U0065>";/ -- "<U006C><U0075><U006E><U0064><U0069>";/ -- "<U006D><U0061><U0072><U0064><U0069>";/ -- "<U006D><U0065><U0072><U0063><U0072><U0065><U0064><U0069>";/ -- "<U006A><U0065><U0075><U0064><U0069>";/ -- "<U0076><U0065><U006E><U0064><U0072><U0065><U0064><U0069>";/ -- "<U0073><U0061><U006D><U0065><U0064><U0069>" -+ "<U006C><U0075><U006E><U0064><U0069>";/ -+ "<U006D><U0061><U0072><U0064><U0069>";/ -+ "<U006D><U0065><U0072><U0063><U0072><U0065><U0064><U0069>";/ -+ "<U006A><U0065><U0075><U0064><U0069>";/ -+ "<U0076><U0065><U006E><U0064><U0072><U0065><U0064><U0069>";/ -+ "<U0073><U0061><U006D><U0065><U0064><U0069>" - abmon "<U006A><U0061><U006E>";"<U0066><U00E9><U0076>";/ -- "<U006D><U0061><U0072>";"<U0061><U0076><U0072>";/ -- "<U006D><U0061><U0069>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U0069>";"<U0061><U006F><U00FB>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U00E9><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0076><U0072>";/ -+ "<U006D><U0061><U0069>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U0069>";"<U0061><U006F><U00FB>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U00E9><U0063>" - mon "<U006A><U0061><U006E><U0076><U0069><U0065><U0072>";/ -- "<U0066><U00E9><U0076><U0072><U0069><U0065><U0072>";/ -- "<U006D><U0061><U0072><U0073>";/ -- "<U0061><U0076><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0069>";/ -- "<U006A><U0075><U0069><U006E>";/ -- "<U006A><U0075><U0069><U006C><U006C><U0065><U0074>";/ -- "<U0061><U006F><U00FB><U0074>";/ -- "<U0073><U0065><U0070><U0074><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U006F><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U00E9><U0063><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U00E9><U0076><U0072><U0069><U0065><U0072>";/ -+ "<U006D><U0061><U0072><U0073>";/ -+ "<U0061><U0076><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0069>";/ -+ "<U006A><U0075><U0069><U006E>";/ -+ "<U006A><U0075><U0069><U006C><U006C><U0065><U0074>";/ -+ "<U0061><U006F><U00FB><U0074>";/ -+ "<U0073><U0065><U0070><U0074><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U006F><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U00E9><U0063><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002E><U0020><U0025><U006D><U002E><U0020><U0025><U0079>" - t_fmt "<U0025><U0054>" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/fr_LU -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/fr_LU -+++ glibc-2.12-2-gc4ccff1/localedata/locales/fr_LU -@@ -78,40 +78,40 @@ END LC_MONETARY - - LC_NUMERIC - decimal_point "<U002C>" --thousands_sep "" --grouping 0;0 -+thousands_sep "<U0020>" -+grouping 3;3 - END LC_NUMERIC - - LC_TIME - abday "<U0064><U0069><U006D>";"<U006C><U0075><U006E>";/ -- "<U006D><U0061><U0072>";"<U006D><U0065><U0072>";/ -- "<U006A><U0065><U0075>";"<U0076><U0065><U006E>";/ -- "<U0073><U0061><U006D>" -+ "<U006D><U0061><U0072>";"<U006D><U0065><U0072>";/ -+ "<U006A><U0065><U0075>";"<U0076><U0065><U006E>";/ -+ "<U0073><U0061><U006D>" - day "<U0064><U0069><U006D><U0061><U006E><U0063><U0068><U0065>";/ -- "<U006C><U0075><U006E><U0064><U0069>";/ -- "<U006D><U0061><U0072><U0064><U0069>";/ -- "<U006D><U0065><U0072><U0063><U0072><U0065><U0064><U0069>";/ -- "<U006A><U0065><U0075><U0064><U0069>";/ -- "<U0076><U0065><U006E><U0064><U0072><U0065><U0064><U0069>";/ -- "<U0073><U0061><U006D><U0065><U0064><U0069>" -+ "<U006C><U0075><U006E><U0064><U0069>";/ -+ "<U006D><U0061><U0072><U0064><U0069>";/ -+ "<U006D><U0065><U0072><U0063><U0072><U0065><U0064><U0069>";/ -+ "<U006A><U0065><U0075><U0064><U0069>";/ -+ "<U0076><U0065><U006E><U0064><U0072><U0065><U0064><U0069>";/ -+ "<U0073><U0061><U006D><U0065><U0064><U0069>" - abmon "<U006A><U0061><U006E>";"<U0066><U00E9><U0076>";/ -- "<U006D><U0061><U0072>";"<U0061><U0076><U0072>";/ -- "<U006D><U0061><U0069>";"<U006A><U0075><U006E>";/ -- "<U006A><U0075><U0069>";"<U0061><U006F><U00FB>";/ -- "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -- "<U006E><U006F><U0076>";"<U0064><U00E9><U0063>" -+ "<U006D><U0061><U0072>";"<U0061><U0076><U0072>";/ -+ "<U006D><U0061><U0069>";"<U006A><U0075><U006E>";/ -+ "<U006A><U0075><U0069>";"<U0061><U006F><U00FB>";/ -+ "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/ -+ "<U006E><U006F><U0076>";"<U0064><U00E9><U0063>" - mon "<U006A><U0061><U006E><U0076><U0069><U0065><U0072>";/ -- "<U0066><U00E9><U0076><U0072><U0069><U0065><U0072>";/ -- "<U006D><U0061><U0072><U0073>";/ -- "<U0061><U0076><U0072><U0069><U006C>";/ -- "<U006D><U0061><U0069>";/ -- "<U006A><U0075><U0069><U006E>";/ -- "<U006A><U0075><U0069><U006C><U006C><U0065><U0074>";/ -- "<U0061><U006F><U00FB><U0074>";/ -- "<U0073><U0065><U0070><U0074><U0065><U006D><U0062><U0072><U0065>";/ -- "<U006F><U0063><U0074><U006F><U0062><U0072><U0065>";/ -- "<U006E><U006F><U0076><U0065><U006D><U0062><U0072><U0065>";/ -- "<U0064><U00E9><U0063><U0065><U006D><U0062><U0072><U0065>" -+ "<U0066><U00E9><U0076><U0072><U0069><U0065><U0072>";/ -+ "<U006D><U0061><U0072><U0073>";/ -+ "<U0061><U0076><U0072><U0069><U006C>";/ -+ "<U006D><U0061><U0069>";/ -+ "<U006A><U0075><U0069><U006E>";/ -+ "<U006A><U0075><U0069><U006C><U006C><U0065><U0074>";/ -+ "<U0061><U006F><U00FB><U0074>";/ -+ "<U0073><U0065><U0070><U0074><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U006F><U0063><U0074><U006F><U0062><U0072><U0065>";/ -+ "<U006E><U006F><U0076><U0065><U006D><U0062><U0072><U0065>";/ -+ "<U0064><U00E9><U0063><U0065><U006D><U0062><U0072><U0065>" - d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>" - d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>" - t_fmt "<U0025><U0054>" diff --git a/src/patches/glibc/glibc-rh688980.patch b/src/patches/glibc/glibc-rh688980.patch deleted file mode 100644 index ce98926..0000000 --- a/src/patches/glibc/glibc-rh688980.patch +++ /dev/null @@ -1,20 +0,0 @@ -2011-05-11 Ulrich Drepper drepper@gmail.com - - [BZ #12625] - * misc/mntent_r.c (addmntent): Flush the stream after the output - -Index: glibc-2.12-2-gc4ccff1/misc/mntent_r.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/misc/mntent_r.c -+++ glibc-2.12-2-gc4ccff1/misc/mntent_r.c -@@ -263,8 +263,8 @@ __addmntent (FILE *stream, const struct - mntcopy.mnt_type, - mntcopy.mnt_opts, - mntcopy.mnt_freq, -- mntcopy.mnt_passno) -- < 0 ? 1 : 0); -+ mntcopy.mnt_passno) < 0 -+ || fflush (stream) != 0); - } - weak_alias (__addmntent, addmntent) - diff --git a/src/patches/glibc/glibc-rh689471.patch b/src/patches/glibc/glibc-rh689471.patch deleted file mode 100644 index 4c7fc8a..0000000 --- a/src/patches/glibc/glibc-rh689471.patch +++ /dev/null @@ -1,333 +0,0 @@ -2011-03-20 H.J. Lu hongjiu.lu@intel.com - - [BZ #12597] - * string/test-strncmp.c (do_page_test): New function. - (check2): Likewise. - (test_main): Call check2. - * sysdeps/x86_64/multiarch/strcmp.S: Properly cross page boundary. - -Index: glibc-2.12-2-gc4ccff1/string/test-strncmp.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/test-strncmp.c -+++ glibc-2.12-2-gc4ccff1/string/test-strncmp.c -@@ -200,6 +200,27 @@ do_test (size_t align1, size_t align2, s - } - - static void -+do_page_test (size_t offset1, size_t offset2, char *s2) -+{ -+ char *s1; -+ int exp_result; -+ -+ if (offset1 >= page_size || offset2 >= page_size) -+ return; -+ -+ s1 = (char *) (buf1 + offset1); -+ s2 += offset2; -+ -+ exp_result= *s1; -+ -+ FOR_EACH_IMPL (impl, 0) -+ { -+ check_result (impl, s1, s2, page_size, -exp_result); -+ check_result (impl, s2, s1, page_size, exp_result); -+ } -+} -+ -+static void - do_random_tests (void) - { - size_t i, j, n, align1, align2, pos, len1, len2, size; -@@ -312,6 +333,25 @@ check1 (void) - } - } - -+static void -+check2 (void) -+{ -+ size_t i; -+ char *s1, *s2; -+ -+ s1 = (char *) buf1; -+ for (i = 0; i < page_size - 1; i++) -+ s1[i] = 23; -+ s1[i] = 0; -+ -+ s2 = strdup (s1); -+ -+ for (i = 0; i < 64; ++i) -+ do_page_test (3990 + i, 2635, s2); -+ -+ free (s2); -+} -+ - int - test_main (void) - { -@@ -320,6 +360,7 @@ test_main (void) - test_init (); - - check1 (); -+ check2 (); - - printf ("%23s", ""); - FOR_EACH_IMPL (impl, 0) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strcmp.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S -@@ -452,6 +452,7 @@ LABEL(loop_ashr_1_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_1_use_sse4_2) - -+LABEL(nibble_ashr_1_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $1, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -499,7 +500,7 @@ LABEL(nibble_ashr_1_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $14, %ecx -- ja LABEL(loop_ashr_1_use_sse4_2) -+ ja LABEL(nibble_ashr_1_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -544,6 +545,7 @@ LABEL(loop_ashr_2_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_2_use_sse4_2) - -+LABEL(nibble_ashr_2_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $2, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -591,7 +593,7 @@ LABEL(nibble_ashr_2_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $13, %ecx -- ja LABEL(loop_ashr_2_use_sse4_2) -+ ja LABEL(nibble_ashr_2_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -636,6 +638,7 @@ LABEL(loop_ashr_3_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_3_use_sse4_2) - -+LABEL(nibble_ashr_3_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $3, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -683,7 +686,7 @@ LABEL(nibble_ashr_3_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $12, %ecx -- ja LABEL(loop_ashr_3_use_sse4_2) -+ ja LABEL(nibble_ashr_3_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -729,6 +732,7 @@ LABEL(loop_ashr_4_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_4_use_sse4_2) - -+LABEL(nibble_ashr_4_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $4, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -776,7 +780,7 @@ LABEL(nibble_ashr_4_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $11, %ecx -- ja LABEL(loop_ashr_4_use_sse4_2) -+ ja LABEL(nibble_ashr_4_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -822,6 +826,7 @@ LABEL(loop_ashr_5_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_5_use_sse4_2) - -+LABEL(nibble_ashr_5_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $5, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -870,7 +875,7 @@ LABEL(nibble_ashr_5_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $10, %ecx -- ja LABEL(loop_ashr_5_use_sse4_2) -+ ja LABEL(nibble_ashr_5_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -916,6 +921,7 @@ LABEL(loop_ashr_6_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_6_use_sse4_2) - -+LABEL(nibble_ashr_6_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $6, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -963,7 +969,7 @@ LABEL(nibble_ashr_6_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $9, %ecx -- ja LABEL(loop_ashr_6_use_sse4_2) -+ ja LABEL(nibble_ashr_6_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1009,6 +1015,7 @@ LABEL(loop_ashr_7_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_7_use_sse4_2) - -+LABEL(nibble_ashr_7_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $7, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -1056,7 +1063,7 @@ LABEL(nibble_ashr_7_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $8, %ecx -- ja LABEL(loop_ashr_7_use_sse4_2) -+ ja LABEL(nibble_ashr_7_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1102,6 +1109,7 @@ LABEL(loop_ashr_8_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_8_use_sse4_2) - -+LABEL(nibble_ashr_8_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $8, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -1149,7 +1157,7 @@ LABEL(nibble_ashr_8_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $7, %ecx -- ja LABEL(loop_ashr_8_use_sse4_2) -+ ja LABEL(nibble_ashr_8_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1195,6 +1203,7 @@ LABEL(loop_ashr_9_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_9_use_sse4_2) - -+LABEL(nibble_ashr_9_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - - palignr $9, -16(%rdi, %rdx), %xmm0 -@@ -1243,7 +1252,7 @@ LABEL(nibble_ashr_9_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $6, %ecx -- ja LABEL(loop_ashr_9_use_sse4_2) -+ ja LABEL(nibble_ashr_9_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1289,6 +1298,7 @@ LABEL(loop_ashr_10_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_10_use_sse4_2) - -+LABEL(nibble_ashr_10_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $10, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -1336,7 +1346,7 @@ LABEL(nibble_ashr_10_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $5, %ecx -- ja LABEL(loop_ashr_10_use_sse4_2) -+ ja LABEL(nibble_ashr_10_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1382,6 +1392,7 @@ LABEL(loop_ashr_11_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_11_use_sse4_2) - -+LABEL(nibble_ashr_11_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $11, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -1429,7 +1440,7 @@ LABEL(nibble_ashr_11_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $4, %ecx -- ja LABEL(loop_ashr_11_use_sse4_2) -+ ja LABEL(nibble_ashr_11_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1475,6 +1486,7 @@ LABEL(loop_ashr_12_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_12_use_sse4_2) - -+LABEL(nibble_ashr_12_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $12, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -1522,7 +1534,7 @@ LABEL(nibble_ashr_12_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $3, %ecx -- ja LABEL(loop_ashr_12_use_sse4_2) -+ ja LABEL(nibble_ashr_12_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1569,6 +1581,7 @@ LABEL(loop_ashr_13_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_13_use_sse4_2) - -+LABEL(nibble_ashr_13_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $13, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -1616,7 +1629,7 @@ LABEL(nibble_ashr_13_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $2, %ecx -- ja LABEL(loop_ashr_13_use_sse4_2) -+ ja LABEL(nibble_ashr_13_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1663,6 +1676,7 @@ LABEL(loop_ashr_14_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_14_use_sse4_2) - -+LABEL(nibble_ashr_14_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $14, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -1710,7 +1724,7 @@ LABEL(nibble_ashr_14_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $1, %ecx -- ja LABEL(loop_ashr_14_use_sse4_2) -+ ja LABEL(nibble_ashr_14_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1759,6 +1773,7 @@ LABEL(loop_ashr_15_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_15_use_sse4_2) - -+LABEL(nibble_ashr_15_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $15, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -1806,7 +1821,7 @@ LABEL(nibble_ashr_15_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $0, %ecx -- ja LABEL(loop_ashr_15_use_sse4_2) -+ ja LABEL(nibble_ashr_15_use_sse4_2_restart) - - LABEL(nibble_ashr_use_sse4_2_exit): - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L diff --git a/src/patches/glibc/glibc-rh692177.patch b/src/patches/glibc/glibc-rh692177.patch deleted file mode 100644 index 1036769..0000000 --- a/src/patches/glibc/glibc-rh692177.patch +++ /dev/null @@ -1,137 +0,0 @@ -2011-03-22 Ulrich Drepper drepper@gmail.com - - * sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word): Increment - round counter. - * sysdeps/x86_64/cacheinfo.c (intel_check_word): Likewise. - -2011-03-20 Ulrich Drepper drepper@gmail.com - - [BZ #12587] - * sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word): - Handle cache information in CPU leaf 4. - * sysdeps/x86_64/cacheinfo.c (intel_check_word): Likewise. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/sysconf.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/i386/sysconf.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/sysconf.c -@@ -186,6 +186,57 @@ intel_check_word (int name, unsigned int - /* No need to look further. */ - break; - } -+ else if (byte == 0xff) -+ { -+ /* CPUID leaf 0x4 contains all the information. We need to -+ iterate over it. */ -+ unsigned int eax; -+ unsigned int ebx; -+ unsigned int ecx; -+ unsigned int edx; -+ -+ unsigned int round = 0; -+ while (1) -+ { -+ asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" -+ : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) -+ : "0" (4), "2" (round)); -+ -+ enum { null = 0, data = 1, inst = 2, uni = 3 } type = eax & 0x1f; -+ if (type == null) -+ /* That was the end. */ -+ break; -+ -+ unsigned int level = (eax >> 5) & 0x7; -+ -+ if ((level == 1 && type == data -+ && folded_rel_name == M(_SC_LEVEL1_DCACHE_SIZE)) -+ || (level == 1 && type == inst -+ && folded_rel_name == M(_SC_LEVEL1_ICACHE_SIZE)) -+ || (level == 2 && folded_rel_name == M(_SC_LEVEL2_CACHE_SIZE)) -+ || (level == 3 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) -+ || (level == 4 && folded_rel_name == M(_SC_LEVEL4_CACHE_SIZE))) -+ { -+ unsigned int offset = M(name) - folded_rel_name; -+ -+ if (offset == 0) -+ /* Cache size. */ -+ return (((ebx >> 22) + 1) -+ * (((ebx >> 12) & 0x3ff) + 1) -+ * ((ebx & 0xfff) + 1) -+ * (ecx + 1)); -+ if (offset == 1) -+ return (ebx >> 22) + 1; -+ -+ assert (offset == 2); -+ return (ebx & 0xfff) + 1; -+ } -+ -+ ++round; -+ } -+ /* There is no other cache information anywhere else. */ -+ break; -+ } - else - { - if (byte == 0x49 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/cacheinfo.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c -@@ -181,6 +181,57 @@ intel_check_word (int name, unsigned int - /* No need to look further. */ - break; - } -+ else if (byte == 0xff) -+ { -+ /* CPUID leaf 0x4 contains all the information. We need to -+ iterate over it. */ -+ unsigned int eax; -+ unsigned int ebx; -+ unsigned int ecx; -+ unsigned int edx; -+ -+ unsigned int round = 0; -+ while (1) -+ { -+ asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" -+ : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) -+ : "0" (4), "2" (round)); -+ -+ enum { null = 0, data = 1, inst = 2, uni = 3 } type = eax & 0x1f; -+ if (type == null) -+ /* That was the end. */ -+ break; -+ -+ unsigned int level = (eax >> 5) & 0x7; -+ -+ if ((level == 1 && type == data -+ && folded_rel_name == M(_SC_LEVEL1_DCACHE_SIZE)) -+ || (level == 1 && type == inst -+ && folded_rel_name == M(_SC_LEVEL1_ICACHE_SIZE)) -+ || (level == 2 && folded_rel_name == M(_SC_LEVEL2_CACHE_SIZE)) -+ || (level == 3 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) -+ || (level == 4 && folded_rel_name == M(_SC_LEVEL4_CACHE_SIZE))) -+ { -+ unsigned int offset = M(name) - folded_rel_name; -+ -+ if (offset == 0) -+ /* Cache size. */ -+ return (((ebx >> 22) + 1) -+ * (((ebx >> 12) & 0x3ff) + 1) -+ * ((ebx & 0xfff) + 1) -+ * (ecx + 1)); -+ if (offset == 1) -+ return (ebx >> 22) + 1; -+ -+ assert (offset == 2); -+ return (ebx & 0xfff) + 1; -+ } -+ -+ ++round; -+ } -+ /* There is no other cache information anywhere else. */ -+ break; -+ } - else - { - if (byte == 0x49 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) diff --git a/src/patches/glibc/glibc-rh692838.patch b/src/patches/glibc/glibc-rh692838.patch deleted file mode 100644 index aa2adf1..0000000 --- a/src/patches/glibc/glibc-rh692838.patch +++ /dev/null @@ -1,6165 +0,0 @@ -2011-05-09 Ulrich Drepper drepper@gmail.com - - [BZ #12541] - * locales/ar_IN: Update currency_symbol. - * locales/as_IN: Likewise. - * locales/bn_IN: Likewise. - * locales/en_IN: Likewise. - * locales/gu_IN: Likewise. - * locales/hi_IN: Likewise. - * locales/kn_IN: Likewise. - * locales/kok_IN: Likewise. - * locales/ks_IN: Likewise. - * locales/ml_IN: Likewise. - * locales/mr_IN: Likewise. - * locales/or_IN: Likewise. - * locales/pa_IN: Likewise. - * locales/sa_IN: Likewise. - * locales/sd_IN: Likewise. - * locales/ta_IN: Likewise. - * locales/te_IN: Likewise. - Patch by pravin.d.s@gmail.com. - -2011-05-09 Ulrich Drepper drepper@gmail.com - - [BZ #12711] - * locale/C-translit.h.in: Add entry for U20B9. - Patch by pravin.d.s@gmail.com. - -Index: glibc-2.12-2-gc4ccff1/locale/C-translit.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/locale/C-translit.h -+++ glibc-2.12-2-gc4ccff1/locale/C-translit.h -@@ -1,4 +1,4 @@ --#define NTRANSLIT 1353 -+#define NTRANSLIT 1354 - static const uint32_t translit_from_idx[] = - { - 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, -@@ -113,7 +113,7 @@ static const uint32_t translit_from_idx[ - 2616, 2618, 2620, 2622, 2624, 2626, 2628, 2630, 2632, 2634, 2636, 2638, - 2640, 2642, 2644, 2646, 2648, 2650, 2652, 2654, 2656, 2658, 2660, 2662, - 2664, 2666, 2668, 2670, 2672, 2674, 2676, 2678, 2680, 2682, 2684, 2686, -- 2688, 2690, 2692, 2694, 2696, 2698, 2700, 2702, 2704 -+ 2688, 2690, 2692, 2694, 2696, 2698, 2700, 2702, 2704, 2706 - }; - static const wchar_t translit_from_tbl[] = - L"\x00a0" L"\0" L"\x00a9" L"\0" L"\x00ab" L"\0" L"\x00ad" L"\0" L"\x00ae" -@@ -134,334 +134,334 @@ static const wchar_t translit_from_tbl[] - L"\0" L"\x2035" L"\0" L"\x2036" L"\0" L"\x2037" L"\0" L"\x2039" L"\0" - L"\x203a" L"\0" L"\x203c" L"\0" L"\x2044" L"\0" L"\x2047" L"\0" L"\x2048" - L"\0" L"\x2049" L"\0" L"\x205f" L"\0" L"\x2060" L"\0" L"\x2061" L"\0" -- L"\x2062" L"\0" L"\x2063" L"\0" L"\x20a8" L"\0" L"\x20ac" L"\0" L"\x2100" -- L"\0" L"\x2101" L"\0" L"\x2102" L"\0" L"\x2105" L"\0" L"\x2106" L"\0" -- L"\x210a" L"\0" L"\x210b" L"\0" L"\x210c" L"\0" L"\x210d" L"\0" L"\x210e" -- L"\0" L"\x2110" L"\0" L"\x2111" L"\0" L"\x2112" L"\0" L"\x2113" L"\0" -- L"\x2115" L"\0" L"\x2116" L"\0" L"\x2119" L"\0" L"\x211a" L"\0" L"\x211b" -- L"\0" L"\x211c" L"\0" L"\x211d" L"\0" L"\x2121" L"\0" L"\x2122" L"\0" -- L"\x2124" L"\0" L"\x2126" L"\0" L"\x2128" L"\0" L"\x212c" L"\0" L"\x212d" -- L"\0" L"\x212e" L"\0" L"\x212f" L"\0" L"\x2130" L"\0" L"\x2131" L"\0" -- L"\x2133" L"\0" L"\x2134" L"\0" L"\x2139" L"\0" L"\x2145" L"\0" L"\x2146" -- L"\0" L"\x2147" L"\0" L"\x2148" L"\0" L"\x2149" L"\0" L"\x2153" L"\0" -- L"\x2154" L"\0" L"\x2155" L"\0" L"\x2156" L"\0" L"\x2157" L"\0" L"\x2158" -- L"\0" L"\x2159" L"\0" L"\x215a" L"\0" L"\x215b" L"\0" L"\x215c" L"\0" -- L"\x215d" L"\0" L"\x215e" L"\0" L"\x215f" L"\0" L"\x2160" L"\0" L"\x2161" -- L"\0" L"\x2162" L"\0" L"\x2163" L"\0" L"\x2164" L"\0" L"\x2165" L"\0" -- L"\x2166" L"\0" L"\x2167" L"\0" L"\x2168" L"\0" L"\x2169" L"\0" L"\x216a" -- L"\0" L"\x216b" L"\0" L"\x216c" L"\0" L"\x216d" L"\0" L"\x216e" L"\0" -- L"\x216f" L"\0" L"\x2170" L"\0" L"\x2171" L"\0" L"\x2172" L"\0" L"\x2173" -- L"\0" L"\x2174" L"\0" L"\x2175" L"\0" L"\x2176" L"\0" L"\x2177" L"\0" -- L"\x2178" L"\0" L"\x2179" L"\0" L"\x217a" L"\0" L"\x217b" L"\0" L"\x217c" -- L"\0" L"\x217d" L"\0" L"\x217e" L"\0" L"\x217f" L"\0" L"\x2190" L"\0" -- L"\x2192" L"\0" L"\x2194" L"\0" L"\x21d0" L"\0" L"\x21d2" L"\0" L"\x21d4" -- L"\0" L"\x2212" L"\0" L"\x2215" L"\0" L"\x2216" L"\0" L"\x2217" L"\0" -- L"\x2223" L"\0" L"\x2236" L"\0" L"\x223c" L"\0" L"\x2264" L"\0" L"\x2265" -- L"\0" L"\x226a" L"\0" L"\x226b" L"\0" L"\x22d8" L"\0" L"\x22d9" L"\0" -- L"\x2400" L"\0" L"\x2401" L"\0" L"\x2402" L"\0" L"\x2403" L"\0" L"\x2404" -- L"\0" L"\x2405" L"\0" L"\x2406" L"\0" L"\x2407" L"\0" L"\x2408" L"\0" -- L"\x2409" L"\0" L"\x240a" L"\0" L"\x240b" L"\0" L"\x240c" L"\0" L"\x240d" -- L"\0" L"\x240e" L"\0" L"\x240f" L"\0" L"\x2410" L"\0" L"\x2411" L"\0" -- L"\x2412" L"\0" L"\x2413" L"\0" L"\x2414" L"\0" L"\x2415" L"\0" L"\x2416" -- L"\0" L"\x2417" L"\0" L"\x2418" L"\0" L"\x2419" L"\0" L"\x241a" L"\0" -- L"\x241b" L"\0" L"\x241c" L"\0" L"\x241d" L"\0" L"\x241e" L"\0" L"\x241f" -- L"\0" L"\x2420" L"\0" L"\x2421" L"\0" L"\x2423" L"\0" L"\x2424" L"\0" -- L"\x2460" L"\0" L"\x2461" L"\0" L"\x2462" L"\0" L"\x2463" L"\0" L"\x2464" -- L"\0" L"\x2465" L"\0" L"\x2466" L"\0" L"\x2467" L"\0" L"\x2468" L"\0" -- L"\x2469" L"\0" L"\x246a" L"\0" L"\x246b" L"\0" L"\x246c" L"\0" L"\x246d" -- L"\0" L"\x246e" L"\0" L"\x246f" L"\0" L"\x2470" L"\0" L"\x2471" L"\0" -- L"\x2472" L"\0" L"\x2473" L"\0" L"\x2474" L"\0" L"\x2475" L"\0" L"\x2476" -- L"\0" L"\x2477" L"\0" L"\x2478" L"\0" L"\x2479" L"\0" L"\x247a" L"\0" -- L"\x247b" L"\0" L"\x247c" L"\0" L"\x247d" L"\0" L"\x247e" L"\0" L"\x247f" -- L"\0" L"\x2480" L"\0" L"\x2481" L"\0" L"\x2482" L"\0" L"\x2483" L"\0" -- L"\x2484" L"\0" L"\x2485" L"\0" L"\x2486" L"\0" L"\x2487" L"\0" L"\x2488" -- L"\0" L"\x2489" L"\0" L"\x248a" L"\0" L"\x248b" L"\0" L"\x248c" L"\0" -- L"\x248d" L"\0" L"\x248e" L"\0" L"\x248f" L"\0" L"\x2490" L"\0" L"\x2491" -- L"\0" L"\x2492" L"\0" L"\x2493" L"\0" L"\x2494" L"\0" L"\x2495" L"\0" -- L"\x2496" L"\0" L"\x2497" L"\0" L"\x2498" L"\0" L"\x2499" L"\0" L"\x249a" -- L"\0" L"\x249b" L"\0" L"\x249c" L"\0" L"\x249d" L"\0" L"\x249e" L"\0" -- L"\x249f" L"\0" L"\x24a0" L"\0" L"\x24a1" L"\0" L"\x24a2" L"\0" L"\x24a3" -- L"\0" L"\x24a4" L"\0" L"\x24a5" L"\0" L"\x24a6" L"\0" L"\x24a7" L"\0" -- L"\x24a8" L"\0" L"\x24a9" L"\0" L"\x24aa" L"\0" L"\x24ab" L"\0" L"\x24ac" -- L"\0" L"\x24ad" L"\0" L"\x24ae" L"\0" L"\x24af" L"\0" L"\x24b0" L"\0" -- L"\x24b1" L"\0" L"\x24b2" L"\0" L"\x24b3" L"\0" L"\x24b4" L"\0" L"\x24b5" -- L"\0" L"\x24b6" L"\0" L"\x24b7" L"\0" L"\x24b8" L"\0" L"\x24b9" L"\0" -- L"\x24ba" L"\0" L"\x24bb" L"\0" L"\x24bc" L"\0" L"\x24bd" L"\0" L"\x24be" -- L"\0" L"\x24bf" L"\0" L"\x24c0" L"\0" L"\x24c1" L"\0" L"\x24c2" L"\0" -- L"\x24c3" L"\0" L"\x24c4" L"\0" L"\x24c5" L"\0" L"\x24c6" L"\0" L"\x24c7" -- L"\0" L"\x24c8" L"\0" L"\x24c9" L"\0" L"\x24ca" L"\0" L"\x24cb" L"\0" -- L"\x24cc" L"\0" L"\x24cd" L"\0" L"\x24ce" L"\0" L"\x24cf" L"\0" L"\x24d0" -- L"\0" L"\x24d1" L"\0" L"\x24d2" L"\0" L"\x24d3" L"\0" L"\x24d4" L"\0" -- L"\x24d5" L"\0" L"\x24d6" L"\0" L"\x24d7" L"\0" L"\x24d8" L"\0" L"\x24d9" -- L"\0" L"\x24da" L"\0" L"\x24db" L"\0" L"\x24dc" L"\0" L"\x24dd" L"\0" -- L"\x24de" L"\0" L"\x24df" L"\0" L"\x24e0" L"\0" L"\x24e1" L"\0" L"\x24e2" -- L"\0" L"\x24e3" L"\0" L"\x24e4" L"\0" L"\x24e5" L"\0" L"\x24e6" L"\0" -- L"\x24e7" L"\0" L"\x24e8" L"\0" L"\x24e9" L"\0" L"\x24ea" L"\0" L"\x2500" -- L"\0" L"\x2502" L"\0" L"\x250c" L"\0" L"\x2510" L"\0" L"\x2514" L"\0" -- L"\x2518" L"\0" L"\x251c" L"\0" L"\x2524" L"\0" L"\x252c" L"\0" L"\x2534" -- L"\0" L"\x253c" L"\0" L"\x25e6" L"\0" L"\x2a74" L"\0" L"\x2a75" L"\0" -- L"\x2a76" L"\0" L"\x3000" L"\0" L"\x30a0" L"\0" L"\x3251" L"\0" L"\x3252" -- L"\0" L"\x3253" L"\0" L"\x3254" L"\0" L"\x3255" L"\0" L"\x3256" L"\0" -- L"\x3257" L"\0" L"\x3258" L"\0" L"\x3259" L"\0" L"\x325a" L"\0" L"\x325b" -- L"\0" L"\x325c" L"\0" L"\x325d" L"\0" L"\x325e" L"\0" L"\x325f" L"\0" -- L"\x32b1" L"\0" L"\x32b2" L"\0" L"\x32b3" L"\0" L"\x32b4" L"\0" L"\x32b5" -- L"\0" L"\x32b6" L"\0" L"\x32b7" L"\0" L"\x32b8" L"\0" L"\x32b9" L"\0" -- L"\x32ba" L"\0" L"\x32bb" L"\0" L"\x32bc" L"\0" L"\x32bd" L"\0" L"\x32be" -- L"\0" L"\x32bf" L"\0" L"\x3371" L"\0" L"\x3372" L"\0" L"\x3373" L"\0" -- L"\x3374" L"\0" L"\x3375" L"\0" L"\x3376" L"\0" L"\x3380" L"\0" L"\x3381" -- L"\0" L"\x3382" L"\0" L"\x3383" L"\0" L"\x3384" L"\0" L"\x3385" L"\0" -- L"\x3386" L"\0" L"\x3387" L"\0" L"\x3388" L"\0" L"\x3389" L"\0" L"\x338a" -- L"\0" L"\x338b" L"\0" L"\x338c" L"\0" L"\x338d" L"\0" L"\x338e" L"\0" -- L"\x338f" L"\0" L"\x3390" L"\0" L"\x3391" L"\0" L"\x3392" L"\0" L"\x3393" -- L"\0" L"\x3394" L"\0" L"\x3395" L"\0" L"\x3396" L"\0" L"\x3397" L"\0" -- L"\x3398" L"\0" L"\x3399" L"\0" L"\x339a" L"\0" L"\x339b" L"\0" L"\x339c" -- L"\0" L"\x339d" L"\0" L"\x339e" L"\0" L"\x339f" L"\0" L"\x33a0" L"\0" -- L"\x33a1" L"\0" L"\x33a2" L"\0" L"\x33a3" L"\0" L"\x33a4" L"\0" L"\x33a5" -- L"\0" L"\x33a6" L"\0" L"\x33a7" L"\0" L"\x33a8" L"\0" L"\x33a9" L"\0" -- L"\x33aa" L"\0" L"\x33ab" L"\0" L"\x33ac" L"\0" L"\x33ad" L"\0" L"\x33ae" -- L"\0" L"\x33af" L"\0" L"\x33b0" L"\0" L"\x33b1" L"\0" L"\x33b2" L"\0" -- L"\x33b3" L"\0" L"\x33b4" L"\0" L"\x33b5" L"\0" L"\x33b6" L"\0" L"\x33b7" -- L"\0" L"\x33b8" L"\0" L"\x33b9" L"\0" L"\x33ba" L"\0" L"\x33bb" L"\0" -- L"\x33bc" L"\0" L"\x33bd" L"\0" L"\x33be" L"\0" L"\x33bf" L"\0" L"\x33c2" -- L"\0" L"\x33c3" L"\0" L"\x33c4" L"\0" L"\x33c5" L"\0" L"\x33c6" L"\0" -- L"\x33c7" L"\0" L"\x33c8" L"\0" L"\x33c9" L"\0" L"\x33ca" L"\0" L"\x33cb" -- L"\0" L"\x33cc" L"\0" L"\x33cd" L"\0" L"\x33ce" L"\0" L"\x33cf" L"\0" -- L"\x33d0" L"\0" L"\x33d1" L"\0" L"\x33d2" L"\0" L"\x33d3" L"\0" L"\x33d4" -- L"\0" L"\x33d5" L"\0" L"\x33d6" L"\0" L"\x33d7" L"\0" L"\x33d8" L"\0" -- L"\x33d9" L"\0" L"\x33da" L"\0" L"\x33db" L"\0" L"\x33dc" L"\0" L"\x33dd" -- L"\0" L"\xfb00" L"\0" L"\xfb01" L"\0" L"\xfb02" L"\0" L"\xfb03" L"\0" -- L"\xfb04" L"\0" L"\xfb06" L"\0" L"\xfb29" L"\0" L"\xfe00" L"\0" L"\xfe01" -- L"\0" L"\xfe02" L"\0" L"\xfe03" L"\0" L"\xfe04" L"\0" L"\xfe05" L"\0" -- L"\xfe06" L"\0" L"\xfe07" L"\0" L"\xfe08" L"\0" L"\xfe09" L"\0" L"\xfe0a" -- L"\0" L"\xfe0b" L"\0" L"\xfe0c" L"\0" L"\xfe0d" L"\0" L"\xfe0e" L"\0" -- L"\xfe0f" L"\0" L"\xfe4d" L"\0" L"\xfe4e" L"\0" L"\xfe4f" L"\0" L"\xfe50" -- L"\0" L"\xfe52" L"\0" L"\xfe54" L"\0" L"\xfe55" L"\0" L"\xfe56" L"\0" -- L"\xfe57" L"\0" L"\xfe59" L"\0" L"\xfe5a" L"\0" L"\xfe5b" L"\0" L"\xfe5c" -- L"\0" L"\xfe5f" L"\0" L"\xfe60" L"\0" L"\xfe61" L"\0" L"\xfe62" L"\0" -- L"\xfe63" L"\0" L"\xfe64" L"\0" L"\xfe65" L"\0" L"\xfe66" L"\0" L"\xfe68" -- L"\0" L"\xfe69" L"\0" L"\xfe6a" L"\0" L"\xfe6b" L"\0" L"\xfeff" L"\0" -- L"\xff01" L"\0" L"\xff02" L"\0" L"\xff03" L"\0" L"\xff04" L"\0" L"\xff05" -- L"\0" L"\xff06" L"\0" L"\xff07" L"\0" L"\xff08" L"\0" L"\xff09" L"\0" -- L"\xff0a" L"\0" L"\xff0b" L"\0" L"\xff0c" L"\0" L"\xff0d" L"\0" L"\xff0e" -- L"\0" L"\xff0f" L"\0" L"\xff10" L"\0" L"\xff11" L"\0" L"\xff12" L"\0" -- L"\xff13" L"\0" L"\xff14" L"\0" L"\xff15" L"\0" L"\xff16" L"\0" L"\xff17" -- L"\0" L"\xff18" L"\0" L"\xff19" L"\0" L"\xff1a" L"\0" L"\xff1b" L"\0" -- L"\xff1c" L"\0" L"\xff1d" L"\0" L"\xff1e" L"\0" L"\xff1f" L"\0" L"\xff20" -- L"\0" L"\xff21" L"\0" L"\xff22" L"\0" L"\xff23" L"\0" L"\xff24" L"\0" -- L"\xff25" L"\0" L"\xff26" L"\0" L"\xff27" L"\0" L"\xff28" L"\0" L"\xff29" -- L"\0" L"\xff2a" L"\0" L"\xff2b" L"\0" L"\xff2c" L"\0" L"\xff2d" L"\0" -- L"\xff2e" L"\0" L"\xff2f" L"\0" L"\xff30" L"\0" L"\xff31" L"\0" L"\xff32" -- L"\0" L"\xff33" L"\0" L"\xff34" L"\0" L"\xff35" L"\0" L"\xff36" L"\0" -- L"\xff37" L"\0" L"\xff38" L"\0" L"\xff39" L"\0" L"\xff3a" L"\0" L"\xff3b" -- L"\0" L"\xff3c" L"\0" L"\xff3d" L"\0" L"\xff3e" L"\0" L"\xff3f" L"\0" -- L"\xff40" L"\0" L"\xff41" L"\0" L"\xff42" L"\0" L"\xff43" L"\0" L"\xff44" -- L"\0" L"\xff45" L"\0" L"\xff46" L"\0" L"\xff47" L"\0" L"\xff48" L"\0" -- L"\xff49" L"\0" L"\xff4a" L"\0" L"\xff4b" L"\0" L"\xff4c" L"\0" L"\xff4d" -- L"\0" L"\xff4e" L"\0" L"\xff4f" L"\0" L"\xff50" L"\0" L"\xff51" L"\0" -- L"\xff52" L"\0" L"\xff53" L"\0" L"\xff54" L"\0" L"\xff55" L"\0" L"\xff56" -- L"\0" L"\xff57" L"\0" L"\xff58" L"\0" L"\xff59" L"\0" L"\xff5a" L"\0" -- L"\xff5b" L"\0" L"\xff5c" L"\0" L"\xff5d" L"\0" L"\xff5e" L"\0" -- L"\x0001d400" L"\0" L"\x0001d401" L"\0" L"\x0001d402" L"\0" L"\x0001d403" -- L"\0" L"\x0001d404" L"\0" L"\x0001d405" L"\0" L"\x0001d406" L"\0" -- L"\x0001d407" L"\0" L"\x0001d408" L"\0" L"\x0001d409" L"\0" L"\x0001d40a" -- L"\0" L"\x0001d40b" L"\0" L"\x0001d40c" L"\0" L"\x0001d40d" L"\0" -- L"\x0001d40e" L"\0" L"\x0001d40f" L"\0" L"\x0001d410" L"\0" L"\x0001d411" -- L"\0" L"\x0001d412" L"\0" L"\x0001d413" L"\0" L"\x0001d414" L"\0" -- L"\x0001d415" L"\0" L"\x0001d416" L"\0" L"\x0001d417" L"\0" L"\x0001d418" -- L"\0" L"\x0001d419" L"\0" L"\x0001d41a" L"\0" L"\x0001d41b" L"\0" -- L"\x0001d41c" L"\0" L"\x0001d41d" L"\0" L"\x0001d41e" L"\0" L"\x0001d41f" -- L"\0" L"\x0001d420" L"\0" L"\x0001d421" L"\0" L"\x0001d422" L"\0" -- L"\x0001d423" L"\0" L"\x0001d424" L"\0" L"\x0001d425" L"\0" L"\x0001d426" -- L"\0" L"\x0001d427" L"\0" L"\x0001d428" L"\0" L"\x0001d429" L"\0" -- L"\x0001d42a" L"\0" L"\x0001d42b" L"\0" L"\x0001d42c" L"\0" L"\x0001d42d" -- L"\0" L"\x0001d42e" L"\0" L"\x0001d42f" L"\0" L"\x0001d430" L"\0" -- L"\x0001d431" L"\0" L"\x0001d432" L"\0" L"\x0001d433" L"\0" L"\x0001d434" -- L"\0" L"\x0001d435" L"\0" L"\x0001d436" L"\0" L"\x0001d437" L"\0" -- L"\x0001d438" L"\0" L"\x0001d439" L"\0" L"\x0001d43a" L"\0" L"\x0001d43b" -- L"\0" L"\x0001d43c" L"\0" L"\x0001d43d" L"\0" L"\x0001d43e" L"\0" -- L"\x0001d43f" L"\0" L"\x0001d440" L"\0" L"\x0001d441" L"\0" L"\x0001d442" -- L"\0" L"\x0001d443" L"\0" L"\x0001d444" L"\0" L"\x0001d445" L"\0" -- L"\x0001d446" L"\0" L"\x0001d447" L"\0" L"\x0001d448" L"\0" L"\x0001d449" -- L"\0" L"\x0001d44a" L"\0" L"\x0001d44b" L"\0" L"\x0001d44c" L"\0" -- L"\x0001d44d" L"\0" L"\x0001d44e" L"\0" L"\x0001d44f" L"\0" L"\x0001d450" -- L"\0" L"\x0001d451" L"\0" L"\x0001d452" L"\0" L"\x0001d453" L"\0" -- L"\x0001d454" L"\0" L"\x0001d456" L"\0" L"\x0001d457" L"\0" L"\x0001d458" -- L"\0" L"\x0001d459" L"\0" L"\x0001d45a" L"\0" L"\x0001d45b" L"\0" -- L"\x0001d45c" L"\0" L"\x0001d45d" L"\0" L"\x0001d45e" L"\0" L"\x0001d45f" -- L"\0" L"\x0001d460" L"\0" L"\x0001d461" L"\0" L"\x0001d462" L"\0" -- L"\x0001d463" L"\0" L"\x0001d464" L"\0" L"\x0001d465" L"\0" L"\x0001d466" -- L"\0" L"\x0001d467" L"\0" L"\x0001d468" L"\0" L"\x0001d469" L"\0" -- L"\x0001d46a" L"\0" L"\x0001d46b" L"\0" L"\x0001d46c" L"\0" L"\x0001d46d" -- L"\0" L"\x0001d46e" L"\0" L"\x0001d46f" L"\0" L"\x0001d470" L"\0" -- L"\x0001d471" L"\0" L"\x0001d472" L"\0" L"\x0001d473" L"\0" L"\x0001d474" -- L"\0" L"\x0001d475" L"\0" L"\x0001d476" L"\0" L"\x0001d477" L"\0" -- L"\x0001d478" L"\0" L"\x0001d479" L"\0" L"\x0001d47a" L"\0" L"\x0001d47b" -- L"\0" L"\x0001d47c" L"\0" L"\x0001d47d" L"\0" L"\x0001d47e" L"\0" -- L"\x0001d47f" L"\0" L"\x0001d480" L"\0" L"\x0001d481" L"\0" L"\x0001d482" -- L"\0" L"\x0001d483" L"\0" L"\x0001d484" L"\0" L"\x0001d485" L"\0" -- L"\x0001d486" L"\0" L"\x0001d487" L"\0" L"\x0001d488" L"\0" L"\x0001d489" -- L"\0" L"\x0001d48a" L"\0" L"\x0001d48b" L"\0" L"\x0001d48c" L"\0" -- L"\x0001d48d" L"\0" L"\x0001d48e" L"\0" L"\x0001d48f" L"\0" L"\x0001d490" -- L"\0" L"\x0001d491" L"\0" L"\x0001d492" L"\0" L"\x0001d493" L"\0" -- L"\x0001d494" L"\0" L"\x0001d495" L"\0" L"\x0001d496" L"\0" L"\x0001d497" -- L"\0" L"\x0001d498" L"\0" L"\x0001d499" L"\0" L"\x0001d49a" L"\0" -- L"\x0001d49b" L"\0" L"\x0001d49c" L"\0" L"\x0001d49e" L"\0" L"\x0001d49f" -- L"\0" L"\x0001d4a2" L"\0" L"\x0001d4a5" L"\0" L"\x0001d4a6" L"\0" -- L"\x0001d4a9" L"\0" L"\x0001d4aa" L"\0" L"\x0001d4ab" L"\0" L"\x0001d4ac" -- L"\0" L"\x0001d4ae" L"\0" L"\x0001d4af" L"\0" L"\x0001d4b0" L"\0" -- L"\x0001d4b1" L"\0" L"\x0001d4b2" L"\0" L"\x0001d4b3" L"\0" L"\x0001d4b4" -- L"\0" L"\x0001d4b5" L"\0" L"\x0001d4b6" L"\0" L"\x0001d4b7" L"\0" -- L"\x0001d4b8" L"\0" L"\x0001d4b9" L"\0" L"\x0001d4bb" L"\0" L"\x0001d4bd" -- L"\0" L"\x0001d4be" L"\0" L"\x0001d4bf" L"\0" L"\x0001d4c0" L"\0" -- L"\x0001d4c2" L"\0" L"\x0001d4c3" L"\0" L"\x0001d4c5" L"\0" L"\x0001d4c6" -- L"\0" L"\x0001d4c7" L"\0" L"\x0001d4c8" L"\0" L"\x0001d4c9" L"\0" -- L"\x0001d4ca" L"\0" L"\x0001d4cb" L"\0" L"\x0001d4cc" L"\0" L"\x0001d4cd" -- L"\0" L"\x0001d4ce" L"\0" L"\x0001d4cf" L"\0" L"\x0001d4d0" L"\0" -- L"\x0001d4d1" L"\0" L"\x0001d4d2" L"\0" L"\x0001d4d3" L"\0" L"\x0001d4d4" -- L"\0" L"\x0001d4d5" L"\0" L"\x0001d4d6" L"\0" L"\x0001d4d7" L"\0" -- L"\x0001d4d8" L"\0" L"\x0001d4d9" L"\0" L"\x0001d4da" L"\0" L"\x0001d4db" -- L"\0" L"\x0001d4dc" L"\0" L"\x0001d4dd" L"\0" L"\x0001d4de" L"\0" -- L"\x0001d4df" L"\0" L"\x0001d4e0" L"\0" L"\x0001d4e1" L"\0" L"\x0001d4e2" -- L"\0" L"\x0001d4e3" L"\0" L"\x0001d4e4" L"\0" L"\x0001d4e5" L"\0" -- L"\x0001d4e6" L"\0" L"\x0001d4e7" L"\0" L"\x0001d4e8" L"\0" L"\x0001d4e9" -- L"\0" L"\x0001d4ea" L"\0" L"\x0001d4eb" L"\0" L"\x0001d4ec" L"\0" -- L"\x0001d4ed" L"\0" L"\x0001d4ee" L"\0" L"\x0001d4ef" L"\0" L"\x0001d4f0" -- L"\0" L"\x0001d4f1" L"\0" L"\x0001d4f2" L"\0" L"\x0001d4f3" L"\0" -- L"\x0001d4f4" L"\0" L"\x0001d4f5" L"\0" L"\x0001d4f6" L"\0" L"\x0001d4f7" -- L"\0" L"\x0001d4f8" L"\0" L"\x0001d4f9" L"\0" L"\x0001d4fa" L"\0" -- L"\x0001d4fb" L"\0" L"\x0001d4fc" L"\0" L"\x0001d4fd" L"\0" L"\x0001d4fe" -- L"\0" L"\x0001d4ff" L"\0" L"\x0001d500" L"\0" L"\x0001d501" L"\0" -- L"\x0001d502" L"\0" L"\x0001d503" L"\0" L"\x0001d504" L"\0" L"\x0001d505" -- L"\0" L"\x0001d507" L"\0" L"\x0001d508" L"\0" L"\x0001d509" L"\0" -- L"\x0001d50a" L"\0" L"\x0001d50d" L"\0" L"\x0001d50e" L"\0" L"\x0001d50f" -- L"\0" L"\x0001d510" L"\0" L"\x0001d511" L"\0" L"\x0001d512" L"\0" -- L"\x0001d513" L"\0" L"\x0001d514" L"\0" L"\x0001d516" L"\0" L"\x0001d517" -- L"\0" L"\x0001d518" L"\0" L"\x0001d519" L"\0" L"\x0001d51a" L"\0" -- L"\x0001d51b" L"\0" L"\x0001d51c" L"\0" L"\x0001d51e" L"\0" L"\x0001d51f" -- L"\0" L"\x0001d520" L"\0" L"\x0001d521" L"\0" L"\x0001d522" L"\0" -- L"\x0001d523" L"\0" L"\x0001d524" L"\0" L"\x0001d525" L"\0" L"\x0001d526" -- L"\0" L"\x0001d527" L"\0" L"\x0001d528" L"\0" L"\x0001d529" L"\0" -- L"\x0001d52a" L"\0" L"\x0001d52b" L"\0" L"\x0001d52c" L"\0" L"\x0001d52d" -- L"\0" L"\x0001d52e" L"\0" L"\x0001d52f" L"\0" L"\x0001d530" L"\0" -- L"\x0001d531" L"\0" L"\x0001d532" L"\0" L"\x0001d533" L"\0" L"\x0001d534" -- L"\0" L"\x0001d535" L"\0" L"\x0001d536" L"\0" L"\x0001d537" L"\0" -- L"\x0001d538" L"\0" L"\x0001d539" L"\0" L"\x0001d53b" L"\0" L"\x0001d53c" -- L"\0" L"\x0001d53d" L"\0" L"\x0001d53e" L"\0" L"\x0001d540" L"\0" -- L"\x0001d541" L"\0" L"\x0001d542" L"\0" L"\x0001d543" L"\0" L"\x0001d544" -- L"\0" L"\x0001d546" L"\0" L"\x0001d54a" L"\0" L"\x0001d54b" L"\0" -- L"\x0001d54c" L"\0" L"\x0001d54d" L"\0" L"\x0001d54e" L"\0" L"\x0001d54f" -- L"\0" L"\x0001d550" L"\0" L"\x0001d552" L"\0" L"\x0001d553" L"\0" -- L"\x0001d554" L"\0" L"\x0001d555" L"\0" L"\x0001d556" L"\0" L"\x0001d557" -- L"\0" L"\x0001d558" L"\0" L"\x0001d559" L"\0" L"\x0001d55a" L"\0" -- L"\x0001d55b" L"\0" L"\x0001d55c" L"\0" L"\x0001d55d" L"\0" L"\x0001d55e" -- L"\0" L"\x0001d55f" L"\0" L"\x0001d560" L"\0" L"\x0001d561" L"\0" -- L"\x0001d562" L"\0" L"\x0001d563" L"\0" L"\x0001d564" L"\0" L"\x0001d565" -- L"\0" L"\x0001d566" L"\0" L"\x0001d567" L"\0" L"\x0001d568" L"\0" -- L"\x0001d569" L"\0" L"\x0001d56a" L"\0" L"\x0001d56b" L"\0" L"\x0001d56c" -- L"\0" L"\x0001d56d" L"\0" L"\x0001d56e" L"\0" L"\x0001d56f" L"\0" -- L"\x0001d570" L"\0" L"\x0001d571" L"\0" L"\x0001d572" L"\0" L"\x0001d573" -- L"\0" L"\x0001d574" L"\0" L"\x0001d575" L"\0" L"\x0001d576" L"\0" -- L"\x0001d577" L"\0" L"\x0001d578" L"\0" L"\x0001d579" L"\0" L"\x0001d57a" -- L"\0" L"\x0001d57b" L"\0" L"\x0001d57c" L"\0" L"\x0001d57d" L"\0" -- L"\x0001d57e" L"\0" L"\x0001d57f" L"\0" L"\x0001d580" L"\0" L"\x0001d581" -- L"\0" L"\x0001d582" L"\0" L"\x0001d583" L"\0" L"\x0001d584" L"\0" -- L"\x0001d585" L"\0" L"\x0001d586" L"\0" L"\x0001d587" L"\0" L"\x0001d588" -- L"\0" L"\x0001d589" L"\0" L"\x0001d58a" L"\0" L"\x0001d58b" L"\0" -- L"\x0001d58c" L"\0" L"\x0001d58d" L"\0" L"\x0001d58e" L"\0" L"\x0001d58f" -- L"\0" L"\x0001d590" L"\0" L"\x0001d591" L"\0" L"\x0001d592" L"\0" -- L"\x0001d593" L"\0" L"\x0001d594" L"\0" L"\x0001d595" L"\0" L"\x0001d596" -- L"\0" L"\x0001d597" L"\0" L"\x0001d598" L"\0" L"\x0001d599" L"\0" -- L"\x0001d59a" L"\0" L"\x0001d59b" L"\0" L"\x0001d59c" L"\0" L"\x0001d59d" -- L"\0" L"\x0001d59e" L"\0" L"\x0001d59f" L"\0" L"\x0001d5a0" L"\0" -- L"\x0001d5a1" L"\0" L"\x0001d5a2" L"\0" L"\x0001d5a3" L"\0" L"\x0001d5a4" -- L"\0" L"\x0001d5a5" L"\0" L"\x0001d5a6" L"\0" L"\x0001d5a7" L"\0" -- L"\x0001d5a8" L"\0" L"\x0001d5a9" L"\0" L"\x0001d5aa" L"\0" L"\x0001d5ab" -- L"\0" L"\x0001d5ac" L"\0" L"\x0001d5ad" L"\0" L"\x0001d5ae" L"\0" -- L"\x0001d5af" L"\0" L"\x0001d5b0" L"\0" L"\x0001d5b1" L"\0" L"\x0001d5b2" -- L"\0" L"\x0001d5b3" L"\0" L"\x0001d5b4" L"\0" L"\x0001d5b5" L"\0" -- L"\x0001d5b6" L"\0" L"\x0001d5b7" L"\0" L"\x0001d5b8" L"\0" L"\x0001d5b9" -- L"\0" L"\x0001d5ba" L"\0" L"\x0001d5bb" L"\0" L"\x0001d5bc" L"\0" -- L"\x0001d5bd" L"\0" L"\x0001d5be" L"\0" L"\x0001d5bf" L"\0" L"\x0001d5c0" -- L"\0" L"\x0001d5c1" L"\0" L"\x0001d5c2" L"\0" L"\x0001d5c3" L"\0" -- L"\x0001d5c4" L"\0" L"\x0001d5c5" L"\0" L"\x0001d5c6" L"\0" L"\x0001d5c7" -- L"\0" L"\x0001d5c8" L"\0" L"\x0001d5c9" L"\0" L"\x0001d5ca" L"\0" -- L"\x0001d5cb" L"\0" L"\x0001d5cc" L"\0" L"\x0001d5cd" L"\0" L"\x0001d5ce" -- L"\0" L"\x0001d5cf" L"\0" L"\x0001d5d0" L"\0" L"\x0001d5d1" L"\0" -- L"\x0001d5d2" L"\0" L"\x0001d5d3" L"\0" L"\x0001d5d4" L"\0" L"\x0001d5d5" -- L"\0" L"\x0001d5d6" L"\0" L"\x0001d5d7" L"\0" L"\x0001d5d8" L"\0" -- L"\x0001d5d9" L"\0" L"\x0001d5da" L"\0" L"\x0001d5db" L"\0" L"\x0001d5dc" -- L"\0" L"\x0001d5dd" L"\0" L"\x0001d5de" L"\0" L"\x0001d5df" L"\0" -- L"\x0001d5e0" L"\0" L"\x0001d5e1" L"\0" L"\x0001d5e2" L"\0" L"\x0001d5e3" -- L"\0" L"\x0001d5e4" L"\0" L"\x0001d5e5" L"\0" L"\x0001d5e6" L"\0" -- L"\x0001d5e7" L"\0" L"\x0001d5e8" L"\0" L"\x0001d5e9" L"\0" L"\x0001d5ea" -- L"\0" L"\x0001d5eb" L"\0" L"\x0001d5ec" L"\0" L"\x0001d5ed" L"\0" -- L"\x0001d5ee" L"\0" L"\x0001d5ef" L"\0" L"\x0001d5f0" L"\0" L"\x0001d5f1" -- L"\0" L"\x0001d5f2" L"\0" L"\x0001d5f3" L"\0" L"\x0001d5f4" L"\0" -- L"\x0001d5f5" L"\0" L"\x0001d5f6" L"\0" L"\x0001d5f7" L"\0" L"\x0001d5f8" -- L"\0" L"\x0001d5f9" L"\0" L"\x0001d5fa" L"\0" L"\x0001d5fb" L"\0" -- L"\x0001d5fc" L"\0" L"\x0001d5fd" L"\0" L"\x0001d5fe" L"\0" L"\x0001d5ff" -- L"\0" L"\x0001d600" L"\0" L"\x0001d601" L"\0" L"\x0001d602" L"\0" -- L"\x0001d603" L"\0" L"\x0001d604" L"\0" L"\x0001d605" L"\0" L"\x0001d606" -- L"\0" L"\x0001d607" L"\0" L"\x0001d608" L"\0" L"\x0001d609" L"\0" -- L"\x0001d60a" L"\0" L"\x0001d60b" L"\0" L"\x0001d60c" L"\0" L"\x0001d60d" -- L"\0" L"\x0001d60e" L"\0" L"\x0001d60f" L"\0" L"\x0001d610" L"\0" -- L"\x0001d611" L"\0" L"\x0001d612" L"\0" L"\x0001d613" L"\0" L"\x0001d614" -- L"\0" L"\x0001d615" L"\0" L"\x0001d616" L"\0" L"\x0001d617" L"\0" -- L"\x0001d618" L"\0" L"\x0001d619" L"\0" L"\x0001d61a" L"\0" L"\x0001d61b" -- L"\0" L"\x0001d61c" L"\0" L"\x0001d61d" L"\0" L"\x0001d61e" L"\0" -- L"\x0001d61f" L"\0" L"\x0001d620" L"\0" L"\x0001d621" L"\0" L"\x0001d622" -- L"\0" L"\x0001d623" L"\0" L"\x0001d624" L"\0" L"\x0001d625" L"\0" -- L"\x0001d626" L"\0" L"\x0001d627" L"\0" L"\x0001d628" L"\0" L"\x0001d629" -- L"\0" L"\x0001d62a" L"\0" L"\x0001d62b" L"\0" L"\x0001d62c" L"\0" -- L"\x0001d62d" L"\0" L"\x0001d62e" L"\0" L"\x0001d62f" L"\0" L"\x0001d630" -- L"\0" L"\x0001d631" L"\0" L"\x0001d632" L"\0" L"\x0001d633" L"\0" -- L"\x0001d634" L"\0" L"\x0001d635" L"\0" L"\x0001d636" L"\0" L"\x0001d637" -- L"\0" L"\x0001d638" L"\0" L"\x0001d639" L"\0" L"\x0001d63a" L"\0" -- L"\x0001d63b" L"\0" L"\x0001d63c" L"\0" L"\x0001d63d" L"\0" L"\x0001d63e" -- L"\0" L"\x0001d63f" L"\0" L"\x0001d640" L"\0" L"\x0001d641" L"\0" -- L"\x0001d642" L"\0" L"\x0001d643" L"\0" L"\x0001d644" L"\0" L"\x0001d645" -- L"\0" L"\x0001d646" L"\0" L"\x0001d647" L"\0" L"\x0001d648" L"\0" -- L"\x0001d649" L"\0" L"\x0001d64a" L"\0" L"\x0001d64b" L"\0" L"\x0001d64c" -- L"\0" L"\x0001d64d" L"\0" L"\x0001d64e" L"\0" L"\x0001d64f" L"\0" -- L"\x0001d650" L"\0" L"\x0001d651" L"\0" L"\x0001d652" L"\0" L"\x0001d653" -- L"\0" L"\x0001d654" L"\0" L"\x0001d655" L"\0" L"\x0001d656" L"\0" -- L"\x0001d657" L"\0" L"\x0001d658" L"\0" L"\x0001d659" L"\0" L"\x0001d65a" -- L"\0" L"\x0001d65b" L"\0" L"\x0001d65c" L"\0" L"\x0001d65d" L"\0" -- L"\x0001d65e" L"\0" L"\x0001d65f" L"\0" L"\x0001d660" L"\0" L"\x0001d661" -- L"\0" L"\x0001d662" L"\0" L"\x0001d663" L"\0" L"\x0001d664" L"\0" -- L"\x0001d665" L"\0" L"\x0001d666" L"\0" L"\x0001d667" L"\0" L"\x0001d668" -- L"\0" L"\x0001d669" L"\0" L"\x0001d66a" L"\0" L"\x0001d66b" L"\0" -- L"\x0001d66c" L"\0" L"\x0001d66d" L"\0" L"\x0001d66e" L"\0" L"\x0001d66f" -- L"\0" L"\x0001d670" L"\0" L"\x0001d671" L"\0" L"\x0001d672" L"\0" -- L"\x0001d673" L"\0" L"\x0001d674" L"\0" L"\x0001d675" L"\0" L"\x0001d676" -- L"\0" L"\x0001d677" L"\0" L"\x0001d678" L"\0" L"\x0001d679" L"\0" -- L"\x0001d67a" L"\0" L"\x0001d67b" L"\0" L"\x0001d67c" L"\0" L"\x0001d67d" -- L"\0" L"\x0001d67e" L"\0" L"\x0001d67f" L"\0" L"\x0001d680" L"\0" -- L"\x0001d681" L"\0" L"\x0001d682" L"\0" L"\x0001d683" L"\0" L"\x0001d684" -- L"\0" L"\x0001d685" L"\0" L"\x0001d686" L"\0" L"\x0001d687" L"\0" -- L"\x0001d688" L"\0" L"\x0001d689" L"\0" L"\x0001d68a" L"\0" L"\x0001d68b" -- L"\0" L"\x0001d68c" L"\0" L"\x0001d68d" L"\0" L"\x0001d68e" L"\0" -- L"\x0001d68f" L"\0" L"\x0001d690" L"\0" L"\x0001d691" L"\0" L"\x0001d692" -- L"\0" L"\x0001d693" L"\0" L"\x0001d694" L"\0" L"\x0001d695" L"\0" -- L"\x0001d696" L"\0" L"\x0001d697" L"\0" L"\x0001d698" L"\0" L"\x0001d699" -- L"\0" L"\x0001d69a" L"\0" L"\x0001d69b" L"\0" L"\x0001d69c" L"\0" -- L"\x0001d69d" L"\0" L"\x0001d69e" L"\0" L"\x0001d69f" L"\0" L"\x0001d6a0" -- L"\0" L"\x0001d6a1" L"\0" L"\x0001d6a2" L"\0" L"\x0001d6a3" L"\0" -- L"\x0001d7ce" L"\0" L"\x0001d7cf" L"\0" L"\x0001d7d0" L"\0" L"\x0001d7d1" -- L"\0" L"\x0001d7d2" L"\0" L"\x0001d7d3" L"\0" L"\x0001d7d4" L"\0" -- L"\x0001d7d5" L"\0" L"\x0001d7d6" L"\0" L"\x0001d7d7" L"\0" L"\x0001d7d8" -- L"\0" L"\x0001d7d9" L"\0" L"\x0001d7da" L"\0" L"\x0001d7db" L"\0" -- L"\x0001d7dc" L"\0" L"\x0001d7dd" L"\0" L"\x0001d7de" L"\0" L"\x0001d7df" -- L"\0" L"\x0001d7e0" L"\0" L"\x0001d7e1" L"\0" L"\x0001d7e2" L"\0" -- L"\x0001d7e3" L"\0" L"\x0001d7e4" L"\0" L"\x0001d7e5" L"\0" L"\x0001d7e6" -- L"\0" L"\x0001d7e7" L"\0" L"\x0001d7e8" L"\0" L"\x0001d7e9" L"\0" -- L"\x0001d7ea" L"\0" L"\x0001d7eb" L"\0" L"\x0001d7ec" L"\0" L"\x0001d7ed" -- L"\0" L"\x0001d7ee" L"\0" L"\x0001d7ef" L"\0" L"\x0001d7f0" L"\0" -- L"\x0001d7f1" L"\0" L"\x0001d7f2" L"\0" L"\x0001d7f3" L"\0" L"\x0001d7f4" -- L"\0" L"\x0001d7f5" L"\0" L"\x0001d7f6" L"\0" L"\x0001d7f7" L"\0" -- L"\x0001d7f8" L"\0" L"\x0001d7f9" L"\0" L"\x0001d7fa" L"\0" L"\x0001d7fb" -- L"\0" L"\x0001d7fc" L"\0" L"\x0001d7fd" L"\0" L"\x0001d7fe" L"\0" -- L"\x0001d7ff"; -+ L"\x2062" L"\0" L"\x2063" L"\0" L"\x20a8" L"\0" L"\x20ac" L"\0" L"\x20b9" -+ L"\0" L"\x2100" L"\0" L"\x2101" L"\0" L"\x2102" L"\0" L"\x2105" L"\0" -+ L"\x2106" L"\0" L"\x210a" L"\0" L"\x210b" L"\0" L"\x210c" L"\0" L"\x210d" -+ L"\0" L"\x210e" L"\0" L"\x2110" L"\0" L"\x2111" L"\0" L"\x2112" L"\0" -+ L"\x2113" L"\0" L"\x2115" L"\0" L"\x2116" L"\0" L"\x2119" L"\0" L"\x211a" -+ L"\0" L"\x211b" L"\0" L"\x211c" L"\0" L"\x211d" L"\0" L"\x2121" L"\0" -+ L"\x2122" L"\0" L"\x2124" L"\0" L"\x2126" L"\0" L"\x2128" L"\0" L"\x212c" -+ L"\0" L"\x212d" L"\0" L"\x212e" L"\0" L"\x212f" L"\0" L"\x2130" L"\0" -+ L"\x2131" L"\0" L"\x2133" L"\0" L"\x2134" L"\0" L"\x2139" L"\0" L"\x2145" -+ L"\0" L"\x2146" L"\0" L"\x2147" L"\0" L"\x2148" L"\0" L"\x2149" L"\0" -+ L"\x2153" L"\0" L"\x2154" L"\0" L"\x2155" L"\0" L"\x2156" L"\0" L"\x2157" -+ L"\0" L"\x2158" L"\0" L"\x2159" L"\0" L"\x215a" L"\0" L"\x215b" L"\0" -+ L"\x215c" L"\0" L"\x215d" L"\0" L"\x215e" L"\0" L"\x215f" L"\0" L"\x2160" -+ L"\0" L"\x2161" L"\0" L"\x2162" L"\0" L"\x2163" L"\0" L"\x2164" L"\0" -+ L"\x2165" L"\0" L"\x2166" L"\0" L"\x2167" L"\0" L"\x2168" L"\0" L"\x2169" -+ L"\0" L"\x216a" L"\0" L"\x216b" L"\0" L"\x216c" L"\0" L"\x216d" L"\0" -+ L"\x216e" L"\0" L"\x216f" L"\0" L"\x2170" L"\0" L"\x2171" L"\0" L"\x2172" -+ L"\0" L"\x2173" L"\0" L"\x2174" L"\0" L"\x2175" L"\0" L"\x2176" L"\0" -+ L"\x2177" L"\0" L"\x2178" L"\0" L"\x2179" L"\0" L"\x217a" L"\0" L"\x217b" -+ L"\0" L"\x217c" L"\0" L"\x217d" L"\0" L"\x217e" L"\0" L"\x217f" L"\0" -+ L"\x2190" L"\0" L"\x2192" L"\0" L"\x2194" L"\0" L"\x21d0" L"\0" L"\x21d2" -+ L"\0" L"\x21d4" L"\0" L"\x2212" L"\0" L"\x2215" L"\0" L"\x2216" L"\0" -+ L"\x2217" L"\0" L"\x2223" L"\0" L"\x2236" L"\0" L"\x223c" L"\0" L"\x2264" -+ L"\0" L"\x2265" L"\0" L"\x226a" L"\0" L"\x226b" L"\0" L"\x22d8" L"\0" -+ L"\x22d9" L"\0" L"\x2400" L"\0" L"\x2401" L"\0" L"\x2402" L"\0" L"\x2403" -+ L"\0" L"\x2404" L"\0" L"\x2405" L"\0" L"\x2406" L"\0" L"\x2407" L"\0" -+ L"\x2408" L"\0" L"\x2409" L"\0" L"\x240a" L"\0" L"\x240b" L"\0" L"\x240c" -+ L"\0" L"\x240d" L"\0" L"\x240e" L"\0" L"\x240f" L"\0" L"\x2410" L"\0" -+ L"\x2411" L"\0" L"\x2412" L"\0" L"\x2413" L"\0" L"\x2414" L"\0" L"\x2415" -+ L"\0" L"\x2416" L"\0" L"\x2417" L"\0" L"\x2418" L"\0" L"\x2419" L"\0" -+ L"\x241a" L"\0" L"\x241b" L"\0" L"\x241c" L"\0" L"\x241d" L"\0" L"\x241e" -+ L"\0" L"\x241f" L"\0" L"\x2420" L"\0" L"\x2421" L"\0" L"\x2423" L"\0" -+ L"\x2424" L"\0" L"\x2460" L"\0" L"\x2461" L"\0" L"\x2462" L"\0" L"\x2463" -+ L"\0" L"\x2464" L"\0" L"\x2465" L"\0" L"\x2466" L"\0" L"\x2467" L"\0" -+ L"\x2468" L"\0" L"\x2469" L"\0" L"\x246a" L"\0" L"\x246b" L"\0" L"\x246c" -+ L"\0" L"\x246d" L"\0" L"\x246e" L"\0" L"\x246f" L"\0" L"\x2470" L"\0" -+ L"\x2471" L"\0" L"\x2472" L"\0" L"\x2473" L"\0" L"\x2474" L"\0" L"\x2475" -+ L"\0" L"\x2476" L"\0" L"\x2477" L"\0" L"\x2478" L"\0" L"\x2479" L"\0" -+ L"\x247a" L"\0" L"\x247b" L"\0" L"\x247c" L"\0" L"\x247d" L"\0" L"\x247e" -+ L"\0" L"\x247f" L"\0" L"\x2480" L"\0" L"\x2481" L"\0" L"\x2482" L"\0" -+ L"\x2483" L"\0" L"\x2484" L"\0" L"\x2485" L"\0" L"\x2486" L"\0" L"\x2487" -+ L"\0" L"\x2488" L"\0" L"\x2489" L"\0" L"\x248a" L"\0" L"\x248b" L"\0" -+ L"\x248c" L"\0" L"\x248d" L"\0" L"\x248e" L"\0" L"\x248f" L"\0" L"\x2490" -+ L"\0" L"\x2491" L"\0" L"\x2492" L"\0" L"\x2493" L"\0" L"\x2494" L"\0" -+ L"\x2495" L"\0" L"\x2496" L"\0" L"\x2497" L"\0" L"\x2498" L"\0" L"\x2499" -+ L"\0" L"\x249a" L"\0" L"\x249b" L"\0" L"\x249c" L"\0" L"\x249d" L"\0" -+ L"\x249e" L"\0" L"\x249f" L"\0" L"\x24a0" L"\0" L"\x24a1" L"\0" L"\x24a2" -+ L"\0" L"\x24a3" L"\0" L"\x24a4" L"\0" L"\x24a5" L"\0" L"\x24a6" L"\0" -+ L"\x24a7" L"\0" L"\x24a8" L"\0" L"\x24a9" L"\0" L"\x24aa" L"\0" L"\x24ab" -+ L"\0" L"\x24ac" L"\0" L"\x24ad" L"\0" L"\x24ae" L"\0" L"\x24af" L"\0" -+ L"\x24b0" L"\0" L"\x24b1" L"\0" L"\x24b2" L"\0" L"\x24b3" L"\0" L"\x24b4" -+ L"\0" L"\x24b5" L"\0" L"\x24b6" L"\0" L"\x24b7" L"\0" L"\x24b8" L"\0" -+ L"\x24b9" L"\0" L"\x24ba" L"\0" L"\x24bb" L"\0" L"\x24bc" L"\0" L"\x24bd" -+ L"\0" L"\x24be" L"\0" L"\x24bf" L"\0" L"\x24c0" L"\0" L"\x24c1" L"\0" -+ L"\x24c2" L"\0" L"\x24c3" L"\0" L"\x24c4" L"\0" L"\x24c5" L"\0" L"\x24c6" -+ L"\0" L"\x24c7" L"\0" L"\x24c8" L"\0" L"\x24c9" L"\0" L"\x24ca" L"\0" -+ L"\x24cb" L"\0" L"\x24cc" L"\0" L"\x24cd" L"\0" L"\x24ce" L"\0" L"\x24cf" -+ L"\0" L"\x24d0" L"\0" L"\x24d1" L"\0" L"\x24d2" L"\0" L"\x24d3" L"\0" -+ L"\x24d4" L"\0" L"\x24d5" L"\0" L"\x24d6" L"\0" L"\x24d7" L"\0" L"\x24d8" -+ L"\0" L"\x24d9" L"\0" L"\x24da" L"\0" L"\x24db" L"\0" L"\x24dc" L"\0" -+ L"\x24dd" L"\0" L"\x24de" L"\0" L"\x24df" L"\0" L"\x24e0" L"\0" L"\x24e1" -+ L"\0" L"\x24e2" L"\0" L"\x24e3" L"\0" L"\x24e4" L"\0" L"\x24e5" L"\0" -+ L"\x24e6" L"\0" L"\x24e7" L"\0" L"\x24e8" L"\0" L"\x24e9" L"\0" L"\x24ea" -+ L"\0" L"\x2500" L"\0" L"\x2502" L"\0" L"\x250c" L"\0" L"\x2510" L"\0" -+ L"\x2514" L"\0" L"\x2518" L"\0" L"\x251c" L"\0" L"\x2524" L"\0" L"\x252c" -+ L"\0" L"\x2534" L"\0" L"\x253c" L"\0" L"\x25e6" L"\0" L"\x2a74" L"\0" -+ L"\x2a75" L"\0" L"\x2a76" L"\0" L"\x3000" L"\0" L"\x30a0" L"\0" L"\x3251" -+ L"\0" L"\x3252" L"\0" L"\x3253" L"\0" L"\x3254" L"\0" L"\x3255" L"\0" -+ L"\x3256" L"\0" L"\x3257" L"\0" L"\x3258" L"\0" L"\x3259" L"\0" L"\x325a" -+ L"\0" L"\x325b" L"\0" L"\x325c" L"\0" L"\x325d" L"\0" L"\x325e" L"\0" -+ L"\x325f" L"\0" L"\x32b1" L"\0" L"\x32b2" L"\0" L"\x32b3" L"\0" L"\x32b4" -+ L"\0" L"\x32b5" L"\0" L"\x32b6" L"\0" L"\x32b7" L"\0" L"\x32b8" L"\0" -+ L"\x32b9" L"\0" L"\x32ba" L"\0" L"\x32bb" L"\0" L"\x32bc" L"\0" L"\x32bd" -+ L"\0" L"\x32be" L"\0" L"\x32bf" L"\0" L"\x3371" L"\0" L"\x3372" L"\0" -+ L"\x3373" L"\0" L"\x3374" L"\0" L"\x3375" L"\0" L"\x3376" L"\0" L"\x3380" -+ L"\0" L"\x3381" L"\0" L"\x3382" L"\0" L"\x3383" L"\0" L"\x3384" L"\0" -+ L"\x3385" L"\0" L"\x3386" L"\0" L"\x3387" L"\0" L"\x3388" L"\0" L"\x3389" -+ L"\0" L"\x338a" L"\0" L"\x338b" L"\0" L"\x338c" L"\0" L"\x338d" L"\0" -+ L"\x338e" L"\0" L"\x338f" L"\0" L"\x3390" L"\0" L"\x3391" L"\0" L"\x3392" -+ L"\0" L"\x3393" L"\0" L"\x3394" L"\0" L"\x3395" L"\0" L"\x3396" L"\0" -+ L"\x3397" L"\0" L"\x3398" L"\0" L"\x3399" L"\0" L"\x339a" L"\0" L"\x339b" -+ L"\0" L"\x339c" L"\0" L"\x339d" L"\0" L"\x339e" L"\0" L"\x339f" L"\0" -+ L"\x33a0" L"\0" L"\x33a1" L"\0" L"\x33a2" L"\0" L"\x33a3" L"\0" L"\x33a4" -+ L"\0" L"\x33a5" L"\0" L"\x33a6" L"\0" L"\x33a7" L"\0" L"\x33a8" L"\0" -+ L"\x33a9" L"\0" L"\x33aa" L"\0" L"\x33ab" L"\0" L"\x33ac" L"\0" L"\x33ad" -+ L"\0" L"\x33ae" L"\0" L"\x33af" L"\0" L"\x33b0" L"\0" L"\x33b1" L"\0" -+ L"\x33b2" L"\0" L"\x33b3" L"\0" L"\x33b4" L"\0" L"\x33b5" L"\0" L"\x33b6" -+ L"\0" L"\x33b7" L"\0" L"\x33b8" L"\0" L"\x33b9" L"\0" L"\x33ba" L"\0" -+ L"\x33bb" L"\0" L"\x33bc" L"\0" L"\x33bd" L"\0" L"\x33be" L"\0" L"\x33bf" -+ L"\0" L"\x33c2" L"\0" L"\x33c3" L"\0" L"\x33c4" L"\0" L"\x33c5" L"\0" -+ L"\x33c6" L"\0" L"\x33c7" L"\0" L"\x33c8" L"\0" L"\x33c9" L"\0" L"\x33ca" -+ L"\0" L"\x33cb" L"\0" L"\x33cc" L"\0" L"\x33cd" L"\0" L"\x33ce" L"\0" -+ L"\x33cf" L"\0" L"\x33d0" L"\0" L"\x33d1" L"\0" L"\x33d2" L"\0" L"\x33d3" -+ L"\0" L"\x33d4" L"\0" L"\x33d5" L"\0" L"\x33d6" L"\0" L"\x33d7" L"\0" -+ L"\x33d8" L"\0" L"\x33d9" L"\0" L"\x33da" L"\0" L"\x33db" L"\0" L"\x33dc" -+ L"\0" L"\x33dd" L"\0" L"\xfb00" L"\0" L"\xfb01" L"\0" L"\xfb02" L"\0" -+ L"\xfb03" L"\0" L"\xfb04" L"\0" L"\xfb06" L"\0" L"\xfb29" L"\0" L"\xfe00" -+ L"\0" L"\xfe01" L"\0" L"\xfe02" L"\0" L"\xfe03" L"\0" L"\xfe04" L"\0" -+ L"\xfe05" L"\0" L"\xfe06" L"\0" L"\xfe07" L"\0" L"\xfe08" L"\0" L"\xfe09" -+ L"\0" L"\xfe0a" L"\0" L"\xfe0b" L"\0" L"\xfe0c" L"\0" L"\xfe0d" L"\0" -+ L"\xfe0e" L"\0" L"\xfe0f" L"\0" L"\xfe4d" L"\0" L"\xfe4e" L"\0" L"\xfe4f" -+ L"\0" L"\xfe50" L"\0" L"\xfe52" L"\0" L"\xfe54" L"\0" L"\xfe55" L"\0" -+ L"\xfe56" L"\0" L"\xfe57" L"\0" L"\xfe59" L"\0" L"\xfe5a" L"\0" L"\xfe5b" -+ L"\0" L"\xfe5c" L"\0" L"\xfe5f" L"\0" L"\xfe60" L"\0" L"\xfe61" L"\0" -+ L"\xfe62" L"\0" L"\xfe63" L"\0" L"\xfe64" L"\0" L"\xfe65" L"\0" L"\xfe66" -+ L"\0" L"\xfe68" L"\0" L"\xfe69" L"\0" L"\xfe6a" L"\0" L"\xfe6b" L"\0" -+ L"\xfeff" L"\0" L"\xff01" L"\0" L"\xff02" L"\0" L"\xff03" L"\0" L"\xff04" -+ L"\0" L"\xff05" L"\0" L"\xff06" L"\0" L"\xff07" L"\0" L"\xff08" L"\0" -+ L"\xff09" L"\0" L"\xff0a" L"\0" L"\xff0b" L"\0" L"\xff0c" L"\0" L"\xff0d" -+ L"\0" L"\xff0e" L"\0" L"\xff0f" L"\0" L"\xff10" L"\0" L"\xff11" L"\0" -+ L"\xff12" L"\0" L"\xff13" L"\0" L"\xff14" L"\0" L"\xff15" L"\0" L"\xff16" -+ L"\0" L"\xff17" L"\0" L"\xff18" L"\0" L"\xff19" L"\0" L"\xff1a" L"\0" -+ L"\xff1b" L"\0" L"\xff1c" L"\0" L"\xff1d" L"\0" L"\xff1e" L"\0" L"\xff1f" -+ L"\0" L"\xff20" L"\0" L"\xff21" L"\0" L"\xff22" L"\0" L"\xff23" L"\0" -+ L"\xff24" L"\0" L"\xff25" L"\0" L"\xff26" L"\0" L"\xff27" L"\0" L"\xff28" -+ L"\0" L"\xff29" L"\0" L"\xff2a" L"\0" L"\xff2b" L"\0" L"\xff2c" L"\0" -+ L"\xff2d" L"\0" L"\xff2e" L"\0" L"\xff2f" L"\0" L"\xff30" L"\0" L"\xff31" -+ L"\0" L"\xff32" L"\0" L"\xff33" L"\0" L"\xff34" L"\0" L"\xff35" L"\0" -+ L"\xff36" L"\0" L"\xff37" L"\0" L"\xff38" L"\0" L"\xff39" L"\0" L"\xff3a" -+ L"\0" L"\xff3b" L"\0" L"\xff3c" L"\0" L"\xff3d" L"\0" L"\xff3e" L"\0" -+ L"\xff3f" L"\0" L"\xff40" L"\0" L"\xff41" L"\0" L"\xff42" L"\0" L"\xff43" -+ L"\0" L"\xff44" L"\0" L"\xff45" L"\0" L"\xff46" L"\0" L"\xff47" L"\0" -+ L"\xff48" L"\0" L"\xff49" L"\0" L"\xff4a" L"\0" L"\xff4b" L"\0" L"\xff4c" -+ L"\0" L"\xff4d" L"\0" L"\xff4e" L"\0" L"\xff4f" L"\0" L"\xff50" L"\0" -+ L"\xff51" L"\0" L"\xff52" L"\0" L"\xff53" L"\0" L"\xff54" L"\0" L"\xff55" -+ L"\0" L"\xff56" L"\0" L"\xff57" L"\0" L"\xff58" L"\0" L"\xff59" L"\0" -+ L"\xff5a" L"\0" L"\xff5b" L"\0" L"\xff5c" L"\0" L"\xff5d" L"\0" L"\xff5e" -+ L"\0" L"\x0001d400" L"\0" L"\x0001d401" L"\0" L"\x0001d402" L"\0" -+ L"\x0001d403" L"\0" L"\x0001d404" L"\0" L"\x0001d405" L"\0" L"\x0001d406" -+ L"\0" L"\x0001d407" L"\0" L"\x0001d408" L"\0" L"\x0001d409" L"\0" -+ L"\x0001d40a" L"\0" L"\x0001d40b" L"\0" L"\x0001d40c" L"\0" L"\x0001d40d" -+ L"\0" L"\x0001d40e" L"\0" L"\x0001d40f" L"\0" L"\x0001d410" L"\0" -+ L"\x0001d411" L"\0" L"\x0001d412" L"\0" L"\x0001d413" L"\0" L"\x0001d414" -+ L"\0" L"\x0001d415" L"\0" L"\x0001d416" L"\0" L"\x0001d417" L"\0" -+ L"\x0001d418" L"\0" L"\x0001d419" L"\0" L"\x0001d41a" L"\0" L"\x0001d41b" -+ L"\0" L"\x0001d41c" L"\0" L"\x0001d41d" L"\0" L"\x0001d41e" L"\0" -+ L"\x0001d41f" L"\0" L"\x0001d420" L"\0" L"\x0001d421" L"\0" L"\x0001d422" -+ L"\0" L"\x0001d423" L"\0" L"\x0001d424" L"\0" L"\x0001d425" L"\0" -+ L"\x0001d426" L"\0" L"\x0001d427" L"\0" L"\x0001d428" L"\0" L"\x0001d429" -+ L"\0" L"\x0001d42a" L"\0" L"\x0001d42b" L"\0" L"\x0001d42c" L"\0" -+ L"\x0001d42d" L"\0" L"\x0001d42e" L"\0" L"\x0001d42f" L"\0" L"\x0001d430" -+ L"\0" L"\x0001d431" L"\0" L"\x0001d432" L"\0" L"\x0001d433" L"\0" -+ L"\x0001d434" L"\0" L"\x0001d435" L"\0" L"\x0001d436" L"\0" L"\x0001d437" -+ L"\0" L"\x0001d438" L"\0" L"\x0001d439" L"\0" L"\x0001d43a" L"\0" -+ L"\x0001d43b" L"\0" L"\x0001d43c" L"\0" L"\x0001d43d" L"\0" L"\x0001d43e" -+ L"\0" L"\x0001d43f" L"\0" L"\x0001d440" L"\0" L"\x0001d441" L"\0" -+ L"\x0001d442" L"\0" L"\x0001d443" L"\0" L"\x0001d444" L"\0" L"\x0001d445" -+ L"\0" L"\x0001d446" L"\0" L"\x0001d447" L"\0" L"\x0001d448" L"\0" -+ L"\x0001d449" L"\0" L"\x0001d44a" L"\0" L"\x0001d44b" L"\0" L"\x0001d44c" -+ L"\0" L"\x0001d44d" L"\0" L"\x0001d44e" L"\0" L"\x0001d44f" L"\0" -+ L"\x0001d450" L"\0" L"\x0001d451" L"\0" L"\x0001d452" L"\0" L"\x0001d453" -+ L"\0" L"\x0001d454" L"\0" L"\x0001d456" L"\0" L"\x0001d457" L"\0" -+ L"\x0001d458" L"\0" L"\x0001d459" L"\0" L"\x0001d45a" L"\0" L"\x0001d45b" -+ L"\0" L"\x0001d45c" L"\0" L"\x0001d45d" L"\0" L"\x0001d45e" L"\0" -+ L"\x0001d45f" L"\0" L"\x0001d460" L"\0" L"\x0001d461" L"\0" L"\x0001d462" -+ L"\0" L"\x0001d463" L"\0" L"\x0001d464" L"\0" L"\x0001d465" L"\0" -+ L"\x0001d466" L"\0" L"\x0001d467" L"\0" L"\x0001d468" L"\0" L"\x0001d469" -+ L"\0" L"\x0001d46a" L"\0" L"\x0001d46b" L"\0" L"\x0001d46c" L"\0" -+ L"\x0001d46d" L"\0" L"\x0001d46e" L"\0" L"\x0001d46f" L"\0" L"\x0001d470" -+ L"\0" L"\x0001d471" L"\0" L"\x0001d472" L"\0" L"\x0001d473" L"\0" -+ L"\x0001d474" L"\0" L"\x0001d475" L"\0" L"\x0001d476" L"\0" L"\x0001d477" -+ L"\0" L"\x0001d478" L"\0" L"\x0001d479" L"\0" L"\x0001d47a" L"\0" -+ L"\x0001d47b" L"\0" L"\x0001d47c" L"\0" L"\x0001d47d" L"\0" L"\x0001d47e" -+ L"\0" L"\x0001d47f" L"\0" L"\x0001d480" L"\0" L"\x0001d481" L"\0" -+ L"\x0001d482" L"\0" L"\x0001d483" L"\0" L"\x0001d484" L"\0" L"\x0001d485" -+ L"\0" L"\x0001d486" L"\0" L"\x0001d487" L"\0" L"\x0001d488" L"\0" -+ L"\x0001d489" L"\0" L"\x0001d48a" L"\0" L"\x0001d48b" L"\0" L"\x0001d48c" -+ L"\0" L"\x0001d48d" L"\0" L"\x0001d48e" L"\0" L"\x0001d48f" L"\0" -+ L"\x0001d490" L"\0" L"\x0001d491" L"\0" L"\x0001d492" L"\0" L"\x0001d493" -+ L"\0" L"\x0001d494" L"\0" L"\x0001d495" L"\0" L"\x0001d496" L"\0" -+ L"\x0001d497" L"\0" L"\x0001d498" L"\0" L"\x0001d499" L"\0" L"\x0001d49a" -+ L"\0" L"\x0001d49b" L"\0" L"\x0001d49c" L"\0" L"\x0001d49e" L"\0" -+ L"\x0001d49f" L"\0" L"\x0001d4a2" L"\0" L"\x0001d4a5" L"\0" L"\x0001d4a6" -+ L"\0" L"\x0001d4a9" L"\0" L"\x0001d4aa" L"\0" L"\x0001d4ab" L"\0" -+ L"\x0001d4ac" L"\0" L"\x0001d4ae" L"\0" L"\x0001d4af" L"\0" L"\x0001d4b0" -+ L"\0" L"\x0001d4b1" L"\0" L"\x0001d4b2" L"\0" L"\x0001d4b3" L"\0" -+ L"\x0001d4b4" L"\0" L"\x0001d4b5" L"\0" L"\x0001d4b6" L"\0" L"\x0001d4b7" -+ L"\0" L"\x0001d4b8" L"\0" L"\x0001d4b9" L"\0" L"\x0001d4bb" L"\0" -+ L"\x0001d4bd" L"\0" L"\x0001d4be" L"\0" L"\x0001d4bf" L"\0" L"\x0001d4c0" -+ L"\0" L"\x0001d4c2" L"\0" L"\x0001d4c3" L"\0" L"\x0001d4c5" L"\0" -+ L"\x0001d4c6" L"\0" L"\x0001d4c7" L"\0" L"\x0001d4c8" L"\0" L"\x0001d4c9" -+ L"\0" L"\x0001d4ca" L"\0" L"\x0001d4cb" L"\0" L"\x0001d4cc" L"\0" -+ L"\x0001d4cd" L"\0" L"\x0001d4ce" L"\0" L"\x0001d4cf" L"\0" L"\x0001d4d0" -+ L"\0" L"\x0001d4d1" L"\0" L"\x0001d4d2" L"\0" L"\x0001d4d3" L"\0" -+ L"\x0001d4d4" L"\0" L"\x0001d4d5" L"\0" L"\x0001d4d6" L"\0" L"\x0001d4d7" -+ L"\0" L"\x0001d4d8" L"\0" L"\x0001d4d9" L"\0" L"\x0001d4da" L"\0" -+ L"\x0001d4db" L"\0" L"\x0001d4dc" L"\0" L"\x0001d4dd" L"\0" L"\x0001d4de" -+ L"\0" L"\x0001d4df" L"\0" L"\x0001d4e0" L"\0" L"\x0001d4e1" L"\0" -+ L"\x0001d4e2" L"\0" L"\x0001d4e3" L"\0" L"\x0001d4e4" L"\0" L"\x0001d4e5" -+ L"\0" L"\x0001d4e6" L"\0" L"\x0001d4e7" L"\0" L"\x0001d4e8" L"\0" -+ L"\x0001d4e9" L"\0" L"\x0001d4ea" L"\0" L"\x0001d4eb" L"\0" L"\x0001d4ec" -+ L"\0" L"\x0001d4ed" L"\0" L"\x0001d4ee" L"\0" L"\x0001d4ef" L"\0" -+ L"\x0001d4f0" L"\0" L"\x0001d4f1" L"\0" L"\x0001d4f2" L"\0" L"\x0001d4f3" -+ L"\0" L"\x0001d4f4" L"\0" L"\x0001d4f5" L"\0" L"\x0001d4f6" L"\0" -+ L"\x0001d4f7" L"\0" L"\x0001d4f8" L"\0" L"\x0001d4f9" L"\0" L"\x0001d4fa" -+ L"\0" L"\x0001d4fb" L"\0" L"\x0001d4fc" L"\0" L"\x0001d4fd" L"\0" -+ L"\x0001d4fe" L"\0" L"\x0001d4ff" L"\0" L"\x0001d500" L"\0" L"\x0001d501" -+ L"\0" L"\x0001d502" L"\0" L"\x0001d503" L"\0" L"\x0001d504" L"\0" -+ L"\x0001d505" L"\0" L"\x0001d507" L"\0" L"\x0001d508" L"\0" L"\x0001d509" -+ L"\0" L"\x0001d50a" L"\0" L"\x0001d50d" L"\0" L"\x0001d50e" L"\0" -+ L"\x0001d50f" L"\0" L"\x0001d510" L"\0" L"\x0001d511" L"\0" L"\x0001d512" -+ L"\0" L"\x0001d513" L"\0" L"\x0001d514" L"\0" L"\x0001d516" L"\0" -+ L"\x0001d517" L"\0" L"\x0001d518" L"\0" L"\x0001d519" L"\0" L"\x0001d51a" -+ L"\0" L"\x0001d51b" L"\0" L"\x0001d51c" L"\0" L"\x0001d51e" L"\0" -+ L"\x0001d51f" L"\0" L"\x0001d520" L"\0" L"\x0001d521" L"\0" L"\x0001d522" -+ L"\0" L"\x0001d523" L"\0" L"\x0001d524" L"\0" L"\x0001d525" L"\0" -+ L"\x0001d526" L"\0" L"\x0001d527" L"\0" L"\x0001d528" L"\0" L"\x0001d529" -+ L"\0" L"\x0001d52a" L"\0" L"\x0001d52b" L"\0" L"\x0001d52c" L"\0" -+ L"\x0001d52d" L"\0" L"\x0001d52e" L"\0" L"\x0001d52f" L"\0" L"\x0001d530" -+ L"\0" L"\x0001d531" L"\0" L"\x0001d532" L"\0" L"\x0001d533" L"\0" -+ L"\x0001d534" L"\0" L"\x0001d535" L"\0" L"\x0001d536" L"\0" L"\x0001d537" -+ L"\0" L"\x0001d538" L"\0" L"\x0001d539" L"\0" L"\x0001d53b" L"\0" -+ L"\x0001d53c" L"\0" L"\x0001d53d" L"\0" L"\x0001d53e" L"\0" L"\x0001d540" -+ L"\0" L"\x0001d541" L"\0" L"\x0001d542" L"\0" L"\x0001d543" L"\0" -+ L"\x0001d544" L"\0" L"\x0001d546" L"\0" L"\x0001d54a" L"\0" L"\x0001d54b" -+ L"\0" L"\x0001d54c" L"\0" L"\x0001d54d" L"\0" L"\x0001d54e" L"\0" -+ L"\x0001d54f" L"\0" L"\x0001d550" L"\0" L"\x0001d552" L"\0" L"\x0001d553" -+ L"\0" L"\x0001d554" L"\0" L"\x0001d555" L"\0" L"\x0001d556" L"\0" -+ L"\x0001d557" L"\0" L"\x0001d558" L"\0" L"\x0001d559" L"\0" L"\x0001d55a" -+ L"\0" L"\x0001d55b" L"\0" L"\x0001d55c" L"\0" L"\x0001d55d" L"\0" -+ L"\x0001d55e" L"\0" L"\x0001d55f" L"\0" L"\x0001d560" L"\0" L"\x0001d561" -+ L"\0" L"\x0001d562" L"\0" L"\x0001d563" L"\0" L"\x0001d564" L"\0" -+ L"\x0001d565" L"\0" L"\x0001d566" L"\0" L"\x0001d567" L"\0" L"\x0001d568" -+ L"\0" L"\x0001d569" L"\0" L"\x0001d56a" L"\0" L"\x0001d56b" L"\0" -+ L"\x0001d56c" L"\0" L"\x0001d56d" L"\0" L"\x0001d56e" L"\0" L"\x0001d56f" -+ L"\0" L"\x0001d570" L"\0" L"\x0001d571" L"\0" L"\x0001d572" L"\0" -+ L"\x0001d573" L"\0" L"\x0001d574" L"\0" L"\x0001d575" L"\0" L"\x0001d576" -+ L"\0" L"\x0001d577" L"\0" L"\x0001d578" L"\0" L"\x0001d579" L"\0" -+ L"\x0001d57a" L"\0" L"\x0001d57b" L"\0" L"\x0001d57c" L"\0" L"\x0001d57d" -+ L"\0" L"\x0001d57e" L"\0" L"\x0001d57f" L"\0" L"\x0001d580" L"\0" -+ L"\x0001d581" L"\0" L"\x0001d582" L"\0" L"\x0001d583" L"\0" L"\x0001d584" -+ L"\0" L"\x0001d585" L"\0" L"\x0001d586" L"\0" L"\x0001d587" L"\0" -+ L"\x0001d588" L"\0" L"\x0001d589" L"\0" L"\x0001d58a" L"\0" L"\x0001d58b" -+ L"\0" L"\x0001d58c" L"\0" L"\x0001d58d" L"\0" L"\x0001d58e" L"\0" -+ L"\x0001d58f" L"\0" L"\x0001d590" L"\0" L"\x0001d591" L"\0" L"\x0001d592" -+ L"\0" L"\x0001d593" L"\0" L"\x0001d594" L"\0" L"\x0001d595" L"\0" -+ L"\x0001d596" L"\0" L"\x0001d597" L"\0" L"\x0001d598" L"\0" L"\x0001d599" -+ L"\0" L"\x0001d59a" L"\0" L"\x0001d59b" L"\0" L"\x0001d59c" L"\0" -+ L"\x0001d59d" L"\0" L"\x0001d59e" L"\0" L"\x0001d59f" L"\0" L"\x0001d5a0" -+ L"\0" L"\x0001d5a1" L"\0" L"\x0001d5a2" L"\0" L"\x0001d5a3" L"\0" -+ L"\x0001d5a4" L"\0" L"\x0001d5a5" L"\0" L"\x0001d5a6" L"\0" L"\x0001d5a7" -+ L"\0" L"\x0001d5a8" L"\0" L"\x0001d5a9" L"\0" L"\x0001d5aa" L"\0" -+ L"\x0001d5ab" L"\0" L"\x0001d5ac" L"\0" L"\x0001d5ad" L"\0" L"\x0001d5ae" -+ L"\0" L"\x0001d5af" L"\0" L"\x0001d5b0" L"\0" L"\x0001d5b1" L"\0" -+ L"\x0001d5b2" L"\0" L"\x0001d5b3" L"\0" L"\x0001d5b4" L"\0" L"\x0001d5b5" -+ L"\0" L"\x0001d5b6" L"\0" L"\x0001d5b7" L"\0" L"\x0001d5b8" L"\0" -+ L"\x0001d5b9" L"\0" L"\x0001d5ba" L"\0" L"\x0001d5bb" L"\0" L"\x0001d5bc" -+ L"\0" L"\x0001d5bd" L"\0" L"\x0001d5be" L"\0" L"\x0001d5bf" L"\0" -+ L"\x0001d5c0" L"\0" L"\x0001d5c1" L"\0" L"\x0001d5c2" L"\0" L"\x0001d5c3" -+ L"\0" L"\x0001d5c4" L"\0" L"\x0001d5c5" L"\0" L"\x0001d5c6" L"\0" -+ L"\x0001d5c7" L"\0" L"\x0001d5c8" L"\0" L"\x0001d5c9" L"\0" L"\x0001d5ca" -+ L"\0" L"\x0001d5cb" L"\0" L"\x0001d5cc" L"\0" L"\x0001d5cd" L"\0" -+ L"\x0001d5ce" L"\0" L"\x0001d5cf" L"\0" L"\x0001d5d0" L"\0" L"\x0001d5d1" -+ L"\0" L"\x0001d5d2" L"\0" L"\x0001d5d3" L"\0" L"\x0001d5d4" L"\0" -+ L"\x0001d5d5" L"\0" L"\x0001d5d6" L"\0" L"\x0001d5d7" L"\0" L"\x0001d5d8" -+ L"\0" L"\x0001d5d9" L"\0" L"\x0001d5da" L"\0" L"\x0001d5db" L"\0" -+ L"\x0001d5dc" L"\0" L"\x0001d5dd" L"\0" L"\x0001d5de" L"\0" L"\x0001d5df" -+ L"\0" L"\x0001d5e0" L"\0" L"\x0001d5e1" L"\0" L"\x0001d5e2" L"\0" -+ L"\x0001d5e3" L"\0" L"\x0001d5e4" L"\0" L"\x0001d5e5" L"\0" L"\x0001d5e6" -+ L"\0" L"\x0001d5e7" L"\0" L"\x0001d5e8" L"\0" L"\x0001d5e9" L"\0" -+ L"\x0001d5ea" L"\0" L"\x0001d5eb" L"\0" L"\x0001d5ec" L"\0" L"\x0001d5ed" -+ L"\0" L"\x0001d5ee" L"\0" L"\x0001d5ef" L"\0" L"\x0001d5f0" L"\0" -+ L"\x0001d5f1" L"\0" L"\x0001d5f2" L"\0" L"\x0001d5f3" L"\0" L"\x0001d5f4" -+ L"\0" L"\x0001d5f5" L"\0" L"\x0001d5f6" L"\0" L"\x0001d5f7" L"\0" -+ L"\x0001d5f8" L"\0" L"\x0001d5f9" L"\0" L"\x0001d5fa" L"\0" L"\x0001d5fb" -+ L"\0" L"\x0001d5fc" L"\0" L"\x0001d5fd" L"\0" L"\x0001d5fe" L"\0" -+ L"\x0001d5ff" L"\0" L"\x0001d600" L"\0" L"\x0001d601" L"\0" L"\x0001d602" -+ L"\0" L"\x0001d603" L"\0" L"\x0001d604" L"\0" L"\x0001d605" L"\0" -+ L"\x0001d606" L"\0" L"\x0001d607" L"\0" L"\x0001d608" L"\0" L"\x0001d609" -+ L"\0" L"\x0001d60a" L"\0" L"\x0001d60b" L"\0" L"\x0001d60c" L"\0" -+ L"\x0001d60d" L"\0" L"\x0001d60e" L"\0" L"\x0001d60f" L"\0" L"\x0001d610" -+ L"\0" L"\x0001d611" L"\0" L"\x0001d612" L"\0" L"\x0001d613" L"\0" -+ L"\x0001d614" L"\0" L"\x0001d615" L"\0" L"\x0001d616" L"\0" L"\x0001d617" -+ L"\0" L"\x0001d618" L"\0" L"\x0001d619" L"\0" L"\x0001d61a" L"\0" -+ L"\x0001d61b" L"\0" L"\x0001d61c" L"\0" L"\x0001d61d" L"\0" L"\x0001d61e" -+ L"\0" L"\x0001d61f" L"\0" L"\x0001d620" L"\0" L"\x0001d621" L"\0" -+ L"\x0001d622" L"\0" L"\x0001d623" L"\0" L"\x0001d624" L"\0" L"\x0001d625" -+ L"\0" L"\x0001d626" L"\0" L"\x0001d627" L"\0" L"\x0001d628" L"\0" -+ L"\x0001d629" L"\0" L"\x0001d62a" L"\0" L"\x0001d62b" L"\0" L"\x0001d62c" -+ L"\0" L"\x0001d62d" L"\0" L"\x0001d62e" L"\0" L"\x0001d62f" L"\0" -+ L"\x0001d630" L"\0" L"\x0001d631" L"\0" L"\x0001d632" L"\0" L"\x0001d633" -+ L"\0" L"\x0001d634" L"\0" L"\x0001d635" L"\0" L"\x0001d636" L"\0" -+ L"\x0001d637" L"\0" L"\x0001d638" L"\0" L"\x0001d639" L"\0" L"\x0001d63a" -+ L"\0" L"\x0001d63b" L"\0" L"\x0001d63c" L"\0" L"\x0001d63d" L"\0" -+ L"\x0001d63e" L"\0" L"\x0001d63f" L"\0" L"\x0001d640" L"\0" L"\x0001d641" -+ L"\0" L"\x0001d642" L"\0" L"\x0001d643" L"\0" L"\x0001d644" L"\0" -+ L"\x0001d645" L"\0" L"\x0001d646" L"\0" L"\x0001d647" L"\0" L"\x0001d648" -+ L"\0" L"\x0001d649" L"\0" L"\x0001d64a" L"\0" L"\x0001d64b" L"\0" -+ L"\x0001d64c" L"\0" L"\x0001d64d" L"\0" L"\x0001d64e" L"\0" L"\x0001d64f" -+ L"\0" L"\x0001d650" L"\0" L"\x0001d651" L"\0" L"\x0001d652" L"\0" -+ L"\x0001d653" L"\0" L"\x0001d654" L"\0" L"\x0001d655" L"\0" L"\x0001d656" -+ L"\0" L"\x0001d657" L"\0" L"\x0001d658" L"\0" L"\x0001d659" L"\0" -+ L"\x0001d65a" L"\0" L"\x0001d65b" L"\0" L"\x0001d65c" L"\0" L"\x0001d65d" -+ L"\0" L"\x0001d65e" L"\0" L"\x0001d65f" L"\0" L"\x0001d660" L"\0" -+ L"\x0001d661" L"\0" L"\x0001d662" L"\0" L"\x0001d663" L"\0" L"\x0001d664" -+ L"\0" L"\x0001d665" L"\0" L"\x0001d666" L"\0" L"\x0001d667" L"\0" -+ L"\x0001d668" L"\0" L"\x0001d669" L"\0" L"\x0001d66a" L"\0" L"\x0001d66b" -+ L"\0" L"\x0001d66c" L"\0" L"\x0001d66d" L"\0" L"\x0001d66e" L"\0" -+ L"\x0001d66f" L"\0" L"\x0001d670" L"\0" L"\x0001d671" L"\0" L"\x0001d672" -+ L"\0" L"\x0001d673" L"\0" L"\x0001d674" L"\0" L"\x0001d675" L"\0" -+ L"\x0001d676" L"\0" L"\x0001d677" L"\0" L"\x0001d678" L"\0" L"\x0001d679" -+ L"\0" L"\x0001d67a" L"\0" L"\x0001d67b" L"\0" L"\x0001d67c" L"\0" -+ L"\x0001d67d" L"\0" L"\x0001d67e" L"\0" L"\x0001d67f" L"\0" L"\x0001d680" -+ L"\0" L"\x0001d681" L"\0" L"\x0001d682" L"\0" L"\x0001d683" L"\0" -+ L"\x0001d684" L"\0" L"\x0001d685" L"\0" L"\x0001d686" L"\0" L"\x0001d687" -+ L"\0" L"\x0001d688" L"\0" L"\x0001d689" L"\0" L"\x0001d68a" L"\0" -+ L"\x0001d68b" L"\0" L"\x0001d68c" L"\0" L"\x0001d68d" L"\0" L"\x0001d68e" -+ L"\0" L"\x0001d68f" L"\0" L"\x0001d690" L"\0" L"\x0001d691" L"\0" -+ L"\x0001d692" L"\0" L"\x0001d693" L"\0" L"\x0001d694" L"\0" L"\x0001d695" -+ L"\0" L"\x0001d696" L"\0" L"\x0001d697" L"\0" L"\x0001d698" L"\0" -+ L"\x0001d699" L"\0" L"\x0001d69a" L"\0" L"\x0001d69b" L"\0" L"\x0001d69c" -+ L"\0" L"\x0001d69d" L"\0" L"\x0001d69e" L"\0" L"\x0001d69f" L"\0" -+ L"\x0001d6a0" L"\0" L"\x0001d6a1" L"\0" L"\x0001d6a2" L"\0" L"\x0001d6a3" -+ L"\0" L"\x0001d7ce" L"\0" L"\x0001d7cf" L"\0" L"\x0001d7d0" L"\0" -+ L"\x0001d7d1" L"\0" L"\x0001d7d2" L"\0" L"\x0001d7d3" L"\0" L"\x0001d7d4" -+ L"\0" L"\x0001d7d5" L"\0" L"\x0001d7d6" L"\0" L"\x0001d7d7" L"\0" -+ L"\x0001d7d8" L"\0" L"\x0001d7d9" L"\0" L"\x0001d7da" L"\0" L"\x0001d7db" -+ L"\0" L"\x0001d7dc" L"\0" L"\x0001d7dd" L"\0" L"\x0001d7de" L"\0" -+ L"\x0001d7df" L"\0" L"\x0001d7e0" L"\0" L"\x0001d7e1" L"\0" L"\x0001d7e2" -+ L"\0" L"\x0001d7e3" L"\0" L"\x0001d7e4" L"\0" L"\x0001d7e5" L"\0" -+ L"\x0001d7e6" L"\0" L"\x0001d7e7" L"\0" L"\x0001d7e8" L"\0" L"\x0001d7e9" -+ L"\0" L"\x0001d7ea" L"\0" L"\x0001d7eb" L"\0" L"\x0001d7ec" L"\0" -+ L"\x0001d7ed" L"\0" L"\x0001d7ee" L"\0" L"\x0001d7ef" L"\0" L"\x0001d7f0" -+ L"\0" L"\x0001d7f1" L"\0" L"\x0001d7f2" L"\0" L"\x0001d7f3" L"\0" -+ L"\x0001d7f4" L"\0" L"\x0001d7f5" L"\0" L"\x0001d7f6" L"\0" L"\x0001d7f7" -+ L"\0" L"\x0001d7f8" L"\0" L"\x0001d7f9" L"\0" L"\x0001d7fa" L"\0" -+ L"\x0001d7fb" L"\0" L"\x0001d7fc" L"\0" L"\x0001d7fd" L"\0" L"\x0001d7fe" -+ L"\0" L"\x0001d7ff"; - static const uint32_t translit_to_idx[] = - { - 0, 3, 8, 12, 15, 20, 23, 26, 30, 37, 44, 51, -@@ -471,22 +471,22 @@ static const uint32_t translit_to_idx[] - 180, 183, 186, 189, 192, 196, 199, 202, 205, 208, 211, 214, - 217, 221, 224, 227, 230, 233, 237, 242, 245, 248, 252, 257, - 260, 263, 267, 270, 274, 278, 282, 285, 287, 289, 291, 293, -- 297, 302, 307, 312, 315, 320, 325, 328, 331, 334, 337, 340, -- 343, 346, 349, 352, 355, 359, 362, 365, 368, 371, 374, 379, -- 385, 388, 393, 396, 399, 402, 405, 408, 411, 414, 417, 420, -- 423, 426, 429, 432, 435, 438, 445, 452, 459, 466, 473, 480, -- 487, 494, 501, 508, 515, 522, 527, 530, 534, 539, 543, 546, -- 550, 555, 561, 565, 568, 572, 577, 580, 583, 586, 589, 592, -- 596, 601, 605, 608, 612, 617, 623, 627, 630, 634, 639, 642, -- 645, 648, 651, 655, 659, 664, 668, 672, 677, 680, 683, 686, -- 689, 692, 695, 698, 702, 706, 710, 714, 719, 724, 729, 734, -- 739, 744, 749, 754, 759, 764, 768, 772, 776, 780, 784, 788, -- 792, 796, 801, 806, 811, 816, 821, 826, 831, 836, 841, 845, -- 850, 855, 859, 863, 867, 871, 875, 880, 883, 887, 892, 897, -- 902, 907, 912, 917, 922, 927, 932, 938, 944, 950, 956, 962, -- 968, 974, 980, 986, 992, 998, 1003, 1008, 1013, 1018, 1023, 1028, -- 1033, 1038, 1043, 1049, 1055, 1061, 1067, 1073, 1079, 1085, 1091, 1097, -- 1103, 1109, 1113, 1117, 1121, 1125, 1129, 1133, 1137, 1141, 1145, 1150, -+ 297, 302, 307, 312, 317, 320, 325, 330, 333, 336, 339, 342, -+ 345, 348, 351, 354, 357, 360, 364, 367, 370, 373, 376, 379, -+ 384, 390, 393, 398, 401, 404, 407, 410, 413, 416, 419, 422, -+ 425, 428, 431, 434, 437, 440, 443, 450, 457, 464, 471, 478, -+ 485, 492, 499, 506, 513, 520, 527, 532, 535, 539, 544, 548, -+ 551, 555, 560, 566, 570, 573, 577, 582, 585, 588, 591, 594, -+ 597, 601, 606, 610, 613, 617, 622, 628, 632, 635, 639, 644, -+ 647, 650, 653, 656, 660, 664, 669, 673, 677, 682, 685, 688, -+ 691, 694, 697, 700, 703, 707, 711, 715, 719, 724, 729, 734, -+ 739, 744, 749, 754, 759, 764, 769, 773, 777, 781, 785, 789, -+ 793, 797, 801, 806, 811, 816, 821, 826, 831, 836, 841, 846, -+ 850, 855, 860, 864, 868, 872, 876, 880, 885, 888, 892, 897, -+ 902, 907, 912, 917, 922, 927, 932, 937, 943, 949, 955, 961, -+ 967, 973, 979, 985, 991, 997, 1003, 1008, 1013, 1018, 1023, 1028, -+ 1033, 1038, 1043, 1048, 1054, 1060, 1066, 1072, 1078, 1084, 1090, 1096, -+ 1102, 1108, 1114, 1118, 1122, 1126, 1130, 1134, 1138, 1142, 1146, 1150, - 1155, 1160, 1165, 1170, 1175, 1180, 1185, 1190, 1195, 1200, 1205, 1210, - 1215, 1220, 1225, 1230, 1235, 1240, 1245, 1250, 1255, 1260, 1265, 1270, - 1275, 1280, 1285, 1290, 1295, 1300, 1305, 1310, 1315, 1320, 1325, 1330, -@@ -494,89 +494,89 @@ static const uint32_t translit_to_idx[] - 1395, 1400, 1405, 1410, 1415, 1420, 1425, 1430, 1435, 1440, 1445, 1450, - 1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1505, 1510, - 1515, 1520, 1525, 1530, 1535, 1540, 1545, 1550, 1555, 1560, 1565, 1570, -- 1575, 1580, 1585, 1590, 1595, 1598, 1601, 1604, 1607, 1610, 1613, 1616, -- 1619, 1622, 1625, 1628, 1631, 1636, 1640, 1645, 1648, 1651, 1657, 1663, -- 1669, 1675, 1681, 1687, 1693, 1699, 1705, 1711, 1717, 1723, 1729, 1735, -- 1741, 1747, 1753, 1759, 1765, 1771, 1777, 1783, 1789, 1795, 1801, 1807, -- 1813, 1819, 1825, 1831, 1836, 1840, 1844, 1849, 1853, 1857, 1861, 1865, -- 1869, 1873, 1877, 1881, 1885, 1889, 1894, 1900, 1904, 1908, 1912, 1916, -- 1920, 1924, 1928, 1933, 1938, 1943, 1948, 1952, 1956, 1960, 1964, 1968, -- 1972, 1976, 1980, 1984, 1988, 1994, 2000, 2005, 2011, 2017, 2023, 2028, -- 2034, 2039, 2046, 2050, 2055, 2060, 2065, 2070, 2077, 2086, 2090, 2094, -- 2098, 2102, 2106, 2110, 2114, 2118, 2122, 2126, 2130, 2134, 2138, 2142, -- 2146, 2150, 2156, 2160, 2164, 2168, 2174, 2179, 2183, 2187, 2191, 2195, -- 2199, 2203, 2207, 2211, 2215, 2219, 2224, 2228, 2232, 2237, 2242, 2246, -- 2252, 2257, 2261, 2265, 2269, 2273, 2277, 2281, 2285, 2290, 2295, 2299, -- 2302, 2304, 2306, 2308, 2310, 2312, 2314, 2316, 2318, 2320, 2322, 2324, -- 2326, 2328, 2330, 2332, 2334, 2337, 2340, 2343, 2346, 2349, 2352, 2355, -- 2358, 2361, 2364, 2367, 2370, 2373, 2376, 2379, 2382, 2385, 2388, 2391, -- 2394, 2397, 2400, 2403, 2406, 2409, 2411, 2414, 2417, 2420, 2423, 2426, -- 2429, 2432, 2435, 2438, 2441, 2444, 2447, 2450, 2453, 2456, 2459, 2462, -- 2465, 2468, 2471, 2474, 2477, 2480, 2483, 2486, 2489, 2492, 2495, 2498, -- 2501, 2504, 2507, 2510, 2513, 2516, 2519, 2522, 2525, 2528, 2531, 2534, -- 2537, 2540, 2543, 2546, 2549, 2552, 2555, 2558, 2561, 2564, 2567, 2570, -- 2573, 2576, 2579, 2582, 2585, 2588, 2591, 2594, 2597, 2600, 2603, 2606, -- 2609, 2612, 2615, 2618, 2621, 2624, 2627, 2630, 2633, 2636, 2639, 2642, -- 2645, 2648, 2651, 2654, 2657, 2660, 2663, 2666, 2669, 2672, 2675, 2678, -- 2681, 2684, 2687, 2690, 2693, 2696, 2699, 2702, 2705, 2708, 2711, 2714, -- 2717, 2720, 2723, 2726, 2729, 2732, 2735, 2738, 2741, 2744, 2747, 2750, -- 2753, 2756, 2759, 2762, 2765, 2768, 2771, 2774, 2777, 2780, 2783, 2786, -- 2789, 2792, 2795, 2798, 2801, 2804, 2807, 2810, 2813, 2816, 2819, 2822, -- 2825, 2828, 2831, 2834, 2837, 2840, 2843, 2846, 2849, 2852, 2855, 2858, -- 2861, 2864, 2867, 2870, 2873, 2876, 2879, 2882, 2885, 2888, 2891, 2894, -- 2897, 2900, 2903, 2906, 2909, 2912, 2915, 2918, 2921, 2924, 2927, 2930, -- 2933, 2936, 2939, 2942, 2945, 2948, 2951, 2954, 2957, 2960, 2963, 2966, -- 2969, 2972, 2975, 2978, 2981, 2984, 2987, 2990, 2993, 2996, 2999, 3002, -- 3005, 3008, 3011, 3014, 3017, 3020, 3023, 3026, 3029, 3032, 3035, 3038, -- 3041, 3044, 3047, 3050, 3053, 3056, 3059, 3062, 3065, 3068, 3071, 3074, -- 3077, 3080, 3083, 3086, 3089, 3092, 3095, 3098, 3101, 3104, 3107, 3110, -- 3113, 3116, 3119, 3122, 3125, 3128, 3131, 3134, 3137, 3140, 3143, 3146, -- 3149, 3152, 3155, 3158, 3161, 3164, 3167, 3170, 3173, 3176, 3179, 3182, -- 3185, 3188, 3191, 3194, 3197, 3200, 3203, 3206, 3209, 3212, 3215, 3218, -- 3221, 3224, 3227, 3230, 3233, 3236, 3239, 3242, 3245, 3248, 3251, 3254, -- 3257, 3260, 3263, 3266, 3269, 3272, 3275, 3278, 3281, 3284, 3287, 3290, -- 3293, 3296, 3299, 3302, 3305, 3308, 3311, 3314, 3317, 3320, 3323, 3326, -- 3329, 3332, 3335, 3338, 3341, 3344, 3347, 3350, 3353, 3356, 3359, 3362, -- 3365, 3368, 3371, 3374, 3377, 3380, 3383, 3386, 3389, 3392, 3395, 3398, -- 3401, 3404, 3407, 3410, 3413, 3416, 3419, 3422, 3425, 3428, 3431, 3434, -- 3437, 3440, 3443, 3446, 3449, 3452, 3455, 3458, 3461, 3464, 3467, 3470, -- 3473, 3476, 3479, 3482, 3485, 3488, 3491, 3494, 3497, 3500, 3503, 3506, -- 3509, 3512, 3515, 3518, 3521, 3524, 3527, 3530, 3533, 3536, 3539, 3542, -- 3545, 3548, 3551, 3554, 3557, 3560, 3563, 3566, 3569, 3572, 3575, 3578, -- 3581, 3584, 3587, 3590, 3593, 3596, 3599, 3602, 3605, 3608, 3611, 3614, -- 3617, 3620, 3623, 3626, 3629, 3632, 3635, 3638, 3641, 3644, 3647, 3650, -- 3653, 3656, 3659, 3662, 3665, 3668, 3671, 3674, 3677, 3680, 3683, 3686, -- 3689, 3692, 3695, 3698, 3701, 3704, 3707, 3710, 3713, 3716, 3719, 3722, -- 3725, 3728, 3731, 3734, 3737, 3740, 3743, 3746, 3749, 3752, 3755, 3758, -- 3761, 3764, 3767, 3770, 3773, 3776, 3779, 3782, 3785, 3788, 3791, 3794, -- 3797, 3800, 3803, 3806, 3809, 3812, 3815, 3818, 3821, 3824, 3827, 3830, -- 3833, 3836, 3839, 3842, 3845, 3848, 3851, 3854, 3857, 3860, 3863, 3866, -- 3869, 3872, 3875, 3878, 3881, 3884, 3887, 3890, 3893, 3896, 3899, 3902, -- 3905, 3908, 3911, 3914, 3917, 3920, 3923, 3926, 3929, 3932, 3935, 3938, -- 3941, 3944, 3947, 3950, 3953, 3956, 3959, 3962, 3965, 3968, 3971, 3974, -- 3977, 3980, 3983, 3986, 3989, 3992, 3995, 3998, 4001, 4004, 4007, 4010, -- 4013, 4016, 4019, 4022, 4025, 4028, 4031, 4034, 4037, 4040, 4043, 4046, -- 4049, 4052, 4055, 4058, 4061, 4064, 4067, 4070, 4073, 4076, 4079, 4082, -- 4085, 4088, 4091, 4094, 4097, 4100, 4103, 4106, 4109, 4112, 4115, 4118, -- 4121, 4124, 4127, 4130, 4133, 4136, 4139, 4142, 4145, 4148, 4151, 4154, -- 4157, 4160, 4163, 4166, 4169, 4172, 4175, 4178, 4181, 4184, 4187, 4190, -- 4193, 4196, 4199, 4202, 4205, 4208, 4211, 4214, 4217, 4220, 4223, 4226, -- 4229, 4232, 4235, 4238, 4241, 4244, 4247, 4250, 4253, 4256, 4259, 4262, -- 4265, 4268, 4271, 4274, 4277, 4280, 4283, 4286, 4289, 4292, 4295, 4298, -- 4301, 4304, 4307, 4310, 4313, 4316, 4319, 4322, 4325, 4328, 4331, 4334, -- 4337, 4340, 4343, 4346, 4349, 4352, 4355, 4358, 4361, 4364, 4367, 4370, -- 4373, 4376, 4379, 4382, 4385, 4388, 4391, 4394, 4397, 4400, 4403, 4406, -- 4409, 4412, 4415, 4418, 4421, 4424, 4427, 4430, 4433, 4436, 4439, 4442, -- 4445, 4448, 4451, 4454, 4457, 4460, 4463, 4466, 4469, 4472, 4475, 4478, -- 4481, 4484, 4487, 4490, 4493, 4496, 4499, 4502, 4505, 4508, 4511, 4514, -- 4517, 4520, 4523, 4526, 4529, 4532, 4535, 4538, 4541, 4544, 4547, 4550, -- 4553, 4556, 4559, 4562, 4565, 4568, 4571, 4574, 4577, 4580, 4583, 4586, -- 4589, 4592, 4595, 4598, 4601, 4604, 4607, 4610, 4613, 4616, 4619, 4622, -- 4625, 4628, 4631, 4634, 4637, 4640, 4643, 4646, 4649, 4652, 4655, 4658, -- 4661, 4664, 4667, 4670, 4673, 4676, 4679, 4682, 4685, 4688, 4691, 4694, -- 4697, 4700, 4703, 4706, 4709, 4712, 4715, 4718, 4721, 4724, 4727, 4730, -- 4733, 4736, 4739, 4742, 4745, 4748, 4751, 4754, 4757, 4760, 4763, 4766, -- 4769, 4772, 4775, 4778, 4781, 4784, 4787, 4790, 4793 -+ 1575, 1580, 1585, 1590, 1595, 1600, 1603, 1606, 1609, 1612, 1615, 1618, -+ 1621, 1624, 1627, 1630, 1633, 1636, 1641, 1645, 1650, 1653, 1656, 1662, -+ 1668, 1674, 1680, 1686, 1692, 1698, 1704, 1710, 1716, 1722, 1728, 1734, -+ 1740, 1746, 1752, 1758, 1764, 1770, 1776, 1782, 1788, 1794, 1800, 1806, -+ 1812, 1818, 1824, 1830, 1836, 1841, 1845, 1849, 1854, 1858, 1862, 1866, -+ 1870, 1874, 1878, 1882, 1886, 1890, 1894, 1899, 1905, 1909, 1913, 1917, -+ 1921, 1925, 1929, 1933, 1938, 1943, 1948, 1953, 1957, 1961, 1965, 1969, -+ 1973, 1977, 1981, 1985, 1989, 1993, 1999, 2005, 2010, 2016, 2022, 2028, -+ 2033, 2039, 2044, 2051, 2055, 2060, 2065, 2070, 2075, 2082, 2091, 2095, -+ 2099, 2103, 2107, 2111, 2115, 2119, 2123, 2127, 2131, 2135, 2139, 2143, -+ 2147, 2151, 2155, 2161, 2165, 2169, 2173, 2179, 2184, 2188, 2192, 2196, -+ 2200, 2204, 2208, 2212, 2216, 2220, 2224, 2229, 2233, 2237, 2242, 2247, -+ 2251, 2257, 2262, 2266, 2270, 2274, 2278, 2282, 2286, 2290, 2295, 2300, -+ 2304, 2307, 2309, 2311, 2313, 2315, 2317, 2319, 2321, 2323, 2325, 2327, -+ 2329, 2331, 2333, 2335, 2337, 2339, 2342, 2345, 2348, 2351, 2354, 2357, -+ 2360, 2363, 2366, 2369, 2372, 2375, 2378, 2381, 2384, 2387, 2390, 2393, -+ 2396, 2399, 2402, 2405, 2408, 2411, 2414, 2416, 2419, 2422, 2425, 2428, -+ 2431, 2434, 2437, 2440, 2443, 2446, 2449, 2452, 2455, 2458, 2461, 2464, -+ 2467, 2470, 2473, 2476, 2479, 2482, 2485, 2488, 2491, 2494, 2497, 2500, -+ 2503, 2506, 2509, 2512, 2515, 2518, 2521, 2524, 2527, 2530, 2533, 2536, -+ 2539, 2542, 2545, 2548, 2551, 2554, 2557, 2560, 2563, 2566, 2569, 2572, -+ 2575, 2578, 2581, 2584, 2587, 2590, 2593, 2596, 2599, 2602, 2605, 2608, -+ 2611, 2614, 2617, 2620, 2623, 2626, 2629, 2632, 2635, 2638, 2641, 2644, -+ 2647, 2650, 2653, 2656, 2659, 2662, 2665, 2668, 2671, 2674, 2677, 2680, -+ 2683, 2686, 2689, 2692, 2695, 2698, 2701, 2704, 2707, 2710, 2713, 2716, -+ 2719, 2722, 2725, 2728, 2731, 2734, 2737, 2740, 2743, 2746, 2749, 2752, -+ 2755, 2758, 2761, 2764, 2767, 2770, 2773, 2776, 2779, 2782, 2785, 2788, -+ 2791, 2794, 2797, 2800, 2803, 2806, 2809, 2812, 2815, 2818, 2821, 2824, -+ 2827, 2830, 2833, 2836, 2839, 2842, 2845, 2848, 2851, 2854, 2857, 2860, -+ 2863, 2866, 2869, 2872, 2875, 2878, 2881, 2884, 2887, 2890, 2893, 2896, -+ 2899, 2902, 2905, 2908, 2911, 2914, 2917, 2920, 2923, 2926, 2929, 2932, -+ 2935, 2938, 2941, 2944, 2947, 2950, 2953, 2956, 2959, 2962, 2965, 2968, -+ 2971, 2974, 2977, 2980, 2983, 2986, 2989, 2992, 2995, 2998, 3001, 3004, -+ 3007, 3010, 3013, 3016, 3019, 3022, 3025, 3028, 3031, 3034, 3037, 3040, -+ 3043, 3046, 3049, 3052, 3055, 3058, 3061, 3064, 3067, 3070, 3073, 3076, -+ 3079, 3082, 3085, 3088, 3091, 3094, 3097, 3100, 3103, 3106, 3109, 3112, -+ 3115, 3118, 3121, 3124, 3127, 3130, 3133, 3136, 3139, 3142, 3145, 3148, -+ 3151, 3154, 3157, 3160, 3163, 3166, 3169, 3172, 3175, 3178, 3181, 3184, -+ 3187, 3190, 3193, 3196, 3199, 3202, 3205, 3208, 3211, 3214, 3217, 3220, -+ 3223, 3226, 3229, 3232, 3235, 3238, 3241, 3244, 3247, 3250, 3253, 3256, -+ 3259, 3262, 3265, 3268, 3271, 3274, 3277, 3280, 3283, 3286, 3289, 3292, -+ 3295, 3298, 3301, 3304, 3307, 3310, 3313, 3316, 3319, 3322, 3325, 3328, -+ 3331, 3334, 3337, 3340, 3343, 3346, 3349, 3352, 3355, 3358, 3361, 3364, -+ 3367, 3370, 3373, 3376, 3379, 3382, 3385, 3388, 3391, 3394, 3397, 3400, -+ 3403, 3406, 3409, 3412, 3415, 3418, 3421, 3424, 3427, 3430, 3433, 3436, -+ 3439, 3442, 3445, 3448, 3451, 3454, 3457, 3460, 3463, 3466, 3469, 3472, -+ 3475, 3478, 3481, 3484, 3487, 3490, 3493, 3496, 3499, 3502, 3505, 3508, -+ 3511, 3514, 3517, 3520, 3523, 3526, 3529, 3532, 3535, 3538, 3541, 3544, -+ 3547, 3550, 3553, 3556, 3559, 3562, 3565, 3568, 3571, 3574, 3577, 3580, -+ 3583, 3586, 3589, 3592, 3595, 3598, 3601, 3604, 3607, 3610, 3613, 3616, -+ 3619, 3622, 3625, 3628, 3631, 3634, 3637, 3640, 3643, 3646, 3649, 3652, -+ 3655, 3658, 3661, 3664, 3667, 3670, 3673, 3676, 3679, 3682, 3685, 3688, -+ 3691, 3694, 3697, 3700, 3703, 3706, 3709, 3712, 3715, 3718, 3721, 3724, -+ 3727, 3730, 3733, 3736, 3739, 3742, 3745, 3748, 3751, 3754, 3757, 3760, -+ 3763, 3766, 3769, 3772, 3775, 3778, 3781, 3784, 3787, 3790, 3793, 3796, -+ 3799, 3802, 3805, 3808, 3811, 3814, 3817, 3820, 3823, 3826, 3829, 3832, -+ 3835, 3838, 3841, 3844, 3847, 3850, 3853, 3856, 3859, 3862, 3865, 3868, -+ 3871, 3874, 3877, 3880, 3883, 3886, 3889, 3892, 3895, 3898, 3901, 3904, -+ 3907, 3910, 3913, 3916, 3919, 3922, 3925, 3928, 3931, 3934, 3937, 3940, -+ 3943, 3946, 3949, 3952, 3955, 3958, 3961, 3964, 3967, 3970, 3973, 3976, -+ 3979, 3982, 3985, 3988, 3991, 3994, 3997, 4000, 4003, 4006, 4009, 4012, -+ 4015, 4018, 4021, 4024, 4027, 4030, 4033, 4036, 4039, 4042, 4045, 4048, -+ 4051, 4054, 4057, 4060, 4063, 4066, 4069, 4072, 4075, 4078, 4081, 4084, -+ 4087, 4090, 4093, 4096, 4099, 4102, 4105, 4108, 4111, 4114, 4117, 4120, -+ 4123, 4126, 4129, 4132, 4135, 4138, 4141, 4144, 4147, 4150, 4153, 4156, -+ 4159, 4162, 4165, 4168, 4171, 4174, 4177, 4180, 4183, 4186, 4189, 4192, -+ 4195, 4198, 4201, 4204, 4207, 4210, 4213, 4216, 4219, 4222, 4225, 4228, -+ 4231, 4234, 4237, 4240, 4243, 4246, 4249, 4252, 4255, 4258, 4261, 4264, -+ 4267, 4270, 4273, 4276, 4279, 4282, 4285, 4288, 4291, 4294, 4297, 4300, -+ 4303, 4306, 4309, 4312, 4315, 4318, 4321, 4324, 4327, 4330, 4333, 4336, -+ 4339, 4342, 4345, 4348, 4351, 4354, 4357, 4360, 4363, 4366, 4369, 4372, -+ 4375, 4378, 4381, 4384, 4387, 4390, 4393, 4396, 4399, 4402, 4405, 4408, -+ 4411, 4414, 4417, 4420, 4423, 4426, 4429, 4432, 4435, 4438, 4441, 4444, -+ 4447, 4450, 4453, 4456, 4459, 4462, 4465, 4468, 4471, 4474, 4477, 4480, -+ 4483, 4486, 4489, 4492, 4495, 4498, 4501, 4504, 4507, 4510, 4513, 4516, -+ 4519, 4522, 4525, 4528, 4531, 4534, 4537, 4540, 4543, 4546, 4549, 4552, -+ 4555, 4558, 4561, 4564, 4567, 4570, 4573, 4576, 4579, 4582, 4585, 4588, -+ 4591, 4594, 4597, 4600, 4603, 4606, 4609, 4612, 4615, 4618, 4621, 4624, -+ 4627, 4630, 4633, 4636, 4639, 4642, 4645, 4648, 4651, 4654, 4657, 4660, -+ 4663, 4666, 4669, 4672, 4675, 4678, 4681, 4684, 4687, 4690, 4693, 4696, -+ 4699, 4702, 4705, 4708, 4711, 4714, 4717, 4720, 4723, 4726, 4729, 4732, -+ 4735, 4738, 4741, 4744, 4747, 4750, 4753, 4756, 4759, 4762, 4765, 4768, -+ 4771, 4774, 4777, 4780, 4783, 4786, 4789, 4792, 4795, 4798 - }; - static const wchar_t translit_to_tbl[] = - L" \0" L"\0" L"(C)\0" L"\0" L"<<\0" L"\0" L"-\0" L"\0" L"(R)\0" L"\0" L"u\0" -@@ -594,73 +594,73 @@ static const wchar_t translit_to_tbl[] = - L"\0" L"..\0" L"\0" L"...\0" L"\0" L" \0" L"\0" L"`\0" L"\0" L"``\0" L"\0" - L"```\0" L"\0" L"<\0" L"\0" L">\0" L"\0" L"!!\0" L"\0" L"/\0" L"\0" L"??\0" - L"\0" L"?!\0" L"\0" L"!?\0" L"\0" L" \0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" -- L"\0" L"\0" L"\0" L"Rs\0" L"\0" L"EUR\0" L"\0" L"a/c\0" L"\0" L"a/s\0" L"\0" -- L"C\0" L"\0" L"c/o\0" L"\0" L"c/u\0" L"\0" L"g\0" L"\0" L"H\0" L"\0" L"H\0" -- L"\0" L"H\0" L"\0" L"h\0" L"\0" L"I\0" L"\0" L"I\0" L"\0" L"L\0" L"\0" -- L"l\0" L"\0" L"N\0" L"\0" L"No\0" L"\0" L"P\0" L"\0" L"Q\0" L"\0" L"R\0" -- L"\0" L"R\0" L"\0" L"R\0" L"\0" L"TEL\0" L"\0" L"(TM)\0" L"\0" L"Z\0" L"\0" -- L"Ohm\0" L"\0" L"Z\0" L"\0" L"B\0" L"\0" L"C\0" L"\0" L"e\0" L"\0" L"e\0" -- L"\0" L"E\0" L"\0" L"F\0" L"\0" L"M\0" L"\0" L"o\0" L"\0" L"i\0" L"\0" -- L"D\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"i\0" L"\0" L"j\0" L"\0" L" 1/3 \0" -- L"\0" L" 2/3 \0" L"\0" L" 1/5 \0" L"\0" L" 2/5 \0" L"\0" L" 3/5 \0" L"\0" -- L" 4/5 \0" L"\0" L" 1/6 \0" L"\0" L" 5/6 \0" L"\0" L" 1/8 \0" L"\0" -- L" 3/8 \0" L"\0" L" 5/8 \0" L"\0" L" 7/8 \0" L"\0" L" 1/\0" L"\0" L"I\0" -- L"\0" L"II\0" L"\0" L"III\0" L"\0" L"IV\0" L"\0" L"V\0" L"\0" L"VI\0" L"\0" -- L"VII\0" L"\0" L"VIII\0" L"\0" L"IX\0" L"\0" L"X\0" L"\0" L"XI\0" L"\0" -- L"XII\0" L"\0" L"L\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"M\0" L"\0" L"i\0" -- L"\0" L"ii\0" L"\0" L"iii\0" L"\0" L"iv\0" L"\0" L"v\0" L"\0" L"vi\0" L"\0" -- L"vii\0" L"\0" L"viii\0" L"\0" L"ix\0" L"\0" L"x\0" L"\0" L"xi\0" L"\0" -- L"xii\0" L"\0" L"l\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"m\0" L"\0" L"<-\0" -- L"\0" L"->\0" L"\0" L"<->\0" L"\0" L"<=\0" L"\0" L"=>\0" L"\0" L"<=>\0" -- L"\0" L"-\0" L"\0" L"/\0" L"\0" L"\\0" L"\0" L"*\0" L"\0" L"|\0" L"\0" -- L":\0" L"\0" L"~\0" L"\0" L"<=\0" L"\0" L">=\0" L"\0" L"<<\0" L"\0" L">>\0" -- L"\0" L"<<<\0" L"\0" L">>>\0" L"\0" L"NUL\0" L"\0" L"SOH\0" L"\0" L"STX\0" -- L"\0" L"ETX\0" L"\0" L"EOT\0" L"\0" L"ENQ\0" L"\0" L"ACK\0" L"\0" L"BEL\0" -- L"\0" L"BS\0" L"\0" L"HT\0" L"\0" L"LF\0" L"\0" L"VT\0" L"\0" L"FF\0" L"\0" -- L"CR\0" L"\0" L"SO\0" L"\0" L"SI\0" L"\0" L"DLE\0" L"\0" L"DC1\0" L"\0" -- L"DC2\0" L"\0" L"DC3\0" L"\0" L"DC4\0" L"\0" L"NAK\0" L"\0" L"SYN\0" L"\0" -- L"ETB\0" L"\0" L"CAN\0" L"\0" L"EM\0" L"\0" L"SUB\0" L"\0" L"ESC\0" L"\0" -- L"FS\0" L"\0" L"GS\0" L"\0" L"RS\0" L"\0" L"US\0" L"\0" L"SP\0" L"\0" -- L"DEL\0" L"\0" L"_\0" L"\0" L"NL\0" L"\0" L"(1)\0" L"\0" L"(2)\0" L"\0" -- L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" L"(6)\0" L"\0" L"(7)\0" L"\0" -- L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" L"(11)\0" L"\0" L"(12)\0" -- L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" L"\0" L"(16)\0" L"\0" -- L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" L"(20)\0" L"\0" L"(1)\0" -- L"\0" L"(2)\0" L"\0" L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" L"(6)\0" -- L"\0" L"(7)\0" L"\0" L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" L"(11)\0" -- L"\0" L"(12)\0" L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" L"\0" -- L"(16)\0" L"\0" L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" L"(20)\0" -- L"\0" L"1.\0" L"\0" L"2.\0" L"\0" L"3.\0" L"\0" L"4.\0" L"\0" L"5.\0" L"\0" -- L"6.\0" L"\0" L"7.\0" L"\0" L"8.\0" L"\0" L"9.\0" L"\0" L"10.\0" L"\0" -- L"11.\0" L"\0" L"12.\0" L"\0" L"13.\0" L"\0" L"14.\0" L"\0" L"15.\0" L"\0" -- L"16.\0" L"\0" L"17.\0" L"\0" L"18.\0" L"\0" L"19.\0" L"\0" L"20.\0" L"\0" -- L"(a)\0" L"\0" L"(b)\0" L"\0" L"(c)\0" L"\0" L"(d)\0" L"\0" L"(e)\0" L"\0" -- L"(f)\0" L"\0" L"(g)\0" L"\0" L"(h)\0" L"\0" L"(i)\0" L"\0" L"(j)\0" L"\0" -- L"(k)\0" L"\0" L"(l)\0" L"\0" L"(m)\0" L"\0" L"(n)\0" L"\0" L"(o)\0" L"\0" -- L"(p)\0" L"\0" L"(q)\0" L"\0" L"(r)\0" L"\0" L"(s)\0" L"\0" L"(t)\0" L"\0" -- L"(u)\0" L"\0" L"(v)\0" L"\0" L"(w)\0" L"\0" L"(x)\0" L"\0" L"(y)\0" L"\0" -- L"(z)\0" L"\0" L"(A)\0" L"\0" L"(B)\0" L"\0" L"(C)\0" L"\0" L"(D)\0" L"\0" -- L"(E)\0" L"\0" L"(F)\0" L"\0" L"(G)\0" L"\0" L"(H)\0" L"\0" L"(I)\0" L"\0" -- L"(J)\0" L"\0" L"(K)\0" L"\0" L"(L)\0" L"\0" L"(M)\0" L"\0" L"(N)\0" L"\0" -- L"(O)\0" L"\0" L"(P)\0" L"\0" L"(Q)\0" L"\0" L"(R)\0" L"\0" L"(S)\0" L"\0" -- L"(T)\0" L"\0" L"(U)\0" L"\0" L"(V)\0" L"\0" L"(W)\0" L"\0" L"(X)\0" L"\0" -- L"(Y)\0" L"\0" L"(Z)\0" L"\0" L"(a)\0" L"\0" L"(b)\0" L"\0" L"(c)\0" L"\0" -- L"(d)\0" L"\0" L"(e)\0" L"\0" L"(f)\0" L"\0" L"(g)\0" L"\0" L"(h)\0" L"\0" -- L"(i)\0" L"\0" L"(j)\0" L"\0" L"(k)\0" L"\0" L"(l)\0" L"\0" L"(m)\0" L"\0" -- L"(n)\0" L"\0" L"(o)\0" L"\0" L"(p)\0" L"\0" L"(q)\0" L"\0" L"(r)\0" L"\0" -- L"(s)\0" L"\0" L"(t)\0" L"\0" L"(u)\0" L"\0" L"(v)\0" L"\0" L"(w)\0" L"\0" -- L"(x)\0" L"\0" L"(y)\0" L"\0" L"(z)\0" L"\0" L"(0)\0" L"\0" L"-\0" L"\0" -- L"|\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" -- L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"o\0" L"\0" -- L"::=\0" L"\0" L"==\0" L"\0" L"===\0" L"\0" L" \0" L"\0" L"=\0" L"\0" -- L"(21)\0" L"\0" L"(22)\0" L"\0" L"(23)\0" L"\0" L"(24)\0" L"\0" L"(25)\0" -- L"\0" L"(26)\0" L"\0" L"(27)\0" L"\0" L"(28)\0" L"\0" L"(29)\0" L"\0" -- L"(30)\0" L"\0" L"(31)\0" L"\0" L"(32)\0" L"\0" L"(33)\0" L"\0" L"(34)\0" -- L"\0" L"(35)\0" L"\0" L"(36)\0" L"\0" L"(37)\0" L"\0" L"(38)\0" L"\0" -- L"(39)\0" L"\0" L"(40)\0" L"\0" L"(41)\0" L"\0" L"(42)\0" L"\0" L"(43)\0" -- L"\0" L"(44)\0" L"\0" L"(45)\0" L"\0" L"(46)\0" L"\0" L"(47)\0" L"\0" -- L"(48)\0" L"\0" L"(49)\0" L"\0" L"(50)\0" L"\0" L"hPa\0" L"\0" L"da\0" L"\0" -- L"AU\0" L"\0" L"bar\0" L"\0" L"oV\0" L"\0" L"pc\0" L"\0" L"pA\0" L"\0" -+ L"\0" L"\0" L"\0" L"Rs\0" L"\0" L"EUR\0" L"\0" L"INR\0" L"\0" L"a/c\0" L"\0" -+ L"a/s\0" L"\0" L"C\0" L"\0" L"c/o\0" L"\0" L"c/u\0" L"\0" L"g\0" L"\0" -+ L"H\0" L"\0" L"H\0" L"\0" L"H\0" L"\0" L"h\0" L"\0" L"I\0" L"\0" L"I\0" -+ L"\0" L"L\0" L"\0" L"l\0" L"\0" L"N\0" L"\0" L"No\0" L"\0" L"P\0" L"\0" -+ L"Q\0" L"\0" L"R\0" L"\0" L"R\0" L"\0" L"R\0" L"\0" L"TEL\0" L"\0" L"(TM)\0" -+ L"\0" L"Z\0" L"\0" L"Ohm\0" L"\0" L"Z\0" L"\0" L"B\0" L"\0" L"C\0" L"\0" -+ L"e\0" L"\0" L"e\0" L"\0" L"E\0" L"\0" L"F\0" L"\0" L"M\0" L"\0" L"o\0" -+ L"\0" L"i\0" L"\0" L"D\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"i\0" L"\0" -+ L"j\0" L"\0" L" 1/3 \0" L"\0" L" 2/3 \0" L"\0" L" 1/5 \0" L"\0" L" 2/5 \0" -+ L"\0" L" 3/5 \0" L"\0" L" 4/5 \0" L"\0" L" 1/6 \0" L"\0" L" 5/6 \0" L"\0" -+ L" 1/8 \0" L"\0" L" 3/8 \0" L"\0" L" 5/8 \0" L"\0" L" 7/8 \0" L"\0" L" 1/\0" -+ L"\0" L"I\0" L"\0" L"II\0" L"\0" L"III\0" L"\0" L"IV\0" L"\0" L"V\0" L"\0" -+ L"VI\0" L"\0" L"VII\0" L"\0" L"VIII\0" L"\0" L"IX\0" L"\0" L"X\0" L"\0" -+ L"XI\0" L"\0" L"XII\0" L"\0" L"L\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"M\0" -+ L"\0" L"i\0" L"\0" L"ii\0" L"\0" L"iii\0" L"\0" L"iv\0" L"\0" L"v\0" L"\0" -+ L"vi\0" L"\0" L"vii\0" L"\0" L"viii\0" L"\0" L"ix\0" L"\0" L"x\0" L"\0" -+ L"xi\0" L"\0" L"xii\0" L"\0" L"l\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"m\0" -+ L"\0" L"<-\0" L"\0" L"->\0" L"\0" L"<->\0" L"\0" L"<=\0" L"\0" L"=>\0" L"\0" -+ L"<=>\0" L"\0" L"-\0" L"\0" L"/\0" L"\0" L"\\0" L"\0" L"*\0" L"\0" L"|\0" -+ L"\0" L":\0" L"\0" L"~\0" L"\0" L"<=\0" L"\0" L">=\0" L"\0" L"<<\0" L"\0" -+ L">>\0" L"\0" L"<<<\0" L"\0" L">>>\0" L"\0" L"NUL\0" L"\0" L"SOH\0" L"\0" -+ L"STX\0" L"\0" L"ETX\0" L"\0" L"EOT\0" L"\0" L"ENQ\0" L"\0" L"ACK\0" L"\0" -+ L"BEL\0" L"\0" L"BS\0" L"\0" L"HT\0" L"\0" L"LF\0" L"\0" L"VT\0" L"\0" -+ L"FF\0" L"\0" L"CR\0" L"\0" L"SO\0" L"\0" L"SI\0" L"\0" L"DLE\0" L"\0" -+ L"DC1\0" L"\0" L"DC2\0" L"\0" L"DC3\0" L"\0" L"DC4\0" L"\0" L"NAK\0" L"\0" -+ L"SYN\0" L"\0" L"ETB\0" L"\0" L"CAN\0" L"\0" L"EM\0" L"\0" L"SUB\0" L"\0" -+ L"ESC\0" L"\0" L"FS\0" L"\0" L"GS\0" L"\0" L"RS\0" L"\0" L"US\0" L"\0" -+ L"SP\0" L"\0" L"DEL\0" L"\0" L"_\0" L"\0" L"NL\0" L"\0" L"(1)\0" L"\0" -+ L"(2)\0" L"\0" L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" L"(6)\0" L"\0" -+ L"(7)\0" L"\0" L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" L"(11)\0" L"\0" -+ L"(12)\0" L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" L"\0" L"(16)\0" -+ L"\0" L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" L"(20)\0" L"\0" -+ L"(1)\0" L"\0" L"(2)\0" L"\0" L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" -+ L"(6)\0" L"\0" L"(7)\0" L"\0" L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" -+ L"(11)\0" L"\0" L"(12)\0" L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" -+ L"\0" L"(16)\0" L"\0" L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" -+ L"(20)\0" L"\0" L"1.\0" L"\0" L"2.\0" L"\0" L"3.\0" L"\0" L"4.\0" L"\0" -+ L"5.\0" L"\0" L"6.\0" L"\0" L"7.\0" L"\0" L"8.\0" L"\0" L"9.\0" L"\0" -+ L"10.\0" L"\0" L"11.\0" L"\0" L"12.\0" L"\0" L"13.\0" L"\0" L"14.\0" L"\0" -+ L"15.\0" L"\0" L"16.\0" L"\0" L"17.\0" L"\0" L"18.\0" L"\0" L"19.\0" L"\0" -+ L"20.\0" L"\0" L"(a)\0" L"\0" L"(b)\0" L"\0" L"(c)\0" L"\0" L"(d)\0" L"\0" -+ L"(e)\0" L"\0" L"(f)\0" L"\0" L"(g)\0" L"\0" L"(h)\0" L"\0" L"(i)\0" L"\0" -+ L"(j)\0" L"\0" L"(k)\0" L"\0" L"(l)\0" L"\0" L"(m)\0" L"\0" L"(n)\0" L"\0" -+ L"(o)\0" L"\0" L"(p)\0" L"\0" L"(q)\0" L"\0" L"(r)\0" L"\0" L"(s)\0" L"\0" -+ L"(t)\0" L"\0" L"(u)\0" L"\0" L"(v)\0" L"\0" L"(w)\0" L"\0" L"(x)\0" L"\0" -+ L"(y)\0" L"\0" L"(z)\0" L"\0" L"(A)\0" L"\0" L"(B)\0" L"\0" L"(C)\0" L"\0" -+ L"(D)\0" L"\0" L"(E)\0" L"\0" L"(F)\0" L"\0" L"(G)\0" L"\0" L"(H)\0" L"\0" -+ L"(I)\0" L"\0" L"(J)\0" L"\0" L"(K)\0" L"\0" L"(L)\0" L"\0" L"(M)\0" L"\0" -+ L"(N)\0" L"\0" L"(O)\0" L"\0" L"(P)\0" L"\0" L"(Q)\0" L"\0" L"(R)\0" L"\0" -+ L"(S)\0" L"\0" L"(T)\0" L"\0" L"(U)\0" L"\0" L"(V)\0" L"\0" L"(W)\0" L"\0" -+ L"(X)\0" L"\0" L"(Y)\0" L"\0" L"(Z)\0" L"\0" L"(a)\0" L"\0" L"(b)\0" L"\0" -+ L"(c)\0" L"\0" L"(d)\0" L"\0" L"(e)\0" L"\0" L"(f)\0" L"\0" L"(g)\0" L"\0" -+ L"(h)\0" L"\0" L"(i)\0" L"\0" L"(j)\0" L"\0" L"(k)\0" L"\0" L"(l)\0" L"\0" -+ L"(m)\0" L"\0" L"(n)\0" L"\0" L"(o)\0" L"\0" L"(p)\0" L"\0" L"(q)\0" L"\0" -+ L"(r)\0" L"\0" L"(s)\0" L"\0" L"(t)\0" L"\0" L"(u)\0" L"\0" L"(v)\0" L"\0" -+ L"(w)\0" L"\0" L"(x)\0" L"\0" L"(y)\0" L"\0" L"(z)\0" L"\0" L"(0)\0" L"\0" -+ L"-\0" L"\0" L"|\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" -+ L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" -+ L"o\0" L"\0" L"::=\0" L"\0" L"==\0" L"\0" L"===\0" L"\0" L" \0" L"\0" L"=\0" -+ L"\0" L"(21)\0" L"\0" L"(22)\0" L"\0" L"(23)\0" L"\0" L"(24)\0" L"\0" -+ L"(25)\0" L"\0" L"(26)\0" L"\0" L"(27)\0" L"\0" L"(28)\0" L"\0" L"(29)\0" -+ L"\0" L"(30)\0" L"\0" L"(31)\0" L"\0" L"(32)\0" L"\0" L"(33)\0" L"\0" -+ L"(34)\0" L"\0" L"(35)\0" L"\0" L"(36)\0" L"\0" L"(37)\0" L"\0" L"(38)\0" -+ L"\0" L"(39)\0" L"\0" L"(40)\0" L"\0" L"(41)\0" L"\0" L"(42)\0" L"\0" -+ L"(43)\0" L"\0" L"(44)\0" L"\0" L"(45)\0" L"\0" L"(46)\0" L"\0" L"(47)\0" -+ L"\0" L"(48)\0" L"\0" L"(49)\0" L"\0" L"(50)\0" L"\0" L"hPa\0" L"\0" L"da\0" -+ L"\0" L"AU\0" L"\0" L"bar\0" L"\0" L"oV\0" L"\0" L"pc\0" L"\0" L"pA\0" L"\0" - L"nA\0" L"\0" L"uA\0" L"\0" L"mA\0" L"\0" L"kA\0" L"\0" L"KB\0" L"\0" - L"MB\0" L"\0" L"GB\0" L"\0" L"cal\0" L"\0" L"kcal\0" L"\0" L"pF\0" L"\0" - L"nF\0" L"\0" L"uF\0" L"\0" L"ug\0" L"\0" L"mg\0" L"\0" L"kg\0" L"\0" -Index: glibc-2.12-2-gc4ccff1/locale/C-translit.h.in -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/locale/C-translit.h.in -+++ glibc-2.12-2-gc4ccff1/locale/C-translit.h.in -@@ -105,6 +105,7 @@ - "\x2063" "" /* <U2063> INVISIBLE SEPARATOR */ - "\x20a8" "Rs" /* <U20A8> RUPEE SIGN */ - "\x20ac" "EUR" /* <U20AC> EURO SIGN */ -+"\x20b9" "INR" /* <U20B9> INDIAN RUPEE SIGN */ - "\x2100" "a/c" /* <U2100> ACCOUNT OF */ - "\x2101" "a/s" /* <U2101> ADDRESSED TO THE SUBJECT */ - "\x2102" "C" /* <U2102> DOUBLE-STRUCK CAPITAL C */ -Index: glibc-2.12-2-gc4ccff1/localedata/charmaps/UTF-8 -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/charmaps/UTF-8 -+++ glibc-2.12-2-gc4ccff1/localedata/charmaps/UTF-8 -@@ -1312,6 +1312,10 @@ CHARMAP - <U0521> /xd4/xa1 CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK - <U0522> /xd4/xa2 CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK - <U0523> /xd4/xa3 CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK -+<U0524> /xd4/xa4 CYRILLIC CAPITAL LETTER PE WITH DESCENDER -+<U0525> /xd4/xa5 CYRILLIC SMALL LETTER PE WITH DESCENDER -+<U0526> /xd4/xa6 CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER -+<U0527> /xd4/xa7 CYRILLIC SMALL LETTER SHHA WITH DESCENDER - <U0531> /xd4/xb1 ARMENIAN CAPITAL LETTER AYB - <U0532> /xd4/xb2 ARMENIAN CAPITAL LETTER BEN - <U0533> /xd4/xb3 ARMENIAN CAPITAL LETTER GIM -@@ -1513,6 +1517,7 @@ CHARMAP - <U061B> /xd8/x9b ARABIC SEMICOLON - <U061E> /xd8/x9e ARABIC TRIPLE DOT PUNCTUATION MARK - <U061F> /xd8/x9f ARABIC QUESTION MARK -+<U0620> /xd8/xa0 ARABIC LETTER KASHMIRI YEH - <U0621> /xd8/xa1 ARABIC LETTER HAMZA - <U0622> /xd8/xa2 ARABIC LETTER ALEF WITH MADDA ABOVE - <U0623> /xd8/xa3 ARABIC LETTER ALEF WITH HAMZA ABOVE -@@ -1575,6 +1580,7 @@ CHARMAP - <U065C> /xd9/x9c ARABIC VOWEL SIGN DOT BELOW - <U065D> /xd9/x9d ARABIC REVERSED DAMMA - <U065E> /xd9/x9e ARABIC FATHA WITH TWO DOTS -+<U065F> /xd9/x9f ARABIC WAVY HAMZA BELOW - <U0660> /xd9/xa0 ARABIC-INDIC DIGIT ZERO - <U0661> /xd9/xa1 ARABIC-INDIC DIGIT ONE - <U0662> /xd9/xa2 ARABIC-INDIC DIGIT TWO -@@ -1969,6 +1975,97 @@ CHARMAP - <U07F8> /xdf/xb8 NKO COMMA - <U07F9> /xdf/xb9 NKO EXCLAMATION MARK - <U07FA> /xdf/xba NKO LAJANYALAN -+<U0800> /xe0/xa0/x80 SAMARITAN LETTER ALAF -+<U0801> /xe0/xa0/x81 SAMARITAN LETTER BIT -+<U0802> /xe0/xa0/x82 SAMARITAN LETTER GAMAN -+<U0803> /xe0/xa0/x83 SAMARITAN LETTER DALAT -+<U0804> /xe0/xa0/x84 SAMARITAN LETTER IY -+<U0805> /xe0/xa0/x85 SAMARITAN LETTER BAA -+<U0806> /xe0/xa0/x86 SAMARITAN LETTER ZEN -+<U0807> /xe0/xa0/x87 SAMARITAN LETTER IT -+<U0808> /xe0/xa0/x88 SAMARITAN LETTER TIT -+<U0809> /xe0/xa0/x89 SAMARITAN LETTER YUT -+<U080A> /xe0/xa0/x8a SAMARITAN LETTER KAAF -+<U080B> /xe0/xa0/x8b SAMARITAN LETTER LABAT -+<U080C> /xe0/xa0/x8c SAMARITAN LETTER MIM -+<U080D> /xe0/xa0/x8d SAMARITAN LETTER NUN -+<U080E> /xe0/xa0/x8e SAMARITAN LETTER SINGAAT -+<U080F> /xe0/xa0/x8f SAMARITAN LETTER IN -+<U0810> /xe0/xa0/x90 SAMARITAN LETTER FI -+<U0811> /xe0/xa0/x91 SAMARITAN LETTER TSAADIY -+<U0812> /xe0/xa0/x92 SAMARITAN LETTER QUF -+<U0813> /xe0/xa0/x93 SAMARITAN LETTER RISH -+<U0814> /xe0/xa0/x94 SAMARITAN LETTER SHAN -+<U0815> /xe0/xa0/x95 SAMARITAN LETTER TAAF -+<U0816> /xe0/xa0/x96 SAMARITAN MARK IN -+<U0817> /xe0/xa0/x97 SAMARITAN MARK IN-ALAF -+<U0818> /xe0/xa0/x98 SAMARITAN MARK OCCLUSION -+<U0819> /xe0/xa0/x99 SAMARITAN MARK DAGESH -+<U081A> /xe0/xa0/x9a SAMARITAN MODIFIER LETTER EPENTHETIC YUT -+<U081B> /xe0/xa0/x9b SAMARITAN MARK EPENTHETIC YUT -+<U081C> /xe0/xa0/x9c SAMARITAN VOWEL SIGN LONG E -+<U081D> /xe0/xa0/x9d SAMARITAN VOWEL SIGN E -+<U081E> /xe0/xa0/x9e SAMARITAN VOWEL SIGN OVERLONG AA -+<U081F> /xe0/xa0/x9f SAMARITAN VOWEL SIGN LONG AA -+<U0820> /xe0/xa0/xa0 SAMARITAN VOWEL SIGN AA -+<U0821> /xe0/xa0/xa1 SAMARITAN VOWEL SIGN OVERLONG A -+<U0822> /xe0/xa0/xa2 SAMARITAN VOWEL SIGN LONG A -+<U0823> /xe0/xa0/xa3 SAMARITAN VOWEL SIGN A -+<U0824> /xe0/xa0/xa4 SAMARITAN MODIFIER LETTER SHORT A -+<U0825> /xe0/xa0/xa5 SAMARITAN VOWEL SIGN SHORT A -+<U0826> /xe0/xa0/xa6 SAMARITAN VOWEL SIGN LONG U -+<U0827> /xe0/xa0/xa7 SAMARITAN VOWEL SIGN U -+<U0828> /xe0/xa0/xa8 SAMARITAN MODIFIER LETTER I -+<U0829> /xe0/xa0/xa9 SAMARITAN VOWEL SIGN LONG I -+<U082A> /xe0/xa0/xaa SAMARITAN VOWEL SIGN I -+<U082B> /xe0/xa0/xab SAMARITAN VOWEL SIGN O -+<U082C> /xe0/xa0/xac SAMARITAN VOWEL SIGN SUKUN -+<U082D> /xe0/xa0/xad SAMARITAN MARK NEQUDAA -+<U0830> /xe0/xa0/xb0 SAMARITAN PUNCTUATION NEQUDAA -+<U0831> /xe0/xa0/xb1 SAMARITAN PUNCTUATION AFSAAQ -+<U0832> /xe0/xa0/xb2 SAMARITAN PUNCTUATION ANGED -+<U0833> /xe0/xa0/xb3 SAMARITAN PUNCTUATION BAU -+<U0834> /xe0/xa0/xb4 SAMARITAN PUNCTUATION ATMAAU -+<U0835> /xe0/xa0/xb5 SAMARITAN PUNCTUATION SHIYYAALAA -+<U0836> /xe0/xa0/xb6 SAMARITAN ABBREVIATION MARK -+<U0837> /xe0/xa0/xb7 SAMARITAN PUNCTUATION MELODIC QITSA -+<U0838> /xe0/xa0/xb8 SAMARITAN PUNCTUATION ZIQAA -+<U0839> /xe0/xa0/xb9 SAMARITAN PUNCTUATION QITSA -+<U083A> /xe0/xa0/xba SAMARITAN PUNCTUATION ZAEF -+<U083B> /xe0/xa0/xbb SAMARITAN PUNCTUATION TURU -+<U083C> /xe0/xa0/xbc SAMARITAN PUNCTUATION ARKAANU -+<U083D> /xe0/xa0/xbd SAMARITAN PUNCTUATION SOF MASHFAAT -+<U083E> /xe0/xa0/xbe SAMARITAN PUNCTUATION ANNAAU -+<U0840> /xe0/xa1/x80 MANDAIC LETTER HALQA -+<U0841> /xe0/xa1/x81 MANDAIC LETTER AB -+<U0842> /xe0/xa1/x82 MANDAIC LETTER AG -+<U0843> /xe0/xa1/x83 MANDAIC LETTER AD -+<U0844> /xe0/xa1/x84 MANDAIC LETTER AH -+<U0845> /xe0/xa1/x85 MANDAIC LETTER USHENNA -+<U0846> /xe0/xa1/x86 MANDAIC LETTER AZ -+<U0847> /xe0/xa1/x87 MANDAIC LETTER IT -+<U0848> /xe0/xa1/x88 MANDAIC LETTER ATT -+<U0849> /xe0/xa1/x89 MANDAIC LETTER AKSA -+<U084A> /xe0/xa1/x8a MANDAIC LETTER AK -+<U084B> /xe0/xa1/x8b MANDAIC LETTER AL -+<U084C> /xe0/xa1/x8c MANDAIC LETTER AM -+<U084D> /xe0/xa1/x8d MANDAIC LETTER AN -+<U084E> /xe0/xa1/x8e MANDAIC LETTER AS -+<U084F> /xe0/xa1/x8f MANDAIC LETTER IN -+<U0850> /xe0/xa1/x90 MANDAIC LETTER AP -+<U0851> /xe0/xa1/x91 MANDAIC LETTER ASZ -+<U0852> /xe0/xa1/x92 MANDAIC LETTER AQ -+<U0853> /xe0/xa1/x93 MANDAIC LETTER AR -+<U0854> /xe0/xa1/x94 MANDAIC LETTER ASH -+<U0855> /xe0/xa1/x95 MANDAIC LETTER AT -+<U0856> /xe0/xa1/x96 MANDAIC LETTER DUSHENNA -+<U0857> /xe0/xa1/x97 MANDAIC LETTER KAD -+<U0858> /xe0/xa1/x98 MANDAIC LETTER AIN -+<U0859> /xe0/xa1/x99 MANDAIC AFFRICATION MARK -+<U085A> /xe0/xa1/x9a MANDAIC VOCALIZATION MARK -+<U085B> /xe0/xa1/x9b MANDAIC GEMINATION MARK -+<U085E> /xe0/xa1/x9e MANDAIC PUNCTUATION -+<U0900> /xe0/xa4/x80 DEVANAGARI SIGN INVERTED CANDRABINDU - <U0901> /xe0/xa4/x81 DEVANAGARI SIGN CANDRABINDU - <U0902> /xe0/xa4/x82 DEVANAGARI SIGN ANUSVARA - <U0903> /xe0/xa4/x83 DEVANAGARI SIGN VISARGA -@@ -2026,6 +2123,8 @@ CHARMAP - <U0937> /xe0/xa4/xb7 DEVANAGARI LETTER SSA - <U0938> /xe0/xa4/xb8 DEVANAGARI LETTER SA - <U0939> /xe0/xa4/xb9 DEVANAGARI LETTER HA -+<U093A> /xe0/xa4/xba DEVANAGARI VOWEL SIGN OE -+<U093B> /xe0/xa4/xbb DEVANAGARI VOWEL SIGN OOE - <U093C> /xe0/xa4/xbc DEVANAGARI SIGN NUKTA - <U093D> /xe0/xa4/xbd DEVANAGARI SIGN AVAGRAHA - <U093E> /xe0/xa4/xbe DEVANAGARI VOWEL SIGN AA -@@ -2044,11 +2143,16 @@ CHARMAP - <U094B> /xe0/xa5/x8b DEVANAGARI VOWEL SIGN O - <U094C> /xe0/xa5/x8c DEVANAGARI VOWEL SIGN AU - <U094D> /xe0/xa5/x8d DEVANAGARI SIGN VIRAMA -+<U094E> /xe0/xa5/x8e DEVANAGARI VOWEL SIGN PRISHTHAMATRA E -+<U094F> /xe0/xa5/x8f DEVANAGARI VOWEL SIGN AW - <U0950> /xe0/xa5/x90 DEVANAGARI OM - <U0951> /xe0/xa5/x91 DEVANAGARI STRESS SIGN UDATTA - <U0952> /xe0/xa5/x92 DEVANAGARI STRESS SIGN ANUDATTA - <U0953> /xe0/xa5/x93 DEVANAGARI GRAVE ACCENT - <U0954> /xe0/xa5/x94 DEVANAGARI ACUTE ACCENT -+<U0955> /xe0/xa5/x95 DEVANAGARI VOWEL SIGN CANDRA LONG E -+<U0956> /xe0/xa5/x96 DEVANAGARI VOWEL SIGN UE -+<U0957> /xe0/xa5/x97 DEVANAGARI VOWEL SIGN UUE - <U0958> /xe0/xa5/x98 DEVANAGARI LETTER QA - <U0959> /xe0/xa5/x99 DEVANAGARI LETTER KHHA - <U095A> /xe0/xa5/x9a DEVANAGARI LETTER GHHA -@@ -2076,6 +2180,13 @@ CHARMAP - <U0970> /xe0/xa5/xb0 DEVANAGARI ABBREVIATION SIGN - <U0971> /xe0/xa5/xb1 DEVANAGARI SIGN HIGH SPACING DOT - <U0972> /xe0/xa5/xb2 DEVANAGARI LETTER CANDRA A -+<U0973> /xe0/xa5/xb3 DEVANAGARI LETTER OE -+<U0974> /xe0/xa5/xb4 DEVANAGARI LETTER OOE -+<U0975> /xe0/xa5/xb5 DEVANAGARI LETTER AW -+<U0976> /xe0/xa5/xb6 DEVANAGARI LETTER UE -+<U0977> /xe0/xa5/xb7 DEVANAGARI LETTER UUE -+<U0979> /xe0/xa5/xb9 DEVANAGARI LETTER ZHA -+<U097A> /xe0/xa5/xba DEVANAGARI LETTER HEAVY YA - <U097B> /xe0/xa5/xbb DEVANAGARI LETTER GGA - <U097C> /xe0/xa5/xbc DEVANAGARI LETTER JJA - <U097D> /xe0/xa5/xbd DEVANAGARI LETTER GLOTTAL STOP -@@ -2172,6 +2283,7 @@ CHARMAP - <U09F8> /xe0/xa7/xb8 BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR - <U09F9> /xe0/xa7/xb9 BENGALI CURRENCY DENOMINATOR SIXTEEN - <U09FA> /xe0/xa7/xba BENGALI ISSHAR -+<U09FB> /xe0/xa7/xbb BENGALI GANDA MARK - <U0A01> /xe0/xa8/x81 GURMUKHI SIGN ADAK BINDI - <U0A02> /xe0/xa8/x82 GURMUKHI SIGN BINDI - <U0A03> /xe0/xa8/x83 GURMUKHI SIGN VISARGA -@@ -2418,6 +2530,12 @@ CHARMAP - <U0B6F> /xe0/xad/xaf ORIYA DIGIT NINE - <U0B70> /xe0/xad/xb0 ORIYA ISSHAR - <U0B71> /xe0/xad/xb1 ORIYA LETTER WA -+<U0B72> /xe0/xad/xb2 ORIYA FRACTION ONE QUARTER -+<U0B73> /xe0/xad/xb3 ORIYA FRACTION ONE HALF -+<U0B74> /xe0/xad/xb4 ORIYA FRACTION THREE QUARTERS -+<U0B75> /xe0/xad/xb5 ORIYA FRACTION ONE SIXTEENTH -+<U0B76> /xe0/xad/xb6 ORIYA FRACTION ONE EIGHTH -+<U0B77> /xe0/xad/xb7 ORIYA FRACTION THREE SIXTEENTHS - <U0B82> /xe0/xae/x82 TAMIL SIGN ANUSVARA - <U0B83> /xe0/xae/x83 TAMIL SIGN VISARGA - <U0B85> /xe0/xae/x85 TAMIL LETTER A -@@ -2705,6 +2823,7 @@ CHARMAP - <U0D26> /xe0/xb4/xa6 MALAYALAM LETTER DA - <U0D27> /xe0/xb4/xa7 MALAYALAM LETTER DHA - <U0D28> /xe0/xb4/xa8 MALAYALAM LETTER NA -+<U0D29> /xe0/xb4/xa9 MALAYALAM LETTER NNNA - <U0D2A> /xe0/xb4/xaa MALAYALAM LETTER PA - <U0D2B> /xe0/xb4/xab MALAYALAM LETTER PHA - <U0D2C> /xe0/xb4/xac MALAYALAM LETTER BA -@@ -2721,6 +2840,7 @@ CHARMAP - <U0D37> /xe0/xb4/xb7 MALAYALAM LETTER SSA - <U0D38> /xe0/xb4/xb8 MALAYALAM LETTER SA - <U0D39> /xe0/xb4/xb9 MALAYALAM LETTER HA -+<U0D3A> /xe0/xb4/xba MALAYALAM LETTER TTTA - <U0D3D> /xe0/xb4/xbd MALAYALAM SIGN AVAGRAHA - <U0D3E> /xe0/xb4/xbe MALAYALAM VOWEL SIGN AA - <U0D3F> /xe0/xb4/xbf MALAYALAM VOWEL SIGN I -@@ -2736,6 +2856,7 @@ CHARMAP - <U0D4B> /xe0/xb5/x8b MALAYALAM VOWEL SIGN OO - <U0D4C> /xe0/xb5/x8c MALAYALAM VOWEL SIGN AU - <U0D4D> /xe0/xb5/x8d MALAYALAM SIGN VIRAMA -+<U0D4E> /xe0/xb5/x8e MALAYALAM LETTER DOT REPH - <U0D57> /xe0/xb5/x97 MALAYALAM AU LENGTH MARK - <U0D60> /xe0/xb5/xa0 MALAYALAM LETTER VOCALIC RR - <U0D61> /xe0/xb5/xa1 MALAYALAM LETTER VOCALIC LL -@@ -3131,6 +3252,10 @@ CHARMAP - <U0F89> /xe0/xbe/x89 TIBETAN SIGN MCHU CAN - <U0F8A> /xe0/xbe/x8a TIBETAN SIGN GRU CAN RGYINGS - <U0F8B> /xe0/xbe/x8b TIBETAN SIGN GRU MED RGYINGS -+<U0F8C> /xe0/xbe/x8c TIBETAN SIGN INVERTED MCHU CAN -+<U0F8D> /xe0/xbe/x8d TIBETAN SUBJOINED SIGN LCE TSA CAN -+<U0F8E> /xe0/xbe/x8e TIBETAN SUBJOINED SIGN MCHU CAN -+<U0F8F> /xe0/xbe/x8f TIBETAN SUBJOINED SIGN INVERTED MCHU CAN - <U0F90> /xe0/xbe/x90 TIBETAN SUBJOINED LETTER KA - <U0F91> /xe0/xbe/x91 TIBETAN SUBJOINED LETTER KHA - <U0F92> /xe0/xbe/x92 TIBETAN SUBJOINED LETTER GA -@@ -3197,6 +3322,12 @@ CHARMAP - <U0FD2> /xe0/xbf/x92 TIBETAN MARK NYIS TSHEG - <U0FD3> /xe0/xbf/x93 TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA - <U0FD4> /xe0/xbf/x94 TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA -+<U0FD5> /xe0/xbf/x95 RIGHT-FACING SVASTI SIGN -+<U0FD6> /xe0/xbf/x96 LEFT-FACING SVASTI SIGN -+<U0FD7> /xe0/xbf/x97 RIGHT-FACING SVASTI SIGN WITH DOTS -+<U0FD8> /xe0/xbf/x98 LEFT-FACING SVASTI SIGN WITH DOTS -+<U0FD9> /xe0/xbf/x99 TIBETAN MARK LEADING MCHAN RTAGS -+<U0FDA> /xe0/xbf/x9a TIBETAN MARK TRAILING MCHAN RTAGS - <U1000> /xe1/x80/x80 MYANMAR LETTER KA - <U1001> /xe1/x80/x81 MYANMAR LETTER KHA - <U1002> /xe1/x80/x82 MYANMAR LETTER GA -@@ -3351,6 +3482,10 @@ CHARMAP - <U1097> /xe1/x82/x97 MYANMAR SHAN DIGIT SEVEN - <U1098> /xe1/x82/x98 MYANMAR SHAN DIGIT EIGHT - <U1099> /xe1/x82/x99 MYANMAR SHAN DIGIT NINE -+<U109A> /xe1/x82/x9a MYANMAR SIGN KHAMTI TONE-1 -+<U109B> /xe1/x82/x9b MYANMAR SIGN KHAMTI TONE-3 -+<U109C> /xe1/x82/x9c MYANMAR VOWEL SIGN AITON A -+<U109D> /xe1/x82/x9d MYANMAR VOWEL SIGN AITON AI - <U109E> /xe1/x82/x9e MYANMAR SYMBOL SHAN ONE - <U109F> /xe1/x82/x9f MYANMAR SYMBOL SHAN EXCLAMATION - <U10A0> /xe1/x82/xa0 GEORGIAN CAPITAL LETTER AN -@@ -3526,6 +3661,11 @@ CHARMAP - <U1157> /xe1/x85/x97 HANGUL CHOSEONG KAPYEOUNPHIEUPH - <U1158> /xe1/x85/x98 HANGUL CHOSEONG SSANGHIEUH - <U1159> /xe1/x85/x99 HANGUL CHOSEONG YEORINHIEUH -+<U115A> /xe1/x85/x9a HANGUL CHOSEONG KIYEOK-TIKEUT -+<U115B> /xe1/x85/x9b HANGUL CHOSEONG NIEUN-SIOS -+<U115C> /xe1/x85/x9c HANGUL CHOSEONG NIEUN-CIEUC -+<U115D> /xe1/x85/x9d HANGUL CHOSEONG NIEUN-HIEUH -+<U115E> /xe1/x85/x9e HANGUL CHOSEONG TIKEUT-RIEUL - <U115F> /xe1/x85/x9f HANGUL CHOSEONG FILLER - <U1160> /xe1/x85/xa0 HANGUL JUNGSEONG FILLER - <U1161> /xe1/x85/xa1 HANGUL JUNGSEONG A -@@ -3594,6 +3734,11 @@ CHARMAP - <U11A0> /xe1/x86/xa0 HANGUL JUNGSEONG ARAEA-U - <U11A1> /xe1/x86/xa1 HANGUL JUNGSEONG ARAEA-I - <U11A2> /xe1/x86/xa2 HANGUL JUNGSEONG SSANGARAEA -+<U11A3> /xe1/x86/xa3 HANGUL JUNGSEONG A-EU -+<U11A4> /xe1/x86/xa4 HANGUL JUNGSEONG YA-U -+<U11A5> /xe1/x86/xa5 HANGUL JUNGSEONG YEO-YA -+<U11A6> /xe1/x86/xa6 HANGUL JUNGSEONG O-YA -+<U11A7> /xe1/x86/xa7 HANGUL JUNGSEONG O-YAE - <U11A8> /xe1/x86/xa8 HANGUL JONGSEONG KIYEOK - <U11A9> /xe1/x86/xa9 HANGUL JONGSEONG SSANGKIYEOK - <U11AA> /xe1/x86/xaa HANGUL JONGSEONG KIYEOK-SIOS -@@ -3676,6 +3821,12 @@ CHARMAP - <U11F7> /xe1/x87/xb7 HANGUL JONGSEONG HIEUH-MIEUM - <U11F8> /xe1/x87/xb8 HANGUL JONGSEONG HIEUH-PIEUP - <U11F9> /xe1/x87/xb9 HANGUL JONGSEONG YEORINHIEUH -+<U11FA> /xe1/x87/xba HANGUL JONGSEONG KIYEOK-NIEUN -+<U11FB> /xe1/x87/xbb HANGUL JONGSEONG KIYEOK-PIEUP -+<U11FC> /xe1/x87/xbc HANGUL JONGSEONG KIYEOK-CHIEUCH -+<U11FD> /xe1/x87/xbd HANGUL JONGSEONG KIYEOK-KHIEUKH -+<U11FE> /xe1/x87/xbe HANGUL JONGSEONG KIYEOK-HIEUH -+<U11FF> /xe1/x87/xbf HANGUL JONGSEONG SSANGNIEUN - <U1200> /xe1/x88/x80 ETHIOPIC SYLLABLE HA - <U1201> /xe1/x88/x81 ETHIOPIC SYLLABLE HU - <U1202> /xe1/x88/x82 ETHIOPIC SYLLABLE HI -@@ -4002,6 +4153,8 @@ CHARMAP - <U1358> /xe1/x8d/x98 ETHIOPIC SYLLABLE RYA - <U1359> /xe1/x8d/x99 ETHIOPIC SYLLABLE MYA - <U135A> /xe1/x8d/x9a ETHIOPIC SYLLABLE FYA -+<U135D> /xe1/x8d/x9d ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK -+<U135E> /xe1/x8d/x9e ETHIOPIC COMBINING VOWEL LENGTH MARK - <U135F> /xe1/x8d/x9f ETHIOPIC COMBINING GEMINATION MARK - <U1360> /xe1/x8d/xa0 ETHIOPIC SECTION MARK - <U1361> /xe1/x8d/xa1 ETHIOPIC WORDSPACE -@@ -4143,6 +4296,7 @@ CHARMAP - <U13F2> /xe1/x8f/xb2 CHEROKEE LETTER YO - <U13F3> /xe1/x8f/xb3 CHEROKEE LETTER YU - <U13F4> /xe1/x8f/xb4 CHEROKEE LETTER YV -+<U1400> /xe1/x90/x80 CANADIAN SYLLABICS HYPHEN - <U1401> /xe1/x90/x81 CANADIAN SYLLABICS E - <U1402> /xe1/x90/x82 CANADIAN SYLLABICS AAI - <U1403> /xe1/x90/x83 CANADIAN SYLLABICS I -@@ -4773,6 +4927,15 @@ CHARMAP - <U1674> /xe1/x99/xb4 CANADIAN SYLLABICS NNGOO - <U1675> /xe1/x99/xb5 CANADIAN SYLLABICS NNGA - <U1676> /xe1/x99/xb6 CANADIAN SYLLABICS NNGAA -+<U1677> /xe1/x99/xb7 CANADIAN SYLLABICS WOODS-CREE THWEE -+<U1678> /xe1/x99/xb8 CANADIAN SYLLABICS WOODS-CREE THWI -+<U1679> /xe1/x99/xb9 CANADIAN SYLLABICS WOODS-CREE THWII -+<U167A> /xe1/x99/xba CANADIAN SYLLABICS WOODS-CREE THWO -+<U167B> /xe1/x99/xbb CANADIAN SYLLABICS WOODS-CREE THWOO -+<U167C> /xe1/x99/xbc CANADIAN SYLLABICS WOODS-CREE THWA -+<U167D> /xe1/x99/xbd CANADIAN SYLLABICS WOODS-CREE THWAA -+<U167E> /xe1/x99/xbe CANADIAN SYLLABICS WOODS-CREE FINAL TH -+<U167F> /xe1/x99/xbf CANADIAN SYLLABICS BLACKFOOT W - <U1680> /xe1/x9a/x80 OGHAM SPACE MARK - <U1681> /xe1/x9a/x81 OGHAM LETTER BEITH - <U1682> /xe1/x9a/x82 OGHAM LETTER LUIS -@@ -5234,6 +5397,76 @@ CHARMAP - <U18A8> /xe1/xa2/xa8 MONGOLIAN LETTER MANCHU ALI GALI BHA - <U18A9> /xe1/xa2/xa9 MONGOLIAN LETTER ALI GALI DAGALGA - <U18AA> /xe1/xa2/xaa MONGOLIAN LETTER MANCHU ALI GALI LHA -+<U18B0> /xe1/xa2/xb0 CANADIAN SYLLABICS OY -+<U18B1> /xe1/xa2/xb1 CANADIAN SYLLABICS AY -+<U18B2> /xe1/xa2/xb2 CANADIAN SYLLABICS AAY -+<U18B3> /xe1/xa2/xb3 CANADIAN SYLLABICS WAY -+<U18B4> /xe1/xa2/xb4 CANADIAN SYLLABICS POY -+<U18B5> /xe1/xa2/xb5 CANADIAN SYLLABICS PAY -+<U18B6> /xe1/xa2/xb6 CANADIAN SYLLABICS PWOY -+<U18B7> /xe1/xa2/xb7 CANADIAN SYLLABICS TAY -+<U18B8> /xe1/xa2/xb8 CANADIAN SYLLABICS KAY -+<U18B9> /xe1/xa2/xb9 CANADIAN SYLLABICS KWAY -+<U18BA> /xe1/xa2/xba CANADIAN SYLLABICS MAY -+<U18BB> /xe1/xa2/xbb CANADIAN SYLLABICS NOY -+<U18BC> /xe1/xa2/xbc CANADIAN SYLLABICS NAY -+<U18BD> /xe1/xa2/xbd CANADIAN SYLLABICS LAY -+<U18BE> /xe1/xa2/xbe CANADIAN SYLLABICS SOY -+<U18BF> /xe1/xa2/xbf CANADIAN SYLLABICS SAY -+<U18C0> /xe1/xa3/x80 CANADIAN SYLLABICS SHOY -+<U18C1> /xe1/xa3/x81 CANADIAN SYLLABICS SHAY -+<U18C2> /xe1/xa3/x82 CANADIAN SYLLABICS SHWOY -+<U18C3> /xe1/xa3/x83 CANADIAN SYLLABICS YOY -+<U18C4> /xe1/xa3/x84 CANADIAN SYLLABICS YAY -+<U18C5> /xe1/xa3/x85 CANADIAN SYLLABICS RAY -+<U18C6> /xe1/xa3/x86 CANADIAN SYLLABICS NWI -+<U18C7> /xe1/xa3/x87 CANADIAN SYLLABICS OJIBWAY NWI -+<U18C8> /xe1/xa3/x88 CANADIAN SYLLABICS NWII -+<U18C9> /xe1/xa3/x89 CANADIAN SYLLABICS OJIBWAY NWII -+<U18CA> /xe1/xa3/x8a CANADIAN SYLLABICS NWO -+<U18CB> /xe1/xa3/x8b CANADIAN SYLLABICS OJIBWAY NWO -+<U18CC> /xe1/xa3/x8c CANADIAN SYLLABICS NWOO -+<U18CD> /xe1/xa3/x8d CANADIAN SYLLABICS OJIBWAY NWOO -+<U18CE> /xe1/xa3/x8e CANADIAN SYLLABICS RWEE -+<U18CF> /xe1/xa3/x8f CANADIAN SYLLABICS RWI -+<U18D0> /xe1/xa3/x90 CANADIAN SYLLABICS RWII -+<U18D1> /xe1/xa3/x91 CANADIAN SYLLABICS RWO -+<U18D2> /xe1/xa3/x92 CANADIAN SYLLABICS RWOO -+<U18D3> /xe1/xa3/x93 CANADIAN SYLLABICS RWA -+<U18D4> /xe1/xa3/x94 CANADIAN SYLLABICS OJIBWAY P -+<U18D5> /xe1/xa3/x95 CANADIAN SYLLABICS OJIBWAY T -+<U18D6> /xe1/xa3/x96 CANADIAN SYLLABICS OJIBWAY K -+<U18D7> /xe1/xa3/x97 CANADIAN SYLLABICS OJIBWAY C -+<U18D8> /xe1/xa3/x98 CANADIAN SYLLABICS OJIBWAY M -+<U18D9> /xe1/xa3/x99 CANADIAN SYLLABICS OJIBWAY N -+<U18DA> /xe1/xa3/x9a CANADIAN SYLLABICS OJIBWAY S -+<U18DB> /xe1/xa3/x9b CANADIAN SYLLABICS OJIBWAY SH -+<U18DC> /xe1/xa3/x9c CANADIAN SYLLABICS EASTERN W -+<U18DD> /xe1/xa3/x9d CANADIAN SYLLABICS WESTERN W -+<U18DE> /xe1/xa3/x9e CANADIAN SYLLABICS FINAL SMALL RING -+<U18DF> /xe1/xa3/x9f CANADIAN SYLLABICS FINAL RAISED DOT -+<U18E0> /xe1/xa3/xa0 CANADIAN SYLLABICS R-CREE RWE -+<U18E1> /xe1/xa3/xa1 CANADIAN SYLLABICS WEST-CREE LOO -+<U18E2> /xe1/xa3/xa2 CANADIAN SYLLABICS WEST-CREE LAA -+<U18E3> /xe1/xa3/xa3 CANADIAN SYLLABICS THWE -+<U18E4> /xe1/xa3/xa4 CANADIAN SYLLABICS THWA -+<U18E5> /xe1/xa3/xa5 CANADIAN SYLLABICS TTHWE -+<U18E6> /xe1/xa3/xa6 CANADIAN SYLLABICS TTHOO -+<U18E7> /xe1/xa3/xa7 CANADIAN SYLLABICS TTHAA -+<U18E8> /xe1/xa3/xa8 CANADIAN SYLLABICS TLHWE -+<U18E9> /xe1/xa3/xa9 CANADIAN SYLLABICS TLHOO -+<U18EA> /xe1/xa3/xaa CANADIAN SYLLABICS SAYISI SHWE -+<U18EB> /xe1/xa3/xab CANADIAN SYLLABICS SAYISI SHOO -+<U18EC> /xe1/xa3/xac CANADIAN SYLLABICS SAYISI HOO -+<U18ED> /xe1/xa3/xad CANADIAN SYLLABICS CARRIER GWU -+<U18EE> /xe1/xa3/xae CANADIAN SYLLABICS CARRIER DENE GEE -+<U18EF> /xe1/xa3/xaf CANADIAN SYLLABICS CARRIER GAA -+<U18F0> /xe1/xa3/xb0 CANADIAN SYLLABICS CARRIER GWA -+<U18F1> /xe1/xa3/xb1 CANADIAN SYLLABICS SAYISI JUU -+<U18F2> /xe1/xa3/xb2 CANADIAN SYLLABICS CARRIER JWA -+<U18F3> /xe1/xa3/xb3 CANADIAN SYLLABICS BEAVER DENE L -+<U18F4> /xe1/xa3/xb4 CANADIAN SYLLABICS BEAVER DENE R -+<U18F5> /xe1/xa3/xb5 CANADIAN SYLLABICS CARRIER DENTAL S - <U1900> /xe1/xa4/x80 LIMBU VOWEL-CARRIER LETTER - <U1901> /xe1/xa4/x81 LIMBU LETTER KA - <U1902> /xe1/xa4/x82 LIMBU LETTER KHA -@@ -5377,6 +5610,8 @@ CHARMAP - <U19A7> /xe1/xa6/xa7 NEW TAI LUE LETTER HIGH XVA - <U19A8> /xe1/xa6/xa8 NEW TAI LUE LETTER LOW KVA - <U19A9> /xe1/xa6/xa9 NEW TAI LUE LETTER LOW XVA -+<U19AA> /xe1/xa6/xaa NEW TAI LUE LETTER HIGH SUA -+<U19AB> /xe1/xa6/xab NEW TAI LUE LETTER LOW SUA - <U19B0> /xe1/xa6/xb0 NEW TAI LUE VOWEL SIGN VOWEL SHORTENER - <U19B1> /xe1/xa6/xb1 NEW TAI LUE VOWEL SIGN AA - <U19B2> /xe1/xa6/xb2 NEW TAI LUE VOWEL SIGN II -@@ -5413,6 +5648,7 @@ CHARMAP - <U19D7> /xe1/xa7/x97 NEW TAI LUE DIGIT SEVEN - <U19D8> /xe1/xa7/x98 NEW TAI LUE DIGIT EIGHT - <U19D9> /xe1/xa7/x99 NEW TAI LUE DIGIT NINE -+<U19DA> /xe1/xa7/x9a NEW TAI LUE THAM DIGIT ONE - <U19DE> /xe1/xa7/x9e NEW TAI LUE SIGN LAE - <U19DF> /xe1/xa7/x9f NEW TAI LUE SIGN LAEV - <U19E0> /xe1/xa7/xa0 KHMER SYMBOL PATHAMASAT -@@ -5477,6 +5713,133 @@ CHARMAP - <U1A1B> /xe1/xa8/x9b BUGINESE VOWEL SIGN AE - <U1A1E> /xe1/xa8/x9e BUGINESE PALLAWA - <U1A1F> /xe1/xa8/x9f BUGINESE END OF SECTION -+<U1A20> /xe1/xa8/xa0 TAI THAM LETTER HIGH KA -+<U1A21> /xe1/xa8/xa1 TAI THAM LETTER HIGH KHA -+<U1A22> /xe1/xa8/xa2 TAI THAM LETTER HIGH KXA -+<U1A23> /xe1/xa8/xa3 TAI THAM LETTER LOW KA -+<U1A24> /xe1/xa8/xa4 TAI THAM LETTER LOW KXA -+<U1A25> /xe1/xa8/xa5 TAI THAM LETTER LOW KHA -+<U1A26> /xe1/xa8/xa6 TAI THAM LETTER NGA -+<U1A27> /xe1/xa8/xa7 TAI THAM LETTER HIGH CA -+<U1A28> /xe1/xa8/xa8 TAI THAM LETTER HIGH CHA -+<U1A29> /xe1/xa8/xa9 TAI THAM LETTER LOW CA -+<U1A2A> /xe1/xa8/xaa TAI THAM LETTER LOW SA -+<U1A2B> /xe1/xa8/xab TAI THAM LETTER LOW CHA -+<U1A2C> /xe1/xa8/xac TAI THAM LETTER NYA -+<U1A2D> /xe1/xa8/xad TAI THAM LETTER RATA -+<U1A2E> /xe1/xa8/xae TAI THAM LETTER HIGH RATHA -+<U1A2F> /xe1/xa8/xaf TAI THAM LETTER DA -+<U1A30> /xe1/xa8/xb0 TAI THAM LETTER LOW RATHA -+<U1A31> /xe1/xa8/xb1 TAI THAM LETTER RANA -+<U1A32> /xe1/xa8/xb2 TAI THAM LETTER HIGH TA -+<U1A33> /xe1/xa8/xb3 TAI THAM LETTER HIGH THA -+<U1A34> /xe1/xa8/xb4 TAI THAM LETTER LOW TA -+<U1A35> /xe1/xa8/xb5 TAI THAM LETTER LOW THA -+<U1A36> /xe1/xa8/xb6 TAI THAM LETTER NA -+<U1A37> /xe1/xa8/xb7 TAI THAM LETTER BA -+<U1A38> /xe1/xa8/xb8 TAI THAM LETTER HIGH PA -+<U1A39> /xe1/xa8/xb9 TAI THAM LETTER HIGH PHA -+<U1A3A> /xe1/xa8/xba TAI THAM LETTER HIGH FA -+<U1A3B> /xe1/xa8/xbb TAI THAM LETTER LOW PA -+<U1A3C> /xe1/xa8/xbc TAI THAM LETTER LOW FA -+<U1A3D> /xe1/xa8/xbd TAI THAM LETTER LOW PHA -+<U1A3E> /xe1/xa8/xbe TAI THAM LETTER MA -+<U1A3F> /xe1/xa8/xbf TAI THAM LETTER LOW YA -+<U1A40> /xe1/xa9/x80 TAI THAM LETTER HIGH YA -+<U1A41> /xe1/xa9/x81 TAI THAM LETTER RA -+<U1A42> /xe1/xa9/x82 TAI THAM LETTER RUE -+<U1A43> /xe1/xa9/x83 TAI THAM LETTER LA -+<U1A44> /xe1/xa9/x84 TAI THAM LETTER LUE -+<U1A45> /xe1/xa9/x85 TAI THAM LETTER WA -+<U1A46> /xe1/xa9/x86 TAI THAM LETTER HIGH SHA -+<U1A47> /xe1/xa9/x87 TAI THAM LETTER HIGH SSA -+<U1A48> /xe1/xa9/x88 TAI THAM LETTER HIGH SA -+<U1A49> /xe1/xa9/x89 TAI THAM LETTER HIGH HA -+<U1A4A> /xe1/xa9/x8a TAI THAM LETTER LLA -+<U1A4B> /xe1/xa9/x8b TAI THAM LETTER A -+<U1A4C> /xe1/xa9/x8c TAI THAM LETTER LOW HA -+<U1A4D> /xe1/xa9/x8d TAI THAM LETTER I -+<U1A4E> /xe1/xa9/x8e TAI THAM LETTER II -+<U1A4F> /xe1/xa9/x8f TAI THAM LETTER U -+<U1A50> /xe1/xa9/x90 TAI THAM LETTER UU -+<U1A51> /xe1/xa9/x91 TAI THAM LETTER EE -+<U1A52> /xe1/xa9/x92 TAI THAM LETTER OO -+<U1A53> /xe1/xa9/x93 TAI THAM LETTER LAE -+<U1A54> /xe1/xa9/x94 TAI THAM LETTER GREAT SA -+<U1A55> /xe1/xa9/x95 TAI THAM CONSONANT SIGN MEDIAL RA -+<U1A56> /xe1/xa9/x96 TAI THAM CONSONANT SIGN MEDIAL LA -+<U1A57> /xe1/xa9/x97 TAI THAM CONSONANT SIGN LA TANG LAI -+<U1A58> /xe1/xa9/x98 TAI THAM SIGN MAI KANG LAI -+<U1A59> /xe1/xa9/x99 TAI THAM CONSONANT SIGN FINAL NGA -+<U1A5A> /xe1/xa9/x9a TAI THAM CONSONANT SIGN LOW PA -+<U1A5B> /xe1/xa9/x9b TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA -+<U1A5C> /xe1/xa9/x9c TAI THAM CONSONANT SIGN MA -+<U1A5D> /xe1/xa9/x9d TAI THAM CONSONANT SIGN BA -+<U1A5E> /xe1/xa9/x9e TAI THAM CONSONANT SIGN SA -+<U1A60> /xe1/xa9/xa0 TAI THAM SIGN SAKOT -+<U1A61> /xe1/xa9/xa1 TAI THAM VOWEL SIGN A -+<U1A62> /xe1/xa9/xa2 TAI THAM VOWEL SIGN MAI SAT -+<U1A63> /xe1/xa9/xa3 TAI THAM VOWEL SIGN AA -+<U1A64> /xe1/xa9/xa4 TAI THAM VOWEL SIGN TALL AA -+<U1A65> /xe1/xa9/xa5 TAI THAM VOWEL SIGN I -+<U1A66> /xe1/xa9/xa6 TAI THAM VOWEL SIGN II -+<U1A67> /xe1/xa9/xa7 TAI THAM VOWEL SIGN UE -+<U1A68> /xe1/xa9/xa8 TAI THAM VOWEL SIGN UUE -+<U1A69> /xe1/xa9/xa9 TAI THAM VOWEL SIGN U -+<U1A6A> /xe1/xa9/xaa TAI THAM VOWEL SIGN UU -+<U1A6B> /xe1/xa9/xab TAI THAM VOWEL SIGN O -+<U1A6C> /xe1/xa9/xac TAI THAM VOWEL SIGN OA BELOW -+<U1A6D> /xe1/xa9/xad TAI THAM VOWEL SIGN OY -+<U1A6E> /xe1/xa9/xae TAI THAM VOWEL SIGN E -+<U1A6F> /xe1/xa9/xaf TAI THAM VOWEL SIGN AE -+<U1A70> /xe1/xa9/xb0 TAI THAM VOWEL SIGN OO -+<U1A71> /xe1/xa9/xb1 TAI THAM VOWEL SIGN AI -+<U1A72> /xe1/xa9/xb2 TAI THAM VOWEL SIGN THAM AI -+<U1A73> /xe1/xa9/xb3 TAI THAM VOWEL SIGN OA ABOVE -+<U1A74> /xe1/xa9/xb4 TAI THAM SIGN MAI KANG -+<U1A75> /xe1/xa9/xb5 TAI THAM SIGN TONE-1 -+<U1A76> /xe1/xa9/xb6 TAI THAM SIGN TONE-2 -+<U1A77> /xe1/xa9/xb7 TAI THAM SIGN KHUEN TONE-3 -+<U1A78> /xe1/xa9/xb8 TAI THAM SIGN KHUEN TONE-4 -+<U1A79> /xe1/xa9/xb9 TAI THAM SIGN KHUEN TONE-5 -+<U1A7A> /xe1/xa9/xba TAI THAM SIGN RA HAAM -+<U1A7B> /xe1/xa9/xbb TAI THAM SIGN MAI SAM -+<U1A7C> /xe1/xa9/xbc TAI THAM SIGN KHUEN-LUE KARAN -+<U1A7F> /xe1/xa9/xbf TAI THAM COMBINING CRYPTOGRAMMIC DOT -+<U1A80> /xe1/xaa/x80 TAI THAM HORA DIGIT ZERO -+<U1A81> /xe1/xaa/x81 TAI THAM HORA DIGIT ONE -+<U1A82> /xe1/xaa/x82 TAI THAM HORA DIGIT TWO -+<U1A83> /xe1/xaa/x83 TAI THAM HORA DIGIT THREE -+<U1A84> /xe1/xaa/x84 TAI THAM HORA DIGIT FOUR -+<U1A85> /xe1/xaa/x85 TAI THAM HORA DIGIT FIVE -+<U1A86> /xe1/xaa/x86 TAI THAM HORA DIGIT SIX -+<U1A87> /xe1/xaa/x87 TAI THAM HORA DIGIT SEVEN -+<U1A88> /xe1/xaa/x88 TAI THAM HORA DIGIT EIGHT -+<U1A89> /xe1/xaa/x89 TAI THAM HORA DIGIT NINE -+<U1A90> /xe1/xaa/x90 TAI THAM THAM DIGIT ZERO -+<U1A91> /xe1/xaa/x91 TAI THAM THAM DIGIT ONE -+<U1A92> /xe1/xaa/x92 TAI THAM THAM DIGIT TWO -+<U1A93> /xe1/xaa/x93 TAI THAM THAM DIGIT THREE -+<U1A94> /xe1/xaa/x94 TAI THAM THAM DIGIT FOUR -+<U1A95> /xe1/xaa/x95 TAI THAM THAM DIGIT FIVE -+<U1A96> /xe1/xaa/x96 TAI THAM THAM DIGIT SIX -+<U1A97> /xe1/xaa/x97 TAI THAM THAM DIGIT SEVEN -+<U1A98> /xe1/xaa/x98 TAI THAM THAM DIGIT EIGHT -+<U1A99> /xe1/xaa/x99 TAI THAM THAM DIGIT NINE -+<U1AA0> /xe1/xaa/xa0 TAI THAM SIGN WIANG -+<U1AA1> /xe1/xaa/xa1 TAI THAM SIGN WIANGWAAK -+<U1AA2> /xe1/xaa/xa2 TAI THAM SIGN SAWAN -+<U1AA3> /xe1/xaa/xa3 TAI THAM SIGN KEOW -+<U1AA4> /xe1/xaa/xa4 TAI THAM SIGN HOY -+<U1AA5> /xe1/xaa/xa5 TAI THAM SIGN DOKMAI -+<U1AA6> /xe1/xaa/xa6 TAI THAM SIGN REVERSED ROTATED RANA -+<U1AA7> /xe1/xaa/xa7 TAI THAM SIGN MAI YAMOK -+<U1AA8> /xe1/xaa/xa8 TAI THAM SIGN KAAN -+<U1AA9> /xe1/xaa/xa9 TAI THAM SIGN KAANKUU -+<U1AAA> /xe1/xaa/xaa TAI THAM SIGN SATKAAN -+<U1AAB> /xe1/xaa/xab TAI THAM SIGN SATKAANKUU -+<U1AAC> /xe1/xaa/xac TAI THAM SIGN HANG -+<U1AAD> /xe1/xaa/xad TAI THAM SIGN CAANG - <U1B00> /xe1/xac/x80 BALINESE SIGN ULU RICEM - <U1B01> /xe1/xac/x81 BALINESE SIGN ULU CANDRA - <U1B02> /xe1/xac/x82 BALINESE SIGN CECEK -@@ -5653,6 +6016,62 @@ CHARMAP - <U1BB7> /xe1/xae/xb7 SUNDANESE DIGIT SEVEN - <U1BB8> /xe1/xae/xb8 SUNDANESE DIGIT EIGHT - <U1BB9> /xe1/xae/xb9 SUNDANESE DIGIT NINE -+<U1BC0> /xe1/xaf/x80 BATAK LETTER A -+<U1BC1> /xe1/xaf/x81 BATAK LETTER SIMALUNGUN A -+<U1BC2> /xe1/xaf/x82 BATAK LETTER HA -+<U1BC3> /xe1/xaf/x83 BATAK LETTER SIMALUNGUN HA -+<U1BC4> /xe1/xaf/x84 BATAK LETTER MANDAILING HA -+<U1BC5> /xe1/xaf/x85 BATAK LETTER BA -+<U1BC6> /xe1/xaf/x86 BATAK LETTER KARO BA -+<U1BC7> /xe1/xaf/x87 BATAK LETTER PA -+<U1BC8> /xe1/xaf/x88 BATAK LETTER SIMALUNGUN PA -+<U1BC9> /xe1/xaf/x89 BATAK LETTER NA -+<U1BCA> /xe1/xaf/x8a BATAK LETTER MANDAILING NA -+<U1BCB> /xe1/xaf/x8b BATAK LETTER WA -+<U1BCC> /xe1/xaf/x8c BATAK LETTER SIMALUNGUN WA -+<U1BCD> /xe1/xaf/x8d BATAK LETTER PAKPAK WA -+<U1BCE> /xe1/xaf/x8e BATAK LETTER GA -+<U1BCF> /xe1/xaf/x8f BATAK LETTER SIMALUNGUN GA -+<U1BD0> /xe1/xaf/x90 BATAK LETTER JA -+<U1BD1> /xe1/xaf/x91 BATAK LETTER DA -+<U1BD2> /xe1/xaf/x92 BATAK LETTER RA -+<U1BD3> /xe1/xaf/x93 BATAK LETTER SIMALUNGUN RA -+<U1BD4> /xe1/xaf/x94 BATAK LETTER MA -+<U1BD5> /xe1/xaf/x95 BATAK LETTER SIMALUNGUN MA -+<U1BD6> /xe1/xaf/x96 BATAK LETTER SOUTHERN TA -+<U1BD7> /xe1/xaf/x97 BATAK LETTER NORTHERN TA -+<U1BD8> /xe1/xaf/x98 BATAK LETTER SA -+<U1BD9> /xe1/xaf/x99 BATAK LETTER SIMALUNGUN SA -+<U1BDA> /xe1/xaf/x9a BATAK LETTER MANDAILING SA -+<U1BDB> /xe1/xaf/x9b BATAK LETTER YA -+<U1BDC> /xe1/xaf/x9c BATAK LETTER SIMALUNGUN YA -+<U1BDD> /xe1/xaf/x9d BATAK LETTER NGA -+<U1BDE> /xe1/xaf/x9e BATAK LETTER LA -+<U1BDF> /xe1/xaf/x9f BATAK LETTER SIMALUNGUN LA -+<U1BE0> /xe1/xaf/xa0 BATAK LETTER NYA -+<U1BE1> /xe1/xaf/xa1 BATAK LETTER CA -+<U1BE2> /xe1/xaf/xa2 BATAK LETTER NDA -+<U1BE3> /xe1/xaf/xa3 BATAK LETTER MBA -+<U1BE4> /xe1/xaf/xa4 BATAK LETTER I -+<U1BE5> /xe1/xaf/xa5 BATAK LETTER U -+<U1BE6> /xe1/xaf/xa6 BATAK SIGN TOMPI -+<U1BE7> /xe1/xaf/xa7 BATAK VOWEL SIGN E -+<U1BE8> /xe1/xaf/xa8 BATAK VOWEL SIGN PAKPAK E -+<U1BE9> /xe1/xaf/xa9 BATAK VOWEL SIGN EE -+<U1BEA> /xe1/xaf/xaa BATAK VOWEL SIGN I -+<U1BEB> /xe1/xaf/xab BATAK VOWEL SIGN KARO I -+<U1BEC> /xe1/xaf/xac BATAK VOWEL SIGN O -+<U1BED> /xe1/xaf/xad BATAK VOWEL SIGN KARO O -+<U1BEE> /xe1/xaf/xae BATAK VOWEL SIGN U -+<U1BEF> /xe1/xaf/xaf BATAK VOWEL SIGN U FOR SIMALUNGUN SA -+<U1BF0> /xe1/xaf/xb0 BATAK CONSONANT SIGN NG -+<U1BF1> /xe1/xaf/xb1 BATAK CONSONANT SIGN H -+<U1BF2> /xe1/xaf/xb2 BATAK PANGOLAT -+<U1BF3> /xe1/xaf/xb3 BATAK PANONGONAN -+<U1BFC> /xe1/xaf/xbc BATAK SYMBOL BINDU NA METEK -+<U1BFD> /xe1/xaf/xbd BATAK SYMBOL BINDU PINARBORAS -+<U1BFE> /xe1/xaf/xbe BATAK SYMBOL BINDU JUDUL -+<U1BFF> /xe1/xaf/xbf BATAK SYMBOL BINDU PANGOLAT - <U1C00> /xe1/xb0/x80 LEPCHA LETTER KA - <U1C01> /xe1/xb0/x81 LEPCHA LETTER KLA - <U1C02> /xe1/xb0/x82 LEPCHA LETTER KHA -@@ -5775,6 +6194,41 @@ CHARMAP - <U1C7D> /xe1/xb1/xbd OL CHIKI AHAD - <U1C7E> /xe1/xb1/xbe OL CHIKI PUNCTUATION MUCAAD - <U1C7F> /xe1/xb1/xbf OL CHIKI PUNCTUATION DOUBLE MUCAAD -+<U1CD0> /xe1/xb3/x90 VEDIC TONE KARSHANA -+<U1CD1> /xe1/xb3/x91 VEDIC TONE SHARA -+<U1CD2> /xe1/xb3/x92 VEDIC TONE PRENKHA -+<U1CD3> /xe1/xb3/x93 VEDIC SIGN NIHSHVASA -+<U1CD4> /xe1/xb3/x94 VEDIC SIGN YAJURVEDIC MIDLINE SVARITA -+<U1CD5> /xe1/xb3/x95 VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA -+<U1CD6> /xe1/xb3/x96 VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA -+<U1CD7> /xe1/xb3/x97 VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA -+<U1CD8> /xe1/xb3/x98 VEDIC TONE CANDRA BELOW -+<U1CD9> /xe1/xb3/x99 VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER -+<U1CDA> /xe1/xb3/x9a VEDIC TONE DOUBLE SVARITA -+<U1CDB> /xe1/xb3/x9b VEDIC TONE TRIPLE SVARITA -+<U1CDC> /xe1/xb3/x9c VEDIC TONE KATHAKA ANUDATTA -+<U1CDD> /xe1/xb3/x9d VEDIC TONE DOT BELOW -+<U1CDE> /xe1/xb3/x9e VEDIC TONE TWO DOTS BELOW -+<U1CDF> /xe1/xb3/x9f VEDIC TONE THREE DOTS BELOW -+<U1CE0> /xe1/xb3/xa0 VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA -+<U1CE1> /xe1/xb3/xa1 VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA -+<U1CE2> /xe1/xb3/xa2 VEDIC SIGN VISARGA SVARITA -+<U1CE3> /xe1/xb3/xa3 VEDIC SIGN VISARGA UDATTA -+<U1CE4> /xe1/xb3/xa4 VEDIC SIGN REVERSED VISARGA UDATTA -+<U1CE5> /xe1/xb3/xa5 VEDIC SIGN VISARGA ANUDATTA -+<U1CE6> /xe1/xb3/xa6 VEDIC SIGN REVERSED VISARGA ANUDATTA -+<U1CE7> /xe1/xb3/xa7 VEDIC SIGN VISARGA UDATTA WITH TAIL -+<U1CE8> /xe1/xb3/xa8 VEDIC SIGN VISARGA ANUDATTA WITH TAIL -+<U1CE9> /xe1/xb3/xa9 VEDIC SIGN ANUSVARA ANTARGOMUKHA -+<U1CEA> /xe1/xb3/xaa VEDIC SIGN ANUSVARA BAHIRGOMUKHA -+<U1CEB> /xe1/xb3/xab VEDIC SIGN ANUSVARA VAMAGOMUKHA -+<U1CEC> /xe1/xb3/xac VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL -+<U1CED> /xe1/xb3/xad VEDIC SIGN TIRYAK -+<U1CEE> /xe1/xb3/xae VEDIC SIGN HEXIFORM LONG ANUSVARA -+<U1CEF> /xe1/xb3/xaf VEDIC SIGN LONG ANUSVARA -+<U1CF0> /xe1/xb3/xb0 VEDIC SIGN RTHANG LONG ANUSVARA -+<U1CF1> /xe1/xb3/xb1 VEDIC SIGN ANUSVARA UBHAYATO MUKHA -+<U1CF2> /xe1/xb3/xb2 VEDIC SIGN ARDHAVISARGA - <U1D00> /xe1/xb4/x80 LATIN LETTER SMALL CAPITAL A - <U1D01> /xe1/xb4/x81 LATIN LETTER SMALL CAPITAL AE - <U1D02> /xe1/xb4/x82 LATIN SMALL LETTER TURNED AE -@@ -6006,6 +6460,8 @@ CHARMAP - <U1DE4> /xe1/xb7/xa4 COMBINING LATIN SMALL LETTER S - <U1DE5> /xe1/xb7/xa5 COMBINING LATIN SMALL LETTER LONG S - <U1DE6> /xe1/xb7/xa6 COMBINING LATIN SMALL LETTER Z -+<U1DFC> /xe1/xb7/xbc COMBINING DOUBLE INVERTED BREVE BELOW -+<U1DFD> /xe1/xb7/xbd COMBINING ALMOST EQUAL TO BELOW - <U1DFE> /xe1/xb7/xbe COMBINING LEFT ARROWHEAD ABOVE - <U1DFF> /xe1/xb7/xbf COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW - <U1E00> /xe1/xb8/x80 LATIN CAPITAL LETTER A WITH RING BELOW -@@ -6638,6 +7094,14 @@ CHARMAP - <U2092> /xe2/x82/x92 LATIN SUBSCRIPT SMALL LETTER O - <U2093> /xe2/x82/x93 LATIN SUBSCRIPT SMALL LETTER X - <U2094> /xe2/x82/x94 LATIN SUBSCRIPT SMALL LETTER SCHWA -+<U2095> /xe2/x82/x95 LATIN SUBSCRIPT SMALL LETTER H -+<U2096> /xe2/x82/x96 LATIN SUBSCRIPT SMALL LETTER K -+<U2097> /xe2/x82/x97 LATIN SUBSCRIPT SMALL LETTER L -+<U2098> /xe2/x82/x98 LATIN SUBSCRIPT SMALL LETTER M -+<U2099> /xe2/x82/x99 LATIN SUBSCRIPT SMALL LETTER N -+<U209A> /xe2/x82/x9a LATIN SUBSCRIPT SMALL LETTER P -+<U209B> /xe2/x82/x9b LATIN SUBSCRIPT SMALL LETTER S -+<U209C> /xe2/x82/x9c LATIN SUBSCRIPT SMALL LETTER T - <U20A0> /xe2/x82/xa0 EURO-CURRENCY SIGN - <U20A1> /xe2/x82/xa1 COLON SIGN - <U20A2> /xe2/x82/xa2 CRUZEIRO SIGN -@@ -6660,6 +7124,10 @@ CHARMAP - <U20B3> /xe2/x82/xb3 AUSTRAL SIGN - <U20B4> /xe2/x82/xb4 HRYVNIA SIGN - <U20B5> /xe2/x82/xb5 CEDI SIGN -+<U20B6> /xe2/x82/xb6 LIVRE TOURNOIS SIGN -+<U20B7> /xe2/x82/xb7 SPESMILO SIGN -+<U20B8> /xe2/x82/xb8 TENGE SIGN -+<U20B9> /xe2/x82/xb9 INDIAN RUPEE SIGN - <U20D0> /xe2/x83/x90 COMBINING LEFT HARPOON ABOVE - <U20D1> /xe2/x83/x91 COMBINING RIGHT HARPOON ABOVE - <U20D2> /xe2/x83/x92 COMBINING LONG VERTICAL LINE OVERLAY -@@ -6773,6 +7241,9 @@ CHARMAP - <U214D> /xe2/x85/x8d AKTIESELSKAB - <U214E> /xe2/x85/x8e TURNED SMALL F - <U214F> /xe2/x85/x8f SYMBOL FOR SAMARITAN SOURCE -+<U2150> /xe2/x85/x90 VULGAR FRACTION ONE SEVENTH -+<U2151> /xe2/x85/x91 VULGAR FRACTION ONE NINTH -+<U2152> /xe2/x85/x92 VULGAR FRACTION ONE TENTH - <U2153> /xe2/x85/x93 VULGAR FRACTION ONE THIRD - <U2154> /xe2/x85/x94 VULGAR FRACTION TWO THIRDS - <U2155> /xe2/x85/x95 VULGAR FRACTION ONE FIFTH -@@ -6827,6 +7298,7 @@ CHARMAP - <U2186> /xe2/x86/x86 ROMAN NUMERAL FIFTY EARLY FORM - <U2187> /xe2/x86/x87 ROMAN NUMERAL FIFTY THOUSAND - <U2188> /xe2/x86/x88 ROMAN NUMERAL ONE HUNDRED THOUSAND -+<U2189> /xe2/x86/x89 VULGAR FRACTION ZERO THIRDS - <U2190> /xe2/x86/x90 LEFTWARDS ARROW - <U2191> /xe2/x86/x91 UPWARDS ARROW - <U2192> /xe2/x86/x92 RIGHTWARDS ARROW -@@ -7427,6 +7899,18 @@ CHARMAP - <U23E5> /xe2/x8f/xa5 FLATNESS - <U23E6> /xe2/x8f/xa6 AC CURRENT - <U23E7> /xe2/x8f/xa7 ELECTRICAL INTERSECTION -+<U23E8> /xe2/x8f/xa8 DECIMAL EXPONENT SYMBOL -+<U23E9> /xe2/x8f/xa9 BLACK RIGHT-POINTING DOUBLE TRIANGLE -+<U23EA> /xe2/x8f/xaa BLACK LEFT-POINTING DOUBLE TRIANGLE -+<U23EB> /xe2/x8f/xab BLACK UP-POINTING DOUBLE TRIANGLE -+<U23EC> /xe2/x8f/xac BLACK DOWN-POINTING DOUBLE TRIANGLE -+<U23ED> /xe2/x8f/xad BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR -+<U23EE> /xe2/x8f/xae BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR -+<U23EF> /xe2/x8f/xaf BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR -+<U23F0> /xe2/x8f/xb0 ALARM CLOCK -+<U23F1> /xe2/x8f/xb1 STOPWATCH -+<U23F2> /xe2/x8f/xb2 TIMER CLOCK -+<U23F3> /xe2/x8f/xb3 HOURGLASS WITH FLOWING SAND - <U2400> /xe2/x90/x80 SYMBOL FOR NULL - <U2401> /xe2/x90/x81 SYMBOL FOR START OF HEADING - <U2402> /xe2/x90/x82 SYMBOL FOR START OF TEXT -@@ -8051,6 +8535,8 @@ CHARMAP - <U269B> /xe2/x9a/x9b ATOM SYMBOL - <U269C> /xe2/x9a/x9c FLEUR-DE-LIS - <U269D> /xe2/x9a/x9d OUTLINED WHITE STAR -+<U269E> /xe2/x9a/x9e THREE LINES CONVERGING RIGHT -+<U269F> /xe2/x9a/x9f THREE LINES CONVERGING LEFT - <U26A0> /xe2/x9a/xa0 WARNING SIGN - <U26A1> /xe2/x9a/xa1 HIGH VOLTAGE SIGN - <U26A2> /xe2/x9a/xa2 DOUBLED FEMALE SIGN -@@ -8080,18 +8566,84 @@ CHARMAP - <U26BA> /xe2/x9a/xba SEMISEXTILE - <U26BB> /xe2/x9a/xbb QUINCUNX - <U26BC> /xe2/x9a/xbc SESQUIQUADRATE -+<U26BD> /xe2/x9a/xbd SOCCER BALL -+<U26BE> /xe2/x9a/xbe BASEBALL -+<U26BF> /xe2/x9a/xbf SQUARED KEY - <U26C0> /xe2/x9b/x80 WHITE DRAUGHTS MAN - <U26C1> /xe2/x9b/x81 WHITE DRAUGHTS KING - <U26C2> /xe2/x9b/x82 BLACK DRAUGHTS MAN - <U26C3> /xe2/x9b/x83 BLACK DRAUGHTS KING -+<U26C4> /xe2/x9b/x84 SNOWMAN WITHOUT SNOW -+<U26C5> /xe2/x9b/x85 SUN BEHIND CLOUD -+<U26C6> /xe2/x9b/x86 RAIN -+<U26C7> /xe2/x9b/x87 BLACK SNOWMAN -+<U26C8> /xe2/x9b/x88 THUNDER CLOUD AND RAIN -+<U26C9> /xe2/x9b/x89 TURNED WHITE SHOGI PIECE -+<U26CA> /xe2/x9b/x8a TURNED BLACK SHOGI PIECE -+<U26CB> /xe2/x9b/x8b WHITE DIAMOND IN SQUARE -+<U26CC> /xe2/x9b/x8c CROSSING LANES -+<U26CD> /xe2/x9b/x8d DISABLED CAR -+<U26CE> /xe2/x9b/x8e OPHIUCHUS -+<U26CF> /xe2/x9b/x8f PICK -+<U26D0> /xe2/x9b/x90 CAR SLIDING -+<U26D1> /xe2/x9b/x91 HELMET WITH WHITE CROSS -+<U26D2> /xe2/x9b/x92 CIRCLED CROSSING LANES -+<U26D3> /xe2/x9b/x93 CHAINS -+<U26D4> /xe2/x9b/x94 NO ENTRY -+<U26D5> /xe2/x9b/x95 ALTERNATE ONE-WAY LEFT WAY TRAFFIC -+<U26D6> /xe2/x9b/x96 BLACK TWO-WAY LEFT WAY TRAFFIC -+<U26D7> /xe2/x9b/x97 WHITE TWO-WAY LEFT WAY TRAFFIC -+<U26D8> /xe2/x9b/x98 BLACK LEFT LANE MERGE -+<U26D9> /xe2/x9b/x99 WHITE LEFT LANE MERGE -+<U26DA> /xe2/x9b/x9a DRIVE SLOW SIGN -+<U26DB> /xe2/x9b/x9b HEAVY WHITE DOWN-POINTING TRIANGLE -+<U26DC> /xe2/x9b/x9c LEFT CLOSED ENTRY -+<U26DD> /xe2/x9b/x9d SQUARED SALTIRE -+<U26DE> /xe2/x9b/x9e FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE -+<U26DF> /xe2/x9b/x9f BLACK TRUCK -+<U26E0> /xe2/x9b/xa0 RESTRICTED LEFT ENTRY-1 -+<U26E1> /xe2/x9b/xa1 RESTRICTED LEFT ENTRY-2 -+<U26E2> /xe2/x9b/xa2 ASTRONOMICAL SYMBOL FOR URANUS -+<U26E3> /xe2/x9b/xa3 HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE -+<U26E4> /xe2/x9b/xa4 PENTAGRAM -+<U26E5> /xe2/x9b/xa5 RIGHT-HANDED INTERLACED PENTAGRAM -+<U26E6> /xe2/x9b/xa6 LEFT-HANDED INTERLACED PENTAGRAM -+<U26E7> /xe2/x9b/xa7 INVERTED PENTAGRAM -+<U26E8> /xe2/x9b/xa8 BLACK CROSS ON SHIELD -+<U26E9> /xe2/x9b/xa9 SHINTO SHRINE -+<U26EA> /xe2/x9b/xaa CHURCH -+<U26EB> /xe2/x9b/xab CASTLE -+<U26EC> /xe2/x9b/xac HISTORIC SITE -+<U26ED> /xe2/x9b/xad GEAR WITHOUT HUB -+<U26EE> /xe2/x9b/xae GEAR WITH HANDLES -+<U26EF> /xe2/x9b/xaf MAP SYMBOL FOR LIGHTHOUSE -+<U26F0> /xe2/x9b/xb0 MOUNTAIN -+<U26F1> /xe2/x9b/xb1 UMBRELLA ON GROUND -+<U26F2> /xe2/x9b/xb2 FOUNTAIN -+<U26F3> /xe2/x9b/xb3 FLAG IN HOLE -+<U26F4> /xe2/x9b/xb4 FERRY -+<U26F5> /xe2/x9b/xb5 SAILBOAT -+<U26F6> /xe2/x9b/xb6 SQUARE FOUR CORNERS -+<U26F7> /xe2/x9b/xb7 SKIER -+<U26F8> /xe2/x9b/xb8 ICE SKATE -+<U26F9> /xe2/x9b/xb9 PERSON WITH BALL -+<U26FA> /xe2/x9b/xba TENT -+<U26FB> /xe2/x9b/xbb JAPANESE BANK SYMBOL -+<U26FC> /xe2/x9b/xbc HEADSTONE GRAVEYARD SYMBOL -+<U26FD> /xe2/x9b/xbd FUEL PUMP -+<U26FE> /xe2/x9b/xbe CUP ON BLACK SQUARE -+<U26FF> /xe2/x9b/xbf WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE - <U2701> /xe2/x9c/x81 UPPER BLADE SCISSORS - <U2702> /xe2/x9c/x82 BLACK SCISSORS - <U2703> /xe2/x9c/x83 LOWER BLADE SCISSORS - <U2704> /xe2/x9c/x84 WHITE SCISSORS -+<U2705> /xe2/x9c/x85 WHITE HEAVY CHECK MARK - <U2706> /xe2/x9c/x86 TELEPHONE LOCATION SIGN - <U2707> /xe2/x9c/x87 TAPE DRIVE - <U2708> /xe2/x9c/x88 AIRPLANE - <U2709> /xe2/x9c/x89 ENVELOPE -+<U270A> /xe2/x9c/x8a RAISED FIST -+<U270B> /xe2/x9c/x8b RAISED HAND - <U270C> /xe2/x9c/x8c VICTORY HAND - <U270D> /xe2/x9c/x8d WRITING HAND - <U270E> /xe2/x9c/x8e LOWER RIGHT PENCIL -@@ -8120,6 +8672,7 @@ CHARMAP - <U2725> /xe2/x9c/xa5 FOUR CLUB-SPOKED ASTERISK - <U2726> /xe2/x9c/xa6 BLACK FOUR POINTED STAR - <U2727> /xe2/x9c/xa7 WHITE FOUR POINTED STAR -+<U2728> /xe2/x9c/xa8 SPARKLES - <U2729> /xe2/x9c/xa9 STRESS OUTLINED WHITE STAR - <U272A> /xe2/x9c/xaa CIRCLED WHITE STAR - <U272B> /xe2/x9c/xab OPEN CENTRE BLACK STAR -@@ -8155,12 +8708,18 @@ CHARMAP - <U2749> /xe2/x9d/x89 BALLOON-SPOKED ASTERISK - <U274A> /xe2/x9d/x8a EIGHT TEARDROP-SPOKED PROPELLER ASTERISK - <U274B> /xe2/x9d/x8b HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK -+<U274C> /xe2/x9d/x8c CROSS MARK - <U274D> /xe2/x9d/x8d SHADOWED WHITE CIRCLE -+<U274E> /xe2/x9d/x8e NEGATIVE SQUARED CROSS MARK - <U274F> /xe2/x9d/x8f LOWER RIGHT DROP-SHADOWED WHITE SQUARE - <U2750> /xe2/x9d/x90 UPPER RIGHT DROP-SHADOWED WHITE SQUARE - <U2751> /xe2/x9d/x91 LOWER RIGHT SHADOWED WHITE SQUARE - <U2752> /xe2/x9d/x92 UPPER RIGHT SHADOWED WHITE SQUARE -+<U2753> /xe2/x9d/x93 BLACK QUESTION MARK ORNAMENT -+<U2754> /xe2/x9d/x94 WHITE QUESTION MARK ORNAMENT -+<U2755> /xe2/x9d/x95 WHITE EXCLAMATION MARK ORNAMENT - <U2756> /xe2/x9d/x96 BLACK DIAMOND MINUS WHITE X -+<U2757> /xe2/x9d/x97 HEAVY EXCLAMATION MARK SYMBOL - <U2758> /xe2/x9d/x98 LIGHT VERTICAL BAR - <U2759> /xe2/x9d/x99 MEDIUM VERTICAL BAR - <U275A> /xe2/x9d/x9a HEAVY VERTICAL BAR -@@ -8168,6 +8727,8 @@ CHARMAP - <U275C> /xe2/x9d/x9c HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT - <U275D> /xe2/x9d/x9d HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT - <U275E> /xe2/x9d/x9e HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT -+<U275F> /xe2/x9d/x9f HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT -+<U2760> /xe2/x9d/xa0 HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT - <U2761> /xe2/x9d/xa1 CURVED STEM PARAGRAPH SIGN ORNAMENT - <U2762> /xe2/x9d/xa2 HEAVY EXCLAMATION MARK ORNAMENT - <U2763> /xe2/x9d/xa3 HEAVY HEART EXCLAMATION MARK ORNAMENT -@@ -8220,6 +8781,9 @@ CHARMAP - <U2792> /xe2/x9e/x92 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE - <U2793> /xe2/x9e/x93 DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN - <U2794> /xe2/x9e/x94 HEAVY WIDE-HEADED RIGHTWARDS ARROW -+<U2795> /xe2/x9e/x95 HEAVY PLUS SIGN -+<U2796> /xe2/x9e/x96 HEAVY MINUS SIGN -+<U2797> /xe2/x9e/x97 HEAVY DIVISION SIGN - <U2798> /xe2/x9e/x98 HEAVY SOUTH EAST ARROW - <U2799> /xe2/x9e/x99 HEAVY RIGHTWARDS ARROW - <U279A> /xe2/x9e/x9a HEAVY NORTH EAST ARROW -@@ -8244,6 +8808,7 @@ CHARMAP - <U27AD> /xe2/x9e/xad HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW - <U27AE> /xe2/x9e/xae HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW - <U27AF> /xe2/x9e/xaf NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -+<U27B0> /xe2/x9e/xb0 CURLY LOOP - <U27B1> /xe2/x9e/xb1 NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW - <U27B2> /xe2/x9e/xb2 CIRCLED HEAVY WHITE RIGHTWARDS ARROW - <U27B3> /xe2/x9e/xb3 WHITE-FEATHERED RIGHTWARDS ARROW -@@ -8258,6 +8823,7 @@ CHARMAP - <U27BC> /xe2/x9e/xbc WEDGE-TAILED RIGHTWARDS ARROW - <U27BD> /xe2/x9e/xbd HEAVY WEDGE-TAILED RIGHTWARDS ARROW - <U27BE> /xe2/x9e/xbe OPEN-OUTLINED RIGHTWARDS ARROW -+<U27BF> /xe2/x9e/xbf DOUBLE CURLY LOOP - <U27C0> /xe2/x9f/x80 THREE DIMENSIONAL ANGLE - <U27C1> /xe2/x9f/x81 WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE - <U27C2> /xe2/x9f/x82 PERPENDICULAR -@@ -8270,6 +8836,8 @@ CHARMAP - <U27C9> /xe2/x9f/x89 SUPERSET PRECEDING SOLIDUS - <U27CA> /xe2/x9f/x8a VERTICAL BAR WITH HORIZONTAL STROKE - <U27CC> /xe2/x9f/x8c LONG DIVISION -+<U27CE> /xe2/x9f/x8e SQUARED LOGICAL AND -+<U27CF> /xe2/x9f/x8f SQUARED LOGICAL OR - <U27D0> /xe2/x9f/x90 WHITE DIAMOND WITH CENTRED DOT - <U27D1> /xe2/x9f/x91 AND WITH DOT - <U27D2> /xe2/x9f/x92 ELEMENT OF OPENING UPWARDS -@@ -9168,6 +9736,11 @@ CHARMAP - <U2B52> /xe2/xad/x92 WHITE SMALL STAR - <U2B53> /xe2/xad/x93 BLACK RIGHT-POINTING PENTAGON - <U2B54> /xe2/xad/x94 WHITE RIGHT-POINTING PENTAGON -+<U2B55> /xe2/xad/x95 HEAVY LARGE CIRCLE -+<U2B56> /xe2/xad/x96 HEAVY OVAL WITH OVAL INSIDE -+<U2B57> /xe2/xad/x97 HEAVY CIRCLE WITH CIRCLE INSIDE -+<U2B58> /xe2/xad/x98 HEAVY CIRCLE -+<U2B59> /xe2/xad/x99 HEAVY CIRCLED SALTIRE - <U2C00> /xe2/xb0/x80 GLAGOLITIC CAPITAL LETTER AZU - <U2C01> /xe2/xb0/x81 GLAGOLITIC CAPITAL LETTER BUKY - <U2C02> /xe2/xb0/x82 GLAGOLITIC CAPITAL LETTER VEDE -@@ -9278,6 +9851,7 @@ CHARMAP - <U2C6D> /xe2/xb1/xad LATIN CAPITAL LETTER ALPHA - <U2C6E> /xe2/xb1/xae LATIN CAPITAL LETTER M WITH HOOK - <U2C6F> /xe2/xb1/xaf LATIN CAPITAL LETTER TURNED A -+<U2C70> /xe2/xb1/xb0 LATIN CAPITAL LETTER TURNED ALPHA - <U2C71> /xe2/xb1/xb1 LATIN SMALL LETTER V WITH RIGHT HOOK - <U2C72> /xe2/xb1/xb2 LATIN CAPITAL LETTER W WITH HOOK - <U2C73> /xe2/xb1/xb3 LATIN SMALL LETTER W WITH HOOK -@@ -9291,6 +9865,8 @@ CHARMAP - <U2C7B> /xe2/xb1/xbb LATIN LETTER SMALL CAPITAL TURNED E - <U2C7C> /xe2/xb1/xbc LATIN SUBSCRIPT SMALL LETTER J - <U2C7D> /xe2/xb1/xbd MODIFIER LETTER CAPITAL V -+<U2C7E> /xe2/xb1/xbe LATIN CAPITAL LETTER S WITH SWASH TAIL -+<U2C7F> /xe2/xb1/xbf LATIN CAPITAL LETTER Z WITH SWASH TAIL - <U2C80> /xe2/xb2/x80 COPTIC CAPITAL LETTER ALFA - <U2C81> /xe2/xb2/x81 COPTIC SMALL LETTER ALFA - <U2C82> /xe2/xb2/x82 COPTIC CAPITAL LETTER VIDA -@@ -9398,6 +9974,13 @@ CHARMAP - <U2CE8> /xe2/xb3/xa8 COPTIC SYMBOL TAU RO - <U2CE9> /xe2/xb3/xa9 COPTIC SYMBOL KHI RO - <U2CEA> /xe2/xb3/xaa COPTIC SYMBOL SHIMA SIMA -+<U2CEB> /xe2/xb3/xab COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI -+<U2CEC> /xe2/xb3/xac COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI -+<U2CED> /xe2/xb3/xad COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA -+<U2CEE> /xe2/xb3/xae COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA -+<U2CEF> /xe2/xb3/xaf COPTIC COMBINING NI ABOVE -+<U2CF0> /xe2/xb3/xb0 COPTIC COMBINING SPIRITUS ASPER -+<U2CF1> /xe2/xb3/xb1 COPTIC COMBINING SPIRITUS LENIS - <U2CF9> /xe2/xb3/xb9 COPTIC OLD NUBIAN FULL STOP - <U2CFA> /xe2/xb3/xba COPTIC OLD NUBIAN DIRECT QUESTION MARK - <U2CFB> /xe2/xb3/xbb COPTIC OLD NUBIAN INDIRECT QUESTION MARK -@@ -9498,6 +10081,8 @@ CHARMAP - <U2D64> /xe2/xb5/xa4 TIFINAGH LETTER TAWELLEMET YAZ - <U2D65> /xe2/xb5/xa5 TIFINAGH LETTER YAZZ - <U2D6F> /xe2/xb5/xaf TIFINAGH MODIFIER LETTER LABIALIZATION MARK -+<U2D70> /xe2/xb5/xb0 TIFINAGH SEPARATOR MARK -+<U2D7F> /xe2/xb5/xbf TIFINAGH CONSONANT JOINER - <U2D80> /xe2/xb6/x80 ETHIOPIC SYLLABLE LOA - <U2D81> /xe2/xb6/x81 ETHIOPIC SYLLABLE MOA - <U2D82> /xe2/xb6/x82 ETHIOPIC SYLLABLE ROA -@@ -9658,6 +10243,7 @@ CHARMAP - <U2E2E> /xe2/xb8/xae REVERSED QUESTION MARK - <U2E2F> /xe2/xb8/xaf VERTICAL TILDE - <U2E30> /xe2/xb8/xb0 RING POINT -+<U2E31> /xe2/xb8/xb1 WORD SEPARATOR MIDDLE DOT - <U2E80> /xe2/xba/x80 CJK RADICAL REPEAT - <U2E81> /xe2/xba/x81 CJK RADICAL CLIFF - <U2E82> /xe2/xba/x82 CJK RADICAL SECOND ONE -@@ -10427,6 +11013,9 @@ CHARMAP - <U31B5> /xe3/x86/xb5 BOPOMOFO FINAL LETTER T - <U31B6> /xe3/x86/xb6 BOPOMOFO FINAL LETTER K - <U31B7> /xe3/x86/xb7 BOPOMOFO FINAL LETTER H -+<U31B8> /xe3/x86/xb8 BOPOMOFO LETTER GH -+<U31B9> /xe3/x86/xb9 BOPOMOFO LETTER LH -+<U31BA> /xe3/x86/xba BOPOMOFO LETTER ZY - <U31C0> /xe3/x87/x80 CJK STROKE T - <U31C1> /xe3/x87/x81 CJK STROKE WG - <U31C2> /xe3/x87/x82 CJK STROKE XG -@@ -10546,6 +11135,18 @@ CHARMAP - <U3241> /xe3/x89/x81 PARENTHESIZED IDEOGRAPH REST - <U3242> /xe3/x89/x82 PARENTHESIZED IDEOGRAPH SELF - <U3243> /xe3/x89/x83 PARENTHESIZED IDEOGRAPH REACH -+<U3244> /xe3/x89/x84 CIRCLED IDEOGRAPH QUESTION -+<U3245> /xe3/x89/x85 CIRCLED IDEOGRAPH KINDERGARTEN -+<U3246> /xe3/x89/x86 CIRCLED IDEOGRAPH SCHOOL -+<U3247> /xe3/x89/x87 CIRCLED IDEOGRAPH KOTO -+<U3248> /xe3/x89/x88 CIRCLED NUMBER TEN ON BLACK SQUARE -+<U3249> /xe3/x89/x89 CIRCLED NUMBER TWENTY ON BLACK SQUARE -+<U324A> /xe3/x89/x8a CIRCLED NUMBER THIRTY ON BLACK SQUARE -+<U324B> /xe3/x89/x8b CIRCLED NUMBER FORTY ON BLACK SQUARE -+<U324C> /xe3/x89/x8c CIRCLED NUMBER FIFTY ON BLACK SQUARE -+<U324D> /xe3/x89/x8d CIRCLED NUMBER SIXTY ON BLACK SQUARE -+<U324E> /xe3/x89/x8e CIRCLED NUMBER SEVENTY ON BLACK SQUARE -+<U324F> /xe3/x89/x8f CIRCLED NUMBER EIGHTY ON BLACK SQUARE - <U3250> /xe3/x89/x90 PARTNERSHIP SIGN - <U3251> /xe3/x89/x91 CIRCLED NUMBER TWENTY ONE - <U3252> /xe3/x89/x92 CIRCLED NUMBER TWENTY TWO -@@ -12691,6 +13292,54 @@ CHARMAP - <UA4C4> /xea/x93/x84 YI RADICAL ZZIET - <UA4C5> /xea/x93/x85 YI RADICAL NBIE - <UA4C6> /xea/x93/x86 YI RADICAL KE -+<UA4D0> /xea/x93/x90 LISU LETTER BA -+<UA4D1> /xea/x93/x91 LISU LETTER PA -+<UA4D2> /xea/x93/x92 LISU LETTER PHA -+<UA4D3> /xea/x93/x93 LISU LETTER DA -+<UA4D4> /xea/x93/x94 LISU LETTER TA -+<UA4D5> /xea/x93/x95 LISU LETTER THA -+<UA4D6> /xea/x93/x96 LISU LETTER GA -+<UA4D7> /xea/x93/x97 LISU LETTER KA -+<UA4D8> /xea/x93/x98 LISU LETTER KHA -+<UA4D9> /xea/x93/x99 LISU LETTER JA -+<UA4DA> /xea/x93/x9a LISU LETTER CA -+<UA4DB> /xea/x93/x9b LISU LETTER CHA -+<UA4DC> /xea/x93/x9c LISU LETTER DZA -+<UA4DD> /xea/x93/x9d LISU LETTER TSA -+<UA4DE> /xea/x93/x9e LISU LETTER TSHA -+<UA4DF> /xea/x93/x9f LISU LETTER MA -+<UA4E0> /xea/x93/xa0 LISU LETTER NA -+<UA4E1> /xea/x93/xa1 LISU LETTER LA -+<UA4E2> /xea/x93/xa2 LISU LETTER SA -+<UA4E3> /xea/x93/xa3 LISU LETTER ZHA -+<UA4E4> /xea/x93/xa4 LISU LETTER ZA -+<UA4E5> /xea/x93/xa5 LISU LETTER NGA -+<UA4E6> /xea/x93/xa6 LISU LETTER HA -+<UA4E7> /xea/x93/xa7 LISU LETTER XA -+<UA4E8> /xea/x93/xa8 LISU LETTER HHA -+<UA4E9> /xea/x93/xa9 LISU LETTER FA -+<UA4EA> /xea/x93/xaa LISU LETTER WA -+<UA4EB> /xea/x93/xab LISU LETTER SHA -+<UA4EC> /xea/x93/xac LISU LETTER YA -+<UA4ED> /xea/x93/xad LISU LETTER GHA -+<UA4EE> /xea/x93/xae LISU LETTER A -+<UA4EF> /xea/x93/xaf LISU LETTER AE -+<UA4F0> /xea/x93/xb0 LISU LETTER E -+<UA4F1> /xea/x93/xb1 LISU LETTER EU -+<UA4F2> /xea/x93/xb2 LISU LETTER I -+<UA4F3> /xea/x93/xb3 LISU LETTER O -+<UA4F4> /xea/x93/xb4 LISU LETTER U -+<UA4F5> /xea/x93/xb5 LISU LETTER UE -+<UA4F6> /xea/x93/xb6 LISU LETTER UH -+<UA4F7> /xea/x93/xb7 LISU LETTER OE -+<UA4F8> /xea/x93/xb8 LISU LETTER TONE MYA TI -+<UA4F9> /xea/x93/xb9 LISU LETTER TONE NA PO -+<UA4FA> /xea/x93/xba LISU LETTER TONE MYA CYA -+<UA4FB> /xea/x93/xbb LISU LETTER TONE MYA BO -+<UA4FC> /xea/x93/xbc LISU LETTER TONE MYA NA -+<UA4FD> /xea/x93/xbd LISU LETTER TONE MYA JEU -+<UA4FE> /xea/x93/xbe LISU PUNCTUATION COMMA -+<UA4FF> /xea/x93/xbf LISU PUNCTUATION FULL STOP - <UA500> /xea/x94/x80 VAI SYLLABLE EE - <UA501> /xea/x94/x81 VAI SYLLABLE EEN - <UA502> /xea/x94/x82 VAI SYLLABLE HEE -@@ -13023,6 +13672,8 @@ CHARMAP - <UA65D> /xea/x99/x9d CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS - <UA65E> /xea/x99/x9e CYRILLIC CAPITAL LETTER YN - <UA65F> /xea/x99/x9f CYRILLIC SMALL LETTER YN -+<UA660> /xea/x99/xa0 CYRILLIC CAPITAL LETTER REVERSED TSE -+<UA661> /xea/x99/xa1 CYRILLIC SMALL LETTER REVERSED TSE - <UA662> /xea/x99/xa2 CYRILLIC CAPITAL LETTER SOFT DE - <UA663> /xea/x99/xa3 CYRILLIC SMALL LETTER SOFT DE - <UA664> /xea/x99/xa4 CYRILLIC CAPITAL LETTER SOFT EL -@@ -13069,6 +13720,94 @@ CHARMAP - <UA695> /xea/x9a/x95 CYRILLIC SMALL LETTER HWE - <UA696> /xea/x9a/x96 CYRILLIC CAPITAL LETTER SHWE - <UA697> /xea/x9a/x97 CYRILLIC SMALL LETTER SHWE -+<UA6A0> /xea/x9a/xa0 BAMUM LETTER A -+<UA6A1> /xea/x9a/xa1 BAMUM LETTER KA -+<UA6A2> /xea/x9a/xa2 BAMUM LETTER U -+<UA6A3> /xea/x9a/xa3 BAMUM LETTER KU -+<UA6A4> /xea/x9a/xa4 BAMUM LETTER EE -+<UA6A5> /xea/x9a/xa5 BAMUM LETTER REE -+<UA6A6> /xea/x9a/xa6 BAMUM LETTER TAE -+<UA6A7> /xea/x9a/xa7 BAMUM LETTER O -+<UA6A8> /xea/x9a/xa8 BAMUM LETTER NYI -+<UA6A9> /xea/x9a/xa9 BAMUM LETTER I -+<UA6AA> /xea/x9a/xaa BAMUM LETTER LA -+<UA6AB> /xea/x9a/xab BAMUM LETTER PA -+<UA6AC> /xea/x9a/xac BAMUM LETTER RII -+<UA6AD> /xea/x9a/xad BAMUM LETTER RIEE -+<UA6AE> /xea/x9a/xae BAMUM LETTER LEEEE -+<UA6AF> /xea/x9a/xaf BAMUM LETTER MEEEE -+<UA6B0> /xea/x9a/xb0 BAMUM LETTER TAA -+<UA6B1> /xea/x9a/xb1 BAMUM LETTER NDAA -+<UA6B2> /xea/x9a/xb2 BAMUM LETTER NJAEM -+<UA6B3> /xea/x9a/xb3 BAMUM LETTER M -+<UA6B4> /xea/x9a/xb4 BAMUM LETTER SUU -+<UA6B5> /xea/x9a/xb5 BAMUM LETTER MU -+<UA6B6> /xea/x9a/xb6 BAMUM LETTER SHII -+<UA6B7> /xea/x9a/xb7 BAMUM LETTER SI -+<UA6B8> /xea/x9a/xb8 BAMUM LETTER SHEUX -+<UA6B9> /xea/x9a/xb9 BAMUM LETTER SEUX -+<UA6BA> /xea/x9a/xba BAMUM LETTER KYEE -+<UA6BB> /xea/x9a/xbb BAMUM LETTER KET -+<UA6BC> /xea/x9a/xbc BAMUM LETTER NUAE -+<UA6BD> /xea/x9a/xbd BAMUM LETTER NU -+<UA6BE> /xea/x9a/xbe BAMUM LETTER NJUAE -+<UA6BF> /xea/x9a/xbf BAMUM LETTER YOQ -+<UA6C0> /xea/x9b/x80 BAMUM LETTER SHU -+<UA6C1> /xea/x9b/x81 BAMUM LETTER YUQ -+<UA6C2> /xea/x9b/x82 BAMUM LETTER YA -+<UA6C3> /xea/x9b/x83 BAMUM LETTER NSHA -+<UA6C4> /xea/x9b/x84 BAMUM LETTER KEUX -+<UA6C5> /xea/x9b/x85 BAMUM LETTER PEUX -+<UA6C6> /xea/x9b/x86 BAMUM LETTER NJEE -+<UA6C7> /xea/x9b/x87 BAMUM LETTER NTEE -+<UA6C8> /xea/x9b/x88 BAMUM LETTER PUE -+<UA6C9> /xea/x9b/x89 BAMUM LETTER WUE -+<UA6CA> /xea/x9b/x8a BAMUM LETTER PEE -+<UA6CB> /xea/x9b/x8b BAMUM LETTER FEE -+<UA6CC> /xea/x9b/x8c BAMUM LETTER RU -+<UA6CD> /xea/x9b/x8d BAMUM LETTER LU -+<UA6CE> /xea/x9b/x8e BAMUM LETTER MI -+<UA6CF> /xea/x9b/x8f BAMUM LETTER NI -+<UA6D0> /xea/x9b/x90 BAMUM LETTER REUX -+<UA6D1> /xea/x9b/x91 BAMUM LETTER RAE -+<UA6D2> /xea/x9b/x92 BAMUM LETTER KEN -+<UA6D3> /xea/x9b/x93 BAMUM LETTER NGKWAEN -+<UA6D4> /xea/x9b/x94 BAMUM LETTER NGGA -+<UA6D5> /xea/x9b/x95 BAMUM LETTER NGA -+<UA6D6> /xea/x9b/x96 BAMUM LETTER SHO -+<UA6D7> /xea/x9b/x97 BAMUM LETTER PUAE -+<UA6D8> /xea/x9b/x98 BAMUM LETTER FU -+<UA6D9> /xea/x9b/x99 BAMUM LETTER FOM -+<UA6DA> /xea/x9b/x9a BAMUM LETTER WA -+<UA6DB> /xea/x9b/x9b BAMUM LETTER NA -+<UA6DC> /xea/x9b/x9c BAMUM LETTER LI -+<UA6DD> /xea/x9b/x9d BAMUM LETTER PI -+<UA6DE> /xea/x9b/x9e BAMUM LETTER LOQ -+<UA6DF> /xea/x9b/x9f BAMUM LETTER KO -+<UA6E0> /xea/x9b/xa0 BAMUM LETTER MBEN -+<UA6E1> /xea/x9b/xa1 BAMUM LETTER REN -+<UA6E2> /xea/x9b/xa2 BAMUM LETTER MEN -+<UA6E3> /xea/x9b/xa3 BAMUM LETTER MA -+<UA6E4> /xea/x9b/xa4 BAMUM LETTER TI -+<UA6E5> /xea/x9b/xa5 BAMUM LETTER KI -+<UA6E6> /xea/x9b/xa6 BAMUM LETTER MO -+<UA6E7> /xea/x9b/xa7 BAMUM LETTER MBAA -+<UA6E8> /xea/x9b/xa8 BAMUM LETTER TET -+<UA6E9> /xea/x9b/xa9 BAMUM LETTER KPA -+<UA6EA> /xea/x9b/xaa BAMUM LETTER TEN -+<UA6EB> /xea/x9b/xab BAMUM LETTER NTUU -+<UA6EC> /xea/x9b/xac BAMUM LETTER SAMBA -+<UA6ED> /xea/x9b/xad BAMUM LETTER FAAMAE -+<UA6EE> /xea/x9b/xae BAMUM LETTER KOVUU -+<UA6EF> /xea/x9b/xaf BAMUM LETTER KOGHOM -+<UA6F0> /xea/x9b/xb0 BAMUM COMBINING MARK KOQNDON -+<UA6F1> /xea/x9b/xb1 BAMUM COMBINING MARK TUKWENTIS -+<UA6F2> /xea/x9b/xb2 BAMUM NJAEMLI -+<UA6F3> /xea/x9b/xb3 BAMUM FULL STOP -+<UA6F4> /xea/x9b/xb4 BAMUM COLON -+<UA6F5> /xea/x9b/xb5 BAMUM COMMA -+<UA6F6> /xea/x9b/xb6 BAMUM SEMICOLON -+<UA6F7> /xea/x9b/xb7 BAMUM QUESTION MARK - <UA700> /xea/x9c/x80 MODIFIER LETTER CHINESE TONE YIN PING - <UA701> /xea/x9c/x81 MODIFIER LETTER CHINESE TONE YANG PING - <UA702> /xea/x9c/x82 MODIFIER LETTER CHINESE TONE YIN SHANG -@@ -13210,6 +13949,21 @@ CHARMAP - <UA78A> /xea/x9e/x8a MODIFIER LETTER SHORT EQUALS SIGN - <UA78B> /xea/x9e/x8b LATIN CAPITAL LETTER SALTILLO - <UA78C> /xea/x9e/x8c LATIN SMALL LETTER SALTILLO -+<UA78D> /xea/x9e/x8d LATIN CAPITAL LETTER TURNED H -+<UA78E> /xea/x9e/x8e LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT -+<UA790> /xea/x9e/x90 LATIN CAPITAL LETTER N WITH DESCENDER -+<UA791> /xea/x9e/x91 LATIN SMALL LETTER N WITH DESCENDER -+<UA7A0> /xea/x9e/xa0 LATIN CAPITAL LETTER G WITH OBLIQUE STROKE -+<UA7A1> /xea/x9e/xa1 LATIN SMALL LETTER G WITH OBLIQUE STROKE -+<UA7A2> /xea/x9e/xa2 LATIN CAPITAL LETTER K WITH OBLIQUE STROKE -+<UA7A3> /xea/x9e/xa3 LATIN SMALL LETTER K WITH OBLIQUE STROKE -+<UA7A4> /xea/x9e/xa4 LATIN CAPITAL LETTER N WITH OBLIQUE STROKE -+<UA7A5> /xea/x9e/xa5 LATIN SMALL LETTER N WITH OBLIQUE STROKE -+<UA7A6> /xea/x9e/xa6 LATIN CAPITAL LETTER R WITH OBLIQUE STROKE -+<UA7A7> /xea/x9e/xa7 LATIN SMALL LETTER R WITH OBLIQUE STROKE -+<UA7A8> /xea/x9e/xa8 LATIN CAPITAL LETTER S WITH OBLIQUE STROKE -+<UA7A9> /xea/x9e/xa9 LATIN SMALL LETTER S WITH OBLIQUE STROKE -+<UA7FA> /xea/x9f/xba LATIN LETTER SMALL CAPITAL TURNED M - <UA7FB> /xea/x9f/xbb LATIN EPIGRAPHIC LETTER REVERSED F - <UA7FC> /xea/x9f/xbc LATIN EPIGRAPHIC LETTER REVERSED P - <UA7FD> /xea/x9f/xbd LATIN EPIGRAPHIC LETTER INVERTED M -@@ -13259,6 +14013,16 @@ CHARMAP - <UA829> /xea/xa0/xa9 SYLOTI NAGRI POETRY MARK-2 - <UA82A> /xea/xa0/xaa SYLOTI NAGRI POETRY MARK-3 - <UA82B> /xea/xa0/xab SYLOTI NAGRI POETRY MARK-4 -+<UA830> /xea/xa0/xb0 NORTH INDIC FRACTION ONE QUARTER -+<UA831> /xea/xa0/xb1 NORTH INDIC FRACTION ONE HALF -+<UA832> /xea/xa0/xb2 NORTH INDIC FRACTION THREE QUARTERS -+<UA833> /xea/xa0/xb3 NORTH INDIC FRACTION ONE SIXTEENTH -+<UA834> /xea/xa0/xb4 NORTH INDIC FRACTION ONE EIGHTH -+<UA835> /xea/xa0/xb5 NORTH INDIC FRACTION THREE SIXTEENTHS -+<UA836> /xea/xa0/xb6 NORTH INDIC QUARTER MARK -+<UA837> /xea/xa0/xb7 NORTH INDIC PLACEHOLDER MARK -+<UA838> /xea/xa0/xb8 NORTH INDIC RUPEE MARK -+<UA839> /xea/xa0/xb9 NORTH INDIC QUANTITY MARK - <UA840> /xea/xa1/x80 PHAGS-PA LETTER KA - <UA841> /xea/xa1/x81 PHAGS-PA LETTER KHA - <UA842> /xea/xa1/x82 PHAGS-PA LETTER GA -@@ -13396,6 +14160,34 @@ CHARMAP - <UA8D7> /xea/xa3/x97 SAURASHTRA DIGIT SEVEN - <UA8D8> /xea/xa3/x98 SAURASHTRA DIGIT EIGHT - <UA8D9> /xea/xa3/x99 SAURASHTRA DIGIT NINE -+<UA8E0> /xea/xa3/xa0 COMBINING DEVANAGARI DIGIT ZERO -+<UA8E1> /xea/xa3/xa1 COMBINING DEVANAGARI DIGIT ONE -+<UA8E2> /xea/xa3/xa2 COMBINING DEVANAGARI DIGIT TWO -+<UA8E3> /xea/xa3/xa3 COMBINING DEVANAGARI DIGIT THREE -+<UA8E4> /xea/xa3/xa4 COMBINING DEVANAGARI DIGIT FOUR -+<UA8E5> /xea/xa3/xa5 COMBINING DEVANAGARI DIGIT FIVE -+<UA8E6> /xea/xa3/xa6 COMBINING DEVANAGARI DIGIT SIX -+<UA8E7> /xea/xa3/xa7 COMBINING DEVANAGARI DIGIT SEVEN -+<UA8E8> /xea/xa3/xa8 COMBINING DEVANAGARI DIGIT EIGHT -+<UA8E9> /xea/xa3/xa9 COMBINING DEVANAGARI DIGIT NINE -+<UA8EA> /xea/xa3/xaa COMBINING DEVANAGARI LETTER A -+<UA8EB> /xea/xa3/xab COMBINING DEVANAGARI LETTER U -+<UA8EC> /xea/xa3/xac COMBINING DEVANAGARI LETTER KA -+<UA8ED> /xea/xa3/xad COMBINING DEVANAGARI LETTER NA -+<UA8EE> /xea/xa3/xae COMBINING DEVANAGARI LETTER PA -+<UA8EF> /xea/xa3/xaf COMBINING DEVANAGARI LETTER RA -+<UA8F0> /xea/xa3/xb0 COMBINING DEVANAGARI LETTER VI -+<UA8F1> /xea/xa3/xb1 COMBINING DEVANAGARI SIGN AVAGRAHA -+<UA8F2> /xea/xa3/xb2 DEVANAGARI SIGN SPACING CANDRABINDU -+<UA8F3> /xea/xa3/xb3 DEVANAGARI SIGN CANDRABINDU VIRAMA -+<UA8F4> /xea/xa3/xb4 DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA -+<UA8F5> /xea/xa3/xb5 DEVANAGARI SIGN CANDRABINDU TWO -+<UA8F6> /xea/xa3/xb6 DEVANAGARI SIGN CANDRABINDU THREE -+<UA8F7> /xea/xa3/xb7 DEVANAGARI SIGN CANDRABINDU AVAGRAHA -+<UA8F8> /xea/xa3/xb8 DEVANAGARI SIGN PUSHPIKA -+<UA8F9> /xea/xa3/xb9 DEVANAGARI GAP FILLER -+<UA8FA> /xea/xa3/xba DEVANAGARI CARET -+<UA8FB> /xea/xa3/xbb DEVANAGARI HEADSTROKE - <UA900> /xea/xa4/x80 KAYAH LI DIGIT ZERO - <UA901> /xea/xa4/x81 KAYAH LI DIGIT ONE - <UA902> /xea/xa4/x82 KAYAH LI DIGIT TWO -@@ -13481,6 +14273,126 @@ CHARMAP - <UA952> /xea/xa5/x92 REJANG CONSONANT SIGN H - <UA953> /xea/xa5/x93 REJANG VIRAMA - <UA95F> /xea/xa5/x9f REJANG SECTION MARK -+<UA960> /xea/xa5/xa0 HANGUL CHOSEONG TIKEUT-MIEUM -+<UA961> /xea/xa5/xa1 HANGUL CHOSEONG TIKEUT-PIEUP -+<UA962> /xea/xa5/xa2 HANGUL CHOSEONG TIKEUT-SIOS -+<UA963> /xea/xa5/xa3 HANGUL CHOSEONG TIKEUT-CIEUC -+<UA964> /xea/xa5/xa4 HANGUL CHOSEONG RIEUL-KIYEOK -+<UA965> /xea/xa5/xa5 HANGUL CHOSEONG RIEUL-SSANGKIYEOK -+<UA966> /xea/xa5/xa6 HANGUL CHOSEONG RIEUL-TIKEUT -+<UA967> /xea/xa5/xa7 HANGUL CHOSEONG RIEUL-SSANGTIKEUT -+<UA968> /xea/xa5/xa8 HANGUL CHOSEONG RIEUL-MIEUM -+<UA969> /xea/xa5/xa9 HANGUL CHOSEONG RIEUL-PIEUP -+<UA96A> /xea/xa5/xaa HANGUL CHOSEONG RIEUL-SSANGPIEUP -+<UA96B> /xea/xa5/xab HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP -+<UA96C> /xea/xa5/xac HANGUL CHOSEONG RIEUL-SIOS -+<UA96D> /xea/xa5/xad HANGUL CHOSEONG RIEUL-CIEUC -+<UA96E> /xea/xa5/xae HANGUL CHOSEONG RIEUL-KHIEUKH -+<UA96F> /xea/xa5/xaf HANGUL CHOSEONG MIEUM-KIYEOK -+<UA970> /xea/xa5/xb0 HANGUL CHOSEONG MIEUM-TIKEUT -+<UA971> /xea/xa5/xb1 HANGUL CHOSEONG MIEUM-SIOS -+<UA972> /xea/xa5/xb2 HANGUL CHOSEONG PIEUP-SIOS-THIEUTH -+<UA973> /xea/xa5/xb3 HANGUL CHOSEONG PIEUP-KHIEUKH -+<UA974> /xea/xa5/xb4 HANGUL CHOSEONG PIEUP-HIEUH -+<UA975> /xea/xa5/xb5 HANGUL CHOSEONG SSANGSIOS-PIEUP -+<UA976> /xea/xa5/xb6 HANGUL CHOSEONG IEUNG-RIEUL -+<UA977> /xea/xa5/xb7 HANGUL CHOSEONG IEUNG-HIEUH -+<UA978> /xea/xa5/xb8 HANGUL CHOSEONG SSANGCIEUC-HIEUH -+<UA979> /xea/xa5/xb9 HANGUL CHOSEONG SSANGTHIEUTH -+<UA97A> /xea/xa5/xba HANGUL CHOSEONG PHIEUPH-HIEUH -+<UA97B> /xea/xa5/xbb HANGUL CHOSEONG HIEUH-SIOS -+<UA97C> /xea/xa5/xbc HANGUL CHOSEONG SSANGYEORINHIEUH -+<UA980> /xea/xa6/x80 JAVANESE SIGN PANYANGGA -+<UA981> /xea/xa6/x81 JAVANESE SIGN CECAK -+<UA982> /xea/xa6/x82 JAVANESE SIGN LAYAR -+<UA983> /xea/xa6/x83 JAVANESE SIGN WIGNYAN -+<UA984> /xea/xa6/x84 JAVANESE LETTER A -+<UA985> /xea/xa6/x85 JAVANESE LETTER I KAWI -+<UA986> /xea/xa6/x86 JAVANESE LETTER I -+<UA987> /xea/xa6/x87 JAVANESE LETTER II -+<UA988> /xea/xa6/x88 JAVANESE LETTER U -+<UA989> /xea/xa6/x89 JAVANESE LETTER PA CEREK -+<UA98A> /xea/xa6/x8a JAVANESE LETTER NGA LELET -+<UA98B> /xea/xa6/x8b JAVANESE LETTER NGA LELET RASWADI -+<UA98C> /xea/xa6/x8c JAVANESE LETTER E -+<UA98D> /xea/xa6/x8d JAVANESE LETTER AI -+<UA98E> /xea/xa6/x8e JAVANESE LETTER O -+<UA98F> /xea/xa6/x8f JAVANESE LETTER KA -+<UA990> /xea/xa6/x90 JAVANESE LETTER KA SASAK -+<UA991> /xea/xa6/x91 JAVANESE LETTER KA MURDA -+<UA992> /xea/xa6/x92 JAVANESE LETTER GA -+<UA993> /xea/xa6/x93 JAVANESE LETTER GA MURDA -+<UA994> /xea/xa6/x94 JAVANESE LETTER NGA -+<UA995> /xea/xa6/x95 JAVANESE LETTER CA -+<UA996> /xea/xa6/x96 JAVANESE LETTER CA MURDA -+<UA997> /xea/xa6/x97 JAVANESE LETTER JA -+<UA998> /xea/xa6/x98 JAVANESE LETTER NYA MURDA -+<UA999> /xea/xa6/x99 JAVANESE LETTER JA MAHAPRANA -+<UA99A> /xea/xa6/x9a JAVANESE LETTER NYA -+<UA99B> /xea/xa6/x9b JAVANESE LETTER TTA -+<UA99C> /xea/xa6/x9c JAVANESE LETTER TTA MAHAPRANA -+<UA99D> /xea/xa6/x9d JAVANESE LETTER DDA -+<UA99E> /xea/xa6/x9e JAVANESE LETTER DDA MAHAPRANA -+<UA99F> /xea/xa6/x9f JAVANESE LETTER NA MURDA -+<UA9A0> /xea/xa6/xa0 JAVANESE LETTER TA -+<UA9A1> /xea/xa6/xa1 JAVANESE LETTER TA MURDA -+<UA9A2> /xea/xa6/xa2 JAVANESE LETTER DA -+<UA9A3> /xea/xa6/xa3 JAVANESE LETTER DA MAHAPRANA -+<UA9A4> /xea/xa6/xa4 JAVANESE LETTER NA -+<UA9A5> /xea/xa6/xa5 JAVANESE LETTER PA -+<UA9A6> /xea/xa6/xa6 JAVANESE LETTER PA MURDA -+<UA9A7> /xea/xa6/xa7 JAVANESE LETTER BA -+<UA9A8> /xea/xa6/xa8 JAVANESE LETTER BA MURDA -+<UA9A9> /xea/xa6/xa9 JAVANESE LETTER MA -+<UA9AA> /xea/xa6/xaa JAVANESE LETTER YA -+<UA9AB> /xea/xa6/xab JAVANESE LETTER RA -+<UA9AC> /xea/xa6/xac JAVANESE LETTER RA AGUNG -+<UA9AD> /xea/xa6/xad JAVANESE LETTER LA -+<UA9AE> /xea/xa6/xae JAVANESE LETTER WA -+<UA9AF> /xea/xa6/xaf JAVANESE LETTER SA MURDA -+<UA9B0> /xea/xa6/xb0 JAVANESE LETTER SA MAHAPRANA -+<UA9B1> /xea/xa6/xb1 JAVANESE LETTER SA -+<UA9B2> /xea/xa6/xb2 JAVANESE LETTER HA -+<UA9B3> /xea/xa6/xb3 JAVANESE SIGN CECAK TELU -+<UA9B4> /xea/xa6/xb4 JAVANESE VOWEL SIGN TARUNG -+<UA9B5> /xea/xa6/xb5 JAVANESE VOWEL SIGN TOLONG -+<UA9B6> /xea/xa6/xb6 JAVANESE VOWEL SIGN WULU -+<UA9B7> /xea/xa6/xb7 JAVANESE VOWEL SIGN WULU MELIK -+<UA9B8> /xea/xa6/xb8 JAVANESE VOWEL SIGN SUKU -+<UA9B9> /xea/xa6/xb9 JAVANESE VOWEL SIGN SUKU MENDUT -+<UA9BA> /xea/xa6/xba JAVANESE VOWEL SIGN TALING -+<UA9BB> /xea/xa6/xbb JAVANESE VOWEL SIGN DIRGA MURE -+<UA9BC> /xea/xa6/xbc JAVANESE VOWEL SIGN PEPET -+<UA9BD> /xea/xa6/xbd JAVANESE CONSONANT SIGN KERET -+<UA9BE> /xea/xa6/xbe JAVANESE CONSONANT SIGN PENGKAL -+<UA9BF> /xea/xa6/xbf JAVANESE CONSONANT SIGN CAKRA -+<UA9C0> /xea/xa7/x80 JAVANESE PANGKON -+<UA9C1> /xea/xa7/x81 JAVANESE LEFT RERENGGAN -+<UA9C2> /xea/xa7/x82 JAVANESE RIGHT RERENGGAN -+<UA9C3> /xea/xa7/x83 JAVANESE PADA ANDAP -+<UA9C4> /xea/xa7/x84 JAVANESE PADA MADYA -+<UA9C5> /xea/xa7/x85 JAVANESE PADA LUHUR -+<UA9C6> /xea/xa7/x86 JAVANESE PADA WINDU -+<UA9C7> /xea/xa7/x87 JAVANESE PADA PANGKAT -+<UA9C8> /xea/xa7/x88 JAVANESE PADA LINGSA -+<UA9C9> /xea/xa7/x89 JAVANESE PADA LUNGSI -+<UA9CA> /xea/xa7/x8a JAVANESE PADA ADEG -+<UA9CB> /xea/xa7/x8b JAVANESE PADA ADEG ADEG -+<UA9CC> /xea/xa7/x8c JAVANESE PADA PISELEH -+<UA9CD> /xea/xa7/x8d JAVANESE TURNED PADA PISELEH -+<UA9CF> /xea/xa7/x8f JAVANESE PANGRANGKEP -+<UA9D0> /xea/xa7/x90 JAVANESE DIGIT ZERO -+<UA9D1> /xea/xa7/x91 JAVANESE DIGIT ONE -+<UA9D2> /xea/xa7/x92 JAVANESE DIGIT TWO -+<UA9D3> /xea/xa7/x93 JAVANESE DIGIT THREE -+<UA9D4> /xea/xa7/x94 JAVANESE DIGIT FOUR -+<UA9D5> /xea/xa7/x95 JAVANESE DIGIT FIVE -+<UA9D6> /xea/xa7/x96 JAVANESE DIGIT SIX -+<UA9D7> /xea/xa7/x97 JAVANESE DIGIT SEVEN -+<UA9D8> /xea/xa7/x98 JAVANESE DIGIT EIGHT -+<UA9D9> /xea/xa7/x99 JAVANESE DIGIT NINE -+<UA9DE> /xea/xa7/x9e JAVANESE PADA TIRTA TUMETES -+<UA9DF> /xea/xa7/x9f JAVANESE PADA ISEN-ISEN - <UAA00> /xea/xa8/x80 CHAM LETTER A - <UAA01> /xea/xa8/x81 CHAM LETTER I - <UAA02> /xea/xa8/x82 CHAM LETTER U -@@ -13564,6 +14476,194 @@ CHARMAP - <UAA5D> /xea/xa9/x9d CHAM PUNCTUATION DANDA - <UAA5E> /xea/xa9/x9e CHAM PUNCTUATION DOUBLE DANDA - <UAA5F> /xea/xa9/x9f CHAM PUNCTUATION TRIPLE DANDA -+<UAA60> /xea/xa9/xa0 MYANMAR LETTER KHAMTI GA -+<UAA61> /xea/xa9/xa1 MYANMAR LETTER KHAMTI CA -+<UAA62> /xea/xa9/xa2 MYANMAR LETTER KHAMTI CHA -+<UAA63> /xea/xa9/xa3 MYANMAR LETTER KHAMTI JA -+<UAA64> /xea/xa9/xa4 MYANMAR LETTER KHAMTI JHA -+<UAA65> /xea/xa9/xa5 MYANMAR LETTER KHAMTI NYA -+<UAA66> /xea/xa9/xa6 MYANMAR LETTER KHAMTI TTA -+<UAA67> /xea/xa9/xa7 MYANMAR LETTER KHAMTI TTHA -+<UAA68> /xea/xa9/xa8 MYANMAR LETTER KHAMTI DDA -+<UAA69> /xea/xa9/xa9 MYANMAR LETTER KHAMTI DDHA -+<UAA6A> /xea/xa9/xaa MYANMAR LETTER KHAMTI DHA -+<UAA6B> /xea/xa9/xab MYANMAR LETTER KHAMTI NA -+<UAA6C> /xea/xa9/xac MYANMAR LETTER KHAMTI SA -+<UAA6D> /xea/xa9/xad MYANMAR LETTER KHAMTI HA -+<UAA6E> /xea/xa9/xae MYANMAR LETTER KHAMTI HHA -+<UAA6F> /xea/xa9/xaf MYANMAR LETTER KHAMTI FA -+<UAA70> /xea/xa9/xb0 MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION -+<UAA71> /xea/xa9/xb1 MYANMAR LETTER KHAMTI XA -+<UAA72> /xea/xa9/xb2 MYANMAR LETTER KHAMTI ZA -+<UAA73> /xea/xa9/xb3 MYANMAR LETTER KHAMTI RA -+<UAA74> /xea/xa9/xb4 MYANMAR LOGOGRAM KHAMTI OAY -+<UAA75> /xea/xa9/xb5 MYANMAR LOGOGRAM KHAMTI QN -+<UAA76> /xea/xa9/xb6 MYANMAR LOGOGRAM KHAMTI HM -+<UAA77> /xea/xa9/xb7 MYANMAR SYMBOL AITON EXCLAMATION -+<UAA78> /xea/xa9/xb8 MYANMAR SYMBOL AITON ONE -+<UAA79> /xea/xa9/xb9 MYANMAR SYMBOL AITON TWO -+<UAA7A> /xea/xa9/xba MYANMAR LETTER AITON RA -+<UAA7B> /xea/xa9/xbb MYANMAR SIGN PAO KAREN TONE -+<UAA80> /xea/xaa/x80 TAI VIET LETTER LOW KO -+<UAA81> /xea/xaa/x81 TAI VIET LETTER HIGH KO -+<UAA82> /xea/xaa/x82 TAI VIET LETTER LOW KHO -+<UAA83> /xea/xaa/x83 TAI VIET LETTER HIGH KHO -+<UAA84> /xea/xaa/x84 TAI VIET LETTER LOW KHHO -+<UAA85> /xea/xaa/x85 TAI VIET LETTER HIGH KHHO -+<UAA86> /xea/xaa/x86 TAI VIET LETTER LOW GO -+<UAA87> /xea/xaa/x87 TAI VIET LETTER HIGH GO -+<UAA88> /xea/xaa/x88 TAI VIET LETTER LOW NGO -+<UAA89> /xea/xaa/x89 TAI VIET LETTER HIGH NGO -+<UAA8A> /xea/xaa/x8a TAI VIET LETTER LOW CO -+<UAA8B> /xea/xaa/x8b TAI VIET LETTER HIGH CO -+<UAA8C> /xea/xaa/x8c TAI VIET LETTER LOW CHO -+<UAA8D> /xea/xaa/x8d TAI VIET LETTER HIGH CHO -+<UAA8E> /xea/xaa/x8e TAI VIET LETTER LOW SO -+<UAA8F> /xea/xaa/x8f TAI VIET LETTER HIGH SO -+<UAA90> /xea/xaa/x90 TAI VIET LETTER LOW NYO -+<UAA91> /xea/xaa/x91 TAI VIET LETTER HIGH NYO -+<UAA92> /xea/xaa/x92 TAI VIET LETTER LOW DO -+<UAA93> /xea/xaa/x93 TAI VIET LETTER HIGH DO -+<UAA94> /xea/xaa/x94 TAI VIET LETTER LOW TO -+<UAA95> /xea/xaa/x95 TAI VIET LETTER HIGH TO -+<UAA96> /xea/xaa/x96 TAI VIET LETTER LOW THO -+<UAA97> /xea/xaa/x97 TAI VIET LETTER HIGH THO -+<UAA98> /xea/xaa/x98 TAI VIET LETTER LOW NO -+<UAA99> /xea/xaa/x99 TAI VIET LETTER HIGH NO -+<UAA9A> /xea/xaa/x9a TAI VIET LETTER LOW BO -+<UAA9B> /xea/xaa/x9b TAI VIET LETTER HIGH BO -+<UAA9C> /xea/xaa/x9c TAI VIET LETTER LOW PO -+<UAA9D> /xea/xaa/x9d TAI VIET LETTER HIGH PO -+<UAA9E> /xea/xaa/x9e TAI VIET LETTER LOW PHO -+<UAA9F> /xea/xaa/x9f TAI VIET LETTER HIGH PHO -+<UAAA0> /xea/xaa/xa0 TAI VIET LETTER LOW FO -+<UAAA1> /xea/xaa/xa1 TAI VIET LETTER HIGH FO -+<UAAA2> /xea/xaa/xa2 TAI VIET LETTER LOW MO -+<UAAA3> /xea/xaa/xa3 TAI VIET LETTER HIGH MO -+<UAAA4> /xea/xaa/xa4 TAI VIET LETTER LOW YO -+<UAAA5> /xea/xaa/xa5 TAI VIET LETTER HIGH YO -+<UAAA6> /xea/xaa/xa6 TAI VIET LETTER LOW RO -+<UAAA7> /xea/xaa/xa7 TAI VIET LETTER HIGH RO -+<UAAA8> /xea/xaa/xa8 TAI VIET LETTER LOW LO -+<UAAA9> /xea/xaa/xa9 TAI VIET LETTER HIGH LO -+<UAAAA> /xea/xaa/xaa TAI VIET LETTER LOW VO -+<UAAAB> /xea/xaa/xab TAI VIET LETTER HIGH VO -+<UAAAC> /xea/xaa/xac TAI VIET LETTER LOW HO -+<UAAAD> /xea/xaa/xad TAI VIET LETTER HIGH HO -+<UAAAE> /xea/xaa/xae TAI VIET LETTER LOW O -+<UAAAF> /xea/xaa/xaf TAI VIET LETTER HIGH O -+<UAAB0> /xea/xaa/xb0 TAI VIET MAI KANG -+<UAAB1> /xea/xaa/xb1 TAI VIET VOWEL AA -+<UAAB2> /xea/xaa/xb2 TAI VIET VOWEL I -+<UAAB3> /xea/xaa/xb3 TAI VIET VOWEL UE -+<UAAB4> /xea/xaa/xb4 TAI VIET VOWEL U -+<UAAB5> /xea/xaa/xb5 TAI VIET VOWEL E -+<UAAB6> /xea/xaa/xb6 TAI VIET VOWEL O -+<UAAB7> /xea/xaa/xb7 TAI VIET MAI KHIT -+<UAAB8> /xea/xaa/xb8 TAI VIET VOWEL IA -+<UAAB9> /xea/xaa/xb9 TAI VIET VOWEL UEA -+<UAABA> /xea/xaa/xba TAI VIET VOWEL UA -+<UAABB> /xea/xaa/xbb TAI VIET VOWEL AUE -+<UAABC> /xea/xaa/xbc TAI VIET VOWEL AY -+<UAABD> /xea/xaa/xbd TAI VIET VOWEL AN -+<UAABE> /xea/xaa/xbe TAI VIET VOWEL AM -+<UAABF> /xea/xaa/xbf TAI VIET TONE MAI EK -+<UAAC0> /xea/xab/x80 TAI VIET TONE MAI NUENG -+<UAAC1> /xea/xab/x81 TAI VIET TONE MAI THO -+<UAAC2> /xea/xab/x82 TAI VIET TONE MAI SONG -+<UAADB> /xea/xab/x9b TAI VIET SYMBOL KON -+<UAADC> /xea/xab/x9c TAI VIET SYMBOL NUENG -+<UAADD> /xea/xab/x9d TAI VIET SYMBOL SAM -+<UAADE> /xea/xab/x9e TAI VIET SYMBOL HO HOI -+<UAADF> /xea/xab/x9f TAI VIET SYMBOL KOI KOI -+<UAB01> /xea/xac/x81 ETHIOPIC SYLLABLE TTHU -+<UAB02> /xea/xac/x82 ETHIOPIC SYLLABLE TTHI -+<UAB03> /xea/xac/x83 ETHIOPIC SYLLABLE TTHAA -+<UAB04> /xea/xac/x84 ETHIOPIC SYLLABLE TTHEE -+<UAB05> /xea/xac/x85 ETHIOPIC SYLLABLE TTHE -+<UAB06> /xea/xac/x86 ETHIOPIC SYLLABLE TTHO -+<UAB09> /xea/xac/x89 ETHIOPIC SYLLABLE DDHU -+<UAB0A> /xea/xac/x8a ETHIOPIC SYLLABLE DDHI -+<UAB0B> /xea/xac/x8b ETHIOPIC SYLLABLE DDHAA -+<UAB0C> /xea/xac/x8c ETHIOPIC SYLLABLE DDHEE -+<UAB0D> /xea/xac/x8d ETHIOPIC SYLLABLE DDHE -+<UAB0E> /xea/xac/x8e ETHIOPIC SYLLABLE DDHO -+<UAB11> /xea/xac/x91 ETHIOPIC SYLLABLE DZU -+<UAB12> /xea/xac/x92 ETHIOPIC SYLLABLE DZI -+<UAB13> /xea/xac/x93 ETHIOPIC SYLLABLE DZAA -+<UAB14> /xea/xac/x94 ETHIOPIC SYLLABLE DZEE -+<UAB15> /xea/xac/x95 ETHIOPIC SYLLABLE DZE -+<UAB16> /xea/xac/x96 ETHIOPIC SYLLABLE DZO -+<UAB20> /xea/xac/xa0 ETHIOPIC SYLLABLE CCHHA -+<UAB21> /xea/xac/xa1 ETHIOPIC SYLLABLE CCHHU -+<UAB22> /xea/xac/xa2 ETHIOPIC SYLLABLE CCHHI -+<UAB23> /xea/xac/xa3 ETHIOPIC SYLLABLE CCHHAA -+<UAB24> /xea/xac/xa4 ETHIOPIC SYLLABLE CCHHEE -+<UAB25> /xea/xac/xa5 ETHIOPIC SYLLABLE CCHHE -+<UAB26> /xea/xac/xa6 ETHIOPIC SYLLABLE CCHHO -+<UAB28> /xea/xac/xa8 ETHIOPIC SYLLABLE BBA -+<UAB29> /xea/xac/xa9 ETHIOPIC SYLLABLE BBU -+<UAB2A> /xea/xac/xaa ETHIOPIC SYLLABLE BBI -+<UAB2B> /xea/xac/xab ETHIOPIC SYLLABLE BBAA -+<UAB2C> /xea/xac/xac ETHIOPIC SYLLABLE BBEE -+<UAB2D> /xea/xac/xad ETHIOPIC SYLLABLE BBE -+<UAB2E> /xea/xac/xae ETHIOPIC SYLLABLE BBO -+<UABC0> /xea/xaf/x80 MEETEI MAYEK LETTER KOK -+<UABC1> /xea/xaf/x81 MEETEI MAYEK LETTER SAM -+<UABC2> /xea/xaf/x82 MEETEI MAYEK LETTER LAI -+<UABC3> /xea/xaf/x83 MEETEI MAYEK LETTER MIT -+<UABC4> /xea/xaf/x84 MEETEI MAYEK LETTER PA -+<UABC5> /xea/xaf/x85 MEETEI MAYEK LETTER NA -+<UABC6> /xea/xaf/x86 MEETEI MAYEK LETTER CHIL -+<UABC7> /xea/xaf/x87 MEETEI MAYEK LETTER TIL -+<UABC8> /xea/xaf/x88 MEETEI MAYEK LETTER KHOU -+<UABC9> /xea/xaf/x89 MEETEI MAYEK LETTER NGOU -+<UABCA> /xea/xaf/x8a MEETEI MAYEK LETTER THOU -+<UABCB> /xea/xaf/x8b MEETEI MAYEK LETTER WAI -+<UABCC> /xea/xaf/x8c MEETEI MAYEK LETTER YANG -+<UABCD> /xea/xaf/x8d MEETEI MAYEK LETTER HUK -+<UABCE> /xea/xaf/x8e MEETEI MAYEK LETTER UN -+<UABCF> /xea/xaf/x8f MEETEI MAYEK LETTER I -+<UABD0> /xea/xaf/x90 MEETEI MAYEK LETTER PHAM -+<UABD1> /xea/xaf/x91 MEETEI MAYEK LETTER ATIYA -+<UABD2> /xea/xaf/x92 MEETEI MAYEK LETTER GOK -+<UABD3> /xea/xaf/x93 MEETEI MAYEK LETTER JHAM -+<UABD4> /xea/xaf/x94 MEETEI MAYEK LETTER RAI -+<UABD5> /xea/xaf/x95 MEETEI MAYEK LETTER BA -+<UABD6> /xea/xaf/x96 MEETEI MAYEK LETTER JIL -+<UABD7> /xea/xaf/x97 MEETEI MAYEK LETTER DIL -+<UABD8> /xea/xaf/x98 MEETEI MAYEK LETTER GHOU -+<UABD9> /xea/xaf/x99 MEETEI MAYEK LETTER DHOU -+<UABDA> /xea/xaf/x9a MEETEI MAYEK LETTER BHAM -+<UABDB> /xea/xaf/x9b MEETEI MAYEK LETTER KOK LONSUM -+<UABDC> /xea/xaf/x9c MEETEI MAYEK LETTER LAI LONSUM -+<UABDD> /xea/xaf/x9d MEETEI MAYEK LETTER MIT LONSUM -+<UABDE> /xea/xaf/x9e MEETEI MAYEK LETTER PA LONSUM -+<UABDF> /xea/xaf/x9f MEETEI MAYEK LETTER NA LONSUM -+<UABE0> /xea/xaf/xa0 MEETEI MAYEK LETTER TIL LONSUM -+<UABE1> /xea/xaf/xa1 MEETEI MAYEK LETTER NGOU LONSUM -+<UABE2> /xea/xaf/xa2 MEETEI MAYEK LETTER I LONSUM -+<UABE3> /xea/xaf/xa3 MEETEI MAYEK VOWEL SIGN ONAP -+<UABE4> /xea/xaf/xa4 MEETEI MAYEK VOWEL SIGN INAP -+<UABE5> /xea/xaf/xa5 MEETEI MAYEK VOWEL SIGN ANAP -+<UABE6> /xea/xaf/xa6 MEETEI MAYEK VOWEL SIGN YENAP -+<UABE7> /xea/xaf/xa7 MEETEI MAYEK VOWEL SIGN SOUNAP -+<UABE8> /xea/xaf/xa8 MEETEI MAYEK VOWEL SIGN UNAP -+<UABE9> /xea/xaf/xa9 MEETEI MAYEK VOWEL SIGN CHEINAP -+<UABEA> /xea/xaf/xaa MEETEI MAYEK VOWEL SIGN NUNG -+<UABEB> /xea/xaf/xab MEETEI MAYEK CHEIKHEI -+<UABEC> /xea/xaf/xac MEETEI MAYEK LUM IYEK -+<UABED> /xea/xaf/xad MEETEI MAYEK APUN IYEK -+<UABF0> /xea/xaf/xb0 MEETEI MAYEK DIGIT ZERO -+<UABF1> /xea/xaf/xb1 MEETEI MAYEK DIGIT ONE -+<UABF2> /xea/xaf/xb2 MEETEI MAYEK DIGIT TWO -+<UABF3> /xea/xaf/xb3 MEETEI MAYEK DIGIT THREE -+<UABF4> /xea/xaf/xb4 MEETEI MAYEK DIGIT FOUR -+<UABF5> /xea/xaf/xb5 MEETEI MAYEK DIGIT FIVE -+<UABF6> /xea/xaf/xb6 MEETEI MAYEK DIGIT SIX -+<UABF7> /xea/xaf/xb7 MEETEI MAYEK DIGIT SEVEN -+<UABF8> /xea/xaf/xb8 MEETEI MAYEK DIGIT EIGHT -+<UABF9> /xea/xaf/xb9 MEETEI MAYEK DIGIT NINE - <UAC00> /xea/xb0/x80 HANGUL SYLLABLE GA - <UAC01> /xea/xb0/x81 HANGUL SYLLABLE GAG - <UAC02> /xea/xb0/x82 HANGUL SYLLABLE GAGG -@@ -24736,6 +25836,78 @@ CHARMAP - <UD7A1> /xed/x9e/xa1 HANGUL SYLLABLE HIT - <UD7A2> /xed/x9e/xa2 HANGUL SYLLABLE HIP - <UD7A3> /xed/x9e/xa3 HANGUL SYLLABLE HIH -+<UD7B0> /xed/x9e/xb0 HANGUL JUNGSEONG O-YEO -+<UD7B1> /xed/x9e/xb1 HANGUL JUNGSEONG O-O-I -+<UD7B2> /xed/x9e/xb2 HANGUL JUNGSEONG YO-A -+<UD7B3> /xed/x9e/xb3 HANGUL JUNGSEONG YO-AE -+<UD7B4> /xed/x9e/xb4 HANGUL JUNGSEONG YO-EO -+<UD7B5> /xed/x9e/xb5 HANGUL JUNGSEONG U-YEO -+<UD7B6> /xed/x9e/xb6 HANGUL JUNGSEONG U-I-I -+<UD7B7> /xed/x9e/xb7 HANGUL JUNGSEONG YU-AE -+<UD7B8> /xed/x9e/xb8 HANGUL JUNGSEONG YU-O -+<UD7B9> /xed/x9e/xb9 HANGUL JUNGSEONG EU-A -+<UD7BA> /xed/x9e/xba HANGUL JUNGSEONG EU-EO -+<UD7BB> /xed/x9e/xbb HANGUL JUNGSEONG EU-E -+<UD7BC> /xed/x9e/xbc HANGUL JUNGSEONG EU-O -+<UD7BD> /xed/x9e/xbd HANGUL JUNGSEONG I-YA-O -+<UD7BE> /xed/x9e/xbe HANGUL JUNGSEONG I-YAE -+<UD7BF> /xed/x9e/xbf HANGUL JUNGSEONG I-YEO -+<UD7C0> /xed/x9f/x80 HANGUL JUNGSEONG I-YE -+<UD7C1> /xed/x9f/x81 HANGUL JUNGSEONG I-O-I -+<UD7C2> /xed/x9f/x82 HANGUL JUNGSEONG I-YO -+<UD7C3> /xed/x9f/x83 HANGUL JUNGSEONG I-YU -+<UD7C4> /xed/x9f/x84 HANGUL JUNGSEONG I-I -+<UD7C5> /xed/x9f/x85 HANGUL JUNGSEONG ARAEA-A -+<UD7C6> /xed/x9f/x86 HANGUL JUNGSEONG ARAEA-E -+<UD7CB> /xed/x9f/x8b HANGUL JONGSEONG NIEUN-RIEUL -+<UD7CC> /xed/x9f/x8c HANGUL JONGSEONG NIEUN-CHIEUCH -+<UD7CD> /xed/x9f/x8d HANGUL JONGSEONG SSANGTIKEUT -+<UD7CE> /xed/x9f/x8e HANGUL JONGSEONG SSANGTIKEUT-PIEUP -+<UD7CF> /xed/x9f/x8f HANGUL JONGSEONG TIKEUT-PIEUP -+<UD7D0> /xed/x9f/x90 HANGUL JONGSEONG TIKEUT-SIOS -+<UD7D1> /xed/x9f/x91 HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK -+<UD7D2> /xed/x9f/x92 HANGUL JONGSEONG TIKEUT-CIEUC -+<UD7D3> /xed/x9f/x93 HANGUL JONGSEONG TIKEUT-CHIEUCH -+<UD7D4> /xed/x9f/x94 HANGUL JONGSEONG TIKEUT-THIEUTH -+<UD7D5> /xed/x9f/x95 HANGUL JONGSEONG RIEUL-SSANGKIYEOK -+<UD7D6> /xed/x9f/x96 HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH -+<UD7D7> /xed/x9f/x97 HANGUL JONGSEONG SSANGRIEUL-KHIEUKH -+<UD7D8> /xed/x9f/x98 HANGUL JONGSEONG RIEUL-MIEUM-HIEUH -+<UD7D9> /xed/x9f/x99 HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT -+<UD7DA> /xed/x9f/x9a HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH -+<UD7DB> /xed/x9f/x9b HANGUL JONGSEONG RIEUL-YESIEUNG -+<UD7DC> /xed/x9f/x9c HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH -+<UD7DD> /xed/x9f/x9d HANGUL JONGSEONG KAPYEOUNRIEUL -+<UD7DE> /xed/x9f/x9e HANGUL JONGSEONG MIEUM-NIEUN -+<UD7DF> /xed/x9f/x9f HANGUL JONGSEONG MIEUM-SSANGNIEUN -+<UD7E0> /xed/x9f/xa0 HANGUL JONGSEONG SSANGMIEUM -+<UD7E1> /xed/x9f/xa1 HANGUL JONGSEONG MIEUM-PIEUP-SIOS -+<UD7E2> /xed/x9f/xa2 HANGUL JONGSEONG MIEUM-CIEUC -+<UD7E3> /xed/x9f/xa3 HANGUL JONGSEONG PIEUP-TIKEUT -+<UD7E4> /xed/x9f/xa4 HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH -+<UD7E5> /xed/x9f/xa5 HANGUL JONGSEONG PIEUP-MIEUM -+<UD7E6> /xed/x9f/xa6 HANGUL JONGSEONG SSANGPIEUP -+<UD7E7> /xed/x9f/xa7 HANGUL JONGSEONG PIEUP-SIOS-TIKEUT -+<UD7E8> /xed/x9f/xa8 HANGUL JONGSEONG PIEUP-CIEUC -+<UD7E9> /xed/x9f/xa9 HANGUL JONGSEONG PIEUP-CHIEUCH -+<UD7EA> /xed/x9f/xaa HANGUL JONGSEONG SIOS-MIEUM -+<UD7EB> /xed/x9f/xab HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP -+<UD7EC> /xed/x9f/xac HANGUL JONGSEONG SSANGSIOS-KIYEOK -+<UD7ED> /xed/x9f/xad HANGUL JONGSEONG SSANGSIOS-TIKEUT -+<UD7EE> /xed/x9f/xae HANGUL JONGSEONG SIOS-PANSIOS -+<UD7EF> /xed/x9f/xaf HANGUL JONGSEONG SIOS-CIEUC -+<UD7F0> /xed/x9f/xb0 HANGUL JONGSEONG SIOS-CHIEUCH -+<UD7F1> /xed/x9f/xb1 HANGUL JONGSEONG SIOS-THIEUTH -+<UD7F2> /xed/x9f/xb2 HANGUL JONGSEONG SIOS-HIEUH -+<UD7F3> /xed/x9f/xb3 HANGUL JONGSEONG PANSIOS-PIEUP -+<UD7F4> /xed/x9f/xb4 HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP -+<UD7F5> /xed/x9f/xb5 HANGUL JONGSEONG YESIEUNG-MIEUM -+<UD7F6> /xed/x9f/xb6 HANGUL JONGSEONG YESIEUNG-HIEUH -+<UD7F7> /xed/x9f/xb7 HANGUL JONGSEONG CIEUC-PIEUP -+<UD7F8> /xed/x9f/xb8 HANGUL JONGSEONG CIEUC-SSANGPIEUP -+<UD7F9> /xed/x9f/xb9 HANGUL JONGSEONG SSANGCIEUC -+<UD7FA> /xed/x9f/xba HANGUL JONGSEONG PHIEUPH-SIOS -+<UD7FB> /xed/x9f/xbb HANGUL JONGSEONG PHIEUPH-THIEUTH - % <UD800> /xed/xa0/x80 <Non Private Use High Surrogate, First> - % <UDB7F> /xed/xad/xbf <Non Private Use High Surrogate, Last> - % <UDB80> /xed/xae/x80 <Private Use High Surrogate, First> -@@ -25203,6 +26375,9 @@ CHARMAP - <UFA68> /xef/xa9/xa8 CJK COMPATIBILITY IDEOGRAPH-FA68 - <UFA69> /xef/xa9/xa9 CJK COMPATIBILITY IDEOGRAPH-FA69 - <UFA6A> /xef/xa9/xaa CJK COMPATIBILITY IDEOGRAPH-FA6A -+<UFA6B> /xef/xa9/xab CJK COMPATIBILITY IDEOGRAPH-FA6B -+<UFA6C> /xef/xa9/xac CJK COMPATIBILITY IDEOGRAPH-FA6C -+<UFA6D> /xef/xa9/xad CJK COMPATIBILITY IDEOGRAPH-FA6D - <UFA70> /xef/xa9/xb0 CJK COMPATIBILITY IDEOGRAPH-FA70 - <UFA71> /xef/xa9/xb1 CJK COMPATIBILITY IDEOGRAPH-FA71 - <UFA72> /xef/xa9/xb2 CJK COMPATIBILITY IDEOGRAPH-FA72 -@@ -25465,6 +26640,22 @@ CHARMAP - <UFBAF> /xef/xae/xaf ARABIC LETTER YEH BARREE FINAL FORM - <UFBB0> /xef/xae/xb0 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM - <UFBB1> /xef/xae/xb1 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM -+<UFBB2> /xef/xae/xb2 ARABIC SYMBOL DOT ABOVE -+<UFBB3> /xef/xae/xb3 ARABIC SYMBOL DOT BELOW -+<UFBB4> /xef/xae/xb4 ARABIC SYMBOL TWO DOTS ABOVE -+<UFBB5> /xef/xae/xb5 ARABIC SYMBOL TWO DOTS BELOW -+<UFBB6> /xef/xae/xb6 ARABIC SYMBOL THREE DOTS ABOVE -+<UFBB7> /xef/xae/xb7 ARABIC SYMBOL THREE DOTS BELOW -+<UFBB8> /xef/xae/xb8 ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS ABOVE -+<UFBB9> /xef/xae/xb9 ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS BELOW -+<UFBBA> /xef/xae/xba ARABIC SYMBOL FOUR DOTS ABOVE -+<UFBBB> /xef/xae/xbb ARABIC SYMBOL FOUR DOTS BELOW -+<UFBBC> /xef/xae/xbc ARABIC SYMBOL DOUBLE VERTICAL BAR BELOW -+<UFBBD> /xef/xae/xbd ARABIC SYMBOL TWO DOTS VERTICALLY ABOVE -+<UFBBE> /xef/xae/xbe ARABIC SYMBOL TWO DOTS VERTICALLY BELOW -+<UFBBF> /xef/xae/xbf ARABIC SYMBOL RING -+<UFBC0> /xef/xaf/x80 ARABIC SYMBOL SMALL TAH ABOVE -+<UFBC1> /xef/xaf/x81 ARABIC SYMBOL SMALL TAH BELOW - <UFBD3> /xef/xaf/x93 ARABIC LETTER NG ISOLATED FORM - <UFBD4> /xef/xaf/x94 ARABIC LETTER NG FINAL FORM - <UFBD5> /xef/xaf/x95 ARABIC LETTER NG INITIAL FORM -@@ -27269,6 +28460,37 @@ CHARMAP - <U00010838> /xf0/x90/xa0/xb8 CYPRIOT SYLLABLE XE - <U0001083C> /xf0/x90/xa0/xbc CYPRIOT SYLLABLE ZA - <U0001083F> /xf0/x90/xa0/xbf CYPRIOT SYLLABLE ZO -+<U00010840> /xf0/x90/xa1/x80 IMPERIAL ARAMAIC LETTER ALEPH -+<U00010841> /xf0/x90/xa1/x81 IMPERIAL ARAMAIC LETTER BETH -+<U00010842> /xf0/x90/xa1/x82 IMPERIAL ARAMAIC LETTER GIMEL -+<U00010843> /xf0/x90/xa1/x83 IMPERIAL ARAMAIC LETTER DALETH -+<U00010844> /xf0/x90/xa1/x84 IMPERIAL ARAMAIC LETTER HE -+<U00010845> /xf0/x90/xa1/x85 IMPERIAL ARAMAIC LETTER WAW -+<U00010846> /xf0/x90/xa1/x86 IMPERIAL ARAMAIC LETTER ZAYIN -+<U00010847> /xf0/x90/xa1/x87 IMPERIAL ARAMAIC LETTER HETH -+<U00010848> /xf0/x90/xa1/x88 IMPERIAL ARAMAIC LETTER TETH -+<U00010849> /xf0/x90/xa1/x89 IMPERIAL ARAMAIC LETTER YODH -+<U0001084A> /xf0/x90/xa1/x8a IMPERIAL ARAMAIC LETTER KAPH -+<U0001084B> /xf0/x90/xa1/x8b IMPERIAL ARAMAIC LETTER LAMEDH -+<U0001084C> /xf0/x90/xa1/x8c IMPERIAL ARAMAIC LETTER MEM -+<U0001084D> /xf0/x90/xa1/x8d IMPERIAL ARAMAIC LETTER NUN -+<U0001084E> /xf0/x90/xa1/x8e IMPERIAL ARAMAIC LETTER SAMEKH -+<U0001084F> /xf0/x90/xa1/x8f IMPERIAL ARAMAIC LETTER AYIN -+<U00010850> /xf0/x90/xa1/x90 IMPERIAL ARAMAIC LETTER PE -+<U00010851> /xf0/x90/xa1/x91 IMPERIAL ARAMAIC LETTER SADHE -+<U00010852> /xf0/x90/xa1/x92 IMPERIAL ARAMAIC LETTER QOPH -+<U00010853> /xf0/x90/xa1/x93 IMPERIAL ARAMAIC LETTER RESH -+<U00010854> /xf0/x90/xa1/x94 IMPERIAL ARAMAIC LETTER SHIN -+<U00010855> /xf0/x90/xa1/x95 IMPERIAL ARAMAIC LETTER TAW -+<U00010857> /xf0/x90/xa1/x97 IMPERIAL ARAMAIC SECTION SIGN -+<U00010858> /xf0/x90/xa1/x98 IMPERIAL ARAMAIC NUMBER ONE -+<U00010859> /xf0/x90/xa1/x99 IMPERIAL ARAMAIC NUMBER TWO -+<U0001085A> /xf0/x90/xa1/x9a IMPERIAL ARAMAIC NUMBER THREE -+<U0001085B> /xf0/x90/xa1/x9b IMPERIAL ARAMAIC NUMBER TEN -+<U0001085C> /xf0/x90/xa1/x9c IMPERIAL ARAMAIC NUMBER TWENTY -+<U0001085D> /xf0/x90/xa1/x9d IMPERIAL ARAMAIC NUMBER ONE HUNDRED -+<U0001085E> /xf0/x90/xa1/x9e IMPERIAL ARAMAIC NUMBER ONE THOUSAND -+<U0001085F> /xf0/x90/xa1/x9f IMPERIAL ARAMAIC NUMBER TEN THOUSAND - <U00010900> /xf0/x90/xa4/x80 PHOENICIAN LETTER ALF - <U00010901> /xf0/x90/xa4/x81 PHOENICIAN LETTER BET - <U00010902> /xf0/x90/xa4/x82 PHOENICIAN LETTER GAML -@@ -27295,6 +28517,8 @@ CHARMAP - <U00010917> /xf0/x90/xa4/x97 PHOENICIAN NUMBER TEN - <U00010918> /xf0/x90/xa4/x98 PHOENICIAN NUMBER TWENTY - <U00010919> /xf0/x90/xa4/x99 PHOENICIAN NUMBER ONE HUNDRED -+<U0001091A> /xf0/x90/xa4/x9a PHOENICIAN NUMBER TWO -+<U0001091B> /xf0/x90/xa4/x9b PHOENICIAN NUMBER THREE - <U0001091F> /xf0/x90/xa4/x9f PHOENICIAN WORD SEPARATOR - <U00010920> /xf0/x90/xa4/xa0 LYDIAN LETTER A - <U00010921> /xf0/x90/xa4/xa1 LYDIAN LETTER B -@@ -27388,6 +28612,434 @@ CHARMAP - <U00010A56> /xf0/x90/xa9/x96 KHAROSHTHI PUNCTUATION DANDA - <U00010A57> /xf0/x90/xa9/x97 KHAROSHTHI PUNCTUATION DOUBLE DANDA - <U00010A58> /xf0/x90/xa9/x98 KHAROSHTHI PUNCTUATION LINES -+<U00010A60> /xf0/x90/xa9/xa0 OLD SOUTH ARABIAN LETTER HE -+<U00010A61> /xf0/x90/xa9/xa1 OLD SOUTH ARABIAN LETTER LAMEDH -+<U00010A62> /xf0/x90/xa9/xa2 OLD SOUTH ARABIAN LETTER HETH -+<U00010A63> /xf0/x90/xa9/xa3 OLD SOUTH ARABIAN LETTER MEM -+<U00010A64> /xf0/x90/xa9/xa4 OLD SOUTH ARABIAN LETTER QOPH -+<U00010A65> /xf0/x90/xa9/xa5 OLD SOUTH ARABIAN LETTER WAW -+<U00010A66> /xf0/x90/xa9/xa6 OLD SOUTH ARABIAN LETTER SHIN -+<U00010A67> /xf0/x90/xa9/xa7 OLD SOUTH ARABIAN LETTER RESH -+<U00010A68> /xf0/x90/xa9/xa8 OLD SOUTH ARABIAN LETTER BETH -+<U00010A69> /xf0/x90/xa9/xa9 OLD SOUTH ARABIAN LETTER TAW -+<U00010A6A> /xf0/x90/xa9/xaa OLD SOUTH ARABIAN LETTER SAT -+<U00010A6B> /xf0/x90/xa9/xab OLD SOUTH ARABIAN LETTER KAPH -+<U00010A6C> /xf0/x90/xa9/xac OLD SOUTH ARABIAN LETTER NUN -+<U00010A6D> /xf0/x90/xa9/xad OLD SOUTH ARABIAN LETTER KHETH -+<U00010A6E> /xf0/x90/xa9/xae OLD SOUTH ARABIAN LETTER SADHE -+<U00010A6F> /xf0/x90/xa9/xaf OLD SOUTH ARABIAN LETTER SAMEKH -+<U00010A70> /xf0/x90/xa9/xb0 OLD SOUTH ARABIAN LETTER FE -+<U00010A71> /xf0/x90/xa9/xb1 OLD SOUTH ARABIAN LETTER ALEF -+<U00010A72> /xf0/x90/xa9/xb2 OLD SOUTH ARABIAN LETTER AYN -+<U00010A73> /xf0/x90/xa9/xb3 OLD SOUTH ARABIAN LETTER DHADHE -+<U00010A74> /xf0/x90/xa9/xb4 OLD SOUTH ARABIAN LETTER GIMEL -+<U00010A75> /xf0/x90/xa9/xb5 OLD SOUTH ARABIAN LETTER DALETH -+<U00010A76> /xf0/x90/xa9/xb6 OLD SOUTH ARABIAN LETTER GHAYN -+<U00010A77> /xf0/x90/xa9/xb7 OLD SOUTH ARABIAN LETTER TETH -+<U00010A78> /xf0/x90/xa9/xb8 OLD SOUTH ARABIAN LETTER ZAYN -+<U00010A79> /xf0/x90/xa9/xb9 OLD SOUTH ARABIAN LETTER DHALETH -+<U00010A7A> /xf0/x90/xa9/xba OLD SOUTH ARABIAN LETTER YODH -+<U00010A7B> /xf0/x90/xa9/xbb OLD SOUTH ARABIAN LETTER THAW -+<U00010A7C> /xf0/x90/xa9/xbc OLD SOUTH ARABIAN LETTER THETH -+<U00010A7D> /xf0/x90/xa9/xbd OLD SOUTH ARABIAN NUMBER ONE -+<U00010A7E> /xf0/x90/xa9/xbe OLD SOUTH ARABIAN NUMBER FIFTY -+<U00010A7F> /xf0/x90/xa9/xbf OLD SOUTH ARABIAN NUMERIC INDICATOR -+<U00010B00> /xf0/x90/xac/x80 AVESTAN LETTER A -+<U00010B01> /xf0/x90/xac/x81 AVESTAN LETTER AA -+<U00010B02> /xf0/x90/xac/x82 AVESTAN LETTER AO -+<U00010B03> /xf0/x90/xac/x83 AVESTAN LETTER AAO -+<U00010B04> /xf0/x90/xac/x84 AVESTAN LETTER AN -+<U00010B05> /xf0/x90/xac/x85 AVESTAN LETTER AAN -+<U00010B06> /xf0/x90/xac/x86 AVESTAN LETTER AE -+<U00010B07> /xf0/x90/xac/x87 AVESTAN LETTER AEE -+<U00010B08> /xf0/x90/xac/x88 AVESTAN LETTER E -+<U00010B09> /xf0/x90/xac/x89 AVESTAN LETTER EE -+<U00010B0A> /xf0/x90/xac/x8a AVESTAN LETTER O -+<U00010B0B> /xf0/x90/xac/x8b AVESTAN LETTER OO -+<U00010B0C> /xf0/x90/xac/x8c AVESTAN LETTER I -+<U00010B0D> /xf0/x90/xac/x8d AVESTAN LETTER II -+<U00010B0E> /xf0/x90/xac/x8e AVESTAN LETTER U -+<U00010B0F> /xf0/x90/xac/x8f AVESTAN LETTER UU -+<U00010B10> /xf0/x90/xac/x90 AVESTAN LETTER KE -+<U00010B11> /xf0/x90/xac/x91 AVESTAN LETTER XE -+<U00010B12> /xf0/x90/xac/x92 AVESTAN LETTER XYE -+<U00010B13> /xf0/x90/xac/x93 AVESTAN LETTER XVE -+<U00010B14> /xf0/x90/xac/x94 AVESTAN LETTER GE -+<U00010B15> /xf0/x90/xac/x95 AVESTAN LETTER GGE -+<U00010B16> /xf0/x90/xac/x96 AVESTAN LETTER GHE -+<U00010B17> /xf0/x90/xac/x97 AVESTAN LETTER CE -+<U00010B18> /xf0/x90/xac/x98 AVESTAN LETTER JE -+<U00010B19> /xf0/x90/xac/x99 AVESTAN LETTER TE -+<U00010B1A> /xf0/x90/xac/x9a AVESTAN LETTER THE -+<U00010B1B> /xf0/x90/xac/x9b AVESTAN LETTER DE -+<U00010B1C> /xf0/x90/xac/x9c AVESTAN LETTER DHE -+<U00010B1D> /xf0/x90/xac/x9d AVESTAN LETTER TTE -+<U00010B1E> /xf0/x90/xac/x9e AVESTAN LETTER PE -+<U00010B1F> /xf0/x90/xac/x9f AVESTAN LETTER FE -+<U00010B20> /xf0/x90/xac/xa0 AVESTAN LETTER BE -+<U00010B21> /xf0/x90/xac/xa1 AVESTAN LETTER BHE -+<U00010B22> /xf0/x90/xac/xa2 AVESTAN LETTER NGE -+<U00010B23> /xf0/x90/xac/xa3 AVESTAN LETTER NGYE -+<U00010B24> /xf0/x90/xac/xa4 AVESTAN LETTER NGVE -+<U00010B25> /xf0/x90/xac/xa5 AVESTAN LETTER NE -+<U00010B26> /xf0/x90/xac/xa6 AVESTAN LETTER NYE -+<U00010B27> /xf0/x90/xac/xa7 AVESTAN LETTER NNE -+<U00010B28> /xf0/x90/xac/xa8 AVESTAN LETTER ME -+<U00010B29> /xf0/x90/xac/xa9 AVESTAN LETTER HME -+<U00010B2A> /xf0/x90/xac/xaa AVESTAN LETTER YYE -+<U00010B2B> /xf0/x90/xac/xab AVESTAN LETTER YE -+<U00010B2C> /xf0/x90/xac/xac AVESTAN LETTER VE -+<U00010B2D> /xf0/x90/xac/xad AVESTAN LETTER RE -+<U00010B2E> /xf0/x90/xac/xae AVESTAN LETTER LE -+<U00010B2F> /xf0/x90/xac/xaf AVESTAN LETTER SE -+<U00010B30> /xf0/x90/xac/xb0 AVESTAN LETTER ZE -+<U00010B31> /xf0/x90/xac/xb1 AVESTAN LETTER SHE -+<U00010B32> /xf0/x90/xac/xb2 AVESTAN LETTER ZHE -+<U00010B33> /xf0/x90/xac/xb3 AVESTAN LETTER SHYE -+<U00010B34> /xf0/x90/xac/xb4 AVESTAN LETTER SSHE -+<U00010B35> /xf0/x90/xac/xb5 AVESTAN LETTER HE -+<U00010B39> /xf0/x90/xac/xb9 AVESTAN ABBREVIATION MARK -+<U00010B3A> /xf0/x90/xac/xba TINY TWO DOTS OVER ONE DOT PUNCTUATION -+<U00010B3B> /xf0/x90/xac/xbb SMALL TWO DOTS OVER ONE DOT PUNCTUATION -+<U00010B3C> /xf0/x90/xac/xbc LARGE TWO DOTS OVER ONE DOT PUNCTUATION -+<U00010B3D> /xf0/x90/xac/xbd LARGE ONE DOT OVER TWO DOTS PUNCTUATION -+<U00010B3E> /xf0/x90/xac/xbe LARGE TWO RINGS OVER ONE RING PUNCTUATION -+<U00010B3F> /xf0/x90/xac/xbf LARGE ONE RING OVER TWO RINGS PUNCTUATION -+<U00010B40> /xf0/x90/xad/x80 INSCRIPTIONAL PARTHIAN LETTER ALEPH -+<U00010B41> /xf0/x90/xad/x81 INSCRIPTIONAL PARTHIAN LETTER BETH -+<U00010B42> /xf0/x90/xad/x82 INSCRIPTIONAL PARTHIAN LETTER GIMEL -+<U00010B43> /xf0/x90/xad/x83 INSCRIPTIONAL PARTHIAN LETTER DALETH -+<U00010B44> /xf0/x90/xad/x84 INSCRIPTIONAL PARTHIAN LETTER HE -+<U00010B45> /xf0/x90/xad/x85 INSCRIPTIONAL PARTHIAN LETTER WAW -+<U00010B46> /xf0/x90/xad/x86 INSCRIPTIONAL PARTHIAN LETTER ZAYIN -+<U00010B47> /xf0/x90/xad/x87 INSCRIPTIONAL PARTHIAN LETTER HETH -+<U00010B48> /xf0/x90/xad/x88 INSCRIPTIONAL PARTHIAN LETTER TETH -+<U00010B49> /xf0/x90/xad/x89 INSCRIPTIONAL PARTHIAN LETTER YODH -+<U00010B4A> /xf0/x90/xad/x8a INSCRIPTIONAL PARTHIAN LETTER KAPH -+<U00010B4B> /xf0/x90/xad/x8b INSCRIPTIONAL PARTHIAN LETTER LAMEDH -+<U00010B4C> /xf0/x90/xad/x8c INSCRIPTIONAL PARTHIAN LETTER MEM -+<U00010B4D> /xf0/x90/xad/x8d INSCRIPTIONAL PARTHIAN LETTER NUN -+<U00010B4E> /xf0/x90/xad/x8e INSCRIPTIONAL PARTHIAN LETTER SAMEKH -+<U00010B4F> /xf0/x90/xad/x8f INSCRIPTIONAL PARTHIAN LETTER AYIN -+<U00010B50> /xf0/x90/xad/x90 INSCRIPTIONAL PARTHIAN LETTER PE -+<U00010B51> /xf0/x90/xad/x91 INSCRIPTIONAL PARTHIAN LETTER SADHE -+<U00010B52> /xf0/x90/xad/x92 INSCRIPTIONAL PARTHIAN LETTER QOPH -+<U00010B53> /xf0/x90/xad/x93 INSCRIPTIONAL PARTHIAN LETTER RESH -+<U00010B54> /xf0/x90/xad/x94 INSCRIPTIONAL PARTHIAN LETTER SHIN -+<U00010B55> /xf0/x90/xad/x95 INSCRIPTIONAL PARTHIAN LETTER TAW -+<U00010B58> /xf0/x90/xad/x98 INSCRIPTIONAL PARTHIAN NUMBER ONE -+<U00010B59> /xf0/x90/xad/x99 INSCRIPTIONAL PARTHIAN NUMBER TWO -+<U00010B5A> /xf0/x90/xad/x9a INSCRIPTIONAL PARTHIAN NUMBER THREE -+<U00010B5B> /xf0/x90/xad/x9b INSCRIPTIONAL PARTHIAN NUMBER FOUR -+<U00010B5C> /xf0/x90/xad/x9c INSCRIPTIONAL PARTHIAN NUMBER TEN -+<U00010B5D> /xf0/x90/xad/x9d INSCRIPTIONAL PARTHIAN NUMBER TWENTY -+<U00010B5E> /xf0/x90/xad/x9e INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED -+<U00010B5F> /xf0/x90/xad/x9f INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND -+<U00010B60> /xf0/x90/xad/xa0 INSCRIPTIONAL PAHLAVI LETTER ALEPH -+<U00010B61> /xf0/x90/xad/xa1 INSCRIPTIONAL PAHLAVI LETTER BETH -+<U00010B62> /xf0/x90/xad/xa2 INSCRIPTIONAL PAHLAVI LETTER GIMEL -+<U00010B63> /xf0/x90/xad/xa3 INSCRIPTIONAL PAHLAVI LETTER DALETH -+<U00010B64> /xf0/x90/xad/xa4 INSCRIPTIONAL PAHLAVI LETTER HE -+<U00010B65> /xf0/x90/xad/xa5 INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH -+<U00010B66> /xf0/x90/xad/xa6 INSCRIPTIONAL PAHLAVI LETTER ZAYIN -+<U00010B67> /xf0/x90/xad/xa7 INSCRIPTIONAL PAHLAVI LETTER HETH -+<U00010B68> /xf0/x90/xad/xa8 INSCRIPTIONAL PAHLAVI LETTER TETH -+<U00010B69> /xf0/x90/xad/xa9 INSCRIPTIONAL PAHLAVI LETTER YODH -+<U00010B6A> /xf0/x90/xad/xaa INSCRIPTIONAL PAHLAVI LETTER KAPH -+<U00010B6B> /xf0/x90/xad/xab INSCRIPTIONAL PAHLAVI LETTER LAMEDH -+<U00010B6C> /xf0/x90/xad/xac INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH -+<U00010B6D> /xf0/x90/xad/xad INSCRIPTIONAL PAHLAVI LETTER NUN -+<U00010B6E> /xf0/x90/xad/xae INSCRIPTIONAL PAHLAVI LETTER SAMEKH -+<U00010B6F> /xf0/x90/xad/xaf INSCRIPTIONAL PAHLAVI LETTER PE -+<U00010B70> /xf0/x90/xad/xb0 INSCRIPTIONAL PAHLAVI LETTER SADHE -+<U00010B71> /xf0/x90/xad/xb1 INSCRIPTIONAL PAHLAVI LETTER SHIN -+<U00010B72> /xf0/x90/xad/xb2 INSCRIPTIONAL PAHLAVI LETTER TAW -+<U00010B78> /xf0/x90/xad/xb8 INSCRIPTIONAL PAHLAVI NUMBER ONE -+<U00010B79> /xf0/x90/xad/xb9 INSCRIPTIONAL PAHLAVI NUMBER TWO -+<U00010B7A> /xf0/x90/xad/xba INSCRIPTIONAL PAHLAVI NUMBER THREE -+<U00010B7B> /xf0/x90/xad/xbb INSCRIPTIONAL PAHLAVI NUMBER FOUR -+<U00010B7C> /xf0/x90/xad/xbc INSCRIPTIONAL PAHLAVI NUMBER TEN -+<U00010B7D> /xf0/x90/xad/xbd INSCRIPTIONAL PAHLAVI NUMBER TWENTY -+<U00010B7E> /xf0/x90/xad/xbe INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED -+<U00010B7F> /xf0/x90/xad/xbf INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND -+<U00010C00> /xf0/x90/xb0/x80 OLD TURKIC LETTER ORKHON A -+<U00010C01> /xf0/x90/xb0/x81 OLD TURKIC LETTER YENISEI A -+<U00010C02> /xf0/x90/xb0/x82 OLD TURKIC LETTER YENISEI AE -+<U00010C03> /xf0/x90/xb0/x83 OLD TURKIC LETTER ORKHON I -+<U00010C04> /xf0/x90/xb0/x84 OLD TURKIC LETTER YENISEI I -+<U00010C05> /xf0/x90/xb0/x85 OLD TURKIC LETTER YENISEI E -+<U00010C06> /xf0/x90/xb0/x86 OLD TURKIC LETTER ORKHON O -+<U00010C07> /xf0/x90/xb0/x87 OLD TURKIC LETTER ORKHON OE -+<U00010C08> /xf0/x90/xb0/x88 OLD TURKIC LETTER YENISEI OE -+<U00010C09> /xf0/x90/xb0/x89 OLD TURKIC LETTER ORKHON AB -+<U00010C0A> /xf0/x90/xb0/x8a OLD TURKIC LETTER YENISEI AB -+<U00010C0B> /xf0/x90/xb0/x8b OLD TURKIC LETTER ORKHON AEB -+<U00010C0C> /xf0/x90/xb0/x8c OLD TURKIC LETTER YENISEI AEB -+<U00010C0D> /xf0/x90/xb0/x8d OLD TURKIC LETTER ORKHON AG -+<U00010C0E> /xf0/x90/xb0/x8e OLD TURKIC LETTER YENISEI AG -+<U00010C0F> /xf0/x90/xb0/x8f OLD TURKIC LETTER ORKHON AEG -+<U00010C10> /xf0/x90/xb0/x90 OLD TURKIC LETTER YENISEI AEG -+<U00010C11> /xf0/x90/xb0/x91 OLD TURKIC LETTER ORKHON AD -+<U00010C12> /xf0/x90/xb0/x92 OLD TURKIC LETTER YENISEI AD -+<U00010C13> /xf0/x90/xb0/x93 OLD TURKIC LETTER ORKHON AED -+<U00010C14> /xf0/x90/xb0/x94 OLD TURKIC LETTER ORKHON EZ -+<U00010C15> /xf0/x90/xb0/x95 OLD TURKIC LETTER YENISEI EZ -+<U00010C16> /xf0/x90/xb0/x96 OLD TURKIC LETTER ORKHON AY -+<U00010C17> /xf0/x90/xb0/x97 OLD TURKIC LETTER YENISEI AY -+<U00010C18> /xf0/x90/xb0/x98 OLD TURKIC LETTER ORKHON AEY -+<U00010C19> /xf0/x90/xb0/x99 OLD TURKIC LETTER YENISEI AEY -+<U00010C1A> /xf0/x90/xb0/x9a OLD TURKIC LETTER ORKHON AEK -+<U00010C1B> /xf0/x90/xb0/x9b OLD TURKIC LETTER YENISEI AEK -+<U00010C1C> /xf0/x90/xb0/x9c OLD TURKIC LETTER ORKHON OEK -+<U00010C1D> /xf0/x90/xb0/x9d OLD TURKIC LETTER YENISEI OEK -+<U00010C1E> /xf0/x90/xb0/x9e OLD TURKIC LETTER ORKHON AL -+<U00010C1F> /xf0/x90/xb0/x9f OLD TURKIC LETTER YENISEI AL -+<U00010C20> /xf0/x90/xb0/xa0 OLD TURKIC LETTER ORKHON AEL -+<U00010C21> /xf0/x90/xb0/xa1 OLD TURKIC LETTER ORKHON ELT -+<U00010C22> /xf0/x90/xb0/xa2 OLD TURKIC LETTER ORKHON EM -+<U00010C23> /xf0/x90/xb0/xa3 OLD TURKIC LETTER ORKHON AN -+<U00010C24> /xf0/x90/xb0/xa4 OLD TURKIC LETTER ORKHON AEN -+<U00010C25> /xf0/x90/xb0/xa5 OLD TURKIC LETTER YENISEI AEN -+<U00010C26> /xf0/x90/xb0/xa6 OLD TURKIC LETTER ORKHON ENT -+<U00010C27> /xf0/x90/xb0/xa7 OLD TURKIC LETTER YENISEI ENT -+<U00010C28> /xf0/x90/xb0/xa8 OLD TURKIC LETTER ORKHON ENC -+<U00010C29> /xf0/x90/xb0/xa9 OLD TURKIC LETTER YENISEI ENC -+<U00010C2A> /xf0/x90/xb0/xaa OLD TURKIC LETTER ORKHON ENY -+<U00010C2B> /xf0/x90/xb0/xab OLD TURKIC LETTER YENISEI ENY -+<U00010C2C> /xf0/x90/xb0/xac OLD TURKIC LETTER YENISEI ANG -+<U00010C2D> /xf0/x90/xb0/xad OLD TURKIC LETTER ORKHON ENG -+<U00010C2E> /xf0/x90/xb0/xae OLD TURKIC LETTER YENISEI AENG -+<U00010C2F> /xf0/x90/xb0/xaf OLD TURKIC LETTER ORKHON EP -+<U00010C30> /xf0/x90/xb0/xb0 OLD TURKIC LETTER ORKHON OP -+<U00010C31> /xf0/x90/xb0/xb1 OLD TURKIC LETTER ORKHON IC -+<U00010C32> /xf0/x90/xb0/xb2 OLD TURKIC LETTER ORKHON EC -+<U00010C33> /xf0/x90/xb0/xb3 OLD TURKIC LETTER YENISEI EC -+<U00010C34> /xf0/x90/xb0/xb4 OLD TURKIC LETTER ORKHON AQ -+<U00010C35> /xf0/x90/xb0/xb5 OLD TURKIC LETTER YENISEI AQ -+<U00010C36> /xf0/x90/xb0/xb6 OLD TURKIC LETTER ORKHON IQ -+<U00010C37> /xf0/x90/xb0/xb7 OLD TURKIC LETTER YENISEI IQ -+<U00010C38> /xf0/x90/xb0/xb8 OLD TURKIC LETTER ORKHON OQ -+<U00010C39> /xf0/x90/xb0/xb9 OLD TURKIC LETTER YENISEI OQ -+<U00010C3A> /xf0/x90/xb0/xba OLD TURKIC LETTER ORKHON AR -+<U00010C3B> /xf0/x90/xb0/xbb OLD TURKIC LETTER YENISEI AR -+<U00010C3C> /xf0/x90/xb0/xbc OLD TURKIC LETTER ORKHON AER -+<U00010C3D> /xf0/x90/xb0/xbd OLD TURKIC LETTER ORKHON AS -+<U00010C3E> /xf0/x90/xb0/xbe OLD TURKIC LETTER ORKHON AES -+<U00010C3F> /xf0/x90/xb0/xbf OLD TURKIC LETTER ORKHON ASH -+<U00010C40> /xf0/x90/xb1/x80 OLD TURKIC LETTER YENISEI ASH -+<U00010C41> /xf0/x90/xb1/x81 OLD TURKIC LETTER ORKHON ESH -+<U00010C42> /xf0/x90/xb1/x82 OLD TURKIC LETTER YENISEI ESH -+<U00010C43> /xf0/x90/xb1/x83 OLD TURKIC LETTER ORKHON AT -+<U00010C44> /xf0/x90/xb1/x84 OLD TURKIC LETTER YENISEI AT -+<U00010C45> /xf0/x90/xb1/x85 OLD TURKIC LETTER ORKHON AET -+<U00010C46> /xf0/x90/xb1/x86 OLD TURKIC LETTER YENISEI AET -+<U00010C47> /xf0/x90/xb1/x87 OLD TURKIC LETTER ORKHON OT -+<U00010C48> /xf0/x90/xb1/x88 OLD TURKIC LETTER ORKHON BASH -+<U00010E60> /xf0/x90/xb9/xa0 RUMI DIGIT ONE -+<U00010E61> /xf0/x90/xb9/xa1 RUMI DIGIT TWO -+<U00010E62> /xf0/x90/xb9/xa2 RUMI DIGIT THREE -+<U00010E63> /xf0/x90/xb9/xa3 RUMI DIGIT FOUR -+<U00010E64> /xf0/x90/xb9/xa4 RUMI DIGIT FIVE -+<U00010E65> /xf0/x90/xb9/xa5 RUMI DIGIT SIX -+<U00010E66> /xf0/x90/xb9/xa6 RUMI DIGIT SEVEN -+<U00010E67> /xf0/x90/xb9/xa7 RUMI DIGIT EIGHT -+<U00010E68> /xf0/x90/xb9/xa8 RUMI DIGIT NINE -+<U00010E69> /xf0/x90/xb9/xa9 RUMI NUMBER TEN -+<U00010E6A> /xf0/x90/xb9/xaa RUMI NUMBER TWENTY -+<U00010E6B> /xf0/x90/xb9/xab RUMI NUMBER THIRTY -+<U00010E6C> /xf0/x90/xb9/xac RUMI NUMBER FORTY -+<U00010E6D> /xf0/x90/xb9/xad RUMI NUMBER FIFTY -+<U00010E6E> /xf0/x90/xb9/xae RUMI NUMBER SIXTY -+<U00010E6F> /xf0/x90/xb9/xaf RUMI NUMBER SEVENTY -+<U00010E70> /xf0/x90/xb9/xb0 RUMI NUMBER EIGHTY -+<U00010E71> /xf0/x90/xb9/xb1 RUMI NUMBER NINETY -+<U00010E72> /xf0/x90/xb9/xb2 RUMI NUMBER ONE HUNDRED -+<U00010E73> /xf0/x90/xb9/xb3 RUMI NUMBER TWO HUNDRED -+<U00010E74> /xf0/x90/xb9/xb4 RUMI NUMBER THREE HUNDRED -+<U00010E75> /xf0/x90/xb9/xb5 RUMI NUMBER FOUR HUNDRED -+<U00010E76> /xf0/x90/xb9/xb6 RUMI NUMBER FIVE HUNDRED -+<U00010E77> /xf0/x90/xb9/xb7 RUMI NUMBER SIX HUNDRED -+<U00010E78> /xf0/x90/xb9/xb8 RUMI NUMBER SEVEN HUNDRED -+<U00010E79> /xf0/x90/xb9/xb9 RUMI NUMBER EIGHT HUNDRED -+<U00010E7A> /xf0/x90/xb9/xba RUMI NUMBER NINE HUNDRED -+<U00010E7B> /xf0/x90/xb9/xbb RUMI FRACTION ONE HALF -+<U00010E7C> /xf0/x90/xb9/xbc RUMI FRACTION ONE QUARTER -+<U00010E7D> /xf0/x90/xb9/xbd RUMI FRACTION ONE THIRD -+<U00010E7E> /xf0/x90/xb9/xbe RUMI FRACTION TWO THIRDS -+<U00011000> /xf0/x91/x80/x80 BRAHMI SIGN CANDRABINDU -+<U00011001> /xf0/x91/x80/x81 BRAHMI SIGN ANUSVARA -+<U00011002> /xf0/x91/x80/x82 BRAHMI SIGN VISARGA -+<U00011003> /xf0/x91/x80/x83 BRAHMI SIGN JIHVAMULIYA -+<U00011004> /xf0/x91/x80/x84 BRAHMI SIGN UPADHMANIYA -+<U00011005> /xf0/x91/x80/x85 BRAHMI LETTER A -+<U00011006> /xf0/x91/x80/x86 BRAHMI LETTER AA -+<U00011007> /xf0/x91/x80/x87 BRAHMI LETTER I -+<U00011008> /xf0/x91/x80/x88 BRAHMI LETTER II -+<U00011009> /xf0/x91/x80/x89 BRAHMI LETTER U -+<U0001100A> /xf0/x91/x80/x8a BRAHMI LETTER UU -+<U0001100B> /xf0/x91/x80/x8b BRAHMI LETTER VOCALIC R -+<U0001100C> /xf0/x91/x80/x8c BRAHMI LETTER VOCALIC RR -+<U0001100D> /xf0/x91/x80/x8d BRAHMI LETTER VOCALIC L -+<U0001100E> /xf0/x91/x80/x8e BRAHMI LETTER VOCALIC LL -+<U0001100F> /xf0/x91/x80/x8f BRAHMI LETTER E -+<U00011010> /xf0/x91/x80/x90 BRAHMI LETTER AI -+<U00011011> /xf0/x91/x80/x91 BRAHMI LETTER O -+<U00011012> /xf0/x91/x80/x92 BRAHMI LETTER AU -+<U00011013> /xf0/x91/x80/x93 BRAHMI LETTER KA -+<U00011014> /xf0/x91/x80/x94 BRAHMI LETTER KHA -+<U00011015> /xf0/x91/x80/x95 BRAHMI LETTER GA -+<U00011016> /xf0/x91/x80/x96 BRAHMI LETTER GHA -+<U00011017> /xf0/x91/x80/x97 BRAHMI LETTER NGA -+<U00011018> /xf0/x91/x80/x98 BRAHMI LETTER CA -+<U00011019> /xf0/x91/x80/x99 BRAHMI LETTER CHA -+<U0001101A> /xf0/x91/x80/x9a BRAHMI LETTER JA -+<U0001101B> /xf0/x91/x80/x9b BRAHMI LETTER JHA -+<U0001101C> /xf0/x91/x80/x9c BRAHMI LETTER NYA -+<U0001101D> /xf0/x91/x80/x9d BRAHMI LETTER TTA -+<U0001101E> /xf0/x91/x80/x9e BRAHMI LETTER TTHA -+<U0001101F> /xf0/x91/x80/x9f BRAHMI LETTER DDA -+<U00011020> /xf0/x91/x80/xa0 BRAHMI LETTER DDHA -+<U00011021> /xf0/x91/x80/xa1 BRAHMI LETTER NNA -+<U00011022> /xf0/x91/x80/xa2 BRAHMI LETTER TA -+<U00011023> /xf0/x91/x80/xa3 BRAHMI LETTER THA -+<U00011024> /xf0/x91/x80/xa4 BRAHMI LETTER DA -+<U00011025> /xf0/x91/x80/xa5 BRAHMI LETTER DHA -+<U00011026> /xf0/x91/x80/xa6 BRAHMI LETTER NA -+<U00011027> /xf0/x91/x80/xa7 BRAHMI LETTER PA -+<U00011028> /xf0/x91/x80/xa8 BRAHMI LETTER PHA -+<U00011029> /xf0/x91/x80/xa9 BRAHMI LETTER BA -+<U0001102A> /xf0/x91/x80/xaa BRAHMI LETTER BHA -+<U0001102B> /xf0/x91/x80/xab BRAHMI LETTER MA -+<U0001102C> /xf0/x91/x80/xac BRAHMI LETTER YA -+<U0001102D> /xf0/x91/x80/xad BRAHMI LETTER RA -+<U0001102E> /xf0/x91/x80/xae BRAHMI LETTER LA -+<U0001102F> /xf0/x91/x80/xaf BRAHMI LETTER VA -+<U00011030> /xf0/x91/x80/xb0 BRAHMI LETTER SHA -+<U00011031> /xf0/x91/x80/xb1 BRAHMI LETTER SSA -+<U00011032> /xf0/x91/x80/xb2 BRAHMI LETTER SA -+<U00011033> /xf0/x91/x80/xb3 BRAHMI LETTER HA -+<U00011034> /xf0/x91/x80/xb4 BRAHMI LETTER LLA -+<U00011035> /xf0/x91/x80/xb5 BRAHMI LETTER OLD TAMIL LLLA -+<U00011036> /xf0/x91/x80/xb6 BRAHMI LETTER OLD TAMIL RRA -+<U00011037> /xf0/x91/x80/xb7 BRAHMI LETTER OLD TAMIL NNNA -+<U00011038> /xf0/x91/x80/xb8 BRAHMI VOWEL SIGN AA -+<U00011039> /xf0/x91/x80/xb9 BRAHMI VOWEL SIGN BHATTIPROLU AA -+<U0001103A> /xf0/x91/x80/xba BRAHMI VOWEL SIGN I -+<U0001103B> /xf0/x91/x80/xbb BRAHMI VOWEL SIGN II -+<U0001103C> /xf0/x91/x80/xbc BRAHMI VOWEL SIGN U -+<U0001103D> /xf0/x91/x80/xbd BRAHMI VOWEL SIGN UU -+<U0001103E> /xf0/x91/x80/xbe BRAHMI VOWEL SIGN VOCALIC R -+<U0001103F> /xf0/x91/x80/xbf BRAHMI VOWEL SIGN VOCALIC RR -+<U00011040> /xf0/x91/x81/x80 BRAHMI VOWEL SIGN VOCALIC L -+<U00011041> /xf0/x91/x81/x81 BRAHMI VOWEL SIGN VOCALIC LL -+<U00011042> /xf0/x91/x81/x82 BRAHMI VOWEL SIGN E -+<U00011043> /xf0/x91/x81/x83 BRAHMI VOWEL SIGN AI -+<U00011044> /xf0/x91/x81/x84 BRAHMI VOWEL SIGN O -+<U00011045> /xf0/x91/x81/x85 BRAHMI VOWEL SIGN AU -+<U00011046> /xf0/x91/x81/x86 BRAHMI VIRAMA -+<U00011047> /xf0/x91/x81/x87 BRAHMI DANDA -+<U00011048> /xf0/x91/x81/x88 BRAHMI DOUBLE DANDA -+<U00011049> /xf0/x91/x81/x89 BRAHMI PUNCTUATION DOT -+<U0001104A> /xf0/x91/x81/x8a BRAHMI PUNCTUATION DOUBLE DOT -+<U0001104B> /xf0/x91/x81/x8b BRAHMI PUNCTUATION LINE -+<U0001104C> /xf0/x91/x81/x8c BRAHMI PUNCTUATION CRESCENT BAR -+<U0001104D> /xf0/x91/x81/x8d BRAHMI PUNCTUATION LOTUS -+<U00011052> /xf0/x91/x81/x92 BRAHMI NUMBER ONE -+<U00011053> /xf0/x91/x81/x93 BRAHMI NUMBER TWO -+<U00011054> /xf0/x91/x81/x94 BRAHMI NUMBER THREE -+<U00011055> /xf0/x91/x81/x95 BRAHMI NUMBER FOUR -+<U00011056> /xf0/x91/x81/x96 BRAHMI NUMBER FIVE -+<U00011057> /xf0/x91/x81/x97 BRAHMI NUMBER SIX -+<U00011058> /xf0/x91/x81/x98 BRAHMI NUMBER SEVEN -+<U00011059> /xf0/x91/x81/x99 BRAHMI NUMBER EIGHT -+<U0001105A> /xf0/x91/x81/x9a BRAHMI NUMBER NINE -+<U0001105B> /xf0/x91/x81/x9b BRAHMI NUMBER TEN -+<U0001105C> /xf0/x91/x81/x9c BRAHMI NUMBER TWENTY -+<U0001105D> /xf0/x91/x81/x9d BRAHMI NUMBER THIRTY -+<U0001105E> /xf0/x91/x81/x9e BRAHMI NUMBER FORTY -+<U0001105F> /xf0/x91/x81/x9f BRAHMI NUMBER FIFTY -+<U00011060> /xf0/x91/x81/xa0 BRAHMI NUMBER SIXTY -+<U00011061> /xf0/x91/x81/xa1 BRAHMI NUMBER SEVENTY -+<U00011062> /xf0/x91/x81/xa2 BRAHMI NUMBER EIGHTY -+<U00011063> /xf0/x91/x81/xa3 BRAHMI NUMBER NINETY -+<U00011064> /xf0/x91/x81/xa4 BRAHMI NUMBER ONE HUNDRED -+<U00011065> /xf0/x91/x81/xa5 BRAHMI NUMBER ONE THOUSAND -+<U00011066> /xf0/x91/x81/xa6 BRAHMI DIGIT ZERO -+<U00011067> /xf0/x91/x81/xa7 BRAHMI DIGIT ONE -+<U00011068> /xf0/x91/x81/xa8 BRAHMI DIGIT TWO -+<U00011069> /xf0/x91/x81/xa9 BRAHMI DIGIT THREE -+<U0001106A> /xf0/x91/x81/xaa BRAHMI DIGIT FOUR -+<U0001106B> /xf0/x91/x81/xab BRAHMI DIGIT FIVE -+<U0001106C> /xf0/x91/x81/xac BRAHMI DIGIT SIX -+<U0001106D> /xf0/x91/x81/xad BRAHMI DIGIT SEVEN -+<U0001106E> /xf0/x91/x81/xae BRAHMI DIGIT EIGHT -+<U0001106F> /xf0/x91/x81/xaf BRAHMI DIGIT NINE -+<U00011080> /xf0/x91/x82/x80 KAITHI SIGN CANDRABINDU -+<U00011081> /xf0/x91/x82/x81 KAITHI SIGN ANUSVARA -+<U00011082> /xf0/x91/x82/x82 KAITHI SIGN VISARGA -+<U00011083> /xf0/x91/x82/x83 KAITHI LETTER A -+<U00011084> /xf0/x91/x82/x84 KAITHI LETTER AA -+<U00011085> /xf0/x91/x82/x85 KAITHI LETTER I -+<U00011086> /xf0/x91/x82/x86 KAITHI LETTER II -+<U00011087> /xf0/x91/x82/x87 KAITHI LETTER U -+<U00011088> /xf0/x91/x82/x88 KAITHI LETTER UU -+<U00011089> /xf0/x91/x82/x89 KAITHI LETTER E -+<U0001108A> /xf0/x91/x82/x8a KAITHI LETTER AI -+<U0001108B> /xf0/x91/x82/x8b KAITHI LETTER O -+<U0001108C> /xf0/x91/x82/x8c KAITHI LETTER AU -+<U0001108D> /xf0/x91/x82/x8d KAITHI LETTER KA -+<U0001108E> /xf0/x91/x82/x8e KAITHI LETTER KHA -+<U0001108F> /xf0/x91/x82/x8f KAITHI LETTER GA -+<U00011090> /xf0/x91/x82/x90 KAITHI LETTER GHA -+<U00011091> /xf0/x91/x82/x91 KAITHI LETTER NGA -+<U00011092> /xf0/x91/x82/x92 KAITHI LETTER CA -+<U00011093> /xf0/x91/x82/x93 KAITHI LETTER CHA -+<U00011094> /xf0/x91/x82/x94 KAITHI LETTER JA -+<U00011095> /xf0/x91/x82/x95 KAITHI LETTER JHA -+<U00011096> /xf0/x91/x82/x96 KAITHI LETTER NYA -+<U00011097> /xf0/x91/x82/x97 KAITHI LETTER TTA -+<U00011098> /xf0/x91/x82/x98 KAITHI LETTER TTHA -+<U00011099> /xf0/x91/x82/x99 KAITHI LETTER DDA -+<U0001109A> /xf0/x91/x82/x9a KAITHI LETTER DDDHA -+<U0001109B> /xf0/x91/x82/x9b KAITHI LETTER DDHA -+<U0001109C> /xf0/x91/x82/x9c KAITHI LETTER RHA -+<U0001109D> /xf0/x91/x82/x9d KAITHI LETTER NNA -+<U0001109E> /xf0/x91/x82/x9e KAITHI LETTER TA -+<U0001109F> /xf0/x91/x82/x9f KAITHI LETTER THA -+<U000110A0> /xf0/x91/x82/xa0 KAITHI LETTER DA -+<U000110A1> /xf0/x91/x82/xa1 KAITHI LETTER DHA -+<U000110A2> /xf0/x91/x82/xa2 KAITHI LETTER NA -+<U000110A3> /xf0/x91/x82/xa3 KAITHI LETTER PA -+<U000110A4> /xf0/x91/x82/xa4 KAITHI LETTER PHA -+<U000110A5> /xf0/x91/x82/xa5 KAITHI LETTER BA -+<U000110A6> /xf0/x91/x82/xa6 KAITHI LETTER BHA -+<U000110A7> /xf0/x91/x82/xa7 KAITHI LETTER MA -+<U000110A8> /xf0/x91/x82/xa8 KAITHI LETTER YA -+<U000110A9> /xf0/x91/x82/xa9 KAITHI LETTER RA -+<U000110AA> /xf0/x91/x82/xaa KAITHI LETTER LA -+<U000110AB> /xf0/x91/x82/xab KAITHI LETTER VA -+<U000110AC> /xf0/x91/x82/xac KAITHI LETTER SHA -+<U000110AD> /xf0/x91/x82/xad KAITHI LETTER SSA -+<U000110AE> /xf0/x91/x82/xae KAITHI LETTER SA -+<U000110AF> /xf0/x91/x82/xaf KAITHI LETTER HA -+<U000110B0> /xf0/x91/x82/xb0 KAITHI VOWEL SIGN AA -+<U000110B1> /xf0/x91/x82/xb1 KAITHI VOWEL SIGN I -+<U000110B2> /xf0/x91/x82/xb2 KAITHI VOWEL SIGN II -+<U000110B3> /xf0/x91/x82/xb3 KAITHI VOWEL SIGN U -+<U000110B4> /xf0/x91/x82/xb4 KAITHI VOWEL SIGN UU -+<U000110B5> /xf0/x91/x82/xb5 KAITHI VOWEL SIGN E -+<U000110B6> /xf0/x91/x82/xb6 KAITHI VOWEL SIGN AI -+<U000110B7> /xf0/x91/x82/xb7 KAITHI VOWEL SIGN O -+<U000110B8> /xf0/x91/x82/xb8 KAITHI VOWEL SIGN AU -+<U000110B9> /xf0/x91/x82/xb9 KAITHI SIGN VIRAMA -+<U000110BA> /xf0/x91/x82/xba KAITHI SIGN NUKTA -+<U000110BB> /xf0/x91/x82/xbb KAITHI ABBREVIATION SIGN -+<U000110BC> /xf0/x91/x82/xbc KAITHI ENUMERATION SIGN -+<U000110BD> /xf0/x91/x82/xbd KAITHI NUMBER SIGN -+<U000110BE> /xf0/x91/x82/xbe KAITHI SECTION MARK -+<U000110BF> /xf0/x91/x82/xbf KAITHI DOUBLE SECTION MARK -+<U000110C0> /xf0/x91/x83/x80 KAITHI DANDA -+<U000110C1> /xf0/x91/x83/x81 KAITHI DOUBLE DANDA - <U00012000> /xf0/x92/x80/x80 CUNEIFORM SIGN A - <U00012001> /xf0/x92/x80/x81 CUNEIFORM SIGN A TIMES A - <U00012002> /xf0/x92/x80/x82 CUNEIFORM SIGN A TIMES BAD -@@ -28370,6 +30022,1648 @@ CHARMAP - <U00012471> /xf0/x92/x91/xb1 CUNEIFORM PUNCTUATION SIGN VERTICAL COLON - <U00012472> /xf0/x92/x91/xb2 CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON - <U00012473> /xf0/x92/x91/xb3 CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON -+<U00013000> /xf0/x93/x80/x80 EGYPTIAN HIEROGLYPH A001 -+<U00013001> /xf0/x93/x80/x81 EGYPTIAN HIEROGLYPH A002 -+<U00013002> /xf0/x93/x80/x82 EGYPTIAN HIEROGLYPH A003 -+<U00013003> /xf0/x93/x80/x83 EGYPTIAN HIEROGLYPH A004 -+<U00013004> /xf0/x93/x80/x84 EGYPTIAN HIEROGLYPH A005 -+<U00013005> /xf0/x93/x80/x85 EGYPTIAN HIEROGLYPH A005A -+<U00013006> /xf0/x93/x80/x86 EGYPTIAN HIEROGLYPH A006 -+<U00013007> /xf0/x93/x80/x87 EGYPTIAN HIEROGLYPH A006A -+<U00013008> /xf0/x93/x80/x88 EGYPTIAN HIEROGLYPH A006B -+<U00013009> /xf0/x93/x80/x89 EGYPTIAN HIEROGLYPH A007 -+<U0001300A> /xf0/x93/x80/x8a EGYPTIAN HIEROGLYPH A008 -+<U0001300B> /xf0/x93/x80/x8b EGYPTIAN HIEROGLYPH A009 -+<U0001300C> /xf0/x93/x80/x8c EGYPTIAN HIEROGLYPH A010 -+<U0001300D> /xf0/x93/x80/x8d EGYPTIAN HIEROGLYPH A011 -+<U0001300E> /xf0/x93/x80/x8e EGYPTIAN HIEROGLYPH A012 -+<U0001300F> /xf0/x93/x80/x8f EGYPTIAN HIEROGLYPH A013 -+<U00013010> /xf0/x93/x80/x90 EGYPTIAN HIEROGLYPH A014 -+<U00013011> /xf0/x93/x80/x91 EGYPTIAN HIEROGLYPH A014A -+<U00013012> /xf0/x93/x80/x92 EGYPTIAN HIEROGLYPH A015 -+<U00013013> /xf0/x93/x80/x93 EGYPTIAN HIEROGLYPH A016 -+<U00013014> /xf0/x93/x80/x94 EGYPTIAN HIEROGLYPH A017 -+<U00013015> /xf0/x93/x80/x95 EGYPTIAN HIEROGLYPH A017A -+<U00013016> /xf0/x93/x80/x96 EGYPTIAN HIEROGLYPH A018 -+<U00013017> /xf0/x93/x80/x97 EGYPTIAN HIEROGLYPH A019 -+<U00013018> /xf0/x93/x80/x98 EGYPTIAN HIEROGLYPH A020 -+<U00013019> /xf0/x93/x80/x99 EGYPTIAN HIEROGLYPH A021 -+<U0001301A> /xf0/x93/x80/x9a EGYPTIAN HIEROGLYPH A022 -+<U0001301B> /xf0/x93/x80/x9b EGYPTIAN HIEROGLYPH A023 -+<U0001301C> /xf0/x93/x80/x9c EGYPTIAN HIEROGLYPH A024 -+<U0001301D> /xf0/x93/x80/x9d EGYPTIAN HIEROGLYPH A025 -+<U0001301E> /xf0/x93/x80/x9e EGYPTIAN HIEROGLYPH A026 -+<U0001301F> /xf0/x93/x80/x9f EGYPTIAN HIEROGLYPH A027 -+<U00013020> /xf0/x93/x80/xa0 EGYPTIAN HIEROGLYPH A028 -+<U00013021> /xf0/x93/x80/xa1 EGYPTIAN HIEROGLYPH A029 -+<U00013022> /xf0/x93/x80/xa2 EGYPTIAN HIEROGLYPH A030 -+<U00013023> /xf0/x93/x80/xa3 EGYPTIAN HIEROGLYPH A031 -+<U00013024> /xf0/x93/x80/xa4 EGYPTIAN HIEROGLYPH A032 -+<U00013025> /xf0/x93/x80/xa5 EGYPTIAN HIEROGLYPH A032A -+<U00013026> /xf0/x93/x80/xa6 EGYPTIAN HIEROGLYPH A033 -+<U00013027> /xf0/x93/x80/xa7 EGYPTIAN HIEROGLYPH A034 -+<U00013028> /xf0/x93/x80/xa8 EGYPTIAN HIEROGLYPH A035 -+<U00013029> /xf0/x93/x80/xa9 EGYPTIAN HIEROGLYPH A036 -+<U0001302A> /xf0/x93/x80/xaa EGYPTIAN HIEROGLYPH A037 -+<U0001302B> /xf0/x93/x80/xab EGYPTIAN HIEROGLYPH A038 -+<U0001302C> /xf0/x93/x80/xac EGYPTIAN HIEROGLYPH A039 -+<U0001302D> /xf0/x93/x80/xad EGYPTIAN HIEROGLYPH A040 -+<U0001302E> /xf0/x93/x80/xae EGYPTIAN HIEROGLYPH A040A -+<U0001302F> /xf0/x93/x80/xaf EGYPTIAN HIEROGLYPH A041 -+<U00013030> /xf0/x93/x80/xb0 EGYPTIAN HIEROGLYPH A042 -+<U00013031> /xf0/x93/x80/xb1 EGYPTIAN HIEROGLYPH A042A -+<U00013032> /xf0/x93/x80/xb2 EGYPTIAN HIEROGLYPH A043 -+<U00013033> /xf0/x93/x80/xb3 EGYPTIAN HIEROGLYPH A043A -+<U00013034> /xf0/x93/x80/xb4 EGYPTIAN HIEROGLYPH A044 -+<U00013035> /xf0/x93/x80/xb5 EGYPTIAN HIEROGLYPH A045 -+<U00013036> /xf0/x93/x80/xb6 EGYPTIAN HIEROGLYPH A045A -+<U00013037> /xf0/x93/x80/xb7 EGYPTIAN HIEROGLYPH A046 -+<U00013038> /xf0/x93/x80/xb8 EGYPTIAN HIEROGLYPH A047 -+<U00013039> /xf0/x93/x80/xb9 EGYPTIAN HIEROGLYPH A048 -+<U0001303A> /xf0/x93/x80/xba EGYPTIAN HIEROGLYPH A049 -+<U0001303B> /xf0/x93/x80/xbb EGYPTIAN HIEROGLYPH A050 -+<U0001303C> /xf0/x93/x80/xbc EGYPTIAN HIEROGLYPH A051 -+<U0001303D> /xf0/x93/x80/xbd EGYPTIAN HIEROGLYPH A052 -+<U0001303E> /xf0/x93/x80/xbe EGYPTIAN HIEROGLYPH A053 -+<U0001303F> /xf0/x93/x80/xbf EGYPTIAN HIEROGLYPH A054 -+<U00013040> /xf0/x93/x81/x80 EGYPTIAN HIEROGLYPH A055 -+<U00013041> /xf0/x93/x81/x81 EGYPTIAN HIEROGLYPH A056 -+<U00013042> /xf0/x93/x81/x82 EGYPTIAN HIEROGLYPH A057 -+<U00013043> /xf0/x93/x81/x83 EGYPTIAN HIEROGLYPH A058 -+<U00013044> /xf0/x93/x81/x84 EGYPTIAN HIEROGLYPH A059 -+<U00013045> /xf0/x93/x81/x85 EGYPTIAN HIEROGLYPH A060 -+<U00013046> /xf0/x93/x81/x86 EGYPTIAN HIEROGLYPH A061 -+<U00013047> /xf0/x93/x81/x87 EGYPTIAN HIEROGLYPH A062 -+<U00013048> /xf0/x93/x81/x88 EGYPTIAN HIEROGLYPH A063 -+<U00013049> /xf0/x93/x81/x89 EGYPTIAN HIEROGLYPH A064 -+<U0001304A> /xf0/x93/x81/x8a EGYPTIAN HIEROGLYPH A065 -+<U0001304B> /xf0/x93/x81/x8b EGYPTIAN HIEROGLYPH A066 -+<U0001304C> /xf0/x93/x81/x8c EGYPTIAN HIEROGLYPH A067 -+<U0001304D> /xf0/x93/x81/x8d EGYPTIAN HIEROGLYPH A068 -+<U0001304E> /xf0/x93/x81/x8e EGYPTIAN HIEROGLYPH A069 -+<U0001304F> /xf0/x93/x81/x8f EGYPTIAN HIEROGLYPH A070 -+<U00013050> /xf0/x93/x81/x90 EGYPTIAN HIEROGLYPH B001 -+<U00013051> /xf0/x93/x81/x91 EGYPTIAN HIEROGLYPH B002 -+<U00013052> /xf0/x93/x81/x92 EGYPTIAN HIEROGLYPH B003 -+<U00013053> /xf0/x93/x81/x93 EGYPTIAN HIEROGLYPH B004 -+<U00013054> /xf0/x93/x81/x94 EGYPTIAN HIEROGLYPH B005 -+<U00013055> /xf0/x93/x81/x95 EGYPTIAN HIEROGLYPH B005A -+<U00013056> /xf0/x93/x81/x96 EGYPTIAN HIEROGLYPH B006 -+<U00013057> /xf0/x93/x81/x97 EGYPTIAN HIEROGLYPH B007 -+<U00013058> /xf0/x93/x81/x98 EGYPTIAN HIEROGLYPH B008 -+<U00013059> /xf0/x93/x81/x99 EGYPTIAN HIEROGLYPH B009 -+<U0001305A> /xf0/x93/x81/x9a EGYPTIAN HIEROGLYPH C001 -+<U0001305B> /xf0/x93/x81/x9b EGYPTIAN HIEROGLYPH C002 -+<U0001305C> /xf0/x93/x81/x9c EGYPTIAN HIEROGLYPH C002A -+<U0001305D> /xf0/x93/x81/x9d EGYPTIAN HIEROGLYPH C002B -+<U0001305E> /xf0/x93/x81/x9e EGYPTIAN HIEROGLYPH C002C -+<U0001305F> /xf0/x93/x81/x9f EGYPTIAN HIEROGLYPH C003 -+<U00013060> /xf0/x93/x81/xa0 EGYPTIAN HIEROGLYPH C004 -+<U00013061> /xf0/x93/x81/xa1 EGYPTIAN HIEROGLYPH C005 -+<U00013062> /xf0/x93/x81/xa2 EGYPTIAN HIEROGLYPH C006 -+<U00013063> /xf0/x93/x81/xa3 EGYPTIAN HIEROGLYPH C007 -+<U00013064> /xf0/x93/x81/xa4 EGYPTIAN HIEROGLYPH C008 -+<U00013065> /xf0/x93/x81/xa5 EGYPTIAN HIEROGLYPH C009 -+<U00013066> /xf0/x93/x81/xa6 EGYPTIAN HIEROGLYPH C010 -+<U00013067> /xf0/x93/x81/xa7 EGYPTIAN HIEROGLYPH C010A -+<U00013068> /xf0/x93/x81/xa8 EGYPTIAN HIEROGLYPH C011 -+<U00013069> /xf0/x93/x81/xa9 EGYPTIAN HIEROGLYPH C012 -+<U0001306A> /xf0/x93/x81/xaa EGYPTIAN HIEROGLYPH C013 -+<U0001306B> /xf0/x93/x81/xab EGYPTIAN HIEROGLYPH C014 -+<U0001306C> /xf0/x93/x81/xac EGYPTIAN HIEROGLYPH C015 -+<U0001306D> /xf0/x93/x81/xad EGYPTIAN HIEROGLYPH C016 -+<U0001306E> /xf0/x93/x81/xae EGYPTIAN HIEROGLYPH C017 -+<U0001306F> /xf0/x93/x81/xaf EGYPTIAN HIEROGLYPH C018 -+<U00013070> /xf0/x93/x81/xb0 EGYPTIAN HIEROGLYPH C019 -+<U00013071> /xf0/x93/x81/xb1 EGYPTIAN HIEROGLYPH C020 -+<U00013072> /xf0/x93/x81/xb2 EGYPTIAN HIEROGLYPH C021 -+<U00013073> /xf0/x93/x81/xb3 EGYPTIAN HIEROGLYPH C022 -+<U00013074> /xf0/x93/x81/xb4 EGYPTIAN HIEROGLYPH C023 -+<U00013075> /xf0/x93/x81/xb5 EGYPTIAN HIEROGLYPH C024 -+<U00013076> /xf0/x93/x81/xb6 EGYPTIAN HIEROGLYPH D001 -+<U00013077> /xf0/x93/x81/xb7 EGYPTIAN HIEROGLYPH D002 -+<U00013078> /xf0/x93/x81/xb8 EGYPTIAN HIEROGLYPH D003 -+<U00013079> /xf0/x93/x81/xb9 EGYPTIAN HIEROGLYPH D004 -+<U0001307A> /xf0/x93/x81/xba EGYPTIAN HIEROGLYPH D005 -+<U0001307B> /xf0/x93/x81/xbb EGYPTIAN HIEROGLYPH D006 -+<U0001307C> /xf0/x93/x81/xbc EGYPTIAN HIEROGLYPH D007 -+<U0001307D> /xf0/x93/x81/xbd EGYPTIAN HIEROGLYPH D008 -+<U0001307E> /xf0/x93/x81/xbe EGYPTIAN HIEROGLYPH D008A -+<U0001307F> /xf0/x93/x81/xbf EGYPTIAN HIEROGLYPH D009 -+<U00013080> /xf0/x93/x82/x80 EGYPTIAN HIEROGLYPH D010 -+<U00013081> /xf0/x93/x82/x81 EGYPTIAN HIEROGLYPH D011 -+<U00013082> /xf0/x93/x82/x82 EGYPTIAN HIEROGLYPH D012 -+<U00013083> /xf0/x93/x82/x83 EGYPTIAN HIEROGLYPH D013 -+<U00013084> /xf0/x93/x82/x84 EGYPTIAN HIEROGLYPH D014 -+<U00013085> /xf0/x93/x82/x85 EGYPTIAN HIEROGLYPH D015 -+<U00013086> /xf0/x93/x82/x86 EGYPTIAN HIEROGLYPH D016 -+<U00013087> /xf0/x93/x82/x87 EGYPTIAN HIEROGLYPH D017 -+<U00013088> /xf0/x93/x82/x88 EGYPTIAN HIEROGLYPH D018 -+<U00013089> /xf0/x93/x82/x89 EGYPTIAN HIEROGLYPH D019 -+<U0001308A> /xf0/x93/x82/x8a EGYPTIAN HIEROGLYPH D020 -+<U0001308B> /xf0/x93/x82/x8b EGYPTIAN HIEROGLYPH D021 -+<U0001308C> /xf0/x93/x82/x8c EGYPTIAN HIEROGLYPH D022 -+<U0001308D> /xf0/x93/x82/x8d EGYPTIAN HIEROGLYPH D023 -+<U0001308E> /xf0/x93/x82/x8e EGYPTIAN HIEROGLYPH D024 -+<U0001308F> /xf0/x93/x82/x8f EGYPTIAN HIEROGLYPH D025 -+<U00013090> /xf0/x93/x82/x90 EGYPTIAN HIEROGLYPH D026 -+<U00013091> /xf0/x93/x82/x91 EGYPTIAN HIEROGLYPH D027 -+<U00013092> /xf0/x93/x82/x92 EGYPTIAN HIEROGLYPH D027A -+<U00013093> /xf0/x93/x82/x93 EGYPTIAN HIEROGLYPH D028 -+<U00013094> /xf0/x93/x82/x94 EGYPTIAN HIEROGLYPH D029 -+<U00013095> /xf0/x93/x82/x95 EGYPTIAN HIEROGLYPH D030 -+<U00013096> /xf0/x93/x82/x96 EGYPTIAN HIEROGLYPH D031 -+<U00013097> /xf0/x93/x82/x97 EGYPTIAN HIEROGLYPH D031A -+<U00013098> /xf0/x93/x82/x98 EGYPTIAN HIEROGLYPH D032 -+<U00013099> /xf0/x93/x82/x99 EGYPTIAN HIEROGLYPH D033 -+<U0001309A> /xf0/x93/x82/x9a EGYPTIAN HIEROGLYPH D034 -+<U0001309B> /xf0/x93/x82/x9b EGYPTIAN HIEROGLYPH D034A -+<U0001309C> /xf0/x93/x82/x9c EGYPTIAN HIEROGLYPH D035 -+<U0001309D> /xf0/x93/x82/x9d EGYPTIAN HIEROGLYPH D036 -+<U0001309E> /xf0/x93/x82/x9e EGYPTIAN HIEROGLYPH D037 -+<U0001309F> /xf0/x93/x82/x9f EGYPTIAN HIEROGLYPH D038 -+<U000130A0> /xf0/x93/x82/xa0 EGYPTIAN HIEROGLYPH D039 -+<U000130A1> /xf0/x93/x82/xa1 EGYPTIAN HIEROGLYPH D040 -+<U000130A2> /xf0/x93/x82/xa2 EGYPTIAN HIEROGLYPH D041 -+<U000130A3> /xf0/x93/x82/xa3 EGYPTIAN HIEROGLYPH D042 -+<U000130A4> /xf0/x93/x82/xa4 EGYPTIAN HIEROGLYPH D043 -+<U000130A5> /xf0/x93/x82/xa5 EGYPTIAN HIEROGLYPH D044 -+<U000130A6> /xf0/x93/x82/xa6 EGYPTIAN HIEROGLYPH D045 -+<U000130A7> /xf0/x93/x82/xa7 EGYPTIAN HIEROGLYPH D046 -+<U000130A8> /xf0/x93/x82/xa8 EGYPTIAN HIEROGLYPH D046A -+<U000130A9> /xf0/x93/x82/xa9 EGYPTIAN HIEROGLYPH D047 -+<U000130AA> /xf0/x93/x82/xaa EGYPTIAN HIEROGLYPH D048 -+<U000130AB> /xf0/x93/x82/xab EGYPTIAN HIEROGLYPH D048A -+<U000130AC> /xf0/x93/x82/xac EGYPTIAN HIEROGLYPH D049 -+<U000130AD> /xf0/x93/x82/xad EGYPTIAN HIEROGLYPH D050 -+<U000130AE> /xf0/x93/x82/xae EGYPTIAN HIEROGLYPH D050A -+<U000130AF> /xf0/x93/x82/xaf EGYPTIAN HIEROGLYPH D050B -+<U000130B0> /xf0/x93/x82/xb0 EGYPTIAN HIEROGLYPH D050C -+<U000130B1> /xf0/x93/x82/xb1 EGYPTIAN HIEROGLYPH D050D -+<U000130B2> /xf0/x93/x82/xb2 EGYPTIAN HIEROGLYPH D050E -+<U000130B3> /xf0/x93/x82/xb3 EGYPTIAN HIEROGLYPH D050F -+<U000130B4> /xf0/x93/x82/xb4 EGYPTIAN HIEROGLYPH D050G -+<U000130B5> /xf0/x93/x82/xb5 EGYPTIAN HIEROGLYPH D050H -+<U000130B6> /xf0/x93/x82/xb6 EGYPTIAN HIEROGLYPH D050I -+<U000130B7> /xf0/x93/x82/xb7 EGYPTIAN HIEROGLYPH D051 -+<U000130B8> /xf0/x93/x82/xb8 EGYPTIAN HIEROGLYPH D052 -+<U000130B9> /xf0/x93/x82/xb9 EGYPTIAN HIEROGLYPH D052A -+<U000130BA> /xf0/x93/x82/xba EGYPTIAN HIEROGLYPH D053 -+<U000130BB> /xf0/x93/x82/xbb EGYPTIAN HIEROGLYPH D054 -+<U000130BC> /xf0/x93/x82/xbc EGYPTIAN HIEROGLYPH D054A -+<U000130BD> /xf0/x93/x82/xbd EGYPTIAN HIEROGLYPH D055 -+<U000130BE> /xf0/x93/x82/xbe EGYPTIAN HIEROGLYPH D056 -+<U000130BF> /xf0/x93/x82/xbf EGYPTIAN HIEROGLYPH D057 -+<U000130C0> /xf0/x93/x83/x80 EGYPTIAN HIEROGLYPH D058 -+<U000130C1> /xf0/x93/x83/x81 EGYPTIAN HIEROGLYPH D059 -+<U000130C2> /xf0/x93/x83/x82 EGYPTIAN HIEROGLYPH D060 -+<U000130C3> /xf0/x93/x83/x83 EGYPTIAN HIEROGLYPH D061 -+<U000130C4> /xf0/x93/x83/x84 EGYPTIAN HIEROGLYPH D062 -+<U000130C5> /xf0/x93/x83/x85 EGYPTIAN HIEROGLYPH D063 -+<U000130C6> /xf0/x93/x83/x86 EGYPTIAN HIEROGLYPH D064 -+<U000130C7> /xf0/x93/x83/x87 EGYPTIAN HIEROGLYPH D065 -+<U000130C8> /xf0/x93/x83/x88 EGYPTIAN HIEROGLYPH D066 -+<U000130C9> /xf0/x93/x83/x89 EGYPTIAN HIEROGLYPH D067 -+<U000130CA> /xf0/x93/x83/x8a EGYPTIAN HIEROGLYPH D067A -+<U000130CB> /xf0/x93/x83/x8b EGYPTIAN HIEROGLYPH D067B -+<U000130CC> /xf0/x93/x83/x8c EGYPTIAN HIEROGLYPH D067C -+<U000130CD> /xf0/x93/x83/x8d EGYPTIAN HIEROGLYPH D067D -+<U000130CE> /xf0/x93/x83/x8e EGYPTIAN HIEROGLYPH D067E -+<U000130CF> /xf0/x93/x83/x8f EGYPTIAN HIEROGLYPH D067F -+<U000130D0> /xf0/x93/x83/x90 EGYPTIAN HIEROGLYPH D067G -+<U000130D1> /xf0/x93/x83/x91 EGYPTIAN HIEROGLYPH D067H -+<U000130D2> /xf0/x93/x83/x92 EGYPTIAN HIEROGLYPH E001 -+<U000130D3> /xf0/x93/x83/x93 EGYPTIAN HIEROGLYPH E002 -+<U000130D4> /xf0/x93/x83/x94 EGYPTIAN HIEROGLYPH E003 -+<U000130D5> /xf0/x93/x83/x95 EGYPTIAN HIEROGLYPH E004 -+<U000130D6> /xf0/x93/x83/x96 EGYPTIAN HIEROGLYPH E005 -+<U000130D7> /xf0/x93/x83/x97 EGYPTIAN HIEROGLYPH E006 -+<U000130D8> /xf0/x93/x83/x98 EGYPTIAN HIEROGLYPH E007 -+<U000130D9> /xf0/x93/x83/x99 EGYPTIAN HIEROGLYPH E008 -+<U000130DA> /xf0/x93/x83/x9a EGYPTIAN HIEROGLYPH E008A -+<U000130DB> /xf0/x93/x83/x9b EGYPTIAN HIEROGLYPH E009 -+<U000130DC> /xf0/x93/x83/x9c EGYPTIAN HIEROGLYPH E009A -+<U000130DD> /xf0/x93/x83/x9d EGYPTIAN HIEROGLYPH E010 -+<U000130DE> /xf0/x93/x83/x9e EGYPTIAN HIEROGLYPH E011 -+<U000130DF> /xf0/x93/x83/x9f EGYPTIAN HIEROGLYPH E012 -+<U000130E0> /xf0/x93/x83/xa0 EGYPTIAN HIEROGLYPH E013 -+<U000130E1> /xf0/x93/x83/xa1 EGYPTIAN HIEROGLYPH E014 -+<U000130E2> /xf0/x93/x83/xa2 EGYPTIAN HIEROGLYPH E015 -+<U000130E3> /xf0/x93/x83/xa3 EGYPTIAN HIEROGLYPH E016 -+<U000130E4> /xf0/x93/x83/xa4 EGYPTIAN HIEROGLYPH E016A -+<U000130E5> /xf0/x93/x83/xa5 EGYPTIAN HIEROGLYPH E017 -+<U000130E6> /xf0/x93/x83/xa6 EGYPTIAN HIEROGLYPH E017A -+<U000130E7> /xf0/x93/x83/xa7 EGYPTIAN HIEROGLYPH E018 -+<U000130E8> /xf0/x93/x83/xa8 EGYPTIAN HIEROGLYPH E019 -+<U000130E9> /xf0/x93/x83/xa9 EGYPTIAN HIEROGLYPH E020 -+<U000130EA> /xf0/x93/x83/xaa EGYPTIAN HIEROGLYPH E020A -+<U000130EB> /xf0/x93/x83/xab EGYPTIAN HIEROGLYPH E021 -+<U000130EC> /xf0/x93/x83/xac EGYPTIAN HIEROGLYPH E022 -+<U000130ED> /xf0/x93/x83/xad EGYPTIAN HIEROGLYPH E023 -+<U000130EE> /xf0/x93/x83/xae EGYPTIAN HIEROGLYPH E024 -+<U000130EF> /xf0/x93/x83/xaf EGYPTIAN HIEROGLYPH E025 -+<U000130F0> /xf0/x93/x83/xb0 EGYPTIAN HIEROGLYPH E026 -+<U000130F1> /xf0/x93/x83/xb1 EGYPTIAN HIEROGLYPH E027 -+<U000130F2> /xf0/x93/x83/xb2 EGYPTIAN HIEROGLYPH E028 -+<U000130F3> /xf0/x93/x83/xb3 EGYPTIAN HIEROGLYPH E028A -+<U000130F4> /xf0/x93/x83/xb4 EGYPTIAN HIEROGLYPH E029 -+<U000130F5> /xf0/x93/x83/xb5 EGYPTIAN HIEROGLYPH E030 -+<U000130F6> /xf0/x93/x83/xb6 EGYPTIAN HIEROGLYPH E031 -+<U000130F7> /xf0/x93/x83/xb7 EGYPTIAN HIEROGLYPH E032 -+<U000130F8> /xf0/x93/x83/xb8 EGYPTIAN HIEROGLYPH E033 -+<U000130F9> /xf0/x93/x83/xb9 EGYPTIAN HIEROGLYPH E034 -+<U000130FA> /xf0/x93/x83/xba EGYPTIAN HIEROGLYPH E034A -+<U000130FB> /xf0/x93/x83/xbb EGYPTIAN HIEROGLYPH E036 -+<U000130FC> /xf0/x93/x83/xbc EGYPTIAN HIEROGLYPH E037 -+<U000130FD> /xf0/x93/x83/xbd EGYPTIAN HIEROGLYPH E038 -+<U000130FE> /xf0/x93/x83/xbe EGYPTIAN HIEROGLYPH F001 -+<U000130FF> /xf0/x93/x83/xbf EGYPTIAN HIEROGLYPH F001A -+<U00013100> /xf0/x93/x84/x80 EGYPTIAN HIEROGLYPH F002 -+<U00013101> /xf0/x93/x84/x81 EGYPTIAN HIEROGLYPH F003 -+<U00013102> /xf0/x93/x84/x82 EGYPTIAN HIEROGLYPH F004 -+<U00013103> /xf0/x93/x84/x83 EGYPTIAN HIEROGLYPH F005 -+<U00013104> /xf0/x93/x84/x84 EGYPTIAN HIEROGLYPH F006 -+<U00013105> /xf0/x93/x84/x85 EGYPTIAN HIEROGLYPH F007 -+<U00013106> /xf0/x93/x84/x86 EGYPTIAN HIEROGLYPH F008 -+<U00013107> /xf0/x93/x84/x87 EGYPTIAN HIEROGLYPH F009 -+<U00013108> /xf0/x93/x84/x88 EGYPTIAN HIEROGLYPH F010 -+<U00013109> /xf0/x93/x84/x89 EGYPTIAN HIEROGLYPH F011 -+<U0001310A> /xf0/x93/x84/x8a EGYPTIAN HIEROGLYPH F012 -+<U0001310B> /xf0/x93/x84/x8b EGYPTIAN HIEROGLYPH F013 -+<U0001310C> /xf0/x93/x84/x8c EGYPTIAN HIEROGLYPH F013A -+<U0001310D> /xf0/x93/x84/x8d EGYPTIAN HIEROGLYPH F014 -+<U0001310E> /xf0/x93/x84/x8e EGYPTIAN HIEROGLYPH F015 -+<U0001310F> /xf0/x93/x84/x8f EGYPTIAN HIEROGLYPH F016 -+<U00013110> /xf0/x93/x84/x90 EGYPTIAN HIEROGLYPH F017 -+<U00013111> /xf0/x93/x84/x91 EGYPTIAN HIEROGLYPH F018 -+<U00013112> /xf0/x93/x84/x92 EGYPTIAN HIEROGLYPH F019 -+<U00013113> /xf0/x93/x84/x93 EGYPTIAN HIEROGLYPH F020 -+<U00013114> /xf0/x93/x84/x94 EGYPTIAN HIEROGLYPH F021 -+<U00013115> /xf0/x93/x84/x95 EGYPTIAN HIEROGLYPH F021A -+<U00013116> /xf0/x93/x84/x96 EGYPTIAN HIEROGLYPH F022 -+<U00013117> /xf0/x93/x84/x97 EGYPTIAN HIEROGLYPH F023 -+<U00013118> /xf0/x93/x84/x98 EGYPTIAN HIEROGLYPH F024 -+<U00013119> /xf0/x93/x84/x99 EGYPTIAN HIEROGLYPH F025 -+<U0001311A> /xf0/x93/x84/x9a EGYPTIAN HIEROGLYPH F026 -+<U0001311B> /xf0/x93/x84/x9b EGYPTIAN HIEROGLYPH F027 -+<U0001311C> /xf0/x93/x84/x9c EGYPTIAN HIEROGLYPH F028 -+<U0001311D> /xf0/x93/x84/x9d EGYPTIAN HIEROGLYPH F029 -+<U0001311E> /xf0/x93/x84/x9e EGYPTIAN HIEROGLYPH F030 -+<U0001311F> /xf0/x93/x84/x9f EGYPTIAN HIEROGLYPH F031 -+<U00013120> /xf0/x93/x84/xa0 EGYPTIAN HIEROGLYPH F031A -+<U00013121> /xf0/x93/x84/xa1 EGYPTIAN HIEROGLYPH F032 -+<U00013122> /xf0/x93/x84/xa2 EGYPTIAN HIEROGLYPH F033 -+<U00013123> /xf0/x93/x84/xa3 EGYPTIAN HIEROGLYPH F034 -+<U00013124> /xf0/x93/x84/xa4 EGYPTIAN HIEROGLYPH F035 -+<U00013125> /xf0/x93/x84/xa5 EGYPTIAN HIEROGLYPH F036 -+<U00013126> /xf0/x93/x84/xa6 EGYPTIAN HIEROGLYPH F037 -+<U00013127> /xf0/x93/x84/xa7 EGYPTIAN HIEROGLYPH F037A -+<U00013128> /xf0/x93/x84/xa8 EGYPTIAN HIEROGLYPH F038 -+<U00013129> /xf0/x93/x84/xa9 EGYPTIAN HIEROGLYPH F038A -+<U0001312A> /xf0/x93/x84/xaa EGYPTIAN HIEROGLYPH F039 -+<U0001312B> /xf0/x93/x84/xab EGYPTIAN HIEROGLYPH F040 -+<U0001312C> /xf0/x93/x84/xac EGYPTIAN HIEROGLYPH F041 -+<U0001312D> /xf0/x93/x84/xad EGYPTIAN HIEROGLYPH F042 -+<U0001312E> /xf0/x93/x84/xae EGYPTIAN HIEROGLYPH F043 -+<U0001312F> /xf0/x93/x84/xaf EGYPTIAN HIEROGLYPH F044 -+<U00013130> /xf0/x93/x84/xb0 EGYPTIAN HIEROGLYPH F045 -+<U00013131> /xf0/x93/x84/xb1 EGYPTIAN HIEROGLYPH F045A -+<U00013132> /xf0/x93/x84/xb2 EGYPTIAN HIEROGLYPH F046 -+<U00013133> /xf0/x93/x84/xb3 EGYPTIAN HIEROGLYPH F046A -+<U00013134> /xf0/x93/x84/xb4 EGYPTIAN HIEROGLYPH F047 -+<U00013135> /xf0/x93/x84/xb5 EGYPTIAN HIEROGLYPH F047A -+<U00013136> /xf0/x93/x84/xb6 EGYPTIAN HIEROGLYPH F048 -+<U00013137> /xf0/x93/x84/xb7 EGYPTIAN HIEROGLYPH F049 -+<U00013138> /xf0/x93/x84/xb8 EGYPTIAN HIEROGLYPH F050 -+<U00013139> /xf0/x93/x84/xb9 EGYPTIAN HIEROGLYPH F051 -+<U0001313A> /xf0/x93/x84/xba EGYPTIAN HIEROGLYPH F051A -+<U0001313B> /xf0/x93/x84/xbb EGYPTIAN HIEROGLYPH F051B -+<U0001313C> /xf0/x93/x84/xbc EGYPTIAN HIEROGLYPH F051C -+<U0001313D> /xf0/x93/x84/xbd EGYPTIAN HIEROGLYPH F052 -+<U0001313E> /xf0/x93/x84/xbe EGYPTIAN HIEROGLYPH F053 -+<U0001313F> /xf0/x93/x84/xbf EGYPTIAN HIEROGLYPH G001 -+<U00013140> /xf0/x93/x85/x80 EGYPTIAN HIEROGLYPH G002 -+<U00013141> /xf0/x93/x85/x81 EGYPTIAN HIEROGLYPH G003 -+<U00013142> /xf0/x93/x85/x82 EGYPTIAN HIEROGLYPH G004 -+<U00013143> /xf0/x93/x85/x83 EGYPTIAN HIEROGLYPH G005 -+<U00013144> /xf0/x93/x85/x84 EGYPTIAN HIEROGLYPH G006 -+<U00013145> /xf0/x93/x85/x85 EGYPTIAN HIEROGLYPH G006A -+<U00013146> /xf0/x93/x85/x86 EGYPTIAN HIEROGLYPH G007 -+<U00013147> /xf0/x93/x85/x87 EGYPTIAN HIEROGLYPH G007A -+<U00013148> /xf0/x93/x85/x88 EGYPTIAN HIEROGLYPH G007B -+<U00013149> /xf0/x93/x85/x89 EGYPTIAN HIEROGLYPH G008 -+<U0001314A> /xf0/x93/x85/x8a EGYPTIAN HIEROGLYPH G009 -+<U0001314B> /xf0/x93/x85/x8b EGYPTIAN HIEROGLYPH G010 -+<U0001314C> /xf0/x93/x85/x8c EGYPTIAN HIEROGLYPH G011 -+<U0001314D> /xf0/x93/x85/x8d EGYPTIAN HIEROGLYPH G011A -+<U0001314E> /xf0/x93/x85/x8e EGYPTIAN HIEROGLYPH G012 -+<U0001314F> /xf0/x93/x85/x8f EGYPTIAN HIEROGLYPH G013 -+<U00013150> /xf0/x93/x85/x90 EGYPTIAN HIEROGLYPH G014 -+<U00013151> /xf0/x93/x85/x91 EGYPTIAN HIEROGLYPH G015 -+<U00013152> /xf0/x93/x85/x92 EGYPTIAN HIEROGLYPH G016 -+<U00013153> /xf0/x93/x85/x93 EGYPTIAN HIEROGLYPH G017 -+<U00013154> /xf0/x93/x85/x94 EGYPTIAN HIEROGLYPH G018 -+<U00013155> /xf0/x93/x85/x95 EGYPTIAN HIEROGLYPH G019 -+<U00013156> /xf0/x93/x85/x96 EGYPTIAN HIEROGLYPH G020 -+<U00013157> /xf0/x93/x85/x97 EGYPTIAN HIEROGLYPH G020A -+<U00013158> /xf0/x93/x85/x98 EGYPTIAN HIEROGLYPH G021 -+<U00013159> /xf0/x93/x85/x99 EGYPTIAN HIEROGLYPH G022 -+<U0001315A> /xf0/x93/x85/x9a EGYPTIAN HIEROGLYPH G023 -+<U0001315B> /xf0/x93/x85/x9b EGYPTIAN HIEROGLYPH G024 -+<U0001315C> /xf0/x93/x85/x9c EGYPTIAN HIEROGLYPH G025 -+<U0001315D> /xf0/x93/x85/x9d EGYPTIAN HIEROGLYPH G026 -+<U0001315E> /xf0/x93/x85/x9e EGYPTIAN HIEROGLYPH G026A -+<U0001315F> /xf0/x93/x85/x9f EGYPTIAN HIEROGLYPH G027 -+<U00013160> /xf0/x93/x85/xa0 EGYPTIAN HIEROGLYPH G028 -+<U00013161> /xf0/x93/x85/xa1 EGYPTIAN HIEROGLYPH G029 -+<U00013162> /xf0/x93/x85/xa2 EGYPTIAN HIEROGLYPH G030 -+<U00013163> /xf0/x93/x85/xa3 EGYPTIAN HIEROGLYPH G031 -+<U00013164> /xf0/x93/x85/xa4 EGYPTIAN HIEROGLYPH G032 -+<U00013165> /xf0/x93/x85/xa5 EGYPTIAN HIEROGLYPH G033 -+<U00013166> /xf0/x93/x85/xa6 EGYPTIAN HIEROGLYPH G034 -+<U00013167> /xf0/x93/x85/xa7 EGYPTIAN HIEROGLYPH G035 -+<U00013168> /xf0/x93/x85/xa8 EGYPTIAN HIEROGLYPH G036 -+<U00013169> /xf0/x93/x85/xa9 EGYPTIAN HIEROGLYPH G036A -+<U0001316A> /xf0/x93/x85/xaa EGYPTIAN HIEROGLYPH G037 -+<U0001316B> /xf0/x93/x85/xab EGYPTIAN HIEROGLYPH G037A -+<U0001316C> /xf0/x93/x85/xac EGYPTIAN HIEROGLYPH G038 -+<U0001316D> /xf0/x93/x85/xad EGYPTIAN HIEROGLYPH G039 -+<U0001316E> /xf0/x93/x85/xae EGYPTIAN HIEROGLYPH G040 -+<U0001316F> /xf0/x93/x85/xaf EGYPTIAN HIEROGLYPH G041 -+<U00013170> /xf0/x93/x85/xb0 EGYPTIAN HIEROGLYPH G042 -+<U00013171> /xf0/x93/x85/xb1 EGYPTIAN HIEROGLYPH G043 -+<U00013172> /xf0/x93/x85/xb2 EGYPTIAN HIEROGLYPH G043A -+<U00013173> /xf0/x93/x85/xb3 EGYPTIAN HIEROGLYPH G044 -+<U00013174> /xf0/x93/x85/xb4 EGYPTIAN HIEROGLYPH G045 -+<U00013175> /xf0/x93/x85/xb5 EGYPTIAN HIEROGLYPH G045A -+<U00013176> /xf0/x93/x85/xb6 EGYPTIAN HIEROGLYPH G046 -+<U00013177> /xf0/x93/x85/xb7 EGYPTIAN HIEROGLYPH G047 -+<U00013178> /xf0/x93/x85/xb8 EGYPTIAN HIEROGLYPH G048 -+<U00013179> /xf0/x93/x85/xb9 EGYPTIAN HIEROGLYPH G049 -+<U0001317A> /xf0/x93/x85/xba EGYPTIAN HIEROGLYPH G050 -+<U0001317B> /xf0/x93/x85/xbb EGYPTIAN HIEROGLYPH G051 -+<U0001317C> /xf0/x93/x85/xbc EGYPTIAN HIEROGLYPH G052 -+<U0001317D> /xf0/x93/x85/xbd EGYPTIAN HIEROGLYPH G053 -+<U0001317E> /xf0/x93/x85/xbe EGYPTIAN HIEROGLYPH G054 -+<U0001317F> /xf0/x93/x85/xbf EGYPTIAN HIEROGLYPH H001 -+<U00013180> /xf0/x93/x86/x80 EGYPTIAN HIEROGLYPH H002 -+<U00013181> /xf0/x93/x86/x81 EGYPTIAN HIEROGLYPH H003 -+<U00013182> /xf0/x93/x86/x82 EGYPTIAN HIEROGLYPH H004 -+<U00013183> /xf0/x93/x86/x83 EGYPTIAN HIEROGLYPH H005 -+<U00013184> /xf0/x93/x86/x84 EGYPTIAN HIEROGLYPH H006 -+<U00013185> /xf0/x93/x86/x85 EGYPTIAN HIEROGLYPH H006A -+<U00013186> /xf0/x93/x86/x86 EGYPTIAN HIEROGLYPH H007 -+<U00013187> /xf0/x93/x86/x87 EGYPTIAN HIEROGLYPH H008 -+<U00013188> /xf0/x93/x86/x88 EGYPTIAN HIEROGLYPH I001 -+<U00013189> /xf0/x93/x86/x89 EGYPTIAN HIEROGLYPH I002 -+<U0001318A> /xf0/x93/x86/x8a EGYPTIAN HIEROGLYPH I003 -+<U0001318B> /xf0/x93/x86/x8b EGYPTIAN HIEROGLYPH I004 -+<U0001318C> /xf0/x93/x86/x8c EGYPTIAN HIEROGLYPH I005 -+<U0001318D> /xf0/x93/x86/x8d EGYPTIAN HIEROGLYPH I005A -+<U0001318E> /xf0/x93/x86/x8e EGYPTIAN HIEROGLYPH I006 -+<U0001318F> /xf0/x93/x86/x8f EGYPTIAN HIEROGLYPH I007 -+<U00013190> /xf0/x93/x86/x90 EGYPTIAN HIEROGLYPH I008 -+<U00013191> /xf0/x93/x86/x91 EGYPTIAN HIEROGLYPH I009 -+<U00013192> /xf0/x93/x86/x92 EGYPTIAN HIEROGLYPH I009A -+<U00013193> /xf0/x93/x86/x93 EGYPTIAN HIEROGLYPH I010 -+<U00013194> /xf0/x93/x86/x94 EGYPTIAN HIEROGLYPH I010A -+<U00013195> /xf0/x93/x86/x95 EGYPTIAN HIEROGLYPH I011 -+<U00013196> /xf0/x93/x86/x96 EGYPTIAN HIEROGLYPH I011A -+<U00013197> /xf0/x93/x86/x97 EGYPTIAN HIEROGLYPH I012 -+<U00013198> /xf0/x93/x86/x98 EGYPTIAN HIEROGLYPH I013 -+<U00013199> /xf0/x93/x86/x99 EGYPTIAN HIEROGLYPH I014 -+<U0001319A> /xf0/x93/x86/x9a EGYPTIAN HIEROGLYPH I015 -+<U0001319B> /xf0/x93/x86/x9b EGYPTIAN HIEROGLYPH K001 -+<U0001319C> /xf0/x93/x86/x9c EGYPTIAN HIEROGLYPH K002 -+<U0001319D> /xf0/x93/x86/x9d EGYPTIAN HIEROGLYPH K003 -+<U0001319E> /xf0/x93/x86/x9e EGYPTIAN HIEROGLYPH K004 -+<U0001319F> /xf0/x93/x86/x9f EGYPTIAN HIEROGLYPH K005 -+<U000131A0> /xf0/x93/x86/xa0 EGYPTIAN HIEROGLYPH K006 -+<U000131A1> /xf0/x93/x86/xa1 EGYPTIAN HIEROGLYPH K007 -+<U000131A2> /xf0/x93/x86/xa2 EGYPTIAN HIEROGLYPH K008 -+<U000131A3> /xf0/x93/x86/xa3 EGYPTIAN HIEROGLYPH L001 -+<U000131A4> /xf0/x93/x86/xa4 EGYPTIAN HIEROGLYPH L002 -+<U000131A5> /xf0/x93/x86/xa5 EGYPTIAN HIEROGLYPH L002A -+<U000131A6> /xf0/x93/x86/xa6 EGYPTIAN HIEROGLYPH L003 -+<U000131A7> /xf0/x93/x86/xa7 EGYPTIAN HIEROGLYPH L004 -+<U000131A8> /xf0/x93/x86/xa8 EGYPTIAN HIEROGLYPH L005 -+<U000131A9> /xf0/x93/x86/xa9 EGYPTIAN HIEROGLYPH L006 -+<U000131AA> /xf0/x93/x86/xaa EGYPTIAN HIEROGLYPH L006A -+<U000131AB> /xf0/x93/x86/xab EGYPTIAN HIEROGLYPH L007 -+<U000131AC> /xf0/x93/x86/xac EGYPTIAN HIEROGLYPH L008 -+<U000131AD> /xf0/x93/x86/xad EGYPTIAN HIEROGLYPH M001 -+<U000131AE> /xf0/x93/x86/xae EGYPTIAN HIEROGLYPH M001A -+<U000131AF> /xf0/x93/x86/xaf EGYPTIAN HIEROGLYPH M001B -+<U000131B0> /xf0/x93/x86/xb0 EGYPTIAN HIEROGLYPH M002 -+<U000131B1> /xf0/x93/x86/xb1 EGYPTIAN HIEROGLYPH M003 -+<U000131B2> /xf0/x93/x86/xb2 EGYPTIAN HIEROGLYPH M003A -+<U000131B3> /xf0/x93/x86/xb3 EGYPTIAN HIEROGLYPH M004 -+<U000131B4> /xf0/x93/x86/xb4 EGYPTIAN HIEROGLYPH M005 -+<U000131B5> /xf0/x93/x86/xb5 EGYPTIAN HIEROGLYPH M006 -+<U000131B6> /xf0/x93/x86/xb6 EGYPTIAN HIEROGLYPH M007 -+<U000131B7> /xf0/x93/x86/xb7 EGYPTIAN HIEROGLYPH M008 -+<U000131B8> /xf0/x93/x86/xb8 EGYPTIAN HIEROGLYPH M009 -+<U000131B9> /xf0/x93/x86/xb9 EGYPTIAN HIEROGLYPH M010 -+<U000131BA> /xf0/x93/x86/xba EGYPTIAN HIEROGLYPH M010A -+<U000131BB> /xf0/x93/x86/xbb EGYPTIAN HIEROGLYPH M011 -+<U000131BC> /xf0/x93/x86/xbc EGYPTIAN HIEROGLYPH M012 -+<U000131BD> /xf0/x93/x86/xbd EGYPTIAN HIEROGLYPH M012A -+<U000131BE> /xf0/x93/x86/xbe EGYPTIAN HIEROGLYPH M012B -+<U000131BF> /xf0/x93/x86/xbf EGYPTIAN HIEROGLYPH M012C -+<U000131C0> /xf0/x93/x87/x80 EGYPTIAN HIEROGLYPH M012D -+<U000131C1> /xf0/x93/x87/x81 EGYPTIAN HIEROGLYPH M012E -+<U000131C2> /xf0/x93/x87/x82 EGYPTIAN HIEROGLYPH M012F -+<U000131C3> /xf0/x93/x87/x83 EGYPTIAN HIEROGLYPH M012G -+<U000131C4> /xf0/x93/x87/x84 EGYPTIAN HIEROGLYPH M012H -+<U000131C5> /xf0/x93/x87/x85 EGYPTIAN HIEROGLYPH M013 -+<U000131C6> /xf0/x93/x87/x86 EGYPTIAN HIEROGLYPH M014 -+<U000131C7> /xf0/x93/x87/x87 EGYPTIAN HIEROGLYPH M015 -+<U000131C8> /xf0/x93/x87/x88 EGYPTIAN HIEROGLYPH M015A -+<U000131C9> /xf0/x93/x87/x89 EGYPTIAN HIEROGLYPH M016 -+<U000131CA> /xf0/x93/x87/x8a EGYPTIAN HIEROGLYPH M016A -+<U000131CB> /xf0/x93/x87/x8b EGYPTIAN HIEROGLYPH M017 -+<U000131CC> /xf0/x93/x87/x8c EGYPTIAN HIEROGLYPH M017A -+<U000131CD> /xf0/x93/x87/x8d EGYPTIAN HIEROGLYPH M018 -+<U000131CE> /xf0/x93/x87/x8e EGYPTIAN HIEROGLYPH M019 -+<U000131CF> /xf0/x93/x87/x8f EGYPTIAN HIEROGLYPH M020 -+<U000131D0> /xf0/x93/x87/x90 EGYPTIAN HIEROGLYPH M021 -+<U000131D1> /xf0/x93/x87/x91 EGYPTIAN HIEROGLYPH M022 -+<U000131D2> /xf0/x93/x87/x92 EGYPTIAN HIEROGLYPH M022A -+<U000131D3> /xf0/x93/x87/x93 EGYPTIAN HIEROGLYPH M023 -+<U000131D4> /xf0/x93/x87/x94 EGYPTIAN HIEROGLYPH M024 -+<U000131D5> /xf0/x93/x87/x95 EGYPTIAN HIEROGLYPH M024A -+<U000131D6> /xf0/x93/x87/x96 EGYPTIAN HIEROGLYPH M025 -+<U000131D7> /xf0/x93/x87/x97 EGYPTIAN HIEROGLYPH M026 -+<U000131D8> /xf0/x93/x87/x98 EGYPTIAN HIEROGLYPH M027 -+<U000131D9> /xf0/x93/x87/x99 EGYPTIAN HIEROGLYPH M028 -+<U000131DA> /xf0/x93/x87/x9a EGYPTIAN HIEROGLYPH M028A -+<U000131DB> /xf0/x93/x87/x9b EGYPTIAN HIEROGLYPH M029 -+<U000131DC> /xf0/x93/x87/x9c EGYPTIAN HIEROGLYPH M030 -+<U000131DD> /xf0/x93/x87/x9d EGYPTIAN HIEROGLYPH M031 -+<U000131DE> /xf0/x93/x87/x9e EGYPTIAN HIEROGLYPH M031A -+<U000131DF> /xf0/x93/x87/x9f EGYPTIAN HIEROGLYPH M032 -+<U000131E0> /xf0/x93/x87/xa0 EGYPTIAN HIEROGLYPH M033 -+<U000131E1> /xf0/x93/x87/xa1 EGYPTIAN HIEROGLYPH M033A -+<U000131E2> /xf0/x93/x87/xa2 EGYPTIAN HIEROGLYPH M033B -+<U000131E3> /xf0/x93/x87/xa3 EGYPTIAN HIEROGLYPH M034 -+<U000131E4> /xf0/x93/x87/xa4 EGYPTIAN HIEROGLYPH M035 -+<U000131E5> /xf0/x93/x87/xa5 EGYPTIAN HIEROGLYPH M036 -+<U000131E6> /xf0/x93/x87/xa6 EGYPTIAN HIEROGLYPH M037 -+<U000131E7> /xf0/x93/x87/xa7 EGYPTIAN HIEROGLYPH M038 -+<U000131E8> /xf0/x93/x87/xa8 EGYPTIAN HIEROGLYPH M039 -+<U000131E9> /xf0/x93/x87/xa9 EGYPTIAN HIEROGLYPH M040 -+<U000131EA> /xf0/x93/x87/xaa EGYPTIAN HIEROGLYPH M040A -+<U000131EB> /xf0/x93/x87/xab EGYPTIAN HIEROGLYPH M041 -+<U000131EC> /xf0/x93/x87/xac EGYPTIAN HIEROGLYPH M042 -+<U000131ED> /xf0/x93/x87/xad EGYPTIAN HIEROGLYPH M043 -+<U000131EE> /xf0/x93/x87/xae EGYPTIAN HIEROGLYPH M044 -+<U000131EF> /xf0/x93/x87/xaf EGYPTIAN HIEROGLYPH N001 -+<U000131F0> /xf0/x93/x87/xb0 EGYPTIAN HIEROGLYPH N002 -+<U000131F1> /xf0/x93/x87/xb1 EGYPTIAN HIEROGLYPH N003 -+<U000131F2> /xf0/x93/x87/xb2 EGYPTIAN HIEROGLYPH N004 -+<U000131F3> /xf0/x93/x87/xb3 EGYPTIAN HIEROGLYPH N005 -+<U000131F4> /xf0/x93/x87/xb4 EGYPTIAN HIEROGLYPH N006 -+<U000131F5> /xf0/x93/x87/xb5 EGYPTIAN HIEROGLYPH N007 -+<U000131F6> /xf0/x93/x87/xb6 EGYPTIAN HIEROGLYPH N008 -+<U000131F7> /xf0/x93/x87/xb7 EGYPTIAN HIEROGLYPH N009 -+<U000131F8> /xf0/x93/x87/xb8 EGYPTIAN HIEROGLYPH N010 -+<U000131F9> /xf0/x93/x87/xb9 EGYPTIAN HIEROGLYPH N011 -+<U000131FA> /xf0/x93/x87/xba EGYPTIAN HIEROGLYPH N012 -+<U000131FB> /xf0/x93/x87/xbb EGYPTIAN HIEROGLYPH N013 -+<U000131FC> /xf0/x93/x87/xbc EGYPTIAN HIEROGLYPH N014 -+<U000131FD> /xf0/x93/x87/xbd EGYPTIAN HIEROGLYPH N015 -+<U000131FE> /xf0/x93/x87/xbe EGYPTIAN HIEROGLYPH N016 -+<U000131FF> /xf0/x93/x87/xbf EGYPTIAN HIEROGLYPH N017 -+<U00013200> /xf0/x93/x88/x80 EGYPTIAN HIEROGLYPH N018 -+<U00013201> /xf0/x93/x88/x81 EGYPTIAN HIEROGLYPH N018A -+<U00013202> /xf0/x93/x88/x82 EGYPTIAN HIEROGLYPH N018B -+<U00013203> /xf0/x93/x88/x83 EGYPTIAN HIEROGLYPH N019 -+<U00013204> /xf0/x93/x88/x84 EGYPTIAN HIEROGLYPH N020 -+<U00013205> /xf0/x93/x88/x85 EGYPTIAN HIEROGLYPH N021 -+<U00013206> /xf0/x93/x88/x86 EGYPTIAN HIEROGLYPH N022 -+<U00013207> /xf0/x93/x88/x87 EGYPTIAN HIEROGLYPH N023 -+<U00013208> /xf0/x93/x88/x88 EGYPTIAN HIEROGLYPH N024 -+<U00013209> /xf0/x93/x88/x89 EGYPTIAN HIEROGLYPH N025 -+<U0001320A> /xf0/x93/x88/x8a EGYPTIAN HIEROGLYPH N025A -+<U0001320B> /xf0/x93/x88/x8b EGYPTIAN HIEROGLYPH N026 -+<U0001320C> /xf0/x93/x88/x8c EGYPTIAN HIEROGLYPH N027 -+<U0001320D> /xf0/x93/x88/x8d EGYPTIAN HIEROGLYPH N028 -+<U0001320E> /xf0/x93/x88/x8e EGYPTIAN HIEROGLYPH N029 -+<U0001320F> /xf0/x93/x88/x8f EGYPTIAN HIEROGLYPH N030 -+<U00013210> /xf0/x93/x88/x90 EGYPTIAN HIEROGLYPH N031 -+<U00013211> /xf0/x93/x88/x91 EGYPTIAN HIEROGLYPH N032 -+<U00013212> /xf0/x93/x88/x92 EGYPTIAN HIEROGLYPH N033 -+<U00013213> /xf0/x93/x88/x93 EGYPTIAN HIEROGLYPH N033A -+<U00013214> /xf0/x93/x88/x94 EGYPTIAN HIEROGLYPH N034 -+<U00013215> /xf0/x93/x88/x95 EGYPTIAN HIEROGLYPH N034A -+<U00013216> /xf0/x93/x88/x96 EGYPTIAN HIEROGLYPH N035 -+<U00013217> /xf0/x93/x88/x97 EGYPTIAN HIEROGLYPH N035A -+<U00013218> /xf0/x93/x88/x98 EGYPTIAN HIEROGLYPH N036 -+<U00013219> /xf0/x93/x88/x99 EGYPTIAN HIEROGLYPH N037 -+<U0001321A> /xf0/x93/x88/x9a EGYPTIAN HIEROGLYPH N037A -+<U0001321B> /xf0/x93/x88/x9b EGYPTIAN HIEROGLYPH N038 -+<U0001321C> /xf0/x93/x88/x9c EGYPTIAN HIEROGLYPH N039 -+<U0001321D> /xf0/x93/x88/x9d EGYPTIAN HIEROGLYPH N040 -+<U0001321E> /xf0/x93/x88/x9e EGYPTIAN HIEROGLYPH N041 -+<U0001321F> /xf0/x93/x88/x9f EGYPTIAN HIEROGLYPH N042 -+<U00013220> /xf0/x93/x88/xa0 EGYPTIAN HIEROGLYPH NL001 -+<U00013221> /xf0/x93/x88/xa1 EGYPTIAN HIEROGLYPH NL002 -+<U00013222> /xf0/x93/x88/xa2 EGYPTIAN HIEROGLYPH NL003 -+<U00013223> /xf0/x93/x88/xa3 EGYPTIAN HIEROGLYPH NL004 -+<U00013224> /xf0/x93/x88/xa4 EGYPTIAN HIEROGLYPH NL005 -+<U00013225> /xf0/x93/x88/xa5 EGYPTIAN HIEROGLYPH NL005A -+<U00013226> /xf0/x93/x88/xa6 EGYPTIAN HIEROGLYPH NL006 -+<U00013227> /xf0/x93/x88/xa7 EGYPTIAN HIEROGLYPH NL007 -+<U00013228> /xf0/x93/x88/xa8 EGYPTIAN HIEROGLYPH NL008 -+<U00013229> /xf0/x93/x88/xa9 EGYPTIAN HIEROGLYPH NL009 -+<U0001322A> /xf0/x93/x88/xaa EGYPTIAN HIEROGLYPH NL010 -+<U0001322B> /xf0/x93/x88/xab EGYPTIAN HIEROGLYPH NL011 -+<U0001322C> /xf0/x93/x88/xac EGYPTIAN HIEROGLYPH NL012 -+<U0001322D> /xf0/x93/x88/xad EGYPTIAN HIEROGLYPH NL013 -+<U0001322E> /xf0/x93/x88/xae EGYPTIAN HIEROGLYPH NL014 -+<U0001322F> /xf0/x93/x88/xaf EGYPTIAN HIEROGLYPH NL015 -+<U00013230> /xf0/x93/x88/xb0 EGYPTIAN HIEROGLYPH NL016 -+<U00013231> /xf0/x93/x88/xb1 EGYPTIAN HIEROGLYPH NL017 -+<U00013232> /xf0/x93/x88/xb2 EGYPTIAN HIEROGLYPH NL017A -+<U00013233> /xf0/x93/x88/xb3 EGYPTIAN HIEROGLYPH NL018 -+<U00013234> /xf0/x93/x88/xb4 EGYPTIAN HIEROGLYPH NL019 -+<U00013235> /xf0/x93/x88/xb5 EGYPTIAN HIEROGLYPH NL020 -+<U00013236> /xf0/x93/x88/xb6 EGYPTIAN HIEROGLYPH NU001 -+<U00013237> /xf0/x93/x88/xb7 EGYPTIAN HIEROGLYPH NU002 -+<U00013238> /xf0/x93/x88/xb8 EGYPTIAN HIEROGLYPH NU003 -+<U00013239> /xf0/x93/x88/xb9 EGYPTIAN HIEROGLYPH NU004 -+<U0001323A> /xf0/x93/x88/xba EGYPTIAN HIEROGLYPH NU005 -+<U0001323B> /xf0/x93/x88/xbb EGYPTIAN HIEROGLYPH NU006 -+<U0001323C> /xf0/x93/x88/xbc EGYPTIAN HIEROGLYPH NU007 -+<U0001323D> /xf0/x93/x88/xbd EGYPTIAN HIEROGLYPH NU008 -+<U0001323E> /xf0/x93/x88/xbe EGYPTIAN HIEROGLYPH NU009 -+<U0001323F> /xf0/x93/x88/xbf EGYPTIAN HIEROGLYPH NU010 -+<U00013240> /xf0/x93/x89/x80 EGYPTIAN HIEROGLYPH NU010A -+<U00013241> /xf0/x93/x89/x81 EGYPTIAN HIEROGLYPH NU011 -+<U00013242> /xf0/x93/x89/x82 EGYPTIAN HIEROGLYPH NU011A -+<U00013243> /xf0/x93/x89/x83 EGYPTIAN HIEROGLYPH NU012 -+<U00013244> /xf0/x93/x89/x84 EGYPTIAN HIEROGLYPH NU013 -+<U00013245> /xf0/x93/x89/x85 EGYPTIAN HIEROGLYPH NU014 -+<U00013246> /xf0/x93/x89/x86 EGYPTIAN HIEROGLYPH NU015 -+<U00013247> /xf0/x93/x89/x87 EGYPTIAN HIEROGLYPH NU016 -+<U00013248> /xf0/x93/x89/x88 EGYPTIAN HIEROGLYPH NU017 -+<U00013249> /xf0/x93/x89/x89 EGYPTIAN HIEROGLYPH NU018 -+<U0001324A> /xf0/x93/x89/x8a EGYPTIAN HIEROGLYPH NU018A -+<U0001324B> /xf0/x93/x89/x8b EGYPTIAN HIEROGLYPH NU019 -+<U0001324C> /xf0/x93/x89/x8c EGYPTIAN HIEROGLYPH NU020 -+<U0001324D> /xf0/x93/x89/x8d EGYPTIAN HIEROGLYPH NU021 -+<U0001324E> /xf0/x93/x89/x8e EGYPTIAN HIEROGLYPH NU022 -+<U0001324F> /xf0/x93/x89/x8f EGYPTIAN HIEROGLYPH NU022A -+<U00013250> /xf0/x93/x89/x90 EGYPTIAN HIEROGLYPH O001 -+<U00013251> /xf0/x93/x89/x91 EGYPTIAN HIEROGLYPH O001A -+<U00013252> /xf0/x93/x89/x92 EGYPTIAN HIEROGLYPH O002 -+<U00013253> /xf0/x93/x89/x93 EGYPTIAN HIEROGLYPH O003 -+<U00013254> /xf0/x93/x89/x94 EGYPTIAN HIEROGLYPH O004 -+<U00013255> /xf0/x93/x89/x95 EGYPTIAN HIEROGLYPH O005 -+<U00013256> /xf0/x93/x89/x96 EGYPTIAN HIEROGLYPH O005A -+<U00013257> /xf0/x93/x89/x97 EGYPTIAN HIEROGLYPH O006 -+<U00013258> /xf0/x93/x89/x98 EGYPTIAN HIEROGLYPH O006A -+<U00013259> /xf0/x93/x89/x99 EGYPTIAN HIEROGLYPH O006B -+<U0001325A> /xf0/x93/x89/x9a EGYPTIAN HIEROGLYPH O006C -+<U0001325B> /xf0/x93/x89/x9b EGYPTIAN HIEROGLYPH O006D -+<U0001325C> /xf0/x93/x89/x9c EGYPTIAN HIEROGLYPH O006E -+<U0001325D> /xf0/x93/x89/x9d EGYPTIAN HIEROGLYPH O006F -+<U0001325E> /xf0/x93/x89/x9e EGYPTIAN HIEROGLYPH O007 -+<U0001325F> /xf0/x93/x89/x9f EGYPTIAN HIEROGLYPH O008 -+<U00013260> /xf0/x93/x89/xa0 EGYPTIAN HIEROGLYPH O009 -+<U00013261> /xf0/x93/x89/xa1 EGYPTIAN HIEROGLYPH O010 -+<U00013262> /xf0/x93/x89/xa2 EGYPTIAN HIEROGLYPH O010A -+<U00013263> /xf0/x93/x89/xa3 EGYPTIAN HIEROGLYPH O010B -+<U00013264> /xf0/x93/x89/xa4 EGYPTIAN HIEROGLYPH O010C -+<U00013265> /xf0/x93/x89/xa5 EGYPTIAN HIEROGLYPH O011 -+<U00013266> /xf0/x93/x89/xa6 EGYPTIAN HIEROGLYPH O012 -+<U00013267> /xf0/x93/x89/xa7 EGYPTIAN HIEROGLYPH O013 -+<U00013268> /xf0/x93/x89/xa8 EGYPTIAN HIEROGLYPH O014 -+<U00013269> /xf0/x93/x89/xa9 EGYPTIAN HIEROGLYPH O015 -+<U0001326A> /xf0/x93/x89/xaa EGYPTIAN HIEROGLYPH O016 -+<U0001326B> /xf0/x93/x89/xab EGYPTIAN HIEROGLYPH O017 -+<U0001326C> /xf0/x93/x89/xac EGYPTIAN HIEROGLYPH O018 -+<U0001326D> /xf0/x93/x89/xad EGYPTIAN HIEROGLYPH O019 -+<U0001326E> /xf0/x93/x89/xae EGYPTIAN HIEROGLYPH O019A -+<U0001326F> /xf0/x93/x89/xaf EGYPTIAN HIEROGLYPH O020 -+<U00013270> /xf0/x93/x89/xb0 EGYPTIAN HIEROGLYPH O020A -+<U00013271> /xf0/x93/x89/xb1 EGYPTIAN HIEROGLYPH O021 -+<U00013272> /xf0/x93/x89/xb2 EGYPTIAN HIEROGLYPH O022 -+<U00013273> /xf0/x93/x89/xb3 EGYPTIAN HIEROGLYPH O023 -+<U00013274> /xf0/x93/x89/xb4 EGYPTIAN HIEROGLYPH O024 -+<U00013275> /xf0/x93/x89/xb5 EGYPTIAN HIEROGLYPH O024A -+<U00013276> /xf0/x93/x89/xb6 EGYPTIAN HIEROGLYPH O025 -+<U00013277> /xf0/x93/x89/xb7 EGYPTIAN HIEROGLYPH O025A -+<U00013278> /xf0/x93/x89/xb8 EGYPTIAN HIEROGLYPH O026 -+<U00013279> /xf0/x93/x89/xb9 EGYPTIAN HIEROGLYPH O027 -+<U0001327A> /xf0/x93/x89/xba EGYPTIAN HIEROGLYPH O028 -+<U0001327B> /xf0/x93/x89/xbb EGYPTIAN HIEROGLYPH O029 -+<U0001327C> /xf0/x93/x89/xbc EGYPTIAN HIEROGLYPH O029A -+<U0001327D> /xf0/x93/x89/xbd EGYPTIAN HIEROGLYPH O030 -+<U0001327E> /xf0/x93/x89/xbe EGYPTIAN HIEROGLYPH O030A -+<U0001327F> /xf0/x93/x89/xbf EGYPTIAN HIEROGLYPH O031 -+<U00013280> /xf0/x93/x8a/x80 EGYPTIAN HIEROGLYPH O032 -+<U00013281> /xf0/x93/x8a/x81 EGYPTIAN HIEROGLYPH O033 -+<U00013282> /xf0/x93/x8a/x82 EGYPTIAN HIEROGLYPH O033A -+<U00013283> /xf0/x93/x8a/x83 EGYPTIAN HIEROGLYPH O034 -+<U00013284> /xf0/x93/x8a/x84 EGYPTIAN HIEROGLYPH O035 -+<U00013285> /xf0/x93/x8a/x85 EGYPTIAN HIEROGLYPH O036 -+<U00013286> /xf0/x93/x8a/x86 EGYPTIAN HIEROGLYPH O036A -+<U00013287> /xf0/x93/x8a/x87 EGYPTIAN HIEROGLYPH O036B -+<U00013288> /xf0/x93/x8a/x88 EGYPTIAN HIEROGLYPH O036C -+<U00013289> /xf0/x93/x8a/x89 EGYPTIAN HIEROGLYPH O036D -+<U0001328A> /xf0/x93/x8a/x8a EGYPTIAN HIEROGLYPH O037 -+<U0001328B> /xf0/x93/x8a/x8b EGYPTIAN HIEROGLYPH O038 -+<U0001328C> /xf0/x93/x8a/x8c EGYPTIAN HIEROGLYPH O039 -+<U0001328D> /xf0/x93/x8a/x8d EGYPTIAN HIEROGLYPH O040 -+<U0001328E> /xf0/x93/x8a/x8e EGYPTIAN HIEROGLYPH O041 -+<U0001328F> /xf0/x93/x8a/x8f EGYPTIAN HIEROGLYPH O042 -+<U00013290> /xf0/x93/x8a/x90 EGYPTIAN HIEROGLYPH O043 -+<U00013291> /xf0/x93/x8a/x91 EGYPTIAN HIEROGLYPH O044 -+<U00013292> /xf0/x93/x8a/x92 EGYPTIAN HIEROGLYPH O045 -+<U00013293> /xf0/x93/x8a/x93 EGYPTIAN HIEROGLYPH O046 -+<U00013294> /xf0/x93/x8a/x94 EGYPTIAN HIEROGLYPH O047 -+<U00013295> /xf0/x93/x8a/x95 EGYPTIAN HIEROGLYPH O048 -+<U00013296> /xf0/x93/x8a/x96 EGYPTIAN HIEROGLYPH O049 -+<U00013297> /xf0/x93/x8a/x97 EGYPTIAN HIEROGLYPH O050 -+<U00013298> /xf0/x93/x8a/x98 EGYPTIAN HIEROGLYPH O050A -+<U00013299> /xf0/x93/x8a/x99 EGYPTIAN HIEROGLYPH O050B -+<U0001329A> /xf0/x93/x8a/x9a EGYPTIAN HIEROGLYPH O051 -+<U0001329B> /xf0/x93/x8a/x9b EGYPTIAN HIEROGLYPH P001 -+<U0001329C> /xf0/x93/x8a/x9c EGYPTIAN HIEROGLYPH P001A -+<U0001329D> /xf0/x93/x8a/x9d EGYPTIAN HIEROGLYPH P002 -+<U0001329E> /xf0/x93/x8a/x9e EGYPTIAN HIEROGLYPH P003 -+<U0001329F> /xf0/x93/x8a/x9f EGYPTIAN HIEROGLYPH P003A -+<U000132A0> /xf0/x93/x8a/xa0 EGYPTIAN HIEROGLYPH P004 -+<U000132A1> /xf0/x93/x8a/xa1 EGYPTIAN HIEROGLYPH P005 -+<U000132A2> /xf0/x93/x8a/xa2 EGYPTIAN HIEROGLYPH P006 -+<U000132A3> /xf0/x93/x8a/xa3 EGYPTIAN HIEROGLYPH P007 -+<U000132A4> /xf0/x93/x8a/xa4 EGYPTIAN HIEROGLYPH P008 -+<U000132A5> /xf0/x93/x8a/xa5 EGYPTIAN HIEROGLYPH P009 -+<U000132A6> /xf0/x93/x8a/xa6 EGYPTIAN HIEROGLYPH P010 -+<U000132A7> /xf0/x93/x8a/xa7 EGYPTIAN HIEROGLYPH P011 -+<U000132A8> /xf0/x93/x8a/xa8 EGYPTIAN HIEROGLYPH Q001 -+<U000132A9> /xf0/x93/x8a/xa9 EGYPTIAN HIEROGLYPH Q002 -+<U000132AA> /xf0/x93/x8a/xaa EGYPTIAN HIEROGLYPH Q003 -+<U000132AB> /xf0/x93/x8a/xab EGYPTIAN HIEROGLYPH Q004 -+<U000132AC> /xf0/x93/x8a/xac EGYPTIAN HIEROGLYPH Q005 -+<U000132AD> /xf0/x93/x8a/xad EGYPTIAN HIEROGLYPH Q006 -+<U000132AE> /xf0/x93/x8a/xae EGYPTIAN HIEROGLYPH Q007 -+<U000132AF> /xf0/x93/x8a/xaf EGYPTIAN HIEROGLYPH R001 -+<U000132B0> /xf0/x93/x8a/xb0 EGYPTIAN HIEROGLYPH R002 -+<U000132B1> /xf0/x93/x8a/xb1 EGYPTIAN HIEROGLYPH R002A -+<U000132B2> /xf0/x93/x8a/xb2 EGYPTIAN HIEROGLYPH R003 -+<U000132B3> /xf0/x93/x8a/xb3 EGYPTIAN HIEROGLYPH R003A -+<U000132B4> /xf0/x93/x8a/xb4 EGYPTIAN HIEROGLYPH R003B -+<U000132B5> /xf0/x93/x8a/xb5 EGYPTIAN HIEROGLYPH R004 -+<U000132B6> /xf0/x93/x8a/xb6 EGYPTIAN HIEROGLYPH R005 -+<U000132B7> /xf0/x93/x8a/xb7 EGYPTIAN HIEROGLYPH R006 -+<U000132B8> /xf0/x93/x8a/xb8 EGYPTIAN HIEROGLYPH R007 -+<U000132B9> /xf0/x93/x8a/xb9 EGYPTIAN HIEROGLYPH R008 -+<U000132BA> /xf0/x93/x8a/xba EGYPTIAN HIEROGLYPH R009 -+<U000132BB> /xf0/x93/x8a/xbb EGYPTIAN HIEROGLYPH R010 -+<U000132BC> /xf0/x93/x8a/xbc EGYPTIAN HIEROGLYPH R010A -+<U000132BD> /xf0/x93/x8a/xbd EGYPTIAN HIEROGLYPH R011 -+<U000132BE> /xf0/x93/x8a/xbe EGYPTIAN HIEROGLYPH R012 -+<U000132BF> /xf0/x93/x8a/xbf EGYPTIAN HIEROGLYPH R013 -+<U000132C0> /xf0/x93/x8b/x80 EGYPTIAN HIEROGLYPH R014 -+<U000132C1> /xf0/x93/x8b/x81 EGYPTIAN HIEROGLYPH R015 -+<U000132C2> /xf0/x93/x8b/x82 EGYPTIAN HIEROGLYPH R016 -+<U000132C3> /xf0/x93/x8b/x83 EGYPTIAN HIEROGLYPH R016A -+<U000132C4> /xf0/x93/x8b/x84 EGYPTIAN HIEROGLYPH R017 -+<U000132C5> /xf0/x93/x8b/x85 EGYPTIAN HIEROGLYPH R018 -+<U000132C6> /xf0/x93/x8b/x86 EGYPTIAN HIEROGLYPH R019 -+<U000132C7> /xf0/x93/x8b/x87 EGYPTIAN HIEROGLYPH R020 -+<U000132C8> /xf0/x93/x8b/x88 EGYPTIAN HIEROGLYPH R021 -+<U000132C9> /xf0/x93/x8b/x89 EGYPTIAN HIEROGLYPH R022 -+<U000132CA> /xf0/x93/x8b/x8a EGYPTIAN HIEROGLYPH R023 -+<U000132CB> /xf0/x93/x8b/x8b EGYPTIAN HIEROGLYPH R024 -+<U000132CC> /xf0/x93/x8b/x8c EGYPTIAN HIEROGLYPH R025 -+<U000132CD> /xf0/x93/x8b/x8d EGYPTIAN HIEROGLYPH R026 -+<U000132CE> /xf0/x93/x8b/x8e EGYPTIAN HIEROGLYPH R027 -+<U000132CF> /xf0/x93/x8b/x8f EGYPTIAN HIEROGLYPH R028 -+<U000132D0> /xf0/x93/x8b/x90 EGYPTIAN HIEROGLYPH R029 -+<U000132D1> /xf0/x93/x8b/x91 EGYPTIAN HIEROGLYPH S001 -+<U000132D2> /xf0/x93/x8b/x92 EGYPTIAN HIEROGLYPH S002 -+<U000132D3> /xf0/x93/x8b/x93 EGYPTIAN HIEROGLYPH S002A -+<U000132D4> /xf0/x93/x8b/x94 EGYPTIAN HIEROGLYPH S003 -+<U000132D5> /xf0/x93/x8b/x95 EGYPTIAN HIEROGLYPH S004 -+<U000132D6> /xf0/x93/x8b/x96 EGYPTIAN HIEROGLYPH S005 -+<U000132D7> /xf0/x93/x8b/x97 EGYPTIAN HIEROGLYPH S006 -+<U000132D8> /xf0/x93/x8b/x98 EGYPTIAN HIEROGLYPH S006A -+<U000132D9> /xf0/x93/x8b/x99 EGYPTIAN HIEROGLYPH S007 -+<U000132DA> /xf0/x93/x8b/x9a EGYPTIAN HIEROGLYPH S008 -+<U000132DB> /xf0/x93/x8b/x9b EGYPTIAN HIEROGLYPH S009 -+<U000132DC> /xf0/x93/x8b/x9c EGYPTIAN HIEROGLYPH S010 -+<U000132DD> /xf0/x93/x8b/x9d EGYPTIAN HIEROGLYPH S011 -+<U000132DE> /xf0/x93/x8b/x9e EGYPTIAN HIEROGLYPH S012 -+<U000132DF> /xf0/x93/x8b/x9f EGYPTIAN HIEROGLYPH S013 -+<U000132E0> /xf0/x93/x8b/xa0 EGYPTIAN HIEROGLYPH S014 -+<U000132E1> /xf0/x93/x8b/xa1 EGYPTIAN HIEROGLYPH S014A -+<U000132E2> /xf0/x93/x8b/xa2 EGYPTIAN HIEROGLYPH S014B -+<U000132E3> /xf0/x93/x8b/xa3 EGYPTIAN HIEROGLYPH S015 -+<U000132E4> /xf0/x93/x8b/xa4 EGYPTIAN HIEROGLYPH S016 -+<U000132E5> /xf0/x93/x8b/xa5 EGYPTIAN HIEROGLYPH S017 -+<U000132E6> /xf0/x93/x8b/xa6 EGYPTIAN HIEROGLYPH S017A -+<U000132E7> /xf0/x93/x8b/xa7 EGYPTIAN HIEROGLYPH S018 -+<U000132E8> /xf0/x93/x8b/xa8 EGYPTIAN HIEROGLYPH S019 -+<U000132E9> /xf0/x93/x8b/xa9 EGYPTIAN HIEROGLYPH S020 -+<U000132EA> /xf0/x93/x8b/xaa EGYPTIAN HIEROGLYPH S021 -+<U000132EB> /xf0/x93/x8b/xab EGYPTIAN HIEROGLYPH S022 -+<U000132EC> /xf0/x93/x8b/xac EGYPTIAN HIEROGLYPH S023 -+<U000132ED> /xf0/x93/x8b/xad EGYPTIAN HIEROGLYPH S024 -+<U000132EE> /xf0/x93/x8b/xae EGYPTIAN HIEROGLYPH S025 -+<U000132EF> /xf0/x93/x8b/xaf EGYPTIAN HIEROGLYPH S026 -+<U000132F0> /xf0/x93/x8b/xb0 EGYPTIAN HIEROGLYPH S026A -+<U000132F1> /xf0/x93/x8b/xb1 EGYPTIAN HIEROGLYPH S026B -+<U000132F2> /xf0/x93/x8b/xb2 EGYPTIAN HIEROGLYPH S027 -+<U000132F3> /xf0/x93/x8b/xb3 EGYPTIAN HIEROGLYPH S028 -+<U000132F4> /xf0/x93/x8b/xb4 EGYPTIAN HIEROGLYPH S029 -+<U000132F5> /xf0/x93/x8b/xb5 EGYPTIAN HIEROGLYPH S030 -+<U000132F6> /xf0/x93/x8b/xb6 EGYPTIAN HIEROGLYPH S031 -+<U000132F7> /xf0/x93/x8b/xb7 EGYPTIAN HIEROGLYPH S032 -+<U000132F8> /xf0/x93/x8b/xb8 EGYPTIAN HIEROGLYPH S033 -+<U000132F9> /xf0/x93/x8b/xb9 EGYPTIAN HIEROGLYPH S034 -+<U000132FA> /xf0/x93/x8b/xba EGYPTIAN HIEROGLYPH S035 -+<U000132FB> /xf0/x93/x8b/xbb EGYPTIAN HIEROGLYPH S035A -+<U000132FC> /xf0/x93/x8b/xbc EGYPTIAN HIEROGLYPH S036 -+<U000132FD> /xf0/x93/x8b/xbd EGYPTIAN HIEROGLYPH S037 -+<U000132FE> /xf0/x93/x8b/xbe EGYPTIAN HIEROGLYPH S038 -+<U000132FF> /xf0/x93/x8b/xbf EGYPTIAN HIEROGLYPH S039 -+<U00013300> /xf0/x93/x8c/x80 EGYPTIAN HIEROGLYPH S040 -+<U00013301> /xf0/x93/x8c/x81 EGYPTIAN HIEROGLYPH S041 -+<U00013302> /xf0/x93/x8c/x82 EGYPTIAN HIEROGLYPH S042 -+<U00013303> /xf0/x93/x8c/x83 EGYPTIAN HIEROGLYPH S043 -+<U00013304> /xf0/x93/x8c/x84 EGYPTIAN HIEROGLYPH S044 -+<U00013305> /xf0/x93/x8c/x85 EGYPTIAN HIEROGLYPH S045 -+<U00013306> /xf0/x93/x8c/x86 EGYPTIAN HIEROGLYPH S046 -+<U00013307> /xf0/x93/x8c/x87 EGYPTIAN HIEROGLYPH T001 -+<U00013308> /xf0/x93/x8c/x88 EGYPTIAN HIEROGLYPH T002 -+<U00013309> /xf0/x93/x8c/x89 EGYPTIAN HIEROGLYPH T003 -+<U0001330A> /xf0/x93/x8c/x8a EGYPTIAN HIEROGLYPH T003A -+<U0001330B> /xf0/x93/x8c/x8b EGYPTIAN HIEROGLYPH T004 -+<U0001330C> /xf0/x93/x8c/x8c EGYPTIAN HIEROGLYPH T005 -+<U0001330D> /xf0/x93/x8c/x8d EGYPTIAN HIEROGLYPH T006 -+<U0001330E> /xf0/x93/x8c/x8e EGYPTIAN HIEROGLYPH T007 -+<U0001330F> /xf0/x93/x8c/x8f EGYPTIAN HIEROGLYPH T007A -+<U00013310> /xf0/x93/x8c/x90 EGYPTIAN HIEROGLYPH T008 -+<U00013311> /xf0/x93/x8c/x91 EGYPTIAN HIEROGLYPH T008A -+<U00013312> /xf0/x93/x8c/x92 EGYPTIAN HIEROGLYPH T009 -+<U00013313> /xf0/x93/x8c/x93 EGYPTIAN HIEROGLYPH T009A -+<U00013314> /xf0/x93/x8c/x94 EGYPTIAN HIEROGLYPH T010 -+<U00013315> /xf0/x93/x8c/x95 EGYPTIAN HIEROGLYPH T011 -+<U00013316> /xf0/x93/x8c/x96 EGYPTIAN HIEROGLYPH T011A -+<U00013317> /xf0/x93/x8c/x97 EGYPTIAN HIEROGLYPH T012 -+<U00013318> /xf0/x93/x8c/x98 EGYPTIAN HIEROGLYPH T013 -+<U00013319> /xf0/x93/x8c/x99 EGYPTIAN HIEROGLYPH T014 -+<U0001331A> /xf0/x93/x8c/x9a EGYPTIAN HIEROGLYPH T015 -+<U0001331B> /xf0/x93/x8c/x9b EGYPTIAN HIEROGLYPH T016 -+<U0001331C> /xf0/x93/x8c/x9c EGYPTIAN HIEROGLYPH T016A -+<U0001331D> /xf0/x93/x8c/x9d EGYPTIAN HIEROGLYPH T017 -+<U0001331E> /xf0/x93/x8c/x9e EGYPTIAN HIEROGLYPH T018 -+<U0001331F> /xf0/x93/x8c/x9f EGYPTIAN HIEROGLYPH T019 -+<U00013320> /xf0/x93/x8c/xa0 EGYPTIAN HIEROGLYPH T020 -+<U00013321> /xf0/x93/x8c/xa1 EGYPTIAN HIEROGLYPH T021 -+<U00013322> /xf0/x93/x8c/xa2 EGYPTIAN HIEROGLYPH T022 -+<U00013323> /xf0/x93/x8c/xa3 EGYPTIAN HIEROGLYPH T023 -+<U00013324> /xf0/x93/x8c/xa4 EGYPTIAN HIEROGLYPH T024 -+<U00013325> /xf0/x93/x8c/xa5 EGYPTIAN HIEROGLYPH T025 -+<U00013326> /xf0/x93/x8c/xa6 EGYPTIAN HIEROGLYPH T026 -+<U00013327> /xf0/x93/x8c/xa7 EGYPTIAN HIEROGLYPH T027 -+<U00013328> /xf0/x93/x8c/xa8 EGYPTIAN HIEROGLYPH T028 -+<U00013329> /xf0/x93/x8c/xa9 EGYPTIAN HIEROGLYPH T029 -+<U0001332A> /xf0/x93/x8c/xaa EGYPTIAN HIEROGLYPH T030 -+<U0001332B> /xf0/x93/x8c/xab EGYPTIAN HIEROGLYPH T031 -+<U0001332C> /xf0/x93/x8c/xac EGYPTIAN HIEROGLYPH T032 -+<U0001332D> /xf0/x93/x8c/xad EGYPTIAN HIEROGLYPH T032A -+<U0001332E> /xf0/x93/x8c/xae EGYPTIAN HIEROGLYPH T033 -+<U0001332F> /xf0/x93/x8c/xaf EGYPTIAN HIEROGLYPH T033A -+<U00013330> /xf0/x93/x8c/xb0 EGYPTIAN HIEROGLYPH T034 -+<U00013331> /xf0/x93/x8c/xb1 EGYPTIAN HIEROGLYPH T035 -+<U00013332> /xf0/x93/x8c/xb2 EGYPTIAN HIEROGLYPH T036 -+<U00013333> /xf0/x93/x8c/xb3 EGYPTIAN HIEROGLYPH U001 -+<U00013334> /xf0/x93/x8c/xb4 EGYPTIAN HIEROGLYPH U002 -+<U00013335> /xf0/x93/x8c/xb5 EGYPTIAN HIEROGLYPH U003 -+<U00013336> /xf0/x93/x8c/xb6 EGYPTIAN HIEROGLYPH U004 -+<U00013337> /xf0/x93/x8c/xb7 EGYPTIAN HIEROGLYPH U005 -+<U00013338> /xf0/x93/x8c/xb8 EGYPTIAN HIEROGLYPH U006 -+<U00013339> /xf0/x93/x8c/xb9 EGYPTIAN HIEROGLYPH U006A -+<U0001333A> /xf0/x93/x8c/xba EGYPTIAN HIEROGLYPH U006B -+<U0001333B> /xf0/x93/x8c/xbb EGYPTIAN HIEROGLYPH U007 -+<U0001333C> /xf0/x93/x8c/xbc EGYPTIAN HIEROGLYPH U008 -+<U0001333D> /xf0/x93/x8c/xbd EGYPTIAN HIEROGLYPH U009 -+<U0001333E> /xf0/x93/x8c/xbe EGYPTIAN HIEROGLYPH U010 -+<U0001333F> /xf0/x93/x8c/xbf EGYPTIAN HIEROGLYPH U011 -+<U00013340> /xf0/x93/x8d/x80 EGYPTIAN HIEROGLYPH U012 -+<U00013341> /xf0/x93/x8d/x81 EGYPTIAN HIEROGLYPH U013 -+<U00013342> /xf0/x93/x8d/x82 EGYPTIAN HIEROGLYPH U014 -+<U00013343> /xf0/x93/x8d/x83 EGYPTIAN HIEROGLYPH U015 -+<U00013344> /xf0/x93/x8d/x84 EGYPTIAN HIEROGLYPH U016 -+<U00013345> /xf0/x93/x8d/x85 EGYPTIAN HIEROGLYPH U017 -+<U00013346> /xf0/x93/x8d/x86 EGYPTIAN HIEROGLYPH U018 -+<U00013347> /xf0/x93/x8d/x87 EGYPTIAN HIEROGLYPH U019 -+<U00013348> /xf0/x93/x8d/x88 EGYPTIAN HIEROGLYPH U020 -+<U00013349> /xf0/x93/x8d/x89 EGYPTIAN HIEROGLYPH U021 -+<U0001334A> /xf0/x93/x8d/x8a EGYPTIAN HIEROGLYPH U022 -+<U0001334B> /xf0/x93/x8d/x8b EGYPTIAN HIEROGLYPH U023 -+<U0001334C> /xf0/x93/x8d/x8c EGYPTIAN HIEROGLYPH U023A -+<U0001334D> /xf0/x93/x8d/x8d EGYPTIAN HIEROGLYPH U024 -+<U0001334E> /xf0/x93/x8d/x8e EGYPTIAN HIEROGLYPH U025 -+<U0001334F> /xf0/x93/x8d/x8f EGYPTIAN HIEROGLYPH U026 -+<U00013350> /xf0/x93/x8d/x90 EGYPTIAN HIEROGLYPH U027 -+<U00013351> /xf0/x93/x8d/x91 EGYPTIAN HIEROGLYPH U028 -+<U00013352> /xf0/x93/x8d/x92 EGYPTIAN HIEROGLYPH U029 -+<U00013353> /xf0/x93/x8d/x93 EGYPTIAN HIEROGLYPH U029A -+<U00013354> /xf0/x93/x8d/x94 EGYPTIAN HIEROGLYPH U030 -+<U00013355> /xf0/x93/x8d/x95 EGYPTIAN HIEROGLYPH U031 -+<U00013356> /xf0/x93/x8d/x96 EGYPTIAN HIEROGLYPH U032 -+<U00013357> /xf0/x93/x8d/x97 EGYPTIAN HIEROGLYPH U032A -+<U00013358> /xf0/x93/x8d/x98 EGYPTIAN HIEROGLYPH U033 -+<U00013359> /xf0/x93/x8d/x99 EGYPTIAN HIEROGLYPH U034 -+<U0001335A> /xf0/x93/x8d/x9a EGYPTIAN HIEROGLYPH U035 -+<U0001335B> /xf0/x93/x8d/x9b EGYPTIAN HIEROGLYPH U036 -+<U0001335C> /xf0/x93/x8d/x9c EGYPTIAN HIEROGLYPH U037 -+<U0001335D> /xf0/x93/x8d/x9d EGYPTIAN HIEROGLYPH U038 -+<U0001335E> /xf0/x93/x8d/x9e EGYPTIAN HIEROGLYPH U039 -+<U0001335F> /xf0/x93/x8d/x9f EGYPTIAN HIEROGLYPH U040 -+<U00013360> /xf0/x93/x8d/xa0 EGYPTIAN HIEROGLYPH U041 -+<U00013361> /xf0/x93/x8d/xa1 EGYPTIAN HIEROGLYPH U042 -+<U00013362> /xf0/x93/x8d/xa2 EGYPTIAN HIEROGLYPH V001 -+<U00013363> /xf0/x93/x8d/xa3 EGYPTIAN HIEROGLYPH V001A -+<U00013364> /xf0/x93/x8d/xa4 EGYPTIAN HIEROGLYPH V001B -+<U00013365> /xf0/x93/x8d/xa5 EGYPTIAN HIEROGLYPH V001C -+<U00013366> /xf0/x93/x8d/xa6 EGYPTIAN HIEROGLYPH V001D -+<U00013367> /xf0/x93/x8d/xa7 EGYPTIAN HIEROGLYPH V001E -+<U00013368> /xf0/x93/x8d/xa8 EGYPTIAN HIEROGLYPH V001F -+<U00013369> /xf0/x93/x8d/xa9 EGYPTIAN HIEROGLYPH V001G -+<U0001336A> /xf0/x93/x8d/xaa EGYPTIAN HIEROGLYPH V001H -+<U0001336B> /xf0/x93/x8d/xab EGYPTIAN HIEROGLYPH V001I -+<U0001336C> /xf0/x93/x8d/xac EGYPTIAN HIEROGLYPH V002 -+<U0001336D> /xf0/x93/x8d/xad EGYPTIAN HIEROGLYPH V002A -+<U0001336E> /xf0/x93/x8d/xae EGYPTIAN HIEROGLYPH V003 -+<U0001336F> /xf0/x93/x8d/xaf EGYPTIAN HIEROGLYPH V004 -+<U00013370> /xf0/x93/x8d/xb0 EGYPTIAN HIEROGLYPH V005 -+<U00013371> /xf0/x93/x8d/xb1 EGYPTIAN HIEROGLYPH V006 -+<U00013372> /xf0/x93/x8d/xb2 EGYPTIAN HIEROGLYPH V007 -+<U00013373> /xf0/x93/x8d/xb3 EGYPTIAN HIEROGLYPH V007A -+<U00013374> /xf0/x93/x8d/xb4 EGYPTIAN HIEROGLYPH V007B -+<U00013375> /xf0/x93/x8d/xb5 EGYPTIAN HIEROGLYPH V008 -+<U00013376> /xf0/x93/x8d/xb6 EGYPTIAN HIEROGLYPH V009 -+<U00013377> /xf0/x93/x8d/xb7 EGYPTIAN HIEROGLYPH V010 -+<U00013378> /xf0/x93/x8d/xb8 EGYPTIAN HIEROGLYPH V011 -+<U00013379> /xf0/x93/x8d/xb9 EGYPTIAN HIEROGLYPH V011A -+<U0001337A> /xf0/x93/x8d/xba EGYPTIAN HIEROGLYPH V011B -+<U0001337B> /xf0/x93/x8d/xbb EGYPTIAN HIEROGLYPH V011C -+<U0001337C> /xf0/x93/x8d/xbc EGYPTIAN HIEROGLYPH V012 -+<U0001337D> /xf0/x93/x8d/xbd EGYPTIAN HIEROGLYPH V012A -+<U0001337E> /xf0/x93/x8d/xbe EGYPTIAN HIEROGLYPH V012B -+<U0001337F> /xf0/x93/x8d/xbf EGYPTIAN HIEROGLYPH V013 -+<U00013380> /xf0/x93/x8e/x80 EGYPTIAN HIEROGLYPH V014 -+<U00013381> /xf0/x93/x8e/x81 EGYPTIAN HIEROGLYPH V015 -+<U00013382> /xf0/x93/x8e/x82 EGYPTIAN HIEROGLYPH V016 -+<U00013383> /xf0/x93/x8e/x83 EGYPTIAN HIEROGLYPH V017 -+<U00013384> /xf0/x93/x8e/x84 EGYPTIAN HIEROGLYPH V018 -+<U00013385> /xf0/x93/x8e/x85 EGYPTIAN HIEROGLYPH V019 -+<U00013386> /xf0/x93/x8e/x86 EGYPTIAN HIEROGLYPH V020 -+<U00013387> /xf0/x93/x8e/x87 EGYPTIAN HIEROGLYPH V020A -+<U00013388> /xf0/x93/x8e/x88 EGYPTIAN HIEROGLYPH V020B -+<U00013389> /xf0/x93/x8e/x89 EGYPTIAN HIEROGLYPH V020C -+<U0001338A> /xf0/x93/x8e/x8a EGYPTIAN HIEROGLYPH V020D -+<U0001338B> /xf0/x93/x8e/x8b EGYPTIAN HIEROGLYPH V020E -+<U0001338C> /xf0/x93/x8e/x8c EGYPTIAN HIEROGLYPH V020F -+<U0001338D> /xf0/x93/x8e/x8d EGYPTIAN HIEROGLYPH V020G -+<U0001338E> /xf0/x93/x8e/x8e EGYPTIAN HIEROGLYPH V020H -+<U0001338F> /xf0/x93/x8e/x8f EGYPTIAN HIEROGLYPH V020I -+<U00013390> /xf0/x93/x8e/x90 EGYPTIAN HIEROGLYPH V020J -+<U00013391> /xf0/x93/x8e/x91 EGYPTIAN HIEROGLYPH V020K -+<U00013392> /xf0/x93/x8e/x92 EGYPTIAN HIEROGLYPH V020L -+<U00013393> /xf0/x93/x8e/x93 EGYPTIAN HIEROGLYPH V021 -+<U00013394> /xf0/x93/x8e/x94 EGYPTIAN HIEROGLYPH V022 -+<U00013395> /xf0/x93/x8e/x95 EGYPTIAN HIEROGLYPH V023 -+<U00013396> /xf0/x93/x8e/x96 EGYPTIAN HIEROGLYPH V023A -+<U00013397> /xf0/x93/x8e/x97 EGYPTIAN HIEROGLYPH V024 -+<U00013398> /xf0/x93/x8e/x98 EGYPTIAN HIEROGLYPH V025 -+<U00013399> /xf0/x93/x8e/x99 EGYPTIAN HIEROGLYPH V026 -+<U0001339A> /xf0/x93/x8e/x9a EGYPTIAN HIEROGLYPH V027 -+<U0001339B> /xf0/x93/x8e/x9b EGYPTIAN HIEROGLYPH V028 -+<U0001339C> /xf0/x93/x8e/x9c EGYPTIAN HIEROGLYPH V028A -+<U0001339D> /xf0/x93/x8e/x9d EGYPTIAN HIEROGLYPH V029 -+<U0001339E> /xf0/x93/x8e/x9e EGYPTIAN HIEROGLYPH V029A -+<U0001339F> /xf0/x93/x8e/x9f EGYPTIAN HIEROGLYPH V030 -+<U000133A0> /xf0/x93/x8e/xa0 EGYPTIAN HIEROGLYPH V030A -+<U000133A1> /xf0/x93/x8e/xa1 EGYPTIAN HIEROGLYPH V031 -+<U000133A2> /xf0/x93/x8e/xa2 EGYPTIAN HIEROGLYPH V031A -+<U000133A3> /xf0/x93/x8e/xa3 EGYPTIAN HIEROGLYPH V032 -+<U000133A4> /xf0/x93/x8e/xa4 EGYPTIAN HIEROGLYPH V033 -+<U000133A5> /xf0/x93/x8e/xa5 EGYPTIAN HIEROGLYPH V033A -+<U000133A6> /xf0/x93/x8e/xa6 EGYPTIAN HIEROGLYPH V034 -+<U000133A7> /xf0/x93/x8e/xa7 EGYPTIAN HIEROGLYPH V035 -+<U000133A8> /xf0/x93/x8e/xa8 EGYPTIAN HIEROGLYPH V036 -+<U000133A9> /xf0/x93/x8e/xa9 EGYPTIAN HIEROGLYPH V037 -+<U000133AA> /xf0/x93/x8e/xaa EGYPTIAN HIEROGLYPH V037A -+<U000133AB> /xf0/x93/x8e/xab EGYPTIAN HIEROGLYPH V038 -+<U000133AC> /xf0/x93/x8e/xac EGYPTIAN HIEROGLYPH V039 -+<U000133AD> /xf0/x93/x8e/xad EGYPTIAN HIEROGLYPH V040 -+<U000133AE> /xf0/x93/x8e/xae EGYPTIAN HIEROGLYPH V040A -+<U000133AF> /xf0/x93/x8e/xaf EGYPTIAN HIEROGLYPH W001 -+<U000133B0> /xf0/x93/x8e/xb0 EGYPTIAN HIEROGLYPH W002 -+<U000133B1> /xf0/x93/x8e/xb1 EGYPTIAN HIEROGLYPH W003 -+<U000133B2> /xf0/x93/x8e/xb2 EGYPTIAN HIEROGLYPH W003A -+<U000133B3> /xf0/x93/x8e/xb3 EGYPTIAN HIEROGLYPH W004 -+<U000133B4> /xf0/x93/x8e/xb4 EGYPTIAN HIEROGLYPH W005 -+<U000133B5> /xf0/x93/x8e/xb5 EGYPTIAN HIEROGLYPH W006 -+<U000133B6> /xf0/x93/x8e/xb6 EGYPTIAN HIEROGLYPH W007 -+<U000133B7> /xf0/x93/x8e/xb7 EGYPTIAN HIEROGLYPH W008 -+<U000133B8> /xf0/x93/x8e/xb8 EGYPTIAN HIEROGLYPH W009 -+<U000133B9> /xf0/x93/x8e/xb9 EGYPTIAN HIEROGLYPH W009A -+<U000133BA> /xf0/x93/x8e/xba EGYPTIAN HIEROGLYPH W010 -+<U000133BB> /xf0/x93/x8e/xbb EGYPTIAN HIEROGLYPH W010A -+<U000133BC> /xf0/x93/x8e/xbc EGYPTIAN HIEROGLYPH W011 -+<U000133BD> /xf0/x93/x8e/xbd EGYPTIAN HIEROGLYPH W012 -+<U000133BE> /xf0/x93/x8e/xbe EGYPTIAN HIEROGLYPH W013 -+<U000133BF> /xf0/x93/x8e/xbf EGYPTIAN HIEROGLYPH W014 -+<U000133C0> /xf0/x93/x8f/x80 EGYPTIAN HIEROGLYPH W014A -+<U000133C1> /xf0/x93/x8f/x81 EGYPTIAN HIEROGLYPH W015 -+<U000133C2> /xf0/x93/x8f/x82 EGYPTIAN HIEROGLYPH W016 -+<U000133C3> /xf0/x93/x8f/x83 EGYPTIAN HIEROGLYPH W017 -+<U000133C4> /xf0/x93/x8f/x84 EGYPTIAN HIEROGLYPH W017A -+<U000133C5> /xf0/x93/x8f/x85 EGYPTIAN HIEROGLYPH W018 -+<U000133C6> /xf0/x93/x8f/x86 EGYPTIAN HIEROGLYPH W018A -+<U000133C7> /xf0/x93/x8f/x87 EGYPTIAN HIEROGLYPH W019 -+<U000133C8> /xf0/x93/x8f/x88 EGYPTIAN HIEROGLYPH W020 -+<U000133C9> /xf0/x93/x8f/x89 EGYPTIAN HIEROGLYPH W021 -+<U000133CA> /xf0/x93/x8f/x8a EGYPTIAN HIEROGLYPH W022 -+<U000133CB> /xf0/x93/x8f/x8b EGYPTIAN HIEROGLYPH W023 -+<U000133CC> /xf0/x93/x8f/x8c EGYPTIAN HIEROGLYPH W024 -+<U000133CD> /xf0/x93/x8f/x8d EGYPTIAN HIEROGLYPH W024A -+<U000133CE> /xf0/x93/x8f/x8e EGYPTIAN HIEROGLYPH W025 -+<U000133CF> /xf0/x93/x8f/x8f EGYPTIAN HIEROGLYPH X001 -+<U000133D0> /xf0/x93/x8f/x90 EGYPTIAN HIEROGLYPH X002 -+<U000133D1> /xf0/x93/x8f/x91 EGYPTIAN HIEROGLYPH X003 -+<U000133D2> /xf0/x93/x8f/x92 EGYPTIAN HIEROGLYPH X004 -+<U000133D3> /xf0/x93/x8f/x93 EGYPTIAN HIEROGLYPH X004A -+<U000133D4> /xf0/x93/x8f/x94 EGYPTIAN HIEROGLYPH X004B -+<U000133D5> /xf0/x93/x8f/x95 EGYPTIAN HIEROGLYPH X005 -+<U000133D6> /xf0/x93/x8f/x96 EGYPTIAN HIEROGLYPH X006 -+<U000133D7> /xf0/x93/x8f/x97 EGYPTIAN HIEROGLYPH X006A -+<U000133D8> /xf0/x93/x8f/x98 EGYPTIAN HIEROGLYPH X007 -+<U000133D9> /xf0/x93/x8f/x99 EGYPTIAN HIEROGLYPH X008 -+<U000133DA> /xf0/x93/x8f/x9a EGYPTIAN HIEROGLYPH X008A -+<U000133DB> /xf0/x93/x8f/x9b EGYPTIAN HIEROGLYPH Y001 -+<U000133DC> /xf0/x93/x8f/x9c EGYPTIAN HIEROGLYPH Y001A -+<U000133DD> /xf0/x93/x8f/x9d EGYPTIAN HIEROGLYPH Y002 -+<U000133DE> /xf0/x93/x8f/x9e EGYPTIAN HIEROGLYPH Y003 -+<U000133DF> /xf0/x93/x8f/x9f EGYPTIAN HIEROGLYPH Y004 -+<U000133E0> /xf0/x93/x8f/xa0 EGYPTIAN HIEROGLYPH Y005 -+<U000133E1> /xf0/x93/x8f/xa1 EGYPTIAN HIEROGLYPH Y006 -+<U000133E2> /xf0/x93/x8f/xa2 EGYPTIAN HIEROGLYPH Y007 -+<U000133E3> /xf0/x93/x8f/xa3 EGYPTIAN HIEROGLYPH Y008 -+<U000133E4> /xf0/x93/x8f/xa4 EGYPTIAN HIEROGLYPH Z001 -+<U000133E5> /xf0/x93/x8f/xa5 EGYPTIAN HIEROGLYPH Z002 -+<U000133E6> /xf0/x93/x8f/xa6 EGYPTIAN HIEROGLYPH Z002A -+<U000133E7> /xf0/x93/x8f/xa7 EGYPTIAN HIEROGLYPH Z002B -+<U000133E8> /xf0/x93/x8f/xa8 EGYPTIAN HIEROGLYPH Z002C -+<U000133E9> /xf0/x93/x8f/xa9 EGYPTIAN HIEROGLYPH Z002D -+<U000133EA> /xf0/x93/x8f/xaa EGYPTIAN HIEROGLYPH Z003 -+<U000133EB> /xf0/x93/x8f/xab EGYPTIAN HIEROGLYPH Z003A -+<U000133EC> /xf0/x93/x8f/xac EGYPTIAN HIEROGLYPH Z003B -+<U000133ED> /xf0/x93/x8f/xad EGYPTIAN HIEROGLYPH Z004 -+<U000133EE> /xf0/x93/x8f/xae EGYPTIAN HIEROGLYPH Z004A -+<U000133EF> /xf0/x93/x8f/xaf EGYPTIAN HIEROGLYPH Z005 -+<U000133F0> /xf0/x93/x8f/xb0 EGYPTIAN HIEROGLYPH Z005A -+<U000133F1> /xf0/x93/x8f/xb1 EGYPTIAN HIEROGLYPH Z006 -+<U000133F2> /xf0/x93/x8f/xb2 EGYPTIAN HIEROGLYPH Z007 -+<U000133F3> /xf0/x93/x8f/xb3 EGYPTIAN HIEROGLYPH Z008 -+<U000133F4> /xf0/x93/x8f/xb4 EGYPTIAN HIEROGLYPH Z009 -+<U000133F5> /xf0/x93/x8f/xb5 EGYPTIAN HIEROGLYPH Z010 -+<U000133F6> /xf0/x93/x8f/xb6 EGYPTIAN HIEROGLYPH Z011 -+<U000133F7> /xf0/x93/x8f/xb7 EGYPTIAN HIEROGLYPH Z012 -+<U000133F8> /xf0/x93/x8f/xb8 EGYPTIAN HIEROGLYPH Z013 -+<U000133F9> /xf0/x93/x8f/xb9 EGYPTIAN HIEROGLYPH Z014 -+<U000133FA> /xf0/x93/x8f/xba EGYPTIAN HIEROGLYPH Z015 -+<U000133FB> /xf0/x93/x8f/xbb EGYPTIAN HIEROGLYPH Z015A -+<U000133FC> /xf0/x93/x8f/xbc EGYPTIAN HIEROGLYPH Z015B -+<U000133FD> /xf0/x93/x8f/xbd EGYPTIAN HIEROGLYPH Z015C -+<U000133FE> /xf0/x93/x8f/xbe EGYPTIAN HIEROGLYPH Z015D -+<U000133FF> /xf0/x93/x8f/xbf EGYPTIAN HIEROGLYPH Z015E -+<U00013400> /xf0/x93/x90/x80 EGYPTIAN HIEROGLYPH Z015F -+<U00013401> /xf0/x93/x90/x81 EGYPTIAN HIEROGLYPH Z015G -+<U00013402> /xf0/x93/x90/x82 EGYPTIAN HIEROGLYPH Z015H -+<U00013403> /xf0/x93/x90/x83 EGYPTIAN HIEROGLYPH Z015I -+<U00013404> /xf0/x93/x90/x84 EGYPTIAN HIEROGLYPH Z016 -+<U00013405> /xf0/x93/x90/x85 EGYPTIAN HIEROGLYPH Z016A -+<U00013406> /xf0/x93/x90/x86 EGYPTIAN HIEROGLYPH Z016B -+<U00013407> /xf0/x93/x90/x87 EGYPTIAN HIEROGLYPH Z016C -+<U00013408> /xf0/x93/x90/x88 EGYPTIAN HIEROGLYPH Z016D -+<U00013409> /xf0/x93/x90/x89 EGYPTIAN HIEROGLYPH Z016E -+<U0001340A> /xf0/x93/x90/x8a EGYPTIAN HIEROGLYPH Z016F -+<U0001340B> /xf0/x93/x90/x8b EGYPTIAN HIEROGLYPH Z016G -+<U0001340C> /xf0/x93/x90/x8c EGYPTIAN HIEROGLYPH Z016H -+<U0001340D> /xf0/x93/x90/x8d EGYPTIAN HIEROGLYPH AA001 -+<U0001340E> /xf0/x93/x90/x8e EGYPTIAN HIEROGLYPH AA002 -+<U0001340F> /xf0/x93/x90/x8f EGYPTIAN HIEROGLYPH AA003 -+<U00013410> /xf0/x93/x90/x90 EGYPTIAN HIEROGLYPH AA004 -+<U00013411> /xf0/x93/x90/x91 EGYPTIAN HIEROGLYPH AA005 -+<U00013412> /xf0/x93/x90/x92 EGYPTIAN HIEROGLYPH AA006 -+<U00013413> /xf0/x93/x90/x93 EGYPTIAN HIEROGLYPH AA007 -+<U00013414> /xf0/x93/x90/x94 EGYPTIAN HIEROGLYPH AA007A -+<U00013415> /xf0/x93/x90/x95 EGYPTIAN HIEROGLYPH AA007B -+<U00013416> /xf0/x93/x90/x96 EGYPTIAN HIEROGLYPH AA008 -+<U00013417> /xf0/x93/x90/x97 EGYPTIAN HIEROGLYPH AA009 -+<U00013418> /xf0/x93/x90/x98 EGYPTIAN HIEROGLYPH AA010 -+<U00013419> /xf0/x93/x90/x99 EGYPTIAN HIEROGLYPH AA011 -+<U0001341A> /xf0/x93/x90/x9a EGYPTIAN HIEROGLYPH AA012 -+<U0001341B> /xf0/x93/x90/x9b EGYPTIAN HIEROGLYPH AA013 -+<U0001341C> /xf0/x93/x90/x9c EGYPTIAN HIEROGLYPH AA014 -+<U0001341D> /xf0/x93/x90/x9d EGYPTIAN HIEROGLYPH AA015 -+<U0001341E> /xf0/x93/x90/x9e EGYPTIAN HIEROGLYPH AA016 -+<U0001341F> /xf0/x93/x90/x9f EGYPTIAN HIEROGLYPH AA017 -+<U00013420> /xf0/x93/x90/xa0 EGYPTIAN HIEROGLYPH AA018 -+<U00013421> /xf0/x93/x90/xa1 EGYPTIAN HIEROGLYPH AA019 -+<U00013422> /xf0/x93/x90/xa2 EGYPTIAN HIEROGLYPH AA020 -+<U00013423> /xf0/x93/x90/xa3 EGYPTIAN HIEROGLYPH AA021 -+<U00013424> /xf0/x93/x90/xa4 EGYPTIAN HIEROGLYPH AA022 -+<U00013425> /xf0/x93/x90/xa5 EGYPTIAN HIEROGLYPH AA023 -+<U00013426> /xf0/x93/x90/xa6 EGYPTIAN HIEROGLYPH AA024 -+<U00013427> /xf0/x93/x90/xa7 EGYPTIAN HIEROGLYPH AA025 -+<U00013428> /xf0/x93/x90/xa8 EGYPTIAN HIEROGLYPH AA026 -+<U00013429> /xf0/x93/x90/xa9 EGYPTIAN HIEROGLYPH AA027 -+<U0001342A> /xf0/x93/x90/xaa EGYPTIAN HIEROGLYPH AA028 -+<U0001342B> /xf0/x93/x90/xab EGYPTIAN HIEROGLYPH AA029 -+<U0001342C> /xf0/x93/x90/xac EGYPTIAN HIEROGLYPH AA030 -+<U0001342D> /xf0/x93/x90/xad EGYPTIAN HIEROGLYPH AA031 -+<U0001342E> /xf0/x93/x90/xae EGYPTIAN HIEROGLYPH AA032 -+<U00016800> /xf0/x96/xa0/x80 BAMUM LETTER PHASE-A NGKUE MFON -+<U00016801> /xf0/x96/xa0/x81 BAMUM LETTER PHASE-A GBIEE FON -+<U00016802> /xf0/x96/xa0/x82 BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE -+<U00016803> /xf0/x96/xa0/x83 BAMUM LETTER PHASE-A PON MFON PIPAEMBA -+<U00016804> /xf0/x96/xa0/x84 BAMUM LETTER PHASE-A NAA MFON -+<U00016805> /xf0/x96/xa0/x85 BAMUM LETTER PHASE-A SHUENSHUET -+<U00016806> /xf0/x96/xa0/x86 BAMUM LETTER PHASE-A TITA MFON -+<U00016807> /xf0/x96/xa0/x87 BAMUM LETTER PHASE-A NZA MFON -+<U00016808> /xf0/x96/xa0/x88 BAMUM LETTER PHASE-A SHINDA PA NJI -+<U00016809> /xf0/x96/xa0/x89 BAMUM LETTER PHASE-A PON PA NJI PIPAEMGBIEE -+<U0001680A> /xf0/x96/xa0/x8a BAMUM LETTER PHASE-A PON PA NJI PIPAEMBA -+<U0001680B> /xf0/x96/xa0/x8b BAMUM LETTER PHASE-A MAEMBGBIEE -+<U0001680C> /xf0/x96/xa0/x8c BAMUM LETTER PHASE-A TU MAEMBA -+<U0001680D> /xf0/x96/xa0/x8d BAMUM LETTER PHASE-A NGANGU -+<U0001680E> /xf0/x96/xa0/x8e BAMUM LETTER PHASE-A MAEMVEUX -+<U0001680F> /xf0/x96/xa0/x8f BAMUM LETTER PHASE-A MANSUAE -+<U00016810> /xf0/x96/xa0/x90 BAMUM LETTER PHASE-A MVEUAENGAM -+<U00016811> /xf0/x96/xa0/x91 BAMUM LETTER PHASE-A SEUNYAM -+<U00016812> /xf0/x96/xa0/x92 BAMUM LETTER PHASE-A NTOQPEN -+<U00016813> /xf0/x96/xa0/x93 BAMUM LETTER PHASE-A KEUKEUTNDA -+<U00016814> /xf0/x96/xa0/x94 BAMUM LETTER PHASE-A NKINDI -+<U00016815> /xf0/x96/xa0/x95 BAMUM LETTER PHASE-A SUU -+<U00016816> /xf0/x96/xa0/x96 BAMUM LETTER PHASE-A NGKUENZEUM -+<U00016817> /xf0/x96/xa0/x97 BAMUM LETTER PHASE-A LAPAQ -+<U00016818> /xf0/x96/xa0/x98 BAMUM LETTER PHASE-A LET KUT -+<U00016819> /xf0/x96/xa0/x99 BAMUM LETTER PHASE-A NTAP MFAA -+<U0001681A> /xf0/x96/xa0/x9a BAMUM LETTER PHASE-A MAEKEUP -+<U0001681B> /xf0/x96/xa0/x9b BAMUM LETTER PHASE-A PASHAE -+<U0001681C> /xf0/x96/xa0/x9c BAMUM LETTER PHASE-A GHEUAERAE -+<U0001681D> /xf0/x96/xa0/x9d BAMUM LETTER PHASE-A PAMSHAE -+<U0001681E> /xf0/x96/xa0/x9e BAMUM LETTER PHASE-A MON NGGEUAET -+<U0001681F> /xf0/x96/xa0/x9f BAMUM LETTER PHASE-A NZUN MEUT -+<U00016820> /xf0/x96/xa0/xa0 BAMUM LETTER PHASE-A U YUQ NAE -+<U00016821> /xf0/x96/xa0/xa1 BAMUM LETTER PHASE-A GHEUAEGHEUAE -+<U00016822> /xf0/x96/xa0/xa2 BAMUM LETTER PHASE-A NTAP NTAA -+<U00016823> /xf0/x96/xa0/xa3 BAMUM LETTER PHASE-A SISA -+<U00016824> /xf0/x96/xa0/xa4 BAMUM LETTER PHASE-A MGBASA -+<U00016825> /xf0/x96/xa0/xa5 BAMUM LETTER PHASE-A MEUNJOMNDEUQ -+<U00016826> /xf0/x96/xa0/xa6 BAMUM LETTER PHASE-A MOOMPUQ -+<U00016827> /xf0/x96/xa0/xa7 BAMUM LETTER PHASE-A KAFA -+<U00016828> /xf0/x96/xa0/xa8 BAMUM LETTER PHASE-A PA LEERAEWA -+<U00016829> /xf0/x96/xa0/xa9 BAMUM LETTER PHASE-A NDA LEERAEWA -+<U0001682A> /xf0/x96/xa0/xaa BAMUM LETTER PHASE-A PET -+<U0001682B> /xf0/x96/xa0/xab BAMUM LETTER PHASE-A MAEMKPEN -+<U0001682C> /xf0/x96/xa0/xac BAMUM LETTER PHASE-A NIKA -+<U0001682D> /xf0/x96/xa0/xad BAMUM LETTER PHASE-A PUP -+<U0001682E> /xf0/x96/xa0/xae BAMUM LETTER PHASE-A TUAEP -+<U0001682F> /xf0/x96/xa0/xaf BAMUM LETTER PHASE-A LUAEP -+<U00016830> /xf0/x96/xa0/xb0 BAMUM LETTER PHASE-A SONJAM -+<U00016831> /xf0/x96/xa0/xb1 BAMUM LETTER PHASE-A TEUTEUWEN -+<U00016832> /xf0/x96/xa0/xb2 BAMUM LETTER PHASE-A MAENYI -+<U00016833> /xf0/x96/xa0/xb3 BAMUM LETTER PHASE-A KET -+<U00016834> /xf0/x96/xa0/xb4 BAMUM LETTER PHASE-A NDAANGGEUAET -+<U00016835> /xf0/x96/xa0/xb5 BAMUM LETTER PHASE-A KUOQ -+<U00016836> /xf0/x96/xa0/xb6 BAMUM LETTER PHASE-A MOOMEUT -+<U00016837> /xf0/x96/xa0/xb7 BAMUM LETTER PHASE-A SHUM -+<U00016838> /xf0/x96/xa0/xb8 BAMUM LETTER PHASE-A LOMMAE -+<U00016839> /xf0/x96/xa0/xb9 BAMUM LETTER PHASE-A FIRI -+<U0001683A> /xf0/x96/xa0/xba BAMUM LETTER PHASE-A ROM -+<U0001683B> /xf0/x96/xa0/xbb BAMUM LETTER PHASE-A KPOQ -+<U0001683C> /xf0/x96/xa0/xbc BAMUM LETTER PHASE-A SOQ -+<U0001683D> /xf0/x96/xa0/xbd BAMUM LETTER PHASE-A MAP PIEET -+<U0001683E> /xf0/x96/xa0/xbe BAMUM LETTER PHASE-A SHIRAE -+<U0001683F> /xf0/x96/xa0/xbf BAMUM LETTER PHASE-A NTAP -+<U00016840> /xf0/x96/xa1/x80 BAMUM LETTER PHASE-A SHOQ NSHUT YUM -+<U00016841> /xf0/x96/xa1/x81 BAMUM LETTER PHASE-A NYIT MONGKEUAEQ -+<U00016842> /xf0/x96/xa1/x82 BAMUM LETTER PHASE-A PAARAE -+<U00016843> /xf0/x96/xa1/x83 BAMUM LETTER PHASE-A NKAARAE -+<U00016844> /xf0/x96/xa1/x84 BAMUM LETTER PHASE-A UNKNOWN -+<U00016845> /xf0/x96/xa1/x85 BAMUM LETTER PHASE-A NGGEN -+<U00016846> /xf0/x96/xa1/x86 BAMUM LETTER PHASE-A MAESI -+<U00016847> /xf0/x96/xa1/x87 BAMUM LETTER PHASE-A NJAM -+<U00016848> /xf0/x96/xa1/x88 BAMUM LETTER PHASE-A MBANYI -+<U00016849> /xf0/x96/xa1/x89 BAMUM LETTER PHASE-A NYET -+<U0001684A> /xf0/x96/xa1/x8a BAMUM LETTER PHASE-A TEUAEN -+<U0001684B> /xf0/x96/xa1/x8b BAMUM LETTER PHASE-A SOT -+<U0001684C> /xf0/x96/xa1/x8c BAMUM LETTER PHASE-A PAAM -+<U0001684D> /xf0/x96/xa1/x8d BAMUM LETTER PHASE-A NSHIEE -+<U0001684E> /xf0/x96/xa1/x8e BAMUM LETTER PHASE-A MAEM -+<U0001684F> /xf0/x96/xa1/x8f BAMUM LETTER PHASE-A NYI -+<U00016850> /xf0/x96/xa1/x90 BAMUM LETTER PHASE-A KAQ -+<U00016851> /xf0/x96/xa1/x91 BAMUM LETTER PHASE-A NSHA -+<U00016852> /xf0/x96/xa1/x92 BAMUM LETTER PHASE-A VEE -+<U00016853> /xf0/x96/xa1/x93 BAMUM LETTER PHASE-A LU -+<U00016854> /xf0/x96/xa1/x94 BAMUM LETTER PHASE-A NEN -+<U00016855> /xf0/x96/xa1/x95 BAMUM LETTER PHASE-A NAQ -+<U00016856> /xf0/x96/xa1/x96 BAMUM LETTER PHASE-A MBAQ -+<U00016857> /xf0/x96/xa1/x97 BAMUM LETTER PHASE-B NSHUET -+<U00016858> /xf0/x96/xa1/x98 BAMUM LETTER PHASE-B TU MAEMGBIEE -+<U00016859> /xf0/x96/xa1/x99 BAMUM LETTER PHASE-B SIEE -+<U0001685A> /xf0/x96/xa1/x9a BAMUM LETTER PHASE-B SET TU -+<U0001685B> /xf0/x96/xa1/x9b BAMUM LETTER PHASE-B LOM NTEUM -+<U0001685C> /xf0/x96/xa1/x9c BAMUM LETTER PHASE-B MBA MAELEE -+<U0001685D> /xf0/x96/xa1/x9d BAMUM LETTER PHASE-B KIEEM -+<U0001685E> /xf0/x96/xa1/x9e BAMUM LETTER PHASE-B YEURAE -+<U0001685F> /xf0/x96/xa1/x9f BAMUM LETTER PHASE-B MBAARAE -+<U00016860> /xf0/x96/xa1/xa0 BAMUM LETTER PHASE-B KAM -+<U00016861> /xf0/x96/xa1/xa1 BAMUM LETTER PHASE-B PEESHI -+<U00016862> /xf0/x96/xa1/xa2 BAMUM LETTER PHASE-B YAFU LEERAEWA -+<U00016863> /xf0/x96/xa1/xa3 BAMUM LETTER PHASE-B LAM NSHUT NYAM -+<U00016864> /xf0/x96/xa1/xa4 BAMUM LETTER PHASE-B NTIEE SHEUOQ -+<U00016865> /xf0/x96/xa1/xa5 BAMUM LETTER PHASE-B NDU NJAA -+<U00016866> /xf0/x96/xa1/xa6 BAMUM LETTER PHASE-B GHEUGHEUAEM -+<U00016867> /xf0/x96/xa1/xa7 BAMUM LETTER PHASE-B PIT -+<U00016868> /xf0/x96/xa1/xa8 BAMUM LETTER PHASE-B TU NSIEE -+<U00016869> /xf0/x96/xa1/xa9 BAMUM LETTER PHASE-B SHET NJAQ -+<U0001686A> /xf0/x96/xa1/xaa BAMUM LETTER PHASE-B SHEUAEQTU -+<U0001686B> /xf0/x96/xa1/xab BAMUM LETTER PHASE-B MFON TEUAEQ -+<U0001686C> /xf0/x96/xa1/xac BAMUM LETTER PHASE-B MBIT MBAAKET -+<U0001686D> /xf0/x96/xa1/xad BAMUM LETTER PHASE-B NYI NTEUM -+<U0001686E> /xf0/x96/xa1/xae BAMUM LETTER PHASE-B KEUPUQ -+<U0001686F> /xf0/x96/xa1/xaf BAMUM LETTER PHASE-B GHEUGHEN -+<U00016870> /xf0/x96/xa1/xb0 BAMUM LETTER PHASE-B KEUYEUX -+<U00016871> /xf0/x96/xa1/xb1 BAMUM LETTER PHASE-B LAANAE -+<U00016872> /xf0/x96/xa1/xb2 BAMUM LETTER PHASE-B PARUM -+<U00016873> /xf0/x96/xa1/xb3 BAMUM LETTER PHASE-B VEUM -+<U00016874> /xf0/x96/xa1/xb4 BAMUM LETTER PHASE-B NGKINDI MVOP -+<U00016875> /xf0/x96/xa1/xb5 BAMUM LETTER PHASE-B NGGEU MBU -+<U00016876> /xf0/x96/xa1/xb6 BAMUM LETTER PHASE-B WUAET -+<U00016877> /xf0/x96/xa1/xb7 BAMUM LETTER PHASE-B SAKEUAE -+<U00016878> /xf0/x96/xa1/xb8 BAMUM LETTER PHASE-B TAAM -+<U00016879> /xf0/x96/xa1/xb9 BAMUM LETTER PHASE-B MEUQ -+<U0001687A> /xf0/x96/xa1/xba BAMUM LETTER PHASE-B NGGUOQ -+<U0001687B> /xf0/x96/xa1/xbb BAMUM LETTER PHASE-B NGGUOQ LARGE -+<U0001687C> /xf0/x96/xa1/xbc BAMUM LETTER PHASE-B MFIYAQ -+<U0001687D> /xf0/x96/xa1/xbd BAMUM LETTER PHASE-B SUE -+<U0001687E> /xf0/x96/xa1/xbe BAMUM LETTER PHASE-B MBEURI -+<U0001687F> /xf0/x96/xa1/xbf BAMUM LETTER PHASE-B MONTIEEN -+<U00016880> /xf0/x96/xa2/x80 BAMUM LETTER PHASE-B NYAEMAE -+<U00016881> /xf0/x96/xa2/x81 BAMUM LETTER PHASE-B PUNGAAM -+<U00016882> /xf0/x96/xa2/x82 BAMUM LETTER PHASE-B MEUT NGGEET -+<U00016883> /xf0/x96/xa2/x83 BAMUM LETTER PHASE-B FEUX -+<U00016884> /xf0/x96/xa2/x84 BAMUM LETTER PHASE-B MBUOQ -+<U00016885> /xf0/x96/xa2/x85 BAMUM LETTER PHASE-B FEE -+<U00016886> /xf0/x96/xa2/x86 BAMUM LETTER PHASE-B KEUAEM -+<U00016887> /xf0/x96/xa2/x87 BAMUM LETTER PHASE-B MA NJEUAENA -+<U00016888> /xf0/x96/xa2/x88 BAMUM LETTER PHASE-B MA NJUQA -+<U00016889> /xf0/x96/xa2/x89 BAMUM LETTER PHASE-B LET -+<U0001688A> /xf0/x96/xa2/x8a BAMUM LETTER PHASE-B NGGAAM -+<U0001688B> /xf0/x96/xa2/x8b BAMUM LETTER PHASE-B NSEN -+<U0001688C> /xf0/x96/xa2/x8c BAMUM LETTER PHASE-B MA -+<U0001688D> /xf0/x96/xa2/x8d BAMUM LETTER PHASE-B KIQ -+<U0001688E> /xf0/x96/xa2/x8e BAMUM LETTER PHASE-B NGOM -+<U0001688F> /xf0/x96/xa2/x8f BAMUM LETTER PHASE-C NGKUE MAEMBA -+<U00016890> /xf0/x96/xa2/x90 BAMUM LETTER PHASE-C NZA -+<U00016891> /xf0/x96/xa2/x91 BAMUM LETTER PHASE-C YUM -+<U00016892> /xf0/x96/xa2/x92 BAMUM LETTER PHASE-C WANGKUOQ -+<U00016893> /xf0/x96/xa2/x93 BAMUM LETTER PHASE-C NGGEN -+<U00016894> /xf0/x96/xa2/x94 BAMUM LETTER PHASE-C NDEUAEREE -+<U00016895> /xf0/x96/xa2/x95 BAMUM LETTER PHASE-C NGKAQ -+<U00016896> /xf0/x96/xa2/x96 BAMUM LETTER PHASE-C GHARAE -+<U00016897> /xf0/x96/xa2/x97 BAMUM LETTER PHASE-C MBEEKEET -+<U00016898> /xf0/x96/xa2/x98 BAMUM LETTER PHASE-C GBAYI -+<U00016899> /xf0/x96/xa2/x99 BAMUM LETTER PHASE-C NYIR MKPARAQ MEUN -+<U0001689A> /xf0/x96/xa2/x9a BAMUM LETTER PHASE-C NTU MBIT -+<U0001689B> /xf0/x96/xa2/x9b BAMUM LETTER PHASE-C MBEUM -+<U0001689C> /xf0/x96/xa2/x9c BAMUM LETTER PHASE-C PIRIEEN -+<U0001689D> /xf0/x96/xa2/x9d BAMUM LETTER PHASE-C NDOMBU -+<U0001689E> /xf0/x96/xa2/x9e BAMUM LETTER PHASE-C MBAA CABBAGE-TREE -+<U0001689F> /xf0/x96/xa2/x9f BAMUM LETTER PHASE-C KEUSHEUAEP -+<U000168A0> /xf0/x96/xa2/xa0 BAMUM LETTER PHASE-C GHAP -+<U000168A1> /xf0/x96/xa2/xa1 BAMUM LETTER PHASE-C KEUKAQ -+<U000168A2> /xf0/x96/xa2/xa2 BAMUM LETTER PHASE-C YU MUOMAE -+<U000168A3> /xf0/x96/xa2/xa3 BAMUM LETTER PHASE-C NZEUM -+<U000168A4> /xf0/x96/xa2/xa4 BAMUM LETTER PHASE-C MBUE -+<U000168A5> /xf0/x96/xa2/xa5 BAMUM LETTER PHASE-C NSEUAEN -+<U000168A6> /xf0/x96/xa2/xa6 BAMUM LETTER PHASE-C MBIT -+<U000168A7> /xf0/x96/xa2/xa7 BAMUM LETTER PHASE-C YEUQ -+<U000168A8> /xf0/x96/xa2/xa8 BAMUM LETTER PHASE-C KPARAQ -+<U000168A9> /xf0/x96/xa2/xa9 BAMUM LETTER PHASE-C KAA -+<U000168AA> /xf0/x96/xa2/xaa BAMUM LETTER PHASE-C SEUX -+<U000168AB> /xf0/x96/xa2/xab BAMUM LETTER PHASE-C NDIDA -+<U000168AC> /xf0/x96/xa2/xac BAMUM LETTER PHASE-C TAASHAE -+<U000168AD> /xf0/x96/xa2/xad BAMUM LETTER PHASE-C NJUEQ -+<U000168AE> /xf0/x96/xa2/xae BAMUM LETTER PHASE-C TITA YUE -+<U000168AF> /xf0/x96/xa2/xaf BAMUM LETTER PHASE-C SUAET -+<U000168B0> /xf0/x96/xa2/xb0 BAMUM LETTER PHASE-C NGGUAEN NYAM -+<U000168B1> /xf0/x96/xa2/xb1 BAMUM LETTER PHASE-C VEUX -+<U000168B2> /xf0/x96/xa2/xb2 BAMUM LETTER PHASE-C NANSANAQ -+<U000168B3> /xf0/x96/xa2/xb3 BAMUM LETTER PHASE-C MA KEUAERI -+<U000168B4> /xf0/x96/xa2/xb4 BAMUM LETTER PHASE-C NTAA -+<U000168B5> /xf0/x96/xa2/xb5 BAMUM LETTER PHASE-C NGGUON -+<U000168B6> /xf0/x96/xa2/xb6 BAMUM LETTER PHASE-C LAP -+<U000168B7> /xf0/x96/xa2/xb7 BAMUM LETTER PHASE-C MBIRIEEN -+<U000168B8> /xf0/x96/xa2/xb8 BAMUM LETTER PHASE-C MGBASAQ -+<U000168B9> /xf0/x96/xa2/xb9 BAMUM LETTER PHASE-C NTEUNGBA -+<U000168BA> /xf0/x96/xa2/xba BAMUM LETTER PHASE-C TEUTEUX -+<U000168BB> /xf0/x96/xa2/xbb BAMUM LETTER PHASE-C NGGUM -+<U000168BC> /xf0/x96/xa2/xbc BAMUM LETTER PHASE-C FUE -+<U000168BD> /xf0/x96/xa2/xbd BAMUM LETTER PHASE-C NDEUT -+<U000168BE> /xf0/x96/xa2/xbe BAMUM LETTER PHASE-C NSA -+<U000168BF> /xf0/x96/xa2/xbf BAMUM LETTER PHASE-C NSHAQ -+<U000168C0> /xf0/x96/xa3/x80 BAMUM LETTER PHASE-C BUNG -+<U000168C1> /xf0/x96/xa3/x81 BAMUM LETTER PHASE-C VEUAEPEN -+<U000168C2> /xf0/x96/xa3/x82 BAMUM LETTER PHASE-C MBERAE -+<U000168C3> /xf0/x96/xa3/x83 BAMUM LETTER PHASE-C RU -+<U000168C4> /xf0/x96/xa3/x84 BAMUM LETTER PHASE-C NJAEM -+<U000168C5> /xf0/x96/xa3/x85 BAMUM LETTER PHASE-C LAM -+<U000168C6> /xf0/x96/xa3/x86 BAMUM LETTER PHASE-C TITUAEP -+<U000168C7> /xf0/x96/xa3/x87 BAMUM LETTER PHASE-C NSUOT NGOM -+<U000168C8> /xf0/x96/xa3/x88 BAMUM LETTER PHASE-C NJEEEE -+<U000168C9> /xf0/x96/xa3/x89 BAMUM LETTER PHASE-C KET -+<U000168CA> /xf0/x96/xa3/x8a BAMUM LETTER PHASE-C NGGU -+<U000168CB> /xf0/x96/xa3/x8b BAMUM LETTER PHASE-C MAESI -+<U000168CC> /xf0/x96/xa3/x8c BAMUM LETTER PHASE-C MBUAEM -+<U000168CD> /xf0/x96/xa3/x8d BAMUM LETTER PHASE-C LU -+<U000168CE> /xf0/x96/xa3/x8e BAMUM LETTER PHASE-C KUT -+<U000168CF> /xf0/x96/xa3/x8f BAMUM LETTER PHASE-C NJAM -+<U000168D0> /xf0/x96/xa3/x90 BAMUM LETTER PHASE-C NGOM -+<U000168D1> /xf0/x96/xa3/x91 BAMUM LETTER PHASE-C WUP -+<U000168D2> /xf0/x96/xa3/x92 BAMUM LETTER PHASE-C NGGUEET -+<U000168D3> /xf0/x96/xa3/x93 BAMUM LETTER PHASE-C NSOM -+<U000168D4> /xf0/x96/xa3/x94 BAMUM LETTER PHASE-C NTEN -+<U000168D5> /xf0/x96/xa3/x95 BAMUM LETTER PHASE-C KUOP NKAARAE -+<U000168D6> /xf0/x96/xa3/x96 BAMUM LETTER PHASE-C NSUN -+<U000168D7> /xf0/x96/xa3/x97 BAMUM LETTER PHASE-C NDAM -+<U000168D8> /xf0/x96/xa3/x98 BAMUM LETTER PHASE-C MA NSIEE -+<U000168D9> /xf0/x96/xa3/x99 BAMUM LETTER PHASE-C YAA -+<U000168DA> /xf0/x96/xa3/x9a BAMUM LETTER PHASE-C NDAP -+<U000168DB> /xf0/x96/xa3/x9b BAMUM LETTER PHASE-C SHUEQ -+<U000168DC> /xf0/x96/xa3/x9c BAMUM LETTER PHASE-C SETFON -+<U000168DD> /xf0/x96/xa3/x9d BAMUM LETTER PHASE-C MBI -+<U000168DE> /xf0/x96/xa3/x9e BAMUM LETTER PHASE-C MAEMBA -+<U000168DF> /xf0/x96/xa3/x9f BAMUM LETTER PHASE-C MBANYI -+<U000168E0> /xf0/x96/xa3/xa0 BAMUM LETTER PHASE-C KEUSEUX -+<U000168E1> /xf0/x96/xa3/xa1 BAMUM LETTER PHASE-C MBEUX -+<U000168E2> /xf0/x96/xa3/xa2 BAMUM LETTER PHASE-C KEUM -+<U000168E3> /xf0/x96/xa3/xa3 BAMUM LETTER PHASE-C MBAA PICKET -+<U000168E4> /xf0/x96/xa3/xa4 BAMUM LETTER PHASE-C YUWOQ -+<U000168E5> /xf0/x96/xa3/xa5 BAMUM LETTER PHASE-C NJEUX -+<U000168E6> /xf0/x96/xa3/xa6 BAMUM LETTER PHASE-C MIEE -+<U000168E7> /xf0/x96/xa3/xa7 BAMUM LETTER PHASE-C MUAE -+<U000168E8> /xf0/x96/xa3/xa8 BAMUM LETTER PHASE-C SHIQ -+<U000168E9> /xf0/x96/xa3/xa9 BAMUM LETTER PHASE-C KEN LAW -+<U000168EA> /xf0/x96/xa3/xaa BAMUM LETTER PHASE-C KEN FATIGUE -+<U000168EB> /xf0/x96/xa3/xab BAMUM LETTER PHASE-C NGAQ -+<U000168EC> /xf0/x96/xa3/xac BAMUM LETTER PHASE-C NAQ -+<U000168ED> /xf0/x96/xa3/xad BAMUM LETTER PHASE-C LIQ -+<U000168EE> /xf0/x96/xa3/xae BAMUM LETTER PHASE-C PIN -+<U000168EF> /xf0/x96/xa3/xaf BAMUM LETTER PHASE-C PEN -+<U000168F0> /xf0/x96/xa3/xb0 BAMUM LETTER PHASE-C TET -+<U000168F1> /xf0/x96/xa3/xb1 BAMUM LETTER PHASE-D MBUO -+<U000168F2> /xf0/x96/xa3/xb2 BAMUM LETTER PHASE-D WAP -+<U000168F3> /xf0/x96/xa3/xb3 BAMUM LETTER PHASE-D NJI -+<U000168F4> /xf0/x96/xa3/xb4 BAMUM LETTER PHASE-D MFON -+<U000168F5> /xf0/x96/xa3/xb5 BAMUM LETTER PHASE-D NJIEE -+<U000168F6> /xf0/x96/xa3/xb6 BAMUM LETTER PHASE-D LIEE -+<U000168F7> /xf0/x96/xa3/xb7 BAMUM LETTER PHASE-D NJEUT -+<U000168F8> /xf0/x96/xa3/xb8 BAMUM LETTER PHASE-D NSHEE -+<U000168F9> /xf0/x96/xa3/xb9 BAMUM LETTER PHASE-D NGGAAMAE -+<U000168FA> /xf0/x96/xa3/xba BAMUM LETTER PHASE-D NYAM -+<U000168FB> /xf0/x96/xa3/xbb BAMUM LETTER PHASE-D WUAEN -+<U000168FC> /xf0/x96/xa3/xbc BAMUM LETTER PHASE-D NGKUN -+<U000168FD> /xf0/x96/xa3/xbd BAMUM LETTER PHASE-D SHEE -+<U000168FE> /xf0/x96/xa3/xbe BAMUM LETTER PHASE-D NGKAP -+<U000168FF> /xf0/x96/xa3/xbf BAMUM LETTER PHASE-D KEUAETMEUN -+<U00016900> /xf0/x96/xa4/x80 BAMUM LETTER PHASE-D TEUT -+<U00016901> /xf0/x96/xa4/x81 BAMUM LETTER PHASE-D SHEUAE -+<U00016902> /xf0/x96/xa4/x82 BAMUM LETTER PHASE-D NJAP -+<U00016903> /xf0/x96/xa4/x83 BAMUM LETTER PHASE-D SUE -+<U00016904> /xf0/x96/xa4/x84 BAMUM LETTER PHASE-D KET -+<U00016905> /xf0/x96/xa4/x85 BAMUM LETTER PHASE-D YAEMMAE -+<U00016906> /xf0/x96/xa4/x86 BAMUM LETTER PHASE-D KUOM -+<U00016907> /xf0/x96/xa4/x87 BAMUM LETTER PHASE-D SAP -+<U00016908> /xf0/x96/xa4/x88 BAMUM LETTER PHASE-D MFEUT -+<U00016909> /xf0/x96/xa4/x89 BAMUM LETTER PHASE-D NDEUX -+<U0001690A> /xf0/x96/xa4/x8a BAMUM LETTER PHASE-D MALEERI -+<U0001690B> /xf0/x96/xa4/x8b BAMUM LETTER PHASE-D MEUT -+<U0001690C> /xf0/x96/xa4/x8c BAMUM LETTER PHASE-D SEUAEQ -+<U0001690D> /xf0/x96/xa4/x8d BAMUM LETTER PHASE-D YEN -+<U0001690E> /xf0/x96/xa4/x8e BAMUM LETTER PHASE-D NJEUAEM -+<U0001690F> /xf0/x96/xa4/x8f BAMUM LETTER PHASE-D KEUOT MBUAE -+<U00016910> /xf0/x96/xa4/x90 BAMUM LETTER PHASE-D NGKEURI -+<U00016911> /xf0/x96/xa4/x91 BAMUM LETTER PHASE-D TU -+<U00016912> /xf0/x96/xa4/x92 BAMUM LETTER PHASE-D GHAA -+<U00016913> /xf0/x96/xa4/x93 BAMUM LETTER PHASE-D NGKYEE -+<U00016914> /xf0/x96/xa4/x94 BAMUM LETTER PHASE-D FEUFEUAET -+<U00016915> /xf0/x96/xa4/x95 BAMUM LETTER PHASE-D NDEE -+<U00016916> /xf0/x96/xa4/x96 BAMUM LETTER PHASE-D MGBOFUM -+<U00016917> /xf0/x96/xa4/x97 BAMUM LETTER PHASE-D LEUAEP -+<U00016918> /xf0/x96/xa4/x98 BAMUM LETTER PHASE-D NDON -+<U00016919> /xf0/x96/xa4/x99 BAMUM LETTER PHASE-D MONI -+<U0001691A> /xf0/x96/xa4/x9a BAMUM LETTER PHASE-D MGBEUN -+<U0001691B> /xf0/x96/xa4/x9b BAMUM LETTER PHASE-D PUUT -+<U0001691C> /xf0/x96/xa4/x9c BAMUM LETTER PHASE-D MGBIEE -+<U0001691D> /xf0/x96/xa4/x9d BAMUM LETTER PHASE-D MFO -+<U0001691E> /xf0/x96/xa4/x9e BAMUM LETTER PHASE-D LUM -+<U0001691F> /xf0/x96/xa4/x9f BAMUM LETTER PHASE-D NSIEEP -+<U00016920> /xf0/x96/xa4/xa0 BAMUM LETTER PHASE-D MBAA -+<U00016921> /xf0/x96/xa4/xa1 BAMUM LETTER PHASE-D KWAET -+<U00016922> /xf0/x96/xa4/xa2 BAMUM LETTER PHASE-D NYET -+<U00016923> /xf0/x96/xa4/xa3 BAMUM LETTER PHASE-D TEUAEN -+<U00016924> /xf0/x96/xa4/xa4 BAMUM LETTER PHASE-D SOT -+<U00016925> /xf0/x96/xa4/xa5 BAMUM LETTER PHASE-D YUWOQ -+<U00016926> /xf0/x96/xa4/xa6 BAMUM LETTER PHASE-D KEUM -+<U00016927> /xf0/x96/xa4/xa7 BAMUM LETTER PHASE-D RAEM -+<U00016928> /xf0/x96/xa4/xa8 BAMUM LETTER PHASE-D TEEEE -+<U00016929> /xf0/x96/xa4/xa9 BAMUM LETTER PHASE-D NGKEUAEQ -+<U0001692A> /xf0/x96/xa4/xaa BAMUM LETTER PHASE-D MFEUAE -+<U0001692B> /xf0/x96/xa4/xab BAMUM LETTER PHASE-D NSIEET -+<U0001692C> /xf0/x96/xa4/xac BAMUM LETTER PHASE-D KEUP -+<U0001692D> /xf0/x96/xa4/xad BAMUM LETTER PHASE-D PIP -+<U0001692E> /xf0/x96/xa4/xae BAMUM LETTER PHASE-D PEUTAE -+<U0001692F> /xf0/x96/xa4/xaf BAMUM LETTER PHASE-D NYUE -+<U00016930> /xf0/x96/xa4/xb0 BAMUM LETTER PHASE-D LET -+<U00016931> /xf0/x96/xa4/xb1 BAMUM LETTER PHASE-D NGGAAM -+<U00016932> /xf0/x96/xa4/xb2 BAMUM LETTER PHASE-D MFIEE -+<U00016933> /xf0/x96/xa4/xb3 BAMUM LETTER PHASE-D NGGWAEN -+<U00016934> /xf0/x96/xa4/xb4 BAMUM LETTER PHASE-D YUOM -+<U00016935> /xf0/x96/xa4/xb5 BAMUM LETTER PHASE-D PAP -+<U00016936> /xf0/x96/xa4/xb6 BAMUM LETTER PHASE-D YUOP -+<U00016937> /xf0/x96/xa4/xb7 BAMUM LETTER PHASE-D NDAM -+<U00016938> /xf0/x96/xa4/xb8 BAMUM LETTER PHASE-D NTEUM -+<U00016939> /xf0/x96/xa4/xb9 BAMUM LETTER PHASE-D SUAE -+<U0001693A> /xf0/x96/xa4/xba BAMUM LETTER PHASE-D KUN -+<U0001693B> /xf0/x96/xa4/xbb BAMUM LETTER PHASE-D NGGEUX -+<U0001693C> /xf0/x96/xa4/xbc BAMUM LETTER PHASE-D NGKIEE -+<U0001693D> /xf0/x96/xa4/xbd BAMUM LETTER PHASE-D TUOT -+<U0001693E> /xf0/x96/xa4/xbe BAMUM LETTER PHASE-D MEUN -+<U0001693F> /xf0/x96/xa4/xbf BAMUM LETTER PHASE-D KUQ -+<U00016940> /xf0/x96/xa5/x80 BAMUM LETTER PHASE-D NSUM -+<U00016941> /xf0/x96/xa5/x81 BAMUM LETTER PHASE-D TEUN -+<U00016942> /xf0/x96/xa5/x82 BAMUM LETTER PHASE-D MAENJET -+<U00016943> /xf0/x96/xa5/x83 BAMUM LETTER PHASE-D NGGAP -+<U00016944> /xf0/x96/xa5/x84 BAMUM LETTER PHASE-D LEUM -+<U00016945> /xf0/x96/xa5/x85 BAMUM LETTER PHASE-D NGGUOM -+<U00016946> /xf0/x96/xa5/x86 BAMUM LETTER PHASE-D NSHUT -+<U00016947> /xf0/x96/xa5/x87 BAMUM LETTER PHASE-D NJUEQ -+<U00016948> /xf0/x96/xa5/x88 BAMUM LETTER PHASE-D GHEUAE -+<U00016949> /xf0/x96/xa5/x89 BAMUM LETTER PHASE-D KU -+<U0001694A> /xf0/x96/xa5/x8a BAMUM LETTER PHASE-D REN OLD -+<U0001694B> /xf0/x96/xa5/x8b BAMUM LETTER PHASE-D TAE -+<U0001694C> /xf0/x96/xa5/x8c BAMUM LETTER PHASE-D TOQ -+<U0001694D> /xf0/x96/xa5/x8d BAMUM LETTER PHASE-D NYI -+<U0001694E> /xf0/x96/xa5/x8e BAMUM LETTER PHASE-D RII -+<U0001694F> /xf0/x96/xa5/x8f BAMUM LETTER PHASE-D LEEEE -+<U00016950> /xf0/x96/xa5/x90 BAMUM LETTER PHASE-D MEEEE -+<U00016951> /xf0/x96/xa5/x91 BAMUM LETTER PHASE-D M -+<U00016952> /xf0/x96/xa5/x92 BAMUM LETTER PHASE-D SUU -+<U00016953> /xf0/x96/xa5/x93 BAMUM LETTER PHASE-D MU -+<U00016954> /xf0/x96/xa5/x94 BAMUM LETTER PHASE-D SHII -+<U00016955> /xf0/x96/xa5/x95 BAMUM LETTER PHASE-D SHEUX -+<U00016956> /xf0/x96/xa5/x96 BAMUM LETTER PHASE-D KYEE -+<U00016957> /xf0/x96/xa5/x97 BAMUM LETTER PHASE-D NU -+<U00016958> /xf0/x96/xa5/x98 BAMUM LETTER PHASE-D SHU -+<U00016959> /xf0/x96/xa5/x99 BAMUM LETTER PHASE-D NTEE -+<U0001695A> /xf0/x96/xa5/x9a BAMUM LETTER PHASE-D PEE -+<U0001695B> /xf0/x96/xa5/x9b BAMUM LETTER PHASE-D NI -+<U0001695C> /xf0/x96/xa5/x9c BAMUM LETTER PHASE-D SHOQ -+<U0001695D> /xf0/x96/xa5/x9d BAMUM LETTER PHASE-D PUQ -+<U0001695E> /xf0/x96/xa5/x9e BAMUM LETTER PHASE-D MVOP -+<U0001695F> /xf0/x96/xa5/x9f BAMUM LETTER PHASE-D LOQ -+<U00016960> /xf0/x96/xa5/xa0 BAMUM LETTER PHASE-D REN MUCH -+<U00016961> /xf0/x96/xa5/xa1 BAMUM LETTER PHASE-D TI -+<U00016962> /xf0/x96/xa5/xa2 BAMUM LETTER PHASE-D NTUU -+<U00016963> /xf0/x96/xa5/xa3 BAMUM LETTER PHASE-D MBAA SEVEN -+<U00016964> /xf0/x96/xa5/xa4 BAMUM LETTER PHASE-D SAQ -+<U00016965> /xf0/x96/xa5/xa5 BAMUM LETTER PHASE-D FAA -+<U00016966> /xf0/x96/xa5/xa6 BAMUM LETTER PHASE-E NDAP -+<U00016967> /xf0/x96/xa5/xa7 BAMUM LETTER PHASE-E TOON -+<U00016968> /xf0/x96/xa5/xa8 BAMUM LETTER PHASE-E MBEUM -+<U00016969> /xf0/x96/xa5/xa9 BAMUM LETTER PHASE-E LAP -+<U0001696A> /xf0/x96/xa5/xaa BAMUM LETTER PHASE-E VOM -+<U0001696B> /xf0/x96/xa5/xab BAMUM LETTER PHASE-E LOON -+<U0001696C> /xf0/x96/xa5/xac BAMUM LETTER PHASE-E PAA -+<U0001696D> /xf0/x96/xa5/xad BAMUM LETTER PHASE-E SOM -+<U0001696E> /xf0/x96/xa5/xae BAMUM LETTER PHASE-E RAQ -+<U0001696F> /xf0/x96/xa5/xaf BAMUM LETTER PHASE-E NSHUOP -+<U00016970> /xf0/x96/xa5/xb0 BAMUM LETTER PHASE-E NDUN -+<U00016971> /xf0/x96/xa5/xb1 BAMUM LETTER PHASE-E PUAE -+<U00016972> /xf0/x96/xa5/xb2 BAMUM LETTER PHASE-E TAM -+<U00016973> /xf0/x96/xa5/xb3 BAMUM LETTER PHASE-E NGKA -+<U00016974> /xf0/x96/xa5/xb4 BAMUM LETTER PHASE-E KPEUX -+<U00016975> /xf0/x96/xa5/xb5 BAMUM LETTER PHASE-E WUO -+<U00016976> /xf0/x96/xa5/xb6 BAMUM LETTER PHASE-E SEE -+<U00016977> /xf0/x96/xa5/xb7 BAMUM LETTER PHASE-E NGGEUAET -+<U00016978> /xf0/x96/xa5/xb8 BAMUM LETTER PHASE-E PAAM -+<U00016979> /xf0/x96/xa5/xb9 BAMUM LETTER PHASE-E TOO -+<U0001697A> /xf0/x96/xa5/xba BAMUM LETTER PHASE-E KUOP -+<U0001697B> /xf0/x96/xa5/xbb BAMUM LETTER PHASE-E LOM -+<U0001697C> /xf0/x96/xa5/xbc BAMUM LETTER PHASE-E NSHIEE -+<U0001697D> /xf0/x96/xa5/xbd BAMUM LETTER PHASE-E NGOP -+<U0001697E> /xf0/x96/xa5/xbe BAMUM LETTER PHASE-E MAEM -+<U0001697F> /xf0/x96/xa5/xbf BAMUM LETTER PHASE-E NGKEUX -+<U00016980> /xf0/x96/xa6/x80 BAMUM LETTER PHASE-E NGOQ -+<U00016981> /xf0/x96/xa6/x81 BAMUM LETTER PHASE-E NSHUE -+<U00016982> /xf0/x96/xa6/x82 BAMUM LETTER PHASE-E RIMGBA -+<U00016983> /xf0/x96/xa6/x83 BAMUM LETTER PHASE-E NJEUX -+<U00016984> /xf0/x96/xa6/x84 BAMUM LETTER PHASE-E PEEM -+<U00016985> /xf0/x96/xa6/x85 BAMUM LETTER PHASE-E SAA -+<U00016986> /xf0/x96/xa6/x86 BAMUM LETTER PHASE-E NGGURAE -+<U00016987> /xf0/x96/xa6/x87 BAMUM LETTER PHASE-E MGBA -+<U00016988> /xf0/x96/xa6/x88 BAMUM LETTER PHASE-E GHEUX -+<U00016989> /xf0/x96/xa6/x89 BAMUM LETTER PHASE-E NGKEUAEM -+<U0001698A> /xf0/x96/xa6/x8a BAMUM LETTER PHASE-E NJAEMLI -+<U0001698B> /xf0/x96/xa6/x8b BAMUM LETTER PHASE-E MAP -+<U0001698C> /xf0/x96/xa6/x8c BAMUM LETTER PHASE-E LOOT -+<U0001698D> /xf0/x96/xa6/x8d BAMUM LETTER PHASE-E NGGEEEE -+<U0001698E> /xf0/x96/xa6/x8e BAMUM LETTER PHASE-E NDIQ -+<U0001698F> /xf0/x96/xa6/x8f BAMUM LETTER PHASE-E TAEN NTEUM -+<U00016990> /xf0/x96/xa6/x90 BAMUM LETTER PHASE-E SET -+<U00016991> /xf0/x96/xa6/x91 BAMUM LETTER PHASE-E PUM -+<U00016992> /xf0/x96/xa6/x92 BAMUM LETTER PHASE-E NDAA SOFTNESS -+<U00016993> /xf0/x96/xa6/x93 BAMUM LETTER PHASE-E NGGUAESHAE NYAM -+<U00016994> /xf0/x96/xa6/x94 BAMUM LETTER PHASE-E YIEE -+<U00016995> /xf0/x96/xa6/x95 BAMUM LETTER PHASE-E GHEUN -+<U00016996> /xf0/x96/xa6/x96 BAMUM LETTER PHASE-E TUAE -+<U00016997> /xf0/x96/xa6/x97 BAMUM LETTER PHASE-E YEUAE -+<U00016998> /xf0/x96/xa6/x98 BAMUM LETTER PHASE-E PO -+<U00016999> /xf0/x96/xa6/x99 BAMUM LETTER PHASE-E TUMAE -+<U0001699A> /xf0/x96/xa6/x9a BAMUM LETTER PHASE-E KEUAE -+<U0001699B> /xf0/x96/xa6/x9b BAMUM LETTER PHASE-E SUAEN -+<U0001699C> /xf0/x96/xa6/x9c BAMUM LETTER PHASE-E TEUAEQ -+<U0001699D> /xf0/x96/xa6/x9d BAMUM LETTER PHASE-E VEUAE -+<U0001699E> /xf0/x96/xa6/x9e BAMUM LETTER PHASE-E WEUX -+<U0001699F> /xf0/x96/xa6/x9f BAMUM LETTER PHASE-E LAAM -+<U000169A0> /xf0/x96/xa6/xa0 BAMUM LETTER PHASE-E PU -+<U000169A1> /xf0/x96/xa6/xa1 BAMUM LETTER PHASE-E TAAQ -+<U000169A2> /xf0/x96/xa6/xa2 BAMUM LETTER PHASE-E GHAAMAE -+<U000169A3> /xf0/x96/xa6/xa3 BAMUM LETTER PHASE-E NGEUREUT -+<U000169A4> /xf0/x96/xa6/xa4 BAMUM LETTER PHASE-E SHEUAEQ -+<U000169A5> /xf0/x96/xa6/xa5 BAMUM LETTER PHASE-E MGBEN -+<U000169A6> /xf0/x96/xa6/xa6 BAMUM LETTER PHASE-E MBEE -+<U000169A7> /xf0/x96/xa6/xa7 BAMUM LETTER PHASE-E NZAQ -+<U000169A8> /xf0/x96/xa6/xa8 BAMUM LETTER PHASE-E NKOM -+<U000169A9> /xf0/x96/xa6/xa9 BAMUM LETTER PHASE-E GBET -+<U000169AA> /xf0/x96/xa6/xaa BAMUM LETTER PHASE-E TUM -+<U000169AB> /xf0/x96/xa6/xab BAMUM LETTER PHASE-E KUET -+<U000169AC> /xf0/x96/xa6/xac BAMUM LETTER PHASE-E YAP -+<U000169AD> /xf0/x96/xa6/xad BAMUM LETTER PHASE-E NYI CLEAVER -+<U000169AE> /xf0/x96/xa6/xae BAMUM LETTER PHASE-E YIT -+<U000169AF> /xf0/x96/xa6/xaf BAMUM LETTER PHASE-E MFEUQ -+<U000169B0> /xf0/x96/xa6/xb0 BAMUM LETTER PHASE-E NDIAQ -+<U000169B1> /xf0/x96/xa6/xb1 BAMUM LETTER PHASE-E PIEEQ -+<U000169B2> /xf0/x96/xa6/xb2 BAMUM LETTER PHASE-E YUEQ -+<U000169B3> /xf0/x96/xa6/xb3 BAMUM LETTER PHASE-E LEUAEM -+<U000169B4> /xf0/x96/xa6/xb4 BAMUM LETTER PHASE-E FUE -+<U000169B5> /xf0/x96/xa6/xb5 BAMUM LETTER PHASE-E GBEUX -+<U000169B6> /xf0/x96/xa6/xb6 BAMUM LETTER PHASE-E NGKUP -+<U000169B7> /xf0/x96/xa6/xb7 BAMUM LETTER PHASE-E KET -+<U000169B8> /xf0/x96/xa6/xb8 BAMUM LETTER PHASE-E MAE -+<U000169B9> /xf0/x96/xa6/xb9 BAMUM LETTER PHASE-E NGKAAMI -+<U000169BA> /xf0/x96/xa6/xba BAMUM LETTER PHASE-E GHET -+<U000169BB> /xf0/x96/xa6/xbb BAMUM LETTER PHASE-E FA -+<U000169BC> /xf0/x96/xa6/xbc BAMUM LETTER PHASE-E NTUM -+<U000169BD> /xf0/x96/xa6/xbd BAMUM LETTER PHASE-E PEUT -+<U000169BE> /xf0/x96/xa6/xbe BAMUM LETTER PHASE-E YEUM -+<U000169BF> /xf0/x96/xa6/xbf BAMUM LETTER PHASE-E NGGEUAE -+<U000169C0> /xf0/x96/xa7/x80 BAMUM LETTER PHASE-E NYI BETWEEN -+<U000169C1> /xf0/x96/xa7/x81 BAMUM LETTER PHASE-E NZUQ -+<U000169C2> /xf0/x96/xa7/x82 BAMUM LETTER PHASE-E POON -+<U000169C3> /xf0/x96/xa7/x83 BAMUM LETTER PHASE-E MIEE -+<U000169C4> /xf0/x96/xa7/x84 BAMUM LETTER PHASE-E FUET -+<U000169C5> /xf0/x96/xa7/x85 BAMUM LETTER PHASE-E NAE -+<U000169C6> /xf0/x96/xa7/x86 BAMUM LETTER PHASE-E MUAE -+<U000169C7> /xf0/x96/xa7/x87 BAMUM LETTER PHASE-E GHEUAE -+<U000169C8> /xf0/x96/xa7/x88 BAMUM LETTER PHASE-E FU I -+<U000169C9> /xf0/x96/xa7/x89 BAMUM LETTER PHASE-E MVI -+<U000169CA> /xf0/x96/xa7/x8a BAMUM LETTER PHASE-E PUAQ -+<U000169CB> /xf0/x96/xa7/x8b BAMUM LETTER PHASE-E NGKUM -+<U000169CC> /xf0/x96/xa7/x8c BAMUM LETTER PHASE-E KUT -+<U000169CD> /xf0/x96/xa7/x8d BAMUM LETTER PHASE-E PIET -+<U000169CE> /xf0/x96/xa7/x8e BAMUM LETTER PHASE-E NTAP -+<U000169CF> /xf0/x96/xa7/x8f BAMUM LETTER PHASE-E YEUAET -+<U000169D0> /xf0/x96/xa7/x90 BAMUM LETTER PHASE-E NGGUP -+<U000169D1> /xf0/x96/xa7/x91 BAMUM LETTER PHASE-E PA PEOPLE -+<U000169D2> /xf0/x96/xa7/x92 BAMUM LETTER PHASE-E FU CALL -+<U000169D3> /xf0/x96/xa7/x93 BAMUM LETTER PHASE-E FOM -+<U000169D4> /xf0/x96/xa7/x94 BAMUM LETTER PHASE-E NJEE -+<U000169D5> /xf0/x96/xa7/x95 BAMUM LETTER PHASE-E A -+<U000169D6> /xf0/x96/xa7/x96 BAMUM LETTER PHASE-E TOQ -+<U000169D7> /xf0/x96/xa7/x97 BAMUM LETTER PHASE-E O -+<U000169D8> /xf0/x96/xa7/x98 BAMUM LETTER PHASE-E I -+<U000169D9> /xf0/x96/xa7/x99 BAMUM LETTER PHASE-E LAQ -+<U000169DA> /xf0/x96/xa7/x9a BAMUM LETTER PHASE-E PA PLURAL -+<U000169DB> /xf0/x96/xa7/x9b BAMUM LETTER PHASE-E TAA -+<U000169DC> /xf0/x96/xa7/x9c BAMUM LETTER PHASE-E TAQ -+<U000169DD> /xf0/x96/xa7/x9d BAMUM LETTER PHASE-E NDAA MY HOUSE -+<U000169DE> /xf0/x96/xa7/x9e BAMUM LETTER PHASE-E SHIQ -+<U000169DF> /xf0/x96/xa7/x9f BAMUM LETTER PHASE-E YEUX -+<U000169E0> /xf0/x96/xa7/xa0 BAMUM LETTER PHASE-E NGUAE -+<U000169E1> /xf0/x96/xa7/xa1 BAMUM LETTER PHASE-E YUAEN -+<U000169E2> /xf0/x96/xa7/xa2 BAMUM LETTER PHASE-E YOQ SWIMMING -+<U000169E3> /xf0/x96/xa7/xa3 BAMUM LETTER PHASE-E YOQ COVER -+<U000169E4> /xf0/x96/xa7/xa4 BAMUM LETTER PHASE-E YUQ -+<U000169E5> /xf0/x96/xa7/xa5 BAMUM LETTER PHASE-E YUN -+<U000169E6> /xf0/x96/xa7/xa6 BAMUM LETTER PHASE-E KEUX -+<U000169E7> /xf0/x96/xa7/xa7 BAMUM LETTER PHASE-E PEUX -+<U000169E8> /xf0/x96/xa7/xa8 BAMUM LETTER PHASE-E NJEE EPOCH -+<U000169E9> /xf0/x96/xa7/xa9 BAMUM LETTER PHASE-E PUE -+<U000169EA> /xf0/x96/xa7/xaa BAMUM LETTER PHASE-E WUE -+<U000169EB> /xf0/x96/xa7/xab BAMUM LETTER PHASE-E FEE -+<U000169EC> /xf0/x96/xa7/xac BAMUM LETTER PHASE-E VEE -+<U000169ED> /xf0/x96/xa7/xad BAMUM LETTER PHASE-E LU -+<U000169EE> /xf0/x96/xa7/xae BAMUM LETTER PHASE-E MI -+<U000169EF> /xf0/x96/xa7/xaf BAMUM LETTER PHASE-E REUX -+<U000169F0> /xf0/x96/xa7/xb0 BAMUM LETTER PHASE-E RAE -+<U000169F1> /xf0/x96/xa7/xb1 BAMUM LETTER PHASE-E NGUAET -+<U000169F2> /xf0/x96/xa7/xb2 BAMUM LETTER PHASE-E NGA -+<U000169F3> /xf0/x96/xa7/xb3 BAMUM LETTER PHASE-E SHO -+<U000169F4> /xf0/x96/xa7/xb4 BAMUM LETTER PHASE-E SHOQ -+<U000169F5> /xf0/x96/xa7/xb5 BAMUM LETTER PHASE-E FU REMEDY -+<U000169F6> /xf0/x96/xa7/xb6 BAMUM LETTER PHASE-E NA -+<U000169F7> /xf0/x96/xa7/xb7 BAMUM LETTER PHASE-E PI -+<U000169F8> /xf0/x96/xa7/xb8 BAMUM LETTER PHASE-E LOQ -+<U000169F9> /xf0/x96/xa7/xb9 BAMUM LETTER PHASE-E KO -+<U000169FA> /xf0/x96/xa7/xba BAMUM LETTER PHASE-E MEN -+<U000169FB> /xf0/x96/xa7/xbb BAMUM LETTER PHASE-E MA -+<U000169FC> /xf0/x96/xa7/xbc BAMUM LETTER PHASE-E MAQ -+<U000169FD> /xf0/x96/xa7/xbd BAMUM LETTER PHASE-E TEU -+<U000169FE> /xf0/x96/xa7/xbe BAMUM LETTER PHASE-E KI -+<U000169FF> /xf0/x96/xa7/xbf BAMUM LETTER PHASE-E MON -+<U00016A00> /xf0/x96/xa8/x80 BAMUM LETTER PHASE-E TEN -+<U00016A01> /xf0/x96/xa8/x81 BAMUM LETTER PHASE-E FAQ -+<U00016A02> /xf0/x96/xa8/x82 BAMUM LETTER PHASE-E GHOM -+<U00016A03> /xf0/x96/xa8/x83 BAMUM LETTER PHASE-F KA -+<U00016A04> /xf0/x96/xa8/x84 BAMUM LETTER PHASE-F U -+<U00016A05> /xf0/x96/xa8/x85 BAMUM LETTER PHASE-F KU -+<U00016A06> /xf0/x96/xa8/x86 BAMUM LETTER PHASE-F EE -+<U00016A07> /xf0/x96/xa8/x87 BAMUM LETTER PHASE-F REE -+<U00016A08> /xf0/x96/xa8/x88 BAMUM LETTER PHASE-F TAE -+<U00016A09> /xf0/x96/xa8/x89 BAMUM LETTER PHASE-F NYI -+<U00016A0A> /xf0/x96/xa8/x8a BAMUM LETTER PHASE-F LA -+<U00016A0B> /xf0/x96/xa8/x8b BAMUM LETTER PHASE-F RII -+<U00016A0C> /xf0/x96/xa8/x8c BAMUM LETTER PHASE-F RIEE -+<U00016A0D> /xf0/x96/xa8/x8d BAMUM LETTER PHASE-F MEEEE -+<U00016A0E> /xf0/x96/xa8/x8e BAMUM LETTER PHASE-F TAA -+<U00016A0F> /xf0/x96/xa8/x8f BAMUM LETTER PHASE-F NDAA -+<U00016A10> /xf0/x96/xa8/x90 BAMUM LETTER PHASE-F NJAEM -+<U00016A11> /xf0/x96/xa8/x91 BAMUM LETTER PHASE-F M -+<U00016A12> /xf0/x96/xa8/x92 BAMUM LETTER PHASE-F SUU -+<U00016A13> /xf0/x96/xa8/x93 BAMUM LETTER PHASE-F SHII -+<U00016A14> /xf0/x96/xa8/x94 BAMUM LETTER PHASE-F SI -+<U00016A15> /xf0/x96/xa8/x95 BAMUM LETTER PHASE-F SEUX -+<U00016A16> /xf0/x96/xa8/x96 BAMUM LETTER PHASE-F KYEE -+<U00016A17> /xf0/x96/xa8/x97 BAMUM LETTER PHASE-F KET -+<U00016A18> /xf0/x96/xa8/x98 BAMUM LETTER PHASE-F NUAE -+<U00016A19> /xf0/x96/xa8/x99 BAMUM LETTER PHASE-F NU -+<U00016A1A> /xf0/x96/xa8/x9a BAMUM LETTER PHASE-F NJUAE -+<U00016A1B> /xf0/x96/xa8/x9b BAMUM LETTER PHASE-F YOQ -+<U00016A1C> /xf0/x96/xa8/x9c BAMUM LETTER PHASE-F SHU -+<U00016A1D> /xf0/x96/xa8/x9d BAMUM LETTER PHASE-F YA -+<U00016A1E> /xf0/x96/xa8/x9e BAMUM LETTER PHASE-F NSHA -+<U00016A1F> /xf0/x96/xa8/x9f BAMUM LETTER PHASE-F PEUX -+<U00016A20> /xf0/x96/xa8/xa0 BAMUM LETTER PHASE-F NTEE -+<U00016A21> /xf0/x96/xa8/xa1 BAMUM LETTER PHASE-F WUE -+<U00016A22> /xf0/x96/xa8/xa2 BAMUM LETTER PHASE-F PEE -+<U00016A23> /xf0/x96/xa8/xa3 BAMUM LETTER PHASE-F RU -+<U00016A24> /xf0/x96/xa8/xa4 BAMUM LETTER PHASE-F NI -+<U00016A25> /xf0/x96/xa8/xa5 BAMUM LETTER PHASE-F REUX -+<U00016A26> /xf0/x96/xa8/xa6 BAMUM LETTER PHASE-F KEN -+<U00016A27> /xf0/x96/xa8/xa7 BAMUM LETTER PHASE-F NGKWAEN -+<U00016A28> /xf0/x96/xa8/xa8 BAMUM LETTER PHASE-F NGGA -+<U00016A29> /xf0/x96/xa8/xa9 BAMUM LETTER PHASE-F SHO -+<U00016A2A> /xf0/x96/xa8/xaa BAMUM LETTER PHASE-F PUAE -+<U00016A2B> /xf0/x96/xa8/xab BAMUM LETTER PHASE-F FOM -+<U00016A2C> /xf0/x96/xa8/xac BAMUM LETTER PHASE-F WA -+<U00016A2D> /xf0/x96/xa8/xad BAMUM LETTER PHASE-F LI -+<U00016A2E> /xf0/x96/xa8/xae BAMUM LETTER PHASE-F LOQ -+<U00016A2F> /xf0/x96/xa8/xaf BAMUM LETTER PHASE-F KO -+<U00016A30> /xf0/x96/xa8/xb0 BAMUM LETTER PHASE-F MBEN -+<U00016A31> /xf0/x96/xa8/xb1 BAMUM LETTER PHASE-F REN -+<U00016A32> /xf0/x96/xa8/xb2 BAMUM LETTER PHASE-F MA -+<U00016A33> /xf0/x96/xa8/xb3 BAMUM LETTER PHASE-F MO -+<U00016A34> /xf0/x96/xa8/xb4 BAMUM LETTER PHASE-F MBAA -+<U00016A35> /xf0/x96/xa8/xb5 BAMUM LETTER PHASE-F TET -+<U00016A36> /xf0/x96/xa8/xb6 BAMUM LETTER PHASE-F KPA -+<U00016A37> /xf0/x96/xa8/xb7 BAMUM LETTER PHASE-F SAMBA -+<U00016A38> /xf0/x96/xa8/xb8 BAMUM LETTER PHASE-F VUEQ -+<U0001B000> /xf0/x9b/x80/x80 KATAKANA LETTER ARCHAIC E -+<U0001B001> /xf0/x9b/x80/x81 HIRAGANA LETTER ARCHAIC YE - <U0001D000> /xf0/x9d/x80/x80 BYZANTINE MUSICAL SYMBOL PSILI - <U0001D001> /xf0/x9d/x80/x81 BYZANTINE MUSICAL SYMBOL DASEIA - <U0001D002> /xf0/x9d/x80/x82 BYZANTINE MUSICAL SYMBOL PERISPOMENI -@@ -30151,6 +33445,1091 @@ CHARMAP - <U0001F091> /xf0/x9f/x82/x91 DOMINO TILE VERTICAL-06-04 - <U0001F092> /xf0/x9f/x82/x92 DOMINO TILE VERTICAL-06-05 - <U0001F093> /xf0/x9f/x82/x93 DOMINO TILE VERTICAL-06-06 -+<U0001F0A0> /xf0/x9f/x82/xa0 PLAYING CARD BACK -+<U0001F0A1> /xf0/x9f/x82/xa1 PLAYING CARD ACE OF SPADES -+<U0001F0A2> /xf0/x9f/x82/xa2 PLAYING CARD TWO OF SPADES -+<U0001F0A3> /xf0/x9f/x82/xa3 PLAYING CARD THREE OF SPADES -+<U0001F0A4> /xf0/x9f/x82/xa4 PLAYING CARD FOUR OF SPADES -+<U0001F0A5> /xf0/x9f/x82/xa5 PLAYING CARD FIVE OF SPADES -+<U0001F0A6> /xf0/x9f/x82/xa6 PLAYING CARD SIX OF SPADES -+<U0001F0A7> /xf0/x9f/x82/xa7 PLAYING CARD SEVEN OF SPADES -+<U0001F0A8> /xf0/x9f/x82/xa8 PLAYING CARD EIGHT OF SPADES -+<U0001F0A9> /xf0/x9f/x82/xa9 PLAYING CARD NINE OF SPADES -+<U0001F0AA> /xf0/x9f/x82/xaa PLAYING CARD TEN OF SPADES -+<U0001F0AB> /xf0/x9f/x82/xab PLAYING CARD JACK OF SPADES -+<U0001F0AC> /xf0/x9f/x82/xac PLAYING CARD KNIGHT OF SPADES -+<U0001F0AD> /xf0/x9f/x82/xad PLAYING CARD QUEEN OF SPADES -+<U0001F0AE> /xf0/x9f/x82/xae PLAYING CARD KING OF SPADES -+<U0001F0B1> /xf0/x9f/x82/xb1 PLAYING CARD ACE OF HEARTS -+<U0001F0B2> /xf0/x9f/x82/xb2 PLAYING CARD TWO OF HEARTS -+<U0001F0B3> /xf0/x9f/x82/xb3 PLAYING CARD THREE OF HEARTS -+<U0001F0B4> /xf0/x9f/x82/xb4 PLAYING CARD FOUR OF HEARTS -+<U0001F0B5> /xf0/x9f/x82/xb5 PLAYING CARD FIVE OF HEARTS -+<U0001F0B6> /xf0/x9f/x82/xb6 PLAYING CARD SIX OF HEARTS -+<U0001F0B7> /xf0/x9f/x82/xb7 PLAYING CARD SEVEN OF HEARTS -+<U0001F0B8> /xf0/x9f/x82/xb8 PLAYING CARD EIGHT OF HEARTS -+<U0001F0B9> /xf0/x9f/x82/xb9 PLAYING CARD NINE OF HEARTS -+<U0001F0BA> /xf0/x9f/x82/xba PLAYING CARD TEN OF HEARTS -+<U0001F0BB> /xf0/x9f/x82/xbb PLAYING CARD JACK OF HEARTS -+<U0001F0BC> /xf0/x9f/x82/xbc PLAYING CARD KNIGHT OF HEARTS -+<U0001F0BD> /xf0/x9f/x82/xbd PLAYING CARD QUEEN OF HEARTS -+<U0001F0BE> /xf0/x9f/x82/xbe PLAYING CARD KING OF HEARTS -+<U0001F0C1> /xf0/x9f/x83/x81 PLAYING CARD ACE OF DIAMONDS -+<U0001F0C2> /xf0/x9f/x83/x82 PLAYING CARD TWO OF DIAMONDS -+<U0001F0C3> /xf0/x9f/x83/x83 PLAYING CARD THREE OF DIAMONDS -+<U0001F0C4> /xf0/x9f/x83/x84 PLAYING CARD FOUR OF DIAMONDS -+<U0001F0C5> /xf0/x9f/x83/x85 PLAYING CARD FIVE OF DIAMONDS -+<U0001F0C6> /xf0/x9f/x83/x86 PLAYING CARD SIX OF DIAMONDS -+<U0001F0C7> /xf0/x9f/x83/x87 PLAYING CARD SEVEN OF DIAMONDS -+<U0001F0C8> /xf0/x9f/x83/x88 PLAYING CARD EIGHT OF DIAMONDS -+<U0001F0C9> /xf0/x9f/x83/x89 PLAYING CARD NINE OF DIAMONDS -+<U0001F0CA> /xf0/x9f/x83/x8a PLAYING CARD TEN OF DIAMONDS -+<U0001F0CB> /xf0/x9f/x83/x8b PLAYING CARD JACK OF DIAMONDS -+<U0001F0CC> /xf0/x9f/x83/x8c PLAYING CARD KNIGHT OF DIAMONDS -+<U0001F0CD> /xf0/x9f/x83/x8d PLAYING CARD QUEEN OF DIAMONDS -+<U0001F0CE> /xf0/x9f/x83/x8e PLAYING CARD KING OF DIAMONDS -+<U0001F0CF> /xf0/x9f/x83/x8f PLAYING CARD BLACK JOKER -+<U0001F0D1> /xf0/x9f/x83/x91 PLAYING CARD ACE OF CLUBS -+<U0001F0D2> /xf0/x9f/x83/x92 PLAYING CARD TWO OF CLUBS -+<U0001F0D3> /xf0/x9f/x83/x93 PLAYING CARD THREE OF CLUBS -+<U0001F0D4> /xf0/x9f/x83/x94 PLAYING CARD FOUR OF CLUBS -+<U0001F0D5> /xf0/x9f/x83/x95 PLAYING CARD FIVE OF CLUBS -+<U0001F0D6> /xf0/x9f/x83/x96 PLAYING CARD SIX OF CLUBS -+<U0001F0D7> /xf0/x9f/x83/x97 PLAYING CARD SEVEN OF CLUBS -+<U0001F0D8> /xf0/x9f/x83/x98 PLAYING CARD EIGHT OF CLUBS -+<U0001F0D9> /xf0/x9f/x83/x99 PLAYING CARD NINE OF CLUBS -+<U0001F0DA> /xf0/x9f/x83/x9a PLAYING CARD TEN OF CLUBS -+<U0001F0DB> /xf0/x9f/x83/x9b PLAYING CARD JACK OF CLUBS -+<U0001F0DC> /xf0/x9f/x83/x9c PLAYING CARD KNIGHT OF CLUBS -+<U0001F0DD> /xf0/x9f/x83/x9d PLAYING CARD QUEEN OF CLUBS -+<U0001F0DE> /xf0/x9f/x83/x9e PLAYING CARD KING OF CLUBS -+<U0001F0DF> /xf0/x9f/x83/x9f PLAYING CARD WHITE JOKER -+<U0001F100> /xf0/x9f/x84/x80 DIGIT ZERO FULL STOP -+<U0001F101> /xf0/x9f/x84/x81 DIGIT ZERO COMMA -+<U0001F102> /xf0/x9f/x84/x82 DIGIT ONE COMMA -+<U0001F103> /xf0/x9f/x84/x83 DIGIT TWO COMMA -+<U0001F104> /xf0/x9f/x84/x84 DIGIT THREE COMMA -+<U0001F105> /xf0/x9f/x84/x85 DIGIT FOUR COMMA -+<U0001F106> /xf0/x9f/x84/x86 DIGIT FIVE COMMA -+<U0001F107> /xf0/x9f/x84/x87 DIGIT SIX COMMA -+<U0001F108> /xf0/x9f/x84/x88 DIGIT SEVEN COMMA -+<U0001F109> /xf0/x9f/x84/x89 DIGIT EIGHT COMMA -+<U0001F10A> /xf0/x9f/x84/x8a DIGIT NINE COMMA -+<U0001F110> /xf0/x9f/x84/x90 PARENTHESIZED LATIN CAPITAL LETTER A -+<U0001F111> /xf0/x9f/x84/x91 PARENTHESIZED LATIN CAPITAL LETTER B -+<U0001F112> /xf0/x9f/x84/x92 PARENTHESIZED LATIN CAPITAL LETTER C -+<U0001F113> /xf0/x9f/x84/x93 PARENTHESIZED LATIN CAPITAL LETTER D -+<U0001F114> /xf0/x9f/x84/x94 PARENTHESIZED LATIN CAPITAL LETTER E -+<U0001F115> /xf0/x9f/x84/x95 PARENTHESIZED LATIN CAPITAL LETTER F -+<U0001F116> /xf0/x9f/x84/x96 PARENTHESIZED LATIN CAPITAL LETTER G -+<U0001F117> /xf0/x9f/x84/x97 PARENTHESIZED LATIN CAPITAL LETTER H -+<U0001F118> /xf0/x9f/x84/x98 PARENTHESIZED LATIN CAPITAL LETTER I -+<U0001F119> /xf0/x9f/x84/x99 PARENTHESIZED LATIN CAPITAL LETTER J -+<U0001F11A> /xf0/x9f/x84/x9a PARENTHESIZED LATIN CAPITAL LETTER K -+<U0001F11B> /xf0/x9f/x84/x9b PARENTHESIZED LATIN CAPITAL LETTER L -+<U0001F11C> /xf0/x9f/x84/x9c PARENTHESIZED LATIN CAPITAL LETTER M -+<U0001F11D> /xf0/x9f/x84/x9d PARENTHESIZED LATIN CAPITAL LETTER N -+<U0001F11E> /xf0/x9f/x84/x9e PARENTHESIZED LATIN CAPITAL LETTER O -+<U0001F11F> /xf0/x9f/x84/x9f PARENTHESIZED LATIN CAPITAL LETTER P -+<U0001F120> /xf0/x9f/x84/xa0 PARENTHESIZED LATIN CAPITAL LETTER Q -+<U0001F121> /xf0/x9f/x84/xa1 PARENTHESIZED LATIN CAPITAL LETTER R -+<U0001F122> /xf0/x9f/x84/xa2 PARENTHESIZED LATIN CAPITAL LETTER S -+<U0001F123> /xf0/x9f/x84/xa3 PARENTHESIZED LATIN CAPITAL LETTER T -+<U0001F124> /xf0/x9f/x84/xa4 PARENTHESIZED LATIN CAPITAL LETTER U -+<U0001F125> /xf0/x9f/x84/xa5 PARENTHESIZED LATIN CAPITAL LETTER V -+<U0001F126> /xf0/x9f/x84/xa6 PARENTHESIZED LATIN CAPITAL LETTER W -+<U0001F127> /xf0/x9f/x84/xa7 PARENTHESIZED LATIN CAPITAL LETTER X -+<U0001F128> /xf0/x9f/x84/xa8 PARENTHESIZED LATIN CAPITAL LETTER Y -+<U0001F129> /xf0/x9f/x84/xa9 PARENTHESIZED LATIN CAPITAL LETTER Z -+<U0001F12A> /xf0/x9f/x84/xaa TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S -+<U0001F12B> /xf0/x9f/x84/xab CIRCLED ITALIC LATIN CAPITAL LETTER C -+<U0001F12C> /xf0/x9f/x84/xac CIRCLED ITALIC LATIN CAPITAL LETTER R -+<U0001F12D> /xf0/x9f/x84/xad CIRCLED CD -+<U0001F12E> /xf0/x9f/x84/xae CIRCLED WZ -+<U0001F130> /xf0/x9f/x84/xb0 SQUARED LATIN CAPITAL LETTER A -+<U0001F131> /xf0/x9f/x84/xb1 SQUARED LATIN CAPITAL LETTER B -+<U0001F132> /xf0/x9f/x84/xb2 SQUARED LATIN CAPITAL LETTER C -+<U0001F133> /xf0/x9f/x84/xb3 SQUARED LATIN CAPITAL LETTER D -+<U0001F134> /xf0/x9f/x84/xb4 SQUARED LATIN CAPITAL LETTER E -+<U0001F135> /xf0/x9f/x84/xb5 SQUARED LATIN CAPITAL LETTER F -+<U0001F136> /xf0/x9f/x84/xb6 SQUARED LATIN CAPITAL LETTER G -+<U0001F137> /xf0/x9f/x84/xb7 SQUARED LATIN CAPITAL LETTER H -+<U0001F138> /xf0/x9f/x84/xb8 SQUARED LATIN CAPITAL LETTER I -+<U0001F139> /xf0/x9f/x84/xb9 SQUARED LATIN CAPITAL LETTER J -+<U0001F13A> /xf0/x9f/x84/xba SQUARED LATIN CAPITAL LETTER K -+<U0001F13B> /xf0/x9f/x84/xbb SQUARED LATIN CAPITAL LETTER L -+<U0001F13C> /xf0/x9f/x84/xbc SQUARED LATIN CAPITAL LETTER M -+<U0001F13D> /xf0/x9f/x84/xbd SQUARED LATIN CAPITAL LETTER N -+<U0001F13E> /xf0/x9f/x84/xbe SQUARED LATIN CAPITAL LETTER O -+<U0001F13F> /xf0/x9f/x84/xbf SQUARED LATIN CAPITAL LETTER P -+<U0001F140> /xf0/x9f/x85/x80 SQUARED LATIN CAPITAL LETTER Q -+<U0001F141> /xf0/x9f/x85/x81 SQUARED LATIN CAPITAL LETTER R -+<U0001F142> /xf0/x9f/x85/x82 SQUARED LATIN CAPITAL LETTER S -+<U0001F143> /xf0/x9f/x85/x83 SQUARED LATIN CAPITAL LETTER T -+<U0001F144> /xf0/x9f/x85/x84 SQUARED LATIN CAPITAL LETTER U -+<U0001F145> /xf0/x9f/x85/x85 SQUARED LATIN CAPITAL LETTER V -+<U0001F146> /xf0/x9f/x85/x86 SQUARED LATIN CAPITAL LETTER W -+<U0001F147> /xf0/x9f/x85/x87 SQUARED LATIN CAPITAL LETTER X -+<U0001F148> /xf0/x9f/x85/x88 SQUARED LATIN CAPITAL LETTER Y -+<U0001F149> /xf0/x9f/x85/x89 SQUARED LATIN CAPITAL LETTER Z -+<U0001F14A> /xf0/x9f/x85/x8a SQUARED HV -+<U0001F14B> /xf0/x9f/x85/x8b SQUARED MV -+<U0001F14C> /xf0/x9f/x85/x8c SQUARED SD -+<U0001F14D> /xf0/x9f/x85/x8d SQUARED SS -+<U0001F14E> /xf0/x9f/x85/x8e SQUARED PPV -+<U0001F14F> /xf0/x9f/x85/x8f SQUARED WC -+<U0001F150> /xf0/x9f/x85/x90 NEGATIVE CIRCLED LATIN CAPITAL LETTER A -+<U0001F151> /xf0/x9f/x85/x91 NEGATIVE CIRCLED LATIN CAPITAL LETTER B -+<U0001F152> /xf0/x9f/x85/x92 NEGATIVE CIRCLED LATIN CAPITAL LETTER C -+<U0001F153> /xf0/x9f/x85/x93 NEGATIVE CIRCLED LATIN CAPITAL LETTER D -+<U0001F154> /xf0/x9f/x85/x94 NEGATIVE CIRCLED LATIN CAPITAL LETTER E -+<U0001F155> /xf0/x9f/x85/x95 NEGATIVE CIRCLED LATIN CAPITAL LETTER F -+<U0001F156> /xf0/x9f/x85/x96 NEGATIVE CIRCLED LATIN CAPITAL LETTER G -+<U0001F157> /xf0/x9f/x85/x97 NEGATIVE CIRCLED LATIN CAPITAL LETTER H -+<U0001F158> /xf0/x9f/x85/x98 NEGATIVE CIRCLED LATIN CAPITAL LETTER I -+<U0001F159> /xf0/x9f/x85/x99 NEGATIVE CIRCLED LATIN CAPITAL LETTER J -+<U0001F15A> /xf0/x9f/x85/x9a NEGATIVE CIRCLED LATIN CAPITAL LETTER K -+<U0001F15B> /xf0/x9f/x85/x9b NEGATIVE CIRCLED LATIN CAPITAL LETTER L -+<U0001F15C> /xf0/x9f/x85/x9c NEGATIVE CIRCLED LATIN CAPITAL LETTER M -+<U0001F15D> /xf0/x9f/x85/x9d NEGATIVE CIRCLED LATIN CAPITAL LETTER N -+<U0001F15E> /xf0/x9f/x85/x9e NEGATIVE CIRCLED LATIN CAPITAL LETTER O -+<U0001F15F> /xf0/x9f/x85/x9f NEGATIVE CIRCLED LATIN CAPITAL LETTER P -+<U0001F160> /xf0/x9f/x85/xa0 NEGATIVE CIRCLED LATIN CAPITAL LETTER Q -+<U0001F161> /xf0/x9f/x85/xa1 NEGATIVE CIRCLED LATIN CAPITAL LETTER R -+<U0001F162> /xf0/x9f/x85/xa2 NEGATIVE CIRCLED LATIN CAPITAL LETTER S -+<U0001F163> /xf0/x9f/x85/xa3 NEGATIVE CIRCLED LATIN CAPITAL LETTER T -+<U0001F164> /xf0/x9f/x85/xa4 NEGATIVE CIRCLED LATIN CAPITAL LETTER U -+<U0001F165> /xf0/x9f/x85/xa5 NEGATIVE CIRCLED LATIN CAPITAL LETTER V -+<U0001F166> /xf0/x9f/x85/xa6 NEGATIVE CIRCLED LATIN CAPITAL LETTER W -+<U0001F167> /xf0/x9f/x85/xa7 NEGATIVE CIRCLED LATIN CAPITAL LETTER X -+<U0001F168> /xf0/x9f/x85/xa8 NEGATIVE CIRCLED LATIN CAPITAL LETTER Y -+<U0001F169> /xf0/x9f/x85/xa9 NEGATIVE CIRCLED LATIN CAPITAL LETTER Z -+<U0001F170> /xf0/x9f/x85/xb0 NEGATIVE SQUARED LATIN CAPITAL LETTER A -+<U0001F171> /xf0/x9f/x85/xb1 NEGATIVE SQUARED LATIN CAPITAL LETTER B -+<U0001F172> /xf0/x9f/x85/xb2 NEGATIVE SQUARED LATIN CAPITAL LETTER C -+<U0001F173> /xf0/x9f/x85/xb3 NEGATIVE SQUARED LATIN CAPITAL LETTER D -+<U0001F174> /xf0/x9f/x85/xb4 NEGATIVE SQUARED LATIN CAPITAL LETTER E -+<U0001F175> /xf0/x9f/x85/xb5 NEGATIVE SQUARED LATIN CAPITAL LETTER F -+<U0001F176> /xf0/x9f/x85/xb6 NEGATIVE SQUARED LATIN CAPITAL LETTER G -+<U0001F177> /xf0/x9f/x85/xb7 NEGATIVE SQUARED LATIN CAPITAL LETTER H -+<U0001F178> /xf0/x9f/x85/xb8 NEGATIVE SQUARED LATIN CAPITAL LETTER I -+<U0001F179> /xf0/x9f/x85/xb9 NEGATIVE SQUARED LATIN CAPITAL LETTER J -+<U0001F17A> /xf0/x9f/x85/xba NEGATIVE SQUARED LATIN CAPITAL LETTER K -+<U0001F17B> /xf0/x9f/x85/xbb NEGATIVE SQUARED LATIN CAPITAL LETTER L -+<U0001F17C> /xf0/x9f/x85/xbc NEGATIVE SQUARED LATIN CAPITAL LETTER M -+<U0001F17D> /xf0/x9f/x85/xbd NEGATIVE SQUARED LATIN CAPITAL LETTER N -+<U0001F17E> /xf0/x9f/x85/xbe NEGATIVE SQUARED LATIN CAPITAL LETTER O -+<U0001F17F> /xf0/x9f/x85/xbf NEGATIVE SQUARED LATIN CAPITAL LETTER P -+<U0001F180> /xf0/x9f/x86/x80 NEGATIVE SQUARED LATIN CAPITAL LETTER Q -+<U0001F181> /xf0/x9f/x86/x81 NEGATIVE SQUARED LATIN CAPITAL LETTER R -+<U0001F182> /xf0/x9f/x86/x82 NEGATIVE SQUARED LATIN CAPITAL LETTER S -+<U0001F183> /xf0/x9f/x86/x83 NEGATIVE SQUARED LATIN CAPITAL LETTER T -+<U0001F184> /xf0/x9f/x86/x84 NEGATIVE SQUARED LATIN CAPITAL LETTER U -+<U0001F185> /xf0/x9f/x86/x85 NEGATIVE SQUARED LATIN CAPITAL LETTER V -+<U0001F186> /xf0/x9f/x86/x86 NEGATIVE SQUARED LATIN CAPITAL LETTER W -+<U0001F187> /xf0/x9f/x86/x87 NEGATIVE SQUARED LATIN CAPITAL LETTER X -+<U0001F188> /xf0/x9f/x86/x88 NEGATIVE SQUARED LATIN CAPITAL LETTER Y -+<U0001F189> /xf0/x9f/x86/x89 NEGATIVE SQUARED LATIN CAPITAL LETTER Z -+<U0001F18A> /xf0/x9f/x86/x8a CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P -+<U0001F18B> /xf0/x9f/x86/x8b NEGATIVE SQUARED IC -+<U0001F18C> /xf0/x9f/x86/x8c NEGATIVE SQUARED PA -+<U0001F18D> /xf0/x9f/x86/x8d NEGATIVE SQUARED SA -+<U0001F18E> /xf0/x9f/x86/x8e NEGATIVE SQUARED AB -+<U0001F18F> /xf0/x9f/x86/x8f NEGATIVE SQUARED WC -+<U0001F190> /xf0/x9f/x86/x90 SQUARE DJ -+<U0001F191> /xf0/x9f/x86/x91 SQUARED CL -+<U0001F192> /xf0/x9f/x86/x92 SQUARED COOL -+<U0001F193> /xf0/x9f/x86/x93 SQUARED FREE -+<U0001F194> /xf0/x9f/x86/x94 SQUARED ID -+<U0001F195> /xf0/x9f/x86/x95 SQUARED NEW -+<U0001F196> /xf0/x9f/x86/x96 SQUARED NG -+<U0001F197> /xf0/x9f/x86/x97 SQUARED OK -+<U0001F198> /xf0/x9f/x86/x98 SQUARED SOS -+<U0001F199> /xf0/x9f/x86/x99 SQUARED UP WITH EXCLAMATION MARK -+<U0001F19A> /xf0/x9f/x86/x9a SQUARED VS -+<U0001F1E6> /xf0/x9f/x87/xa6 REGIONAL INDICATOR SYMBOL LETTER A -+<U0001F1E7> /xf0/x9f/x87/xa7 REGIONAL INDICATOR SYMBOL LETTER B -+<U0001F1E8> /xf0/x9f/x87/xa8 REGIONAL INDICATOR SYMBOL LETTER C -+<U0001F1E9> /xf0/x9f/x87/xa9 REGIONAL INDICATOR SYMBOL LETTER D -+<U0001F1EA> /xf0/x9f/x87/xaa REGIONAL INDICATOR SYMBOL LETTER E -+<U0001F1EB> /xf0/x9f/x87/xab REGIONAL INDICATOR SYMBOL LETTER F -+<U0001F1EC> /xf0/x9f/x87/xac REGIONAL INDICATOR SYMBOL LETTER G -+<U0001F1ED> /xf0/x9f/x87/xad REGIONAL INDICATOR SYMBOL LETTER H -+<U0001F1EE> /xf0/x9f/x87/xae REGIONAL INDICATOR SYMBOL LETTER I -+<U0001F1EF> /xf0/x9f/x87/xaf REGIONAL INDICATOR SYMBOL LETTER J -+<U0001F1F0> /xf0/x9f/x87/xb0 REGIONAL INDICATOR SYMBOL LETTER K -+<U0001F1F1> /xf0/x9f/x87/xb1 REGIONAL INDICATOR SYMBOL LETTER L -+<U0001F1F2> /xf0/x9f/x87/xb2 REGIONAL INDICATOR SYMBOL LETTER M -+<U0001F1F3> /xf0/x9f/x87/xb3 REGIONAL INDICATOR SYMBOL LETTER N -+<U0001F1F4> /xf0/x9f/x87/xb4 REGIONAL INDICATOR SYMBOL LETTER O -+<U0001F1F5> /xf0/x9f/x87/xb5 REGIONAL INDICATOR SYMBOL LETTER P -+<U0001F1F6> /xf0/x9f/x87/xb6 REGIONAL INDICATOR SYMBOL LETTER Q -+<U0001F1F7> /xf0/x9f/x87/xb7 REGIONAL INDICATOR SYMBOL LETTER R -+<U0001F1F8> /xf0/x9f/x87/xb8 REGIONAL INDICATOR SYMBOL LETTER S -+<U0001F1F9> /xf0/x9f/x87/xb9 REGIONAL INDICATOR SYMBOL LETTER T -+<U0001F1FA> /xf0/x9f/x87/xba REGIONAL INDICATOR SYMBOL LETTER U -+<U0001F1FB> /xf0/x9f/x87/xbb REGIONAL INDICATOR SYMBOL LETTER V -+<U0001F1FC> /xf0/x9f/x87/xbc REGIONAL INDICATOR SYMBOL LETTER W -+<U0001F1FD> /xf0/x9f/x87/xbd REGIONAL INDICATOR SYMBOL LETTER X -+<U0001F1FE> /xf0/x9f/x87/xbe REGIONAL INDICATOR SYMBOL LETTER Y -+<U0001F1FF> /xf0/x9f/x87/xbf REGIONAL INDICATOR SYMBOL LETTER Z -+<U0001F200> /xf0/x9f/x88/x80 SQUARE HIRAGANA HOKA -+<U0001F201> /xf0/x9f/x88/x81 SQUARED KATAKANA KOKO -+<U0001F202> /xf0/x9f/x88/x82 SQUARED KATAKANA SA -+<U0001F210> /xf0/x9f/x88/x90 SQUARED CJK UNIFIED IDEOGRAPH-624B -+<U0001F211> /xf0/x9f/x88/x91 SQUARED CJK UNIFIED IDEOGRAPH-5B57 -+<U0001F212> /xf0/x9f/x88/x92 SQUARED CJK UNIFIED IDEOGRAPH-53CC -+<U0001F213> /xf0/x9f/x88/x93 SQUARED KATAKANA DE -+<U0001F214> /xf0/x9f/x88/x94 SQUARED CJK UNIFIED IDEOGRAPH-4E8C -+<U0001F215> /xf0/x9f/x88/x95 SQUARED CJK UNIFIED IDEOGRAPH-591A -+<U0001F216> /xf0/x9f/x88/x96 SQUARED CJK UNIFIED IDEOGRAPH-89E3 -+<U0001F217> /xf0/x9f/x88/x97 SQUARED CJK UNIFIED IDEOGRAPH-5929 -+<U0001F218> /xf0/x9f/x88/x98 SQUARED CJK UNIFIED IDEOGRAPH-4EA4 -+<U0001F219> /xf0/x9f/x88/x99 SQUARED CJK UNIFIED IDEOGRAPH-6620 -+<U0001F21A> /xf0/x9f/x88/x9a SQUARED CJK UNIFIED IDEOGRAPH-7121 -+<U0001F21B> /xf0/x9f/x88/x9b SQUARED CJK UNIFIED IDEOGRAPH-6599 -+<U0001F21C> /xf0/x9f/x88/x9c SQUARED CJK UNIFIED IDEOGRAPH-524D -+<U0001F21D> /xf0/x9f/x88/x9d SQUARED CJK UNIFIED IDEOGRAPH-5F8C -+<U0001F21E> /xf0/x9f/x88/x9e SQUARED CJK UNIFIED IDEOGRAPH-518D -+<U0001F21F> /xf0/x9f/x88/x9f SQUARED CJK UNIFIED IDEOGRAPH-65B0 -+<U0001F220> /xf0/x9f/x88/xa0 SQUARED CJK UNIFIED IDEOGRAPH-521D -+<U0001F221> /xf0/x9f/x88/xa1 SQUARED CJK UNIFIED IDEOGRAPH-7D42 -+<U0001F222> /xf0/x9f/x88/xa2 SQUARED CJK UNIFIED IDEOGRAPH-751F -+<U0001F223> /xf0/x9f/x88/xa3 SQUARED CJK UNIFIED IDEOGRAPH-8CA9 -+<U0001F224> /xf0/x9f/x88/xa4 SQUARED CJK UNIFIED IDEOGRAPH-58F0 -+<U0001F225> /xf0/x9f/x88/xa5 SQUARED CJK UNIFIED IDEOGRAPH-5439 -+<U0001F226> /xf0/x9f/x88/xa6 SQUARED CJK UNIFIED IDEOGRAPH-6F14 -+<U0001F227> /xf0/x9f/x88/xa7 SQUARED CJK UNIFIED IDEOGRAPH-6295 -+<U0001F228> /xf0/x9f/x88/xa8 SQUARED CJK UNIFIED IDEOGRAPH-6355 -+<U0001F229> /xf0/x9f/x88/xa9 SQUARED CJK UNIFIED IDEOGRAPH-4E00 -+<U0001F22A> /xf0/x9f/x88/xaa SQUARED CJK UNIFIED IDEOGRAPH-4E09 -+<U0001F22B> /xf0/x9f/x88/xab SQUARED CJK UNIFIED IDEOGRAPH-904A -+<U0001F22C> /xf0/x9f/x88/xac SQUARED CJK UNIFIED IDEOGRAPH-5DE6 -+<U0001F22D> /xf0/x9f/x88/xad SQUARED CJK UNIFIED IDEOGRAPH-4E2D -+<U0001F22E> /xf0/x9f/x88/xae SQUARED CJK UNIFIED IDEOGRAPH-53F3 -+<U0001F22F> /xf0/x9f/x88/xaf SQUARED CJK UNIFIED IDEOGRAPH-6307 -+<U0001F230> /xf0/x9f/x88/xb0 SQUARED CJK UNIFIED IDEOGRAPH-8D70 -+<U0001F231> /xf0/x9f/x88/xb1 SQUARED CJK UNIFIED IDEOGRAPH-6253 -+<U0001F232> /xf0/x9f/x88/xb2 SQUARED CJK UNIFIED IDEOGRAPH-7981 -+<U0001F233> /xf0/x9f/x88/xb3 SQUARED CJK UNIFIED IDEOGRAPH-7A7A -+<U0001F234> /xf0/x9f/x88/xb4 SQUARED CJK UNIFIED IDEOGRAPH-5408 -+<U0001F235> /xf0/x9f/x88/xb5 SQUARED CJK UNIFIED IDEOGRAPH-6E80 -+<U0001F236> /xf0/x9f/x88/xb6 SQUARED CJK UNIFIED IDEOGRAPH-6709 -+<U0001F237> /xf0/x9f/x88/xb7 SQUARED CJK UNIFIED IDEOGRAPH-6708 -+<U0001F238> /xf0/x9f/x88/xb8 SQUARED CJK UNIFIED IDEOGRAPH-7533 -+<U0001F239> /xf0/x9f/x88/xb9 SQUARED CJK UNIFIED IDEOGRAPH-5272 -+<U0001F23A> /xf0/x9f/x88/xba SQUARED CJK UNIFIED IDEOGRAPH-55B6 -+<U0001F240> /xf0/x9f/x89/x80 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C -+<U0001F241> /xf0/x9f/x89/x81 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 -+<U0001F242> /xf0/x9f/x89/x82 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C -+<U0001F243> /xf0/x9f/x89/x83 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 -+<U0001F244> /xf0/x9f/x89/x84 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 -+<U0001F245> /xf0/x9f/x89/x85 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 -+<U0001F246> /xf0/x9f/x89/x86 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 -+<U0001F247> /xf0/x9f/x89/x87 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD -+<U0001F248> /xf0/x9f/x89/x88 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 -+<U0001F250> /xf0/x9f/x89/x90 CIRCLED IDEOGRAPH ADVANTAGE -+<U0001F251> /xf0/x9f/x89/x91 CIRCLED IDEOGRAPH ACCEPT -+<U0001F300> /xf0/x9f/x8c/x80 CYCLONE -+<U0001F301> /xf0/x9f/x8c/x81 FOGGY -+<U0001F302> /xf0/x9f/x8c/x82 CLOSED UMBRELLA -+<U0001F303> /xf0/x9f/x8c/x83 NIGHT WITH STARS -+<U0001F304> /xf0/x9f/x8c/x84 SUNRISE OVER MOUNTAINS -+<U0001F305> /xf0/x9f/x8c/x85 SUNRISE -+<U0001F306> /xf0/x9f/x8c/x86 CITYSCAPE AT DUSK -+<U0001F307> /xf0/x9f/x8c/x87 SUNSET OVER BUILDINGS -+<U0001F308> /xf0/x9f/x8c/x88 RAINBOW -+<U0001F309> /xf0/x9f/x8c/x89 BRIDGE AT NIGHT -+<U0001F30A> /xf0/x9f/x8c/x8a WATER WAVE -+<U0001F30B> /xf0/x9f/x8c/x8b VOLCANO -+<U0001F30C> /xf0/x9f/x8c/x8c MILKY WAY -+<U0001F30D> /xf0/x9f/x8c/x8d EARTH GLOBE EUROPE-AFRICA -+<U0001F30E> /xf0/x9f/x8c/x8e EARTH GLOBE AMERICAS -+<U0001F30F> /xf0/x9f/x8c/x8f EARTH GLOBE ASIA-AUSTRALIA -+<U0001F310> /xf0/x9f/x8c/x90 GLOBE WITH MERIDIANS -+<U0001F311> /xf0/x9f/x8c/x91 NEW MOON SYMBOL -+<U0001F312> /xf0/x9f/x8c/x92 WAXING CRESCENT MOON SYMBOL -+<U0001F313> /xf0/x9f/x8c/x93 FIRST QUARTER MOON SYMBOL -+<U0001F314> /xf0/x9f/x8c/x94 WAXING GIBBOUS MOON SYMBOL -+<U0001F315> /xf0/x9f/x8c/x95 FULL MOON SYMBOL -+<U0001F316> /xf0/x9f/x8c/x96 WANING GIBBOUS MOON SYMBOL -+<U0001F317> /xf0/x9f/x8c/x97 LAST QUARTER MOON SYMBOL -+<U0001F318> /xf0/x9f/x8c/x98 WANING CRESCENT MOON SYMBOL -+<U0001F319> /xf0/x9f/x8c/x99 CRESCENT MOON -+<U0001F31A> /xf0/x9f/x8c/x9a NEW MOON WITH FACE -+<U0001F31B> /xf0/x9f/x8c/x9b FIRST QUARTER MOON WITH FACE -+<U0001F31C> /xf0/x9f/x8c/x9c LAST QUARTER MOON WITH FACE -+<U0001F31D> /xf0/x9f/x8c/x9d FULL MOON WITH FACE -+<U0001F31E> /xf0/x9f/x8c/x9e SUN WITH FACE -+<U0001F31F> /xf0/x9f/x8c/x9f GLOWING STAR -+<U0001F320> /xf0/x9f/x8c/xa0 SHOOTING STAR -+<U0001F330> /xf0/x9f/x8c/xb0 CHESTNUT -+<U0001F331> /xf0/x9f/x8c/xb1 SEEDLING -+<U0001F332> /xf0/x9f/x8c/xb2 EVERGREEN TREE -+<U0001F333> /xf0/x9f/x8c/xb3 DECIDUOUS TREE -+<U0001F334> /xf0/x9f/x8c/xb4 PALM TREE -+<U0001F335> /xf0/x9f/x8c/xb5 CACTUS -+<U0001F337> /xf0/x9f/x8c/xb7 TULIP -+<U0001F338> /xf0/x9f/x8c/xb8 CHERRY BLOSSOM -+<U0001F339> /xf0/x9f/x8c/xb9 ROSE -+<U0001F33A> /xf0/x9f/x8c/xba HIBISCUS -+<U0001F33B> /xf0/x9f/x8c/xbb SUNFLOWER -+<U0001F33C> /xf0/x9f/x8c/xbc BLOSSOM -+<U0001F33D> /xf0/x9f/x8c/xbd EAR OF MAIZE -+<U0001F33E> /xf0/x9f/x8c/xbe EAR OF RICE -+<U0001F33F> /xf0/x9f/x8c/xbf HERB -+<U0001F340> /xf0/x9f/x8d/x80 FOUR LEAF CLOVER -+<U0001F341> /xf0/x9f/x8d/x81 MAPLE LEAF -+<U0001F342> /xf0/x9f/x8d/x82 FALLEN LEAF -+<U0001F343> /xf0/x9f/x8d/x83 LEAF FLUTTERING IN WIND -+<U0001F344> /xf0/x9f/x8d/x84 MUSHROOM -+<U0001F345> /xf0/x9f/x8d/x85 TOMATO -+<U0001F346> /xf0/x9f/x8d/x86 AUBERGINE -+<U0001F347> /xf0/x9f/x8d/x87 GRAPES -+<U0001F348> /xf0/x9f/x8d/x88 MELON -+<U0001F349> /xf0/x9f/x8d/x89 WATERMELON -+<U0001F34A> /xf0/x9f/x8d/x8a TANGERINE -+<U0001F34B> /xf0/x9f/x8d/x8b LEMON -+<U0001F34C> /xf0/x9f/x8d/x8c BANANA -+<U0001F34D> /xf0/x9f/x8d/x8d PINEAPPLE -+<U0001F34E> /xf0/x9f/x8d/x8e RED APPLE -+<U0001F34F> /xf0/x9f/x8d/x8f GREEN APPLE -+<U0001F350> /xf0/x9f/x8d/x90 PEAR -+<U0001F351> /xf0/x9f/x8d/x91 PEACH -+<U0001F352> /xf0/x9f/x8d/x92 CHERRIES -+<U0001F353> /xf0/x9f/x8d/x93 STRAWBERRY -+<U0001F354> /xf0/x9f/x8d/x94 HAMBURGER -+<U0001F355> /xf0/x9f/x8d/x95 SLICE OF PIZZA -+<U0001F356> /xf0/x9f/x8d/x96 MEAT ON BONE -+<U0001F357> /xf0/x9f/x8d/x97 POULTRY LEG -+<U0001F358> /xf0/x9f/x8d/x98 RICE CRACKER -+<U0001F359> /xf0/x9f/x8d/x99 RICE BALL -+<U0001F35A> /xf0/x9f/x8d/x9a COOKED RICE -+<U0001F35B> /xf0/x9f/x8d/x9b CURRY AND RICE -+<U0001F35C> /xf0/x9f/x8d/x9c STEAMING BOWL -+<U0001F35D> /xf0/x9f/x8d/x9d SPAGHETTI -+<U0001F35E> /xf0/x9f/x8d/x9e BREAD -+<U0001F35F> /xf0/x9f/x8d/x9f FRENCH FRIES -+<U0001F360> /xf0/x9f/x8d/xa0 ROASTED SWEET POTATO -+<U0001F361> /xf0/x9f/x8d/xa1 DANGO -+<U0001F362> /xf0/x9f/x8d/xa2 ODEN -+<U0001F363> /xf0/x9f/x8d/xa3 SUSHI -+<U0001F364> /xf0/x9f/x8d/xa4 FRIED SHRIMP -+<U0001F365> /xf0/x9f/x8d/xa5 FISH CAKE WITH SWIRL DESIGN -+<U0001F366> /xf0/x9f/x8d/xa6 SOFT ICE CREAM -+<U0001F367> /xf0/x9f/x8d/xa7 SHAVED ICE -+<U0001F368> /xf0/x9f/x8d/xa8 ICE CREAM -+<U0001F369> /xf0/x9f/x8d/xa9 DOUGHNUT -+<U0001F36A> /xf0/x9f/x8d/xaa COOKIE -+<U0001F36B> /xf0/x9f/x8d/xab CHOCOLATE BAR -+<U0001F36C> /xf0/x9f/x8d/xac CANDY -+<U0001F36D> /xf0/x9f/x8d/xad LOLLIPOP -+<U0001F36E> /xf0/x9f/x8d/xae CUSTARD -+<U0001F36F> /xf0/x9f/x8d/xaf HONEY POT -+<U0001F370> /xf0/x9f/x8d/xb0 SHORTCAKE -+<U0001F371> /xf0/x9f/x8d/xb1 BENTO BOX -+<U0001F372> /xf0/x9f/x8d/xb2 POT OF FOOD -+<U0001F373> /xf0/x9f/x8d/xb3 COOKING -+<U0001F374> /xf0/x9f/x8d/xb4 FORK AND KNIFE -+<U0001F375> /xf0/x9f/x8d/xb5 TEACUP WITHOUT HANDLE -+<U0001F376> /xf0/x9f/x8d/xb6 SAKE BOTTLE AND CUP -+<U0001F377> /xf0/x9f/x8d/xb7 WINE GLASS -+<U0001F378> /xf0/x9f/x8d/xb8 COCKTAIL GLASS -+<U0001F379> /xf0/x9f/x8d/xb9 TROPICAL DRINK -+<U0001F37A> /xf0/x9f/x8d/xba BEER MUG -+<U0001F37B> /xf0/x9f/x8d/xbb CLINKING BEER MUGS -+<U0001F37C> /xf0/x9f/x8d/xbc BABY BOTTLE -+<U0001F380> /xf0/x9f/x8e/x80 RIBBON -+<U0001F381> /xf0/x9f/x8e/x81 WRAPPED PRESENT -+<U0001F382> /xf0/x9f/x8e/x82 BIRTHDAY CAKE -+<U0001F383> /xf0/x9f/x8e/x83 JACK-O-LANTERN -+<U0001F384> /xf0/x9f/x8e/x84 CHRISTMAS TREE -+<U0001F385> /xf0/x9f/x8e/x85 FATHER CHRISTMAS -+<U0001F386> /xf0/x9f/x8e/x86 FIREWORKS -+<U0001F387> /xf0/x9f/x8e/x87 FIREWORK SPARKLER -+<U0001F388> /xf0/x9f/x8e/x88 BALLOON -+<U0001F389> /xf0/x9f/x8e/x89 PARTY POPPER -+<U0001F38A> /xf0/x9f/x8e/x8a CONFETTI BALL -+<U0001F38B> /xf0/x9f/x8e/x8b TANABATA TREE -+<U0001F38C> /xf0/x9f/x8e/x8c CROSSED FLAGS -+<U0001F38D> /xf0/x9f/x8e/x8d PINE DECORATION -+<U0001F38E> /xf0/x9f/x8e/x8e JAPANESE DOLLS -+<U0001F38F> /xf0/x9f/x8e/x8f CARP STREAMER -+<U0001F390> /xf0/x9f/x8e/x90 WIND CHIME -+<U0001F391> /xf0/x9f/x8e/x91 MOON VIEWING CEREMONY -+<U0001F392> /xf0/x9f/x8e/x92 SCHOOL SATCHEL -+<U0001F393> /xf0/x9f/x8e/x93 GRADUATION CAP -+<U0001F3A0> /xf0/x9f/x8e/xa0 CAROUSEL HORSE -+<U0001F3A1> /xf0/x9f/x8e/xa1 FERRIS WHEEL -+<U0001F3A2> /xf0/x9f/x8e/xa2 ROLLER COASTER -+<U0001F3A3> /xf0/x9f/x8e/xa3 FISHING POLE AND FISH -+<U0001F3A4> /xf0/x9f/x8e/xa4 MICROPHONE -+<U0001F3A5> /xf0/x9f/x8e/xa5 MOVIE CAMERA -+<U0001F3A6> /xf0/x9f/x8e/xa6 CINEMA -+<U0001F3A7> /xf0/x9f/x8e/xa7 HEADPHONE -+<U0001F3A8> /xf0/x9f/x8e/xa8 ARTIST PALETTE -+<U0001F3A9> /xf0/x9f/x8e/xa9 TOP HAT -+<U0001F3AA> /xf0/x9f/x8e/xaa CIRCUS TENT -+<U0001F3AB> /xf0/x9f/x8e/xab TICKET -+<U0001F3AC> /xf0/x9f/x8e/xac CLAPPER BOARD -+<U0001F3AD> /xf0/x9f/x8e/xad PERFORMING ARTS -+<U0001F3AE> /xf0/x9f/x8e/xae VIDEO GAME -+<U0001F3AF> /xf0/x9f/x8e/xaf DIRECT HIT -+<U0001F3B0> /xf0/x9f/x8e/xb0 SLOT MACHINE -+<U0001F3B1> /xf0/x9f/x8e/xb1 BILLIARDS -+<U0001F3B2> /xf0/x9f/x8e/xb2 GAME DIE -+<U0001F3B3> /xf0/x9f/x8e/xb3 BOWLING -+<U0001F3B4> /xf0/x9f/x8e/xb4 FLOWER PLAYING CARDS -+<U0001F3B5> /xf0/x9f/x8e/xb5 MUSICAL NOTE -+<U0001F3B6> /xf0/x9f/x8e/xb6 MULTIPLE MUSICAL NOTES -+<U0001F3B7> /xf0/x9f/x8e/xb7 SAXOPHONE -+<U0001F3B8> /xf0/x9f/x8e/xb8 GUITAR -+<U0001F3B9> /xf0/x9f/x8e/xb9 MUSICAL KEYBOARD -+<U0001F3BA> /xf0/x9f/x8e/xba TRUMPET -+<U0001F3BB> /xf0/x9f/x8e/xbb VIOLIN -+<U0001F3BC> /xf0/x9f/x8e/xbc MUSICAL SCORE -+<U0001F3BD> /xf0/x9f/x8e/xbd RUNNING SHIRT WITH SASH -+<U0001F3BE> /xf0/x9f/x8e/xbe TENNIS RACQUET AND BALL -+<U0001F3BF> /xf0/x9f/x8e/xbf SKI AND SKI BOOT -+<U0001F3C0> /xf0/x9f/x8f/x80 BASKETBALL AND HOOP -+<U0001F3C1> /xf0/x9f/x8f/x81 CHEQUERED FLAG -+<U0001F3C2> /xf0/x9f/x8f/x82 SNOWBOARDER -+<U0001F3C3> /xf0/x9f/x8f/x83 RUNNER -+<U0001F3C4> /xf0/x9f/x8f/x84 SURFER -+<U0001F3C6> /xf0/x9f/x8f/x86 TROPHY -+<U0001F3C7> /xf0/x9f/x8f/x87 HORSE RACING -+<U0001F3C8> /xf0/x9f/x8f/x88 AMERICAN FOOTBALL -+<U0001F3C9> /xf0/x9f/x8f/x89 RUGBY FOOTBALL -+<U0001F3CA> /xf0/x9f/x8f/x8a SWIMMER -+<U0001F3E0> /xf0/x9f/x8f/xa0 HOUSE BUILDING -+<U0001F3E1> /xf0/x9f/x8f/xa1 HOUSE WITH GARDEN -+<U0001F3E2> /xf0/x9f/x8f/xa2 OFFICE BUILDING -+<U0001F3E3> /xf0/x9f/x8f/xa3 JAPANESE POST OFFICE -+<U0001F3E4> /xf0/x9f/x8f/xa4 EUROPEAN POST OFFICE -+<U0001F3E5> /xf0/x9f/x8f/xa5 HOSPITAL -+<U0001F3E6> /xf0/x9f/x8f/xa6 BANK -+<U0001F3E7> /xf0/x9f/x8f/xa7 AUTOMATED TELLER MACHINE -+<U0001F3E8> /xf0/x9f/x8f/xa8 HOTEL -+<U0001F3E9> /xf0/x9f/x8f/xa9 LOVE HOTEL -+<U0001F3EA> /xf0/x9f/x8f/xaa CONVENIENCE STORE -+<U0001F3EB> /xf0/x9f/x8f/xab SCHOOL -+<U0001F3EC> /xf0/x9f/x8f/xac DEPARTMENT STORE -+<U0001F3ED> /xf0/x9f/x8f/xad FACTORY -+<U0001F3EE> /xf0/x9f/x8f/xae IZAKAYA LANTERN -+<U0001F3EF> /xf0/x9f/x8f/xaf JAPANESE CASTLE -+<U0001F3F0> /xf0/x9f/x8f/xb0 EUROPEAN CASTLE -+<U0001F400> /xf0/x9f/x90/x80 RAT -+<U0001F401> /xf0/x9f/x90/x81 MOUSE -+<U0001F402> /xf0/x9f/x90/x82 OX -+<U0001F403> /xf0/x9f/x90/x83 WATER BUFFALO -+<U0001F404> /xf0/x9f/x90/x84 COW -+<U0001F405> /xf0/x9f/x90/x85 TIGER -+<U0001F406> /xf0/x9f/x90/x86 LEOPARD -+<U0001F407> /xf0/x9f/x90/x87 RABBIT -+<U0001F408> /xf0/x9f/x90/x88 CAT -+<U0001F409> /xf0/x9f/x90/x89 DRAGON -+<U0001F40A> /xf0/x9f/x90/x8a CROCODILE -+<U0001F40B> /xf0/x9f/x90/x8b WHALE -+<U0001F40C> /xf0/x9f/x90/x8c SNAIL -+<U0001F40D> /xf0/x9f/x90/x8d SNAKE -+<U0001F40E> /xf0/x9f/x90/x8e HORSE -+<U0001F40F> /xf0/x9f/x90/x8f RAM -+<U0001F410> /xf0/x9f/x90/x90 GOAT -+<U0001F411> /xf0/x9f/x90/x91 SHEEP -+<U0001F412> /xf0/x9f/x90/x92 MONKEY -+<U0001F413> /xf0/x9f/x90/x93 ROOSTER -+<U0001F414> /xf0/x9f/x90/x94 CHICKEN -+<U0001F415> /xf0/x9f/x90/x95 DOG -+<U0001F416> /xf0/x9f/x90/x96 PIG -+<U0001F417> /xf0/x9f/x90/x97 BOAR -+<U0001F418> /xf0/x9f/x90/x98 ELEPHANT -+<U0001F419> /xf0/x9f/x90/x99 OCTOPUS -+<U0001F41A> /xf0/x9f/x90/x9a SPIRAL SHELL -+<U0001F41B> /xf0/x9f/x90/x9b BUG -+<U0001F41C> /xf0/x9f/x90/x9c ANT -+<U0001F41D> /xf0/x9f/x90/x9d HONEYBEE -+<U0001F41E> /xf0/x9f/x90/x9e LADY BEETLE -+<U0001F41F> /xf0/x9f/x90/x9f FISH -+<U0001F420> /xf0/x9f/x90/xa0 TROPICAL FISH -+<U0001F421> /xf0/x9f/x90/xa1 BLOWFISH -+<U0001F422> /xf0/x9f/x90/xa2 TURTLE -+<U0001F423> /xf0/x9f/x90/xa3 HATCHING CHICK -+<U0001F424> /xf0/x9f/x90/xa4 BABY CHICK -+<U0001F425> /xf0/x9f/x90/xa5 FRONT-FACING BABY CHICK -+<U0001F426> /xf0/x9f/x90/xa6 BIRD -+<U0001F427> /xf0/x9f/x90/xa7 PENGUIN -+<U0001F428> /xf0/x9f/x90/xa8 KOALA -+<U0001F429> /xf0/x9f/x90/xa9 POODLE -+<U0001F42A> /xf0/x9f/x90/xaa DROMEDARY CAMEL -+<U0001F42B> /xf0/x9f/x90/xab BACTRIAN CAMEL -+<U0001F42C> /xf0/x9f/x90/xac DOLPHIN -+<U0001F42D> /xf0/x9f/x90/xad MOUSE FACE -+<U0001F42E> /xf0/x9f/x90/xae COW FACE -+<U0001F42F> /xf0/x9f/x90/xaf TIGER FACE -+<U0001F430> /xf0/x9f/x90/xb0 RABBIT FACE -+<U0001F431> /xf0/x9f/x90/xb1 CAT FACE -+<U0001F432> /xf0/x9f/x90/xb2 DRAGON FACE -+<U0001F433> /xf0/x9f/x90/xb3 SPOUTING WHALE -+<U0001F434> /xf0/x9f/x90/xb4 HORSE FACE -+<U0001F435> /xf0/x9f/x90/xb5 MONKEY FACE -+<U0001F436> /xf0/x9f/x90/xb6 DOG FACE -+<U0001F437> /xf0/x9f/x90/xb7 PIG FACE -+<U0001F438> /xf0/x9f/x90/xb8 FROG FACE -+<U0001F439> /xf0/x9f/x90/xb9 HAMSTER FACE -+<U0001F43A> /xf0/x9f/x90/xba WOLF FACE -+<U0001F43B> /xf0/x9f/x90/xbb BEAR FACE -+<U0001F43C> /xf0/x9f/x90/xbc PANDA FACE -+<U0001F43D> /xf0/x9f/x90/xbd PIG NOSE -+<U0001F43E> /xf0/x9f/x90/xbe PAW PRINTS -+<U0001F440> /xf0/x9f/x91/x80 EYES -+<U0001F442> /xf0/x9f/x91/x82 EAR -+<U0001F443> /xf0/x9f/x91/x83 NOSE -+<U0001F444> /xf0/x9f/x91/x84 MOUTH -+<U0001F445> /xf0/x9f/x91/x85 TONGUE -+<U0001F446> /xf0/x9f/x91/x86 WHITE UP POINTING BACKHAND INDEX -+<U0001F447> /xf0/x9f/x91/x87 WHITE DOWN POINTING BACKHAND INDEX -+<U0001F448> /xf0/x9f/x91/x88 WHITE LEFT POINTING BACKHAND INDEX -+<U0001F449> /xf0/x9f/x91/x89 WHITE RIGHT POINTING BACKHAND INDEX -+<U0001F44A> /xf0/x9f/x91/x8a FISTED HAND SIGN -+<U0001F44B> /xf0/x9f/x91/x8b WAVING HAND SIGN -+<U0001F44C> /xf0/x9f/x91/x8c OK HAND SIGN -+<U0001F44D> /xf0/x9f/x91/x8d THUMBS UP SIGN -+<U0001F44E> /xf0/x9f/x91/x8e THUMBS DOWN SIGN -+<U0001F44F> /xf0/x9f/x91/x8f CLAPPING HANDS SIGN -+<U0001F450> /xf0/x9f/x91/x90 OPEN HANDS SIGN -+<U0001F451> /xf0/x9f/x91/x91 CROWN -+<U0001F452> /xf0/x9f/x91/x92 WOMANS HAT -+<U0001F453> /xf0/x9f/x91/x93 EYEGLASSES -+<U0001F454> /xf0/x9f/x91/x94 NECKTIE -+<U0001F455> /xf0/x9f/x91/x95 T-SHIRT -+<U0001F456> /xf0/x9f/x91/x96 JEANS -+<U0001F457> /xf0/x9f/x91/x97 DRESS -+<U0001F458> /xf0/x9f/x91/x98 KIMONO -+<U0001F459> /xf0/x9f/x91/x99 BIKINI -+<U0001F45A> /xf0/x9f/x91/x9a WOMANS CLOTHES -+<U0001F45B> /xf0/x9f/x91/x9b PURSE -+<U0001F45C> /xf0/x9f/x91/x9c HANDBAG -+<U0001F45D> /xf0/x9f/x91/x9d POUCH -+<U0001F45E> /xf0/x9f/x91/x9e MANS SHOE -+<U0001F45F> /xf0/x9f/x91/x9f ATHLETIC SHOE -+<U0001F460> /xf0/x9f/x91/xa0 HIGH-HEELED SHOE -+<U0001F461> /xf0/x9f/x91/xa1 WOMANS SANDAL -+<U0001F462> /xf0/x9f/x91/xa2 WOMANS BOOTS -+<U0001F463> /xf0/x9f/x91/xa3 FOOTPRINTS -+<U0001F464> /xf0/x9f/x91/xa4 BUST IN SILHOUETTE -+<U0001F465> /xf0/x9f/x91/xa5 BUSTS IN SILHOUETTE -+<U0001F466> /xf0/x9f/x91/xa6 BOY -+<U0001F467> /xf0/x9f/x91/xa7 GIRL -+<U0001F468> /xf0/x9f/x91/xa8 MAN -+<U0001F469> /xf0/x9f/x91/xa9 WOMAN -+<U0001F46A> /xf0/x9f/x91/xaa FAMILY -+<U0001F46B> /xf0/x9f/x91/xab MAN AND WOMAN HOLDING HANDS -+<U0001F46C> /xf0/x9f/x91/xac TWO MEN HOLDING HANDS -+<U0001F46D> /xf0/x9f/x91/xad TWO WOMEN HOLDING HANDS -+<U0001F46E> /xf0/x9f/x91/xae POLICE OFFICER -+<U0001F46F> /xf0/x9f/x91/xaf WOMAN WITH BUNNY EARS -+<U0001F470> /xf0/x9f/x91/xb0 BRIDE WITH VEIL -+<U0001F471> /xf0/x9f/x91/xb1 PERSON WITH BLOND HAIR -+<U0001F472> /xf0/x9f/x91/xb2 MAN WITH GUA PI MAO -+<U0001F473> /xf0/x9f/x91/xb3 MAN WITH TURBAN -+<U0001F474> /xf0/x9f/x91/xb4 OLDER MAN -+<U0001F475> /xf0/x9f/x91/xb5 OLDER WOMAN -+<U0001F476> /xf0/x9f/x91/xb6 BABY -+<U0001F477> /xf0/x9f/x91/xb7 CONSTRUCTION WORKER -+<U0001F478> /xf0/x9f/x91/xb8 PRINCESS -+<U0001F479> /xf0/x9f/x91/xb9 JAPANESE OGRE -+<U0001F47A> /xf0/x9f/x91/xba JAPANESE GOBLIN -+<U0001F47B> /xf0/x9f/x91/xbb GHOST -+<U0001F47C> /xf0/x9f/x91/xbc BABY ANGEL -+<U0001F47D> /xf0/x9f/x91/xbd EXTRATERRESTRIAL ALIEN -+<U0001F47E> /xf0/x9f/x91/xbe ALIEN MONSTER -+<U0001F47F> /xf0/x9f/x91/xbf IMP -+<U0001F480> /xf0/x9f/x92/x80 SKULL -+<U0001F481> /xf0/x9f/x92/x81 INFORMATION DESK PERSON -+<U0001F482> /xf0/x9f/x92/x82 GUARDSMAN -+<U0001F483> /xf0/x9f/x92/x83 DANCER -+<U0001F484> /xf0/x9f/x92/x84 LIPSTICK -+<U0001F485> /xf0/x9f/x92/x85 NAIL POLISH -+<U0001F486> /xf0/x9f/x92/x86 FACE MASSAGE -+<U0001F487> /xf0/x9f/x92/x87 HAIRCUT -+<U0001F488> /xf0/x9f/x92/x88 BARBER POLE -+<U0001F489> /xf0/x9f/x92/x89 SYRINGE -+<U0001F48A> /xf0/x9f/x92/x8a PILL -+<U0001F48B> /xf0/x9f/x92/x8b KISS MARK -+<U0001F48C> /xf0/x9f/x92/x8c LOVE LETTER -+<U0001F48D> /xf0/x9f/x92/x8d RING -+<U0001F48E> /xf0/x9f/x92/x8e GEM STONE -+<U0001F48F> /xf0/x9f/x92/x8f KISS -+<U0001F490> /xf0/x9f/x92/x90 BOUQUET -+<U0001F491> /xf0/x9f/x92/x91 COUPLE WITH HEART -+<U0001F492> /xf0/x9f/x92/x92 WEDDING -+<U0001F493> /xf0/x9f/x92/x93 BEATING HEART -+<U0001F494> /xf0/x9f/x92/x94 BROKEN HEART -+<U0001F495> /xf0/x9f/x92/x95 TWO HEARTS -+<U0001F496> /xf0/x9f/x92/x96 SPARKLING HEART -+<U0001F497> /xf0/x9f/x92/x97 GROWING HEART -+<U0001F498> /xf0/x9f/x92/x98 HEART WITH ARROW -+<U0001F499> /xf0/x9f/x92/x99 BLUE HEART -+<U0001F49A> /xf0/x9f/x92/x9a GREEN HEART -+<U0001F49B> /xf0/x9f/x92/x9b YELLOW HEART -+<U0001F49C> /xf0/x9f/x92/x9c PURPLE HEART -+<U0001F49D> /xf0/x9f/x92/x9d HEART WITH RIBBON -+<U0001F49E> /xf0/x9f/x92/x9e REVOLVING HEARTS -+<U0001F49F> /xf0/x9f/x92/x9f HEART DECORATION -+<U0001F4A0> /xf0/x9f/x92/xa0 DIAMOND SHAPE WITH A DOT INSIDE -+<U0001F4A1> /xf0/x9f/x92/xa1 ELECTRIC LIGHT BULB -+<U0001F4A2> /xf0/x9f/x92/xa2 ANGER SYMBOL -+<U0001F4A3> /xf0/x9f/x92/xa3 BOMB -+<U0001F4A4> /xf0/x9f/x92/xa4 SLEEPING SYMBOL -+<U0001F4A5> /xf0/x9f/x92/xa5 COLLISION SYMBOL -+<U0001F4A6> /xf0/x9f/x92/xa6 SPLASHING SWEAT SYMBOL -+<U0001F4A7> /xf0/x9f/x92/xa7 DROPLET -+<U0001F4A8> /xf0/x9f/x92/xa8 DASH SYMBOL -+<U0001F4A9> /xf0/x9f/x92/xa9 PILE OF POO -+<U0001F4AA> /xf0/x9f/x92/xaa FLEXED BICEPS -+<U0001F4AB> /xf0/x9f/x92/xab DIZZY SYMBOL -+<U0001F4AC> /xf0/x9f/x92/xac SPEECH BALLOON -+<U0001F4AD> /xf0/x9f/x92/xad THOUGHT BALLOON -+<U0001F4AE> /xf0/x9f/x92/xae WHITE FLOWER -+<U0001F4AF> /xf0/x9f/x92/xaf HUNDRED POINTS SYMBOL -+<U0001F4B0> /xf0/x9f/x92/xb0 MONEY BAG -+<U0001F4B1> /xf0/x9f/x92/xb1 CURRENCY EXCHANGE -+<U0001F4B2> /xf0/x9f/x92/xb2 HEAVY DOLLAR SIGN -+<U0001F4B3> /xf0/x9f/x92/xb3 CREDIT CARD -+<U0001F4B4> /xf0/x9f/x92/xb4 BANKNOTE WITH YEN SIGN -+<U0001F4B5> /xf0/x9f/x92/xb5 BANKNOTE WITH DOLLAR SIGN -+<U0001F4B6> /xf0/x9f/x92/xb6 BANKNOTE WITH EURO SIGN -+<U0001F4B7> /xf0/x9f/x92/xb7 BANKNOTE WITH POUND SIGN -+<U0001F4B8> /xf0/x9f/x92/xb8 MONEY WITH WINGS -+<U0001F4B9> /xf0/x9f/x92/xb9 CHART WITH UPWARDS TREND AND YEN SIGN -+<U0001F4BA> /xf0/x9f/x92/xba SEAT -+<U0001F4BB> /xf0/x9f/x92/xbb PERSONAL COMPUTER -+<U0001F4BC> /xf0/x9f/x92/xbc BRIEFCASE -+<U0001F4BD> /xf0/x9f/x92/xbd MINIDISC -+<U0001F4BE> /xf0/x9f/x92/xbe FLOPPY DISK -+<U0001F4BF> /xf0/x9f/x92/xbf OPTICAL DISC -+<U0001F4C0> /xf0/x9f/x93/x80 DVD -+<U0001F4C1> /xf0/x9f/x93/x81 FILE FOLDER -+<U0001F4C2> /xf0/x9f/x93/x82 OPEN FILE FOLDER -+<U0001F4C3> /xf0/x9f/x93/x83 PAGE WITH CURL -+<U0001F4C4> /xf0/x9f/x93/x84 PAGE FACING UP -+<U0001F4C5> /xf0/x9f/x93/x85 CALENDAR -+<U0001F4C6> /xf0/x9f/x93/x86 TEAR-OFF CALENDAR -+<U0001F4C7> /xf0/x9f/x93/x87 CARD INDEX -+<U0001F4C8> /xf0/x9f/x93/x88 CHART WITH UPWARDS TREND -+<U0001F4C9> /xf0/x9f/x93/x89 CHART WITH DOWNWARDS TREND -+<U0001F4CA> /xf0/x9f/x93/x8a BAR CHART -+<U0001F4CB> /xf0/x9f/x93/x8b CLIPBOARD -+<U0001F4CC> /xf0/x9f/x93/x8c PUSHPIN -+<U0001F4CD> /xf0/x9f/x93/x8d ROUND PUSHPIN -+<U0001F4CE> /xf0/x9f/x93/x8e PAPERCLIP -+<U0001F4CF> /xf0/x9f/x93/x8f STRAIGHT RULER -+<U0001F4D0> /xf0/x9f/x93/x90 TRIANGULAR RULER -+<U0001F4D1> /xf0/x9f/x93/x91 BOOKMARK TABS -+<U0001F4D2> /xf0/x9f/x93/x92 LEDGER -+<U0001F4D3> /xf0/x9f/x93/x93 NOTEBOOK -+<U0001F4D4> /xf0/x9f/x93/x94 NOTEBOOK WITH DECORATIVE COVER -+<U0001F4D5> /xf0/x9f/x93/x95 CLOSED BOOK -+<U0001F4D6> /xf0/x9f/x93/x96 OPEN BOOK -+<U0001F4D7> /xf0/x9f/x93/x97 GREEN BOOK -+<U0001F4D8> /xf0/x9f/x93/x98 BLUE BOOK -+<U0001F4D9> /xf0/x9f/x93/x99 ORANGE BOOK -+<U0001F4DA> /xf0/x9f/x93/x9a BOOKS -+<U0001F4DB> /xf0/x9f/x93/x9b NAME BADGE -+<U0001F4DC> /xf0/x9f/x93/x9c SCROLL -+<U0001F4DD> /xf0/x9f/x93/x9d MEMO -+<U0001F4DE> /xf0/x9f/x93/x9e TELEPHONE RECEIVER -+<U0001F4DF> /xf0/x9f/x93/x9f PAGER -+<U0001F4E0> /xf0/x9f/x93/xa0 FAX MACHINE -+<U0001F4E1> /xf0/x9f/x93/xa1 SATELLITE ANTENNA -+<U0001F4E2> /xf0/x9f/x93/xa2 PUBLIC ADDRESS LOUDSPEAKER -+<U0001F4E3> /xf0/x9f/x93/xa3 CHEERING MEGAPHONE -+<U0001F4E4> /xf0/x9f/x93/xa4 OUTBOX TRAY -+<U0001F4E5> /xf0/x9f/x93/xa5 INBOX TRAY -+<U0001F4E6> /xf0/x9f/x93/xa6 PACKAGE -+<U0001F4E7> /xf0/x9f/x93/xa7 E-MAIL SYMBOL -+<U0001F4E8> /xf0/x9f/x93/xa8 INCOMING ENVELOPE -+<U0001F4E9> /xf0/x9f/x93/xa9 ENVELOPE WITH DOWNWARDS ARROW ABOVE -+<U0001F4EA> /xf0/x9f/x93/xaa CLOSED MAILBOX WITH LOWERED FLAG -+<U0001F4EB> /xf0/x9f/x93/xab CLOSED MAILBOX WITH RAISED FLAG -+<U0001F4EC> /xf0/x9f/x93/xac OPEN MAILBOX WITH RAISED FLAG -+<U0001F4ED> /xf0/x9f/x93/xad OPEN MAILBOX WITH LOWERED FLAG -+<U0001F4EE> /xf0/x9f/x93/xae POSTBOX -+<U0001F4EF> /xf0/x9f/x93/xaf POSTAL HORN -+<U0001F4F0> /xf0/x9f/x93/xb0 NEWSPAPER -+<U0001F4F1> /xf0/x9f/x93/xb1 MOBILE PHONE -+<U0001F4F2> /xf0/x9f/x93/xb2 MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT -+<U0001F4F3> /xf0/x9f/x93/xb3 VIBRATION MODE -+<U0001F4F4> /xf0/x9f/x93/xb4 MOBILE PHONE OFF -+<U0001F4F5> /xf0/x9f/x93/xb5 NO MOBILE PHONES -+<U0001F4F6> /xf0/x9f/x93/xb6 ANTENNA WITH BARS -+<U0001F4F7> /xf0/x9f/x93/xb7 CAMERA -+<U0001F4F9> /xf0/x9f/x93/xb9 VIDEO CAMERA -+<U0001F4FA> /xf0/x9f/x93/xba TELEVISION -+<U0001F4FB> /xf0/x9f/x93/xbb RADIO -+<U0001F4FC> /xf0/x9f/x93/xbc VIDEOCASSETTE -+<U0001F500> /xf0/x9f/x94/x80 TWISTED RIGHTWARDS ARROWS -+<U0001F501> /xf0/x9f/x94/x81 CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS -+<U0001F502> /xf0/x9f/x94/x82 CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY -+<U0001F503> /xf0/x9f/x94/x83 CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS -+<U0001F504> /xf0/x9f/x94/x84 ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS -+<U0001F505> /xf0/x9f/x94/x85 LOW BRIGHTNESS SYMBOL -+<U0001F506> /xf0/x9f/x94/x86 HIGH BRIGHTNESS SYMBOL -+<U0001F507> /xf0/x9f/x94/x87 SPEAKER WITH CANCELLATION STROKE -+<U0001F508> /xf0/x9f/x94/x88 SPEAKER -+<U0001F509> /xf0/x9f/x94/x89 SPEAKER WITH ONE SOUND WAVE -+<U0001F50A> /xf0/x9f/x94/x8a SPEAKER WITH THREE SOUND WAVES -+<U0001F50B> /xf0/x9f/x94/x8b BATTERY -+<U0001F50C> /xf0/x9f/x94/x8c ELECTRIC PLUG -+<U0001F50D> /xf0/x9f/x94/x8d LEFT-POINTING MAGNIFYING GLASS -+<U0001F50E> /xf0/x9f/x94/x8e RIGHT-POINTING MAGNIFYING GLASS -+<U0001F50F> /xf0/x9f/x94/x8f LOCK WITH INK PEN -+<U0001F510> /xf0/x9f/x94/x90 CLOSED LOCK WITH KEY -+<U0001F511> /xf0/x9f/x94/x91 KEY -+<U0001F512> /xf0/x9f/x94/x92 LOCK -+<U0001F513> /xf0/x9f/x94/x93 OPEN LOCK -+<U0001F514> /xf0/x9f/x94/x94 BELL -+<U0001F515> /xf0/x9f/x94/x95 BELL WITH CANCELLATION STROKE -+<U0001F516> /xf0/x9f/x94/x96 BOOKMARK -+<U0001F517> /xf0/x9f/x94/x97 LINK SYMBOL -+<U0001F518> /xf0/x9f/x94/x98 RADIO BUTTON -+<U0001F519> /xf0/x9f/x94/x99 BACK WITH LEFTWARDS ARROW ABOVE -+<U0001F51A> /xf0/x9f/x94/x9a END WITH LEFTWARDS ARROW ABOVE -+<U0001F51B> /xf0/x9f/x94/x9b ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE -+<U0001F51C> /xf0/x9f/x94/x9c SOON WITH RIGHTWARDS ARROW ABOVE -+<U0001F51D> /xf0/x9f/x94/x9d TOP WITH UPWARDS ARROW ABOVE -+<U0001F51E> /xf0/x9f/x94/x9e NO ONE UNDER EIGHTEEN SYMBOL -+<U0001F51F> /xf0/x9f/x94/x9f KEYCAP TEN -+<U0001F520> /xf0/x9f/x94/xa0 INPUT SYMBOL FOR LATIN CAPITAL LETTERS -+<U0001F521> /xf0/x9f/x94/xa1 INPUT SYMBOL FOR LATIN SMALL LETTERS -+<U0001F522> /xf0/x9f/x94/xa2 INPUT SYMBOL FOR NUMBERS -+<U0001F523> /xf0/x9f/x94/xa3 INPUT SYMBOL FOR SYMBOLS -+<U0001F524> /xf0/x9f/x94/xa4 INPUT SYMBOL FOR LATIN LETTERS -+<U0001F525> /xf0/x9f/x94/xa5 FIRE -+<U0001F526> /xf0/x9f/x94/xa6 ELECTRIC TORCH -+<U0001F527> /xf0/x9f/x94/xa7 WRENCH -+<U0001F528> /xf0/x9f/x94/xa8 HAMMER -+<U0001F529> /xf0/x9f/x94/xa9 NUT AND BOLT -+<U0001F52A> /xf0/x9f/x94/xaa HOCHO -+<U0001F52B> /xf0/x9f/x94/xab PISTOL -+<U0001F52C> /xf0/x9f/x94/xac MICROSCOPE -+<U0001F52D> /xf0/x9f/x94/xad TELESCOPE -+<U0001F52E> /xf0/x9f/x94/xae CRYSTAL BALL -+<U0001F52F> /xf0/x9f/x94/xaf SIX POINTED STAR WITH MIDDLE DOT -+<U0001F530> /xf0/x9f/x94/xb0 JAPANESE SYMBOL FOR BEGINNER -+<U0001F531> /xf0/x9f/x94/xb1 TRIDENT EMBLEM -+<U0001F532> /xf0/x9f/x94/xb2 BLACK SQUARE BUTTON -+<U0001F533> /xf0/x9f/x94/xb3 WHITE SQUARE BUTTON -+<U0001F534> /xf0/x9f/x94/xb4 LARGE RED CIRCLE -+<U0001F535> /xf0/x9f/x94/xb5 LARGE BLUE CIRCLE -+<U0001F536> /xf0/x9f/x94/xb6 LARGE ORANGE DIAMOND -+<U0001F537> /xf0/x9f/x94/xb7 LARGE BLUE DIAMOND -+<U0001F538> /xf0/x9f/x94/xb8 SMALL ORANGE DIAMOND -+<U0001F539> /xf0/x9f/x94/xb9 SMALL BLUE DIAMOND -+<U0001F53A> /xf0/x9f/x94/xba UP-POINTING RED TRIANGLE -+<U0001F53B> /xf0/x9f/x94/xbb DOWN-POINTING RED TRIANGLE -+<U0001F53C> /xf0/x9f/x94/xbc UP-POINTING SMALL RED TRIANGLE -+<U0001F53D> /xf0/x9f/x94/xbd DOWN-POINTING SMALL RED TRIANGLE -+<U0001F550> /xf0/x9f/x95/x90 CLOCK FACE ONE OCLOCK -+<U0001F551> /xf0/x9f/x95/x91 CLOCK FACE TWO OCLOCK -+<U0001F552> /xf0/x9f/x95/x92 CLOCK FACE THREE OCLOCK -+<U0001F553> /xf0/x9f/x95/x93 CLOCK FACE FOUR OCLOCK -+<U0001F554> /xf0/x9f/x95/x94 CLOCK FACE FIVE OCLOCK -+<U0001F555> /xf0/x9f/x95/x95 CLOCK FACE SIX OCLOCK -+<U0001F556> /xf0/x9f/x95/x96 CLOCK FACE SEVEN OCLOCK -+<U0001F557> /xf0/x9f/x95/x97 CLOCK FACE EIGHT OCLOCK -+<U0001F558> /xf0/x9f/x95/x98 CLOCK FACE NINE OCLOCK -+<U0001F559> /xf0/x9f/x95/x99 CLOCK FACE TEN OCLOCK -+<U0001F55A> /xf0/x9f/x95/x9a CLOCK FACE ELEVEN OCLOCK -+<U0001F55B> /xf0/x9f/x95/x9b CLOCK FACE TWELVE OCLOCK -+<U0001F55C> /xf0/x9f/x95/x9c CLOCK FACE ONE-THIRTY -+<U0001F55D> /xf0/x9f/x95/x9d CLOCK FACE TWO-THIRTY -+<U0001F55E> /xf0/x9f/x95/x9e CLOCK FACE THREE-THIRTY -+<U0001F55F> /xf0/x9f/x95/x9f CLOCK FACE FOUR-THIRTY -+<U0001F560> /xf0/x9f/x95/xa0 CLOCK FACE FIVE-THIRTY -+<U0001F561> /xf0/x9f/x95/xa1 CLOCK FACE SIX-THIRTY -+<U0001F562> /xf0/x9f/x95/xa2 CLOCK FACE SEVEN-THIRTY -+<U0001F563> /xf0/x9f/x95/xa3 CLOCK FACE EIGHT-THIRTY -+<U0001F564> /xf0/x9f/x95/xa4 CLOCK FACE NINE-THIRTY -+<U0001F565> /xf0/x9f/x95/xa5 CLOCK FACE TEN-THIRTY -+<U0001F566> /xf0/x9f/x95/xa6 CLOCK FACE ELEVEN-THIRTY -+<U0001F567> /xf0/x9f/x95/xa7 CLOCK FACE TWELVE-THIRTY -+<U0001F5FB> /xf0/x9f/x97/xbb MOUNT FUJI -+<U0001F5FC> /xf0/x9f/x97/xbc TOKYO TOWER -+<U0001F5FD> /xf0/x9f/x97/xbd STATUE OF LIBERTY -+<U0001F5FE> /xf0/x9f/x97/xbe SILHOUETTE OF JAPAN -+<U0001F5FF> /xf0/x9f/x97/xbf MOYAI -+<U0001F601> /xf0/x9f/x98/x81 GRINNING FACE WITH SMILING EYES -+<U0001F602> /xf0/x9f/x98/x82 FACE WITH TEARS OF JOY -+<U0001F603> /xf0/x9f/x98/x83 SMILING FACE WITH OPEN MOUTH -+<U0001F604> /xf0/x9f/x98/x84 SMILING FACE WITH OPEN MOUTH AND SMILING EYES -+<U0001F605> /xf0/x9f/x98/x85 SMILING FACE WITH OPEN MOUTH AND COLD SWEAT -+<U0001F606> /xf0/x9f/x98/x86 SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES -+<U0001F607> /xf0/x9f/x98/x87 SMILING FACE WITH HALO -+<U0001F608> /xf0/x9f/x98/x88 SMILING FACE WITH HORNS -+<U0001F609> /xf0/x9f/x98/x89 WINKING FACE -+<U0001F60A> /xf0/x9f/x98/x8a SMILING FACE WITH SMILING EYES -+<U0001F60B> /xf0/x9f/x98/x8b FACE SAVOURING DELICIOUS FOOD -+<U0001F60C> /xf0/x9f/x98/x8c RELIEVED FACE -+<U0001F60D> /xf0/x9f/x98/x8d SMILING FACE WITH HEART-SHAPED EYES -+<U0001F60E> /xf0/x9f/x98/x8e SMILING FACE WITH SUNGLASSES -+<U0001F60F> /xf0/x9f/x98/x8f SMIRKING FACE -+<U0001F610> /xf0/x9f/x98/x90 NEUTRAL FACE -+<U0001F612> /xf0/x9f/x98/x92 UNAMUSED FACE -+<U0001F613> /xf0/x9f/x98/x93 FACE WITH COLD SWEAT -+<U0001F614> /xf0/x9f/x98/x94 PENSIVE FACE -+<U0001F616> /xf0/x9f/x98/x96 CONFOUNDED FACE -+<U0001F618> /xf0/x9f/x98/x98 FACE THROWING A KISS -+<U0001F61A> /xf0/x9f/x98/x9a KISSING FACE WITH CLOSED EYES -+<U0001F61C> /xf0/x9f/x98/x9c FACE WITH STUCK-OUT TONGUE AND WINKING EYE -+<U0001F61D> /xf0/x9f/x98/x9d FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES -+<U0001F61E> /xf0/x9f/x98/x9e DISAPPOINTED FACE -+<U0001F620> /xf0/x9f/x98/xa0 ANGRY FACE -+<U0001F621> /xf0/x9f/x98/xa1 POUTING FACE -+<U0001F622> /xf0/x9f/x98/xa2 CRYING FACE -+<U0001F623> /xf0/x9f/x98/xa3 PERSEVERING FACE -+<U0001F624> /xf0/x9f/x98/xa4 FACE WITH LOOK OF TRIUMPH -+<U0001F625> /xf0/x9f/x98/xa5 DISAPPOINTED BUT RELIEVED FACE -+<U0001F628> /xf0/x9f/x98/xa8 FEARFUL FACE -+<U0001F629> /xf0/x9f/x98/xa9 WEARY FACE -+<U0001F62A> /xf0/x9f/x98/xaa SLEEPY FACE -+<U0001F62B> /xf0/x9f/x98/xab TIRED FACE -+<U0001F62D> /xf0/x9f/x98/xad LOUDLY CRYING FACE -+<U0001F630> /xf0/x9f/x98/xb0 FACE WITH OPEN MOUTH AND COLD SWEAT -+<U0001F631> /xf0/x9f/x98/xb1 FACE SCREAMING IN FEAR -+<U0001F632> /xf0/x9f/x98/xb2 ASTONISHED FACE -+<U0001F633> /xf0/x9f/x98/xb3 FLUSHED FACE -+<U0001F635> /xf0/x9f/x98/xb5 DIZZY FACE -+<U0001F636> /xf0/x9f/x98/xb6 FACE WITHOUT MOUTH -+<U0001F637> /xf0/x9f/x98/xb7 FACE WITH MEDICAL MASK -+<U0001F638> /xf0/x9f/x98/xb8 GRINNING CAT FACE WITH SMILING EYES -+<U0001F639> /xf0/x9f/x98/xb9 CAT FACE WITH TEARS OF JOY -+<U0001F63A> /xf0/x9f/x98/xba SMILING CAT FACE WITH OPEN MOUTH -+<U0001F63B> /xf0/x9f/x98/xbb SMILING CAT FACE WITH HEART-SHAPED EYES -+<U0001F63C> /xf0/x9f/x98/xbc CAT FACE WITH WRY SMILE -+<U0001F63D> /xf0/x9f/x98/xbd KISSING CAT FACE WITH CLOSED EYES -+<U0001F63E> /xf0/x9f/x98/xbe POUTING CAT FACE -+<U0001F63F> /xf0/x9f/x98/xbf CRYING CAT FACE -+<U0001F640> /xf0/x9f/x99/x80 WEARY CAT FACE -+<U0001F645> /xf0/x9f/x99/x85 FACE WITH NO GOOD GESTURE -+<U0001F646> /xf0/x9f/x99/x86 FACE WITH OK GESTURE -+<U0001F647> /xf0/x9f/x99/x87 PERSON BOWING DEEPLY -+<U0001F648> /xf0/x9f/x99/x88 SEE-NO-EVIL MONKEY -+<U0001F649> /xf0/x9f/x99/x89 HEAR-NO-EVIL MONKEY -+<U0001F64A> /xf0/x9f/x99/x8a SPEAK-NO-EVIL MONKEY -+<U0001F64B> /xf0/x9f/x99/x8b HAPPY PERSON RAISING ONE HAND -+<U0001F64C> /xf0/x9f/x99/x8c PERSON RAISING BOTH HANDS IN CELEBRATION -+<U0001F64D> /xf0/x9f/x99/x8d PERSON FROWNING -+<U0001F64E> /xf0/x9f/x99/x8e PERSON WITH POUTING FACE -+<U0001F64F> /xf0/x9f/x99/x8f PERSON WITH FOLDED HANDS -+<U0001F680> /xf0/x9f/x9a/x80 ROCKET -+<U0001F681> /xf0/x9f/x9a/x81 HELICOPTER -+<U0001F682> /xf0/x9f/x9a/x82 STEAM LOCOMOTIVE -+<U0001F683> /xf0/x9f/x9a/x83 RAILWAY CAR -+<U0001F684> /xf0/x9f/x9a/x84 HIGH-SPEED TRAIN -+<U0001F685> /xf0/x9f/x9a/x85 HIGH-SPEED TRAIN WITH BULLET NOSE -+<U0001F686> /xf0/x9f/x9a/x86 TRAIN -+<U0001F687> /xf0/x9f/x9a/x87 METRO -+<U0001F688> /xf0/x9f/x9a/x88 LIGHT RAIL -+<U0001F689> /xf0/x9f/x9a/x89 STATION -+<U0001F68A> /xf0/x9f/x9a/x8a TRAM -+<U0001F68B> /xf0/x9f/x9a/x8b TRAM CAR -+<U0001F68C> /xf0/x9f/x9a/x8c BUS -+<U0001F68D> /xf0/x9f/x9a/x8d ONCOMING BUS -+<U0001F68E> /xf0/x9f/x9a/x8e TROLLEYBUS -+<U0001F68F> /xf0/x9f/x9a/x8f BUS STOP -+<U0001F690> /xf0/x9f/x9a/x90 MINIBUS -+<U0001F691> /xf0/x9f/x9a/x91 AMBULANCE -+<U0001F692> /xf0/x9f/x9a/x92 FIRE ENGINE -+<U0001F693> /xf0/x9f/x9a/x93 POLICE CAR -+<U0001F694> /xf0/x9f/x9a/x94 ONCOMING POLICE CAR -+<U0001F695> /xf0/x9f/x9a/x95 TAXI -+<U0001F696> /xf0/x9f/x9a/x96 ONCOMING TAXI -+<U0001F697> /xf0/x9f/x9a/x97 AUTOMOBILE -+<U0001F698> /xf0/x9f/x9a/x98 ONCOMING AUTOMOBILE -+<U0001F699> /xf0/x9f/x9a/x99 RECREATIONAL VEHICLE -+<U0001F69A> /xf0/x9f/x9a/x9a DELIVERY TRUCK -+<U0001F69B> /xf0/x9f/x9a/x9b ARTICULATED LORRY -+<U0001F69C> /xf0/x9f/x9a/x9c TRACTOR -+<U0001F69D> /xf0/x9f/x9a/x9d MONORAIL -+<U0001F69E> /xf0/x9f/x9a/x9e MOUNTAIN RAILWAY -+<U0001F69F> /xf0/x9f/x9a/x9f SUSPENSION RAILWAY -+<U0001F6A0> /xf0/x9f/x9a/xa0 MOUNTAIN CABLEWAY -+<U0001F6A1> /xf0/x9f/x9a/xa1 AERIAL TRAMWAY -+<U0001F6A2> /xf0/x9f/x9a/xa2 SHIP -+<U0001F6A3> /xf0/x9f/x9a/xa3 ROWBOAT -+<U0001F6A4> /xf0/x9f/x9a/xa4 SPEEDBOAT -+<U0001F6A5> /xf0/x9f/x9a/xa5 HORIZONTAL TRAFFIC LIGHT -+<U0001F6A6> /xf0/x9f/x9a/xa6 VERTICAL TRAFFIC LIGHT -+<U0001F6A7> /xf0/x9f/x9a/xa7 CONSTRUCTION SIGN -+<U0001F6A8> /xf0/x9f/x9a/xa8 POLICE CARS REVOLVING LIGHT -+<U0001F6A9> /xf0/x9f/x9a/xa9 TRIANGULAR FLAG ON POST -+<U0001F6AA> /xf0/x9f/x9a/xaa DOOR -+<U0001F6AB> /xf0/x9f/x9a/xab NO ENTRY SIGN -+<U0001F6AC> /xf0/x9f/x9a/xac SMOKING SYMBOL -+<U0001F6AD> /xf0/x9f/x9a/xad NO SMOKING SYMBOL -+<U0001F6AE> /xf0/x9f/x9a/xae PUT LITTER IN ITS PLACE SYMBOL -+<U0001F6AF> /xf0/x9f/x9a/xaf DO NOT LITTER SYMBOL -+<U0001F6B0> /xf0/x9f/x9a/xb0 POTABLE WATER SYMBOL -+<U0001F6B1> /xf0/x9f/x9a/xb1 NON-POTABLE WATER SYMBOL -+<U0001F6B2> /xf0/x9f/x9a/xb2 BICYCLE -+<U0001F6B3> /xf0/x9f/x9a/xb3 NO BICYCLES -+<U0001F6B4> /xf0/x9f/x9a/xb4 BICYCLIST -+<U0001F6B5> /xf0/x9f/x9a/xb5 MOUNTAIN BICYCLIST -+<U0001F6B6> /xf0/x9f/x9a/xb6 PEDESTRIAN -+<U0001F6B7> /xf0/x9f/x9a/xb7 NO PEDESTRIANS -+<U0001F6B8> /xf0/x9f/x9a/xb8 CHILDREN CROSSING -+<U0001F6B9> /xf0/x9f/x9a/xb9 MENS SYMBOL -+<U0001F6BA> /xf0/x9f/x9a/xba WOMENS SYMBOL -+<U0001F6BB> /xf0/x9f/x9a/xbb RESTROOM -+<U0001F6BC> /xf0/x9f/x9a/xbc BABY SYMBOL -+<U0001F6BD> /xf0/x9f/x9a/xbd TOILET -+<U0001F6BE> /xf0/x9f/x9a/xbe WATER CLOSET -+<U0001F6BF> /xf0/x9f/x9a/xbf SHOWER -+<U0001F6C0> /xf0/x9f/x9b/x80 BATH -+<U0001F6C1> /xf0/x9f/x9b/x81 BATHTUB -+<U0001F6C2> /xf0/x9f/x9b/x82 PASSPORT CONTROL -+<U0001F6C3> /xf0/x9f/x9b/x83 CUSTOMS -+<U0001F6C4> /xf0/x9f/x9b/x84 BAGGAGE CLAIM -+<U0001F6C5> /xf0/x9f/x9b/x85 LEFT LUGGAGE -+<U0001F700> /xf0/x9f/x9c/x80 ALCHEMICAL SYMBOL FOR QUINTESSENCE -+<U0001F701> /xf0/x9f/x9c/x81 ALCHEMICAL SYMBOL FOR AIR -+<U0001F702> /xf0/x9f/x9c/x82 ALCHEMICAL SYMBOL FOR FIRE -+<U0001F703> /xf0/x9f/x9c/x83 ALCHEMICAL SYMBOL FOR EARTH -+<U0001F704> /xf0/x9f/x9c/x84 ALCHEMICAL SYMBOL FOR WATER -+<U0001F705> /xf0/x9f/x9c/x85 ALCHEMICAL SYMBOL FOR AQUAFORTIS -+<U0001F706> /xf0/x9f/x9c/x86 ALCHEMICAL SYMBOL FOR AQUA REGIA -+<U0001F707> /xf0/x9f/x9c/x87 ALCHEMICAL SYMBOL FOR AQUA REGIA-2 -+<U0001F708> /xf0/x9f/x9c/x88 ALCHEMICAL SYMBOL FOR AQUA VITAE -+<U0001F709> /xf0/x9f/x9c/x89 ALCHEMICAL SYMBOL FOR AQUA VITAE-2 -+<U0001F70A> /xf0/x9f/x9c/x8a ALCHEMICAL SYMBOL FOR VINEGAR -+<U0001F70B> /xf0/x9f/x9c/x8b ALCHEMICAL SYMBOL FOR VINEGAR-2 -+<U0001F70C> /xf0/x9f/x9c/x8c ALCHEMICAL SYMBOL FOR VINEGAR-3 -+<U0001F70D> /xf0/x9f/x9c/x8d ALCHEMICAL SYMBOL FOR SULFUR -+<U0001F70E> /xf0/x9f/x9c/x8e ALCHEMICAL SYMBOL FOR PHILOSOPHERS SULFUR -+<U0001F70F> /xf0/x9f/x9c/x8f ALCHEMICAL SYMBOL FOR BLACK SULFUR -+<U0001F710> /xf0/x9f/x9c/x90 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE -+<U0001F711> /xf0/x9f/x9c/x91 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-2 -+<U0001F712> /xf0/x9f/x9c/x92 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-3 -+<U0001F713> /xf0/x9f/x9c/x93 ALCHEMICAL SYMBOL FOR CINNABAR -+<U0001F714> /xf0/x9f/x9c/x94 ALCHEMICAL SYMBOL FOR SALT -+<U0001F715> /xf0/x9f/x9c/x95 ALCHEMICAL SYMBOL FOR NITRE -+<U0001F716> /xf0/x9f/x9c/x96 ALCHEMICAL SYMBOL FOR VITRIOL -+<U0001F717> /xf0/x9f/x9c/x97 ALCHEMICAL SYMBOL FOR VITRIOL-2 -+<U0001F718> /xf0/x9f/x9c/x98 ALCHEMICAL SYMBOL FOR ROCK SALT -+<U0001F719> /xf0/x9f/x9c/x99 ALCHEMICAL SYMBOL FOR ROCK SALT-2 -+<U0001F71A> /xf0/x9f/x9c/x9a ALCHEMICAL SYMBOL FOR GOLD -+<U0001F71B> /xf0/x9f/x9c/x9b ALCHEMICAL SYMBOL FOR SILVER -+<U0001F71C> /xf0/x9f/x9c/x9c ALCHEMICAL SYMBOL FOR IRON ORE -+<U0001F71D> /xf0/x9f/x9c/x9d ALCHEMICAL SYMBOL FOR IRON ORE-2 -+<U0001F71E> /xf0/x9f/x9c/x9e ALCHEMICAL SYMBOL FOR CROCUS OF IRON -+<U0001F71F> /xf0/x9f/x9c/x9f ALCHEMICAL SYMBOL FOR REGULUS OF IRON -+<U0001F720> /xf0/x9f/x9c/xa0 ALCHEMICAL SYMBOL FOR COPPER ORE -+<U0001F721> /xf0/x9f/x9c/xa1 ALCHEMICAL SYMBOL FOR IRON-COPPER ORE -+<U0001F722> /xf0/x9f/x9c/xa2 ALCHEMICAL SYMBOL FOR SUBLIMATE OF COPPER -+<U0001F723> /xf0/x9f/x9c/xa3 ALCHEMICAL SYMBOL FOR CROCUS OF COPPER -+<U0001F724> /xf0/x9f/x9c/xa4 ALCHEMICAL SYMBOL FOR CROCUS OF COPPER-2 -+<U0001F725> /xf0/x9f/x9c/xa5 ALCHEMICAL SYMBOL FOR COPPER ANTIMONIATE -+<U0001F726> /xf0/x9f/x9c/xa6 ALCHEMICAL SYMBOL FOR SALT OF COPPER ANTIMONIATE -+<U0001F727> /xf0/x9f/x9c/xa7 ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF COPPER -+<U0001F728> /xf0/x9f/x9c/xa8 ALCHEMICAL SYMBOL FOR VERDIGRIS -+<U0001F729> /xf0/x9f/x9c/xa9 ALCHEMICAL SYMBOL FOR TIN ORE -+<U0001F72A> /xf0/x9f/x9c/xaa ALCHEMICAL SYMBOL FOR LEAD ORE -+<U0001F72B> /xf0/x9f/x9c/xab ALCHEMICAL SYMBOL FOR ANTIMONY ORE -+<U0001F72C> /xf0/x9f/x9c/xac ALCHEMICAL SYMBOL FOR SUBLIMATE OF ANTIMONY -+<U0001F72D> /xf0/x9f/x9c/xad ALCHEMICAL SYMBOL FOR SALT OF ANTIMONY -+<U0001F72E> /xf0/x9f/x9c/xae ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF ANTIMONY -+<U0001F72F> /xf0/x9f/x9c/xaf ALCHEMICAL SYMBOL FOR VINEGAR OF ANTIMONY -+<U0001F730> /xf0/x9f/x9c/xb0 ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY -+<U0001F731> /xf0/x9f/x9c/xb1 ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY-2 -+<U0001F732> /xf0/x9f/x9c/xb2 ALCHEMICAL SYMBOL FOR REGULUS -+<U0001F733> /xf0/x9f/x9c/xb3 ALCHEMICAL SYMBOL FOR REGULUS-2 -+<U0001F734> /xf0/x9f/x9c/xb4 ALCHEMICAL SYMBOL FOR REGULUS-3 -+<U0001F735> /xf0/x9f/x9c/xb5 ALCHEMICAL SYMBOL FOR REGULUS-4 -+<U0001F736> /xf0/x9f/x9c/xb6 ALCHEMICAL SYMBOL FOR ALKALI -+<U0001F737> /xf0/x9f/x9c/xb7 ALCHEMICAL SYMBOL FOR ALKALI-2 -+<U0001F738> /xf0/x9f/x9c/xb8 ALCHEMICAL SYMBOL FOR MARCASITE -+<U0001F739> /xf0/x9f/x9c/xb9 ALCHEMICAL SYMBOL FOR SAL-AMMONIAC -+<U0001F73A> /xf0/x9f/x9c/xba ALCHEMICAL SYMBOL FOR ARSENIC -+<U0001F73B> /xf0/x9f/x9c/xbb ALCHEMICAL SYMBOL FOR REALGAR -+<U0001F73C> /xf0/x9f/x9c/xbc ALCHEMICAL SYMBOL FOR REALGAR-2 -+<U0001F73D> /xf0/x9f/x9c/xbd ALCHEMICAL SYMBOL FOR AURIPIGMENT -+<U0001F73E> /xf0/x9f/x9c/xbe ALCHEMICAL SYMBOL FOR BISMUTH ORE -+<U0001F73F> /xf0/x9f/x9c/xbf ALCHEMICAL SYMBOL FOR TARTAR -+<U0001F740> /xf0/x9f/x9d/x80 ALCHEMICAL SYMBOL FOR TARTAR-2 -+<U0001F741> /xf0/x9f/x9d/x81 ALCHEMICAL SYMBOL FOR QUICK LIME -+<U0001F742> /xf0/x9f/x9d/x82 ALCHEMICAL SYMBOL FOR BORAX -+<U0001F743> /xf0/x9f/x9d/x83 ALCHEMICAL SYMBOL FOR BORAX-2 -+<U0001F744> /xf0/x9f/x9d/x84 ALCHEMICAL SYMBOL FOR BORAX-3 -+<U0001F745> /xf0/x9f/x9d/x85 ALCHEMICAL SYMBOL FOR ALUM -+<U0001F746> /xf0/x9f/x9d/x86 ALCHEMICAL SYMBOL FOR OIL -+<U0001F747> /xf0/x9f/x9d/x87 ALCHEMICAL SYMBOL FOR SPIRIT -+<U0001F748> /xf0/x9f/x9d/x88 ALCHEMICAL SYMBOL FOR TINCTURE -+<U0001F749> /xf0/x9f/x9d/x89 ALCHEMICAL SYMBOL FOR GUM -+<U0001F74A> /xf0/x9f/x9d/x8a ALCHEMICAL SYMBOL FOR WAX -+<U0001F74B> /xf0/x9f/x9d/x8b ALCHEMICAL SYMBOL FOR POWDER -+<U0001F74C> /xf0/x9f/x9d/x8c ALCHEMICAL SYMBOL FOR CALX -+<U0001F737> /xf0/x9f/x9c/xb7 ALCHEMICAL SYMBOL FOR ALKALI-2 -+<U0001F738> /xf0/x9f/x9c/xb8 ALCHEMICAL SYMBOL FOR MARCASITE -+<U0001F739> /xf0/x9f/x9c/xb9 ALCHEMICAL SYMBOL FOR SAL-AMMONIAC -+<U0001F73A> /xf0/x9f/x9c/xba ALCHEMICAL SYMBOL FOR ARSENIC -+<U0001F73B> /xf0/x9f/x9c/xbb ALCHEMICAL SYMBOL FOR REALGAR -+<U0001F73C> /xf0/x9f/x9c/xbc ALCHEMICAL SYMBOL FOR REALGAR-2 -+<U0001F73D> /xf0/x9f/x9c/xbd ALCHEMICAL SYMBOL FOR AURIPIGMENT -+<U0001F73E> /xf0/x9f/x9c/xbe ALCHEMICAL SYMBOL FOR BISMUTH ORE -+<U0001F73F> /xf0/x9f/x9c/xbf ALCHEMICAL SYMBOL FOR TARTAR -+<U0001F740> /xf0/x9f/x9d/x80 ALCHEMICAL SYMBOL FOR TARTAR-2 -+<U0001F741> /xf0/x9f/x9d/x81 ALCHEMICAL SYMBOL FOR QUICK LIME -+<U0001F742> /xf0/x9f/x9d/x82 ALCHEMICAL SYMBOL FOR BORAX -+<U0001F743> /xf0/x9f/x9d/x83 ALCHEMICAL SYMBOL FOR BORAX-2 -+<U0001F744> /xf0/x9f/x9d/x84 ALCHEMICAL SYMBOL FOR BORAX-3 -+<U0001F745> /xf0/x9f/x9d/x85 ALCHEMICAL SYMBOL FOR ALUM -+<U0001F746> /xf0/x9f/x9d/x86 ALCHEMICAL SYMBOL FOR OIL -+<U0001F747> /xf0/x9f/x9d/x87 ALCHEMICAL SYMBOL FOR SPIRIT -+<U0001F748> /xf0/x9f/x9d/x88 ALCHEMICAL SYMBOL FOR TINCTURE -+<U0001F749> /xf0/x9f/x9d/x89 ALCHEMICAL SYMBOL FOR GUM -+<U0001F74A> /xf0/x9f/x9d/x8a ALCHEMICAL SYMBOL FOR WAX -+<U0001F74B> /xf0/x9f/x9d/x8b ALCHEMICAL SYMBOL FOR POWDER -+<U0001F74C> /xf0/x9f/x9d/x8c ALCHEMICAL SYMBOL FOR CALX -+<U0001F74D> /xf0/x9f/x9d/x8d ALCHEMICAL SYMBOL FOR TUTTY -+<U0001F74E> /xf0/x9f/x9d/x8e ALCHEMICAL SYMBOL FOR CAPUT MORTUUM -+<U0001F74F> /xf0/x9f/x9d/x8f ALCHEMICAL SYMBOL FOR SCEPTER OF JOVE -+<U0001F750> /xf0/x9f/x9d/x90 ALCHEMICAL SYMBOL FOR CADUCEUS -+<U0001F751> /xf0/x9f/x9d/x91 ALCHEMICAL SYMBOL FOR TRIDENT -+<U0001F752> /xf0/x9f/x9d/x92 ALCHEMICAL SYMBOL FOR STARRED TRIDENT -+<U0001F753> /xf0/x9f/x9d/x93 ALCHEMICAL SYMBOL FOR LODESTONE -+<U0001F754> /xf0/x9f/x9d/x94 ALCHEMICAL SYMBOL FOR SOAP -+<U0001F755> /xf0/x9f/x9d/x95 ALCHEMICAL SYMBOL FOR URINE -+<U0001F756> /xf0/x9f/x9d/x96 ALCHEMICAL SYMBOL FOR HORSE DUNG -+<U0001F757> /xf0/x9f/x9d/x97 ALCHEMICAL SYMBOL FOR ASHES -+<U0001F758> /xf0/x9f/x9d/x98 ALCHEMICAL SYMBOL FOR POT ASHES -+<U0001F759> /xf0/x9f/x9d/x99 ALCHEMICAL SYMBOL FOR BRICK -+<U0001F75A> /xf0/x9f/x9d/x9a ALCHEMICAL SYMBOL FOR POWDERED BRICK -+<U0001F75B> /xf0/x9f/x9d/x9b ALCHEMICAL SYMBOL FOR AMALGAM -+<U0001F75C> /xf0/x9f/x9d/x9c ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM -+<U0001F75D> /xf0/x9f/x9d/x9d ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM-2 -+<U0001F75E> /xf0/x9f/x9d/x9e ALCHEMICAL SYMBOL FOR SUBLIMATION -+<U0001F75F> /xf0/x9f/x9d/x9f ALCHEMICAL SYMBOL FOR PRECIPITATE -+<U0001F760> /xf0/x9f/x9d/xa0 ALCHEMICAL SYMBOL FOR DISTILL -+<U0001F761> /xf0/x9f/x9d/xa1 ALCHEMICAL SYMBOL FOR DISSOLVE -+<U0001F762> /xf0/x9f/x9d/xa2 ALCHEMICAL SYMBOL FOR DISSOLVE-2 -+<U0001F763> /xf0/x9f/x9d/xa3 ALCHEMICAL SYMBOL FOR PURIFY -+<U0001F764> /xf0/x9f/x9d/xa4 ALCHEMICAL SYMBOL FOR PUTREFACTION -+<U0001F765> /xf0/x9f/x9d/xa5 ALCHEMICAL SYMBOL FOR CRUCIBLE -+<U0001F766> /xf0/x9f/x9d/xa6 ALCHEMICAL SYMBOL FOR CRUCIBLE-2 -+<U0001F767> /xf0/x9f/x9d/xa7 ALCHEMICAL SYMBOL FOR CRUCIBLE-3 -+<U0001F768> /xf0/x9f/x9d/xa8 ALCHEMICAL SYMBOL FOR CRUCIBLE-4 -+<U0001F769> /xf0/x9f/x9d/xa9 ALCHEMICAL SYMBOL FOR CRUCIBLE-5 -+<U0001F76A> /xf0/x9f/x9d/xaa ALCHEMICAL SYMBOL FOR ALEMBIC -+<U0001F76B> /xf0/x9f/x9d/xab ALCHEMICAL SYMBOL FOR BATH OF MARY -+<U0001F76C> /xf0/x9f/x9d/xac ALCHEMICAL SYMBOL FOR BATH OF VAPOURS -+<U0001F76D> /xf0/x9f/x9d/xad ALCHEMICAL SYMBOL FOR RETORT -+<U0001F76E> /xf0/x9f/x9d/xae ALCHEMICAL SYMBOL FOR HOUR -+<U0001F76F> /xf0/x9f/x9d/xaf ALCHEMICAL SYMBOL FOR NIGHT -+<U0001F770> /xf0/x9f/x9d/xb0 ALCHEMICAL SYMBOL FOR DAY-NIGHT -+<U0001F771> /xf0/x9f/x9d/xb1 ALCHEMICAL SYMBOL FOR MONTH -+<U0001F772> /xf0/x9f/x9d/xb2 ALCHEMICAL SYMBOL FOR HALF DRAM -+<U0001F773> /xf0/x9f/x9d/xb3 ALCHEMICAL SYMBOL FOR HALF OUNCE - <U00020000>..<U0002003F> /xf0/xa0/x80/x80 <CJK> - <U00020040>..<U0002007F> /xf0/xa0/x81/x80 <CJK> - <U00020080>..<U000200BF> /xf0/xa0/x82/x80 <CJK> -Index: glibc-2.12-2-gc4ccff1/localedata/locales/ar_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/ar_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/ar_IN -@@ -52,7 +52,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "<U0049><U004E><U0052><U0020>" --currency_symbol "<U20A8>" -+currency_symbol "<U20B9>" - mon_decimal_point "<U002E>" - mon_thousands_sep "<U002C>" - mon_grouping 3;2 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/as_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/as_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/as_IN -@@ -51,7 +51,7 @@ END LC_NUMERIC - %%%%%%%%%%%%% - LC_MONETARY - int_curr_symbol "<U0049><U004E><U0052><U0020>" --currency_symbol "<U099F><U0995><U09BE>" -+currency_symbol "<U20B9>" - mon_decimal_point "<U002E>" - mon_thousands_sep "<U002C>" - mon_grouping 3;2 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/bn_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/bn_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/bn_IN -@@ -53,7 +53,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "<U0049><U004E><U0052><U0020>" --currency_symbol "<U099F><U09BE><U0995><U09BE>" -+currency_symbol "<U20B9>" - mon_decimal_point "<U002E>" - mon_thousands_sep "<U002C>" - mon_grouping 2;3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/en_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/en_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/en_IN -@@ -52,7 +52,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "<U0049><U004E><U0052><U0020>" --currency_symbol "<U20A8>" -+currency_symbol "<U20B9>" - mon_decimal_point "<U002E>" - mon_thousands_sep "<U002C>" - mon_grouping 3;2 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/gu_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/gu_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/gu_IN -@@ -71,7 +71,7 @@ LC_MONETARY - % for IBM Class for Unicode/Java - % - int_curr_symbol "<U0049><U004E><U0052><U0020>" --currency_symbol "<U0AB0><U0AC1>" -+currency_symbol "<U20B9>" - mon_decimal_point "<U002E>" - mon_thousands_sep "<U002C>" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/hi_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/hi_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/hi_IN -@@ -69,7 +69,7 @@ LC_MONETARY - % for IBM Class for Unicode/Java - % - int_curr_symbol "<U0049><U004E><U0052><U0020>" --currency_symbol "<U0930><U0942>" -+currency_symbol "<U20B9>" - mon_decimal_point "<U002E>" - mon_thousands_sep "<U002C>" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/kn_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/kn_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/kn_IN -@@ -71,8 +71,7 @@ LC_MONETARY - % for IBM Class for Unicode/Java - % - int_curr_symbol "<U0049><U004E><U0052><U0020>" --% *** Change this to reflect Kannada , in Dev it is RA with VS U attached --currency_symbol "<U0CB0><U0CC2>" -+currency_symbol "<U20B9>" - mon_decimal_point "<U002E>" - mon_thousands_sep "<U002C>" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/kok_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/kok_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/kok_IN -@@ -49,7 +49,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "<U0049><U004E><U0052><U0020>" --currency_symbol "<U0930><U0941>" -+currency_symbol "<U20B9>" - mon_decimal_point "<U002E>" - mon_thousands_sep "<U002C>" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/ks_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/ks_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/ks_IN -@@ -57,7 +57,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "<U0049><U004E><U0052><U0020>" --currency_symbol "<U20A8>" -+currency_symbol "<U20B9>" - mon_decimal_point "<U002E>" - mon_thousands_sep "<U002C>" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/ml_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/ml_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/ml_IN -@@ -69,7 +69,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "<U0049><U004E><U0052><U0020>" --currency_symbol "<U0D30><U0D42>" -+currency_symbol "<U20B9>" - mon_decimal_point "<U002E>" - mon_thousands_sep "<U002C>" - mon_grouping 3;2 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/mr_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/mr_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/mr_IN -@@ -70,7 +70,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "<U0049><U004E><U0052><U0020>" --currency_symbol "<U0930><U0941>" -+currency_symbol "<U20B9>" - mon_decimal_point "<U002E>" - mon_thousands_sep "<U002C>" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/or_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/or_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/or_IN -@@ -607,7 +607,7 @@ END LC_NUMERIC - %%%%%%%%%%%%% - LC_MONETARY - int_curr_symbol "<U0049><U004E><U0052><U0020>" --currency_symbol "<U003D><U0030><U0023><U0052><U0073><U002E><U007C><U0031><U0023><U0052><U0065><U002E><U007C><U0031><U003C><U0052><U0073><U002E>" -+currency_symbol "<U20B9>" - mon_decimal_point "<U002E>" - mon_thousands_sep "<U002C>" - mon_grouping 3;2 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/pa_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/pa_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/pa_IN -@@ -66,7 +66,7 @@ END LC_COLLATE - LC_MONETARY - % This is the POSIX Locale definition the LC_MONETARY category. - int_curr_symbol "<U0049><U004E><U0052><U0020>" --currency_symbol "<U0A30><U0A41><U0A2A><U0A0F>" -+currency_symbol "<U20B9>" - mon_decimal_point "<U002E>" - mon_thousands_sep "<U002C>" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/sa_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/sa_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/sa_IN -@@ -52,7 +52,7 @@ LC_MONETARY - % for IBM Class for Unicode/Java - % - int_curr_symbol "<U0049><U004E><U0052><U0020>" --currency_symbol "<U0930><U0942>" -+currency_symbol "<U20B9>" - mon_decimal_point "<U002E>" - mon_thousands_sep "<U002C>" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/sd_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/sd_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/sd_IN -@@ -57,7 +57,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "<U0049><U004E><U0052><U0020>" --currency_symbol "<U20A8>" -+currency_symbol "<U20B9>" - mon_decimal_point "<U002E>" - mon_thousands_sep "<U002C>" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/ta_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/ta_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/ta_IN -@@ -74,7 +74,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "<U0049><U004E><U0052><U0020>" --currency_symbol "<U20A8>" -+currency_symbol "<U20B9>" - mon_decimal_point "<U002E>" - mon_thousands_sep "<U002C>" - mon_grouping 3;2 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/te_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/te_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/te_IN -@@ -73,7 +73,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "<U0049><U004E><U0052><U0020>" --currency_symbol "<U0C30><U0C42><U002E>" -+currency_symbol "<U20B9>" - mon_decimal_point "<U002E>" - mon_thousands_sep "<U002C>" - mon_grouping 3;2 diff --git a/src/patches/glibc/glibc-rh694386.patch b/src/patches/glibc/glibc-rh694386.patch deleted file mode 100644 index 3932eb8..0000000 --- a/src/patches/glibc/glibc-rh694386.patch +++ /dev/null @@ -1,86 +0,0 @@ -2011-03-28 Andreas Schwab schwab@linux-m68k.org - - * sysdeps/powerpc/powerpc32/power4/strncmp.S: Don't read past - differing bytes. - * sysdeps/powerpc/powerpc64/power4/strncmp.S: Likewise. - -diff --git a/sysdeps/powerpc/powerpc32/power4/strncmp.S b/sysdeps/powerpc/powerpc32/power4/strncmp.S -index fc0835e..f5d47af 100644 ---- a/sysdeps/powerpc/powerpc32/power4/strncmp.S -+++ b/sysdeps/powerpc/powerpc32/power4/strncmp.S -@@ -139,30 +139,31 @@ L(u1): - bdz L(u4) - cmpw rWORD1, rWORD2 - beq- cr1, L(u4) -+ bne- L(u4) - lbzu rWORD3, 1(rSTR1) - lbzu rWORD4, 1(rSTR2) -- bne- L(u4) - cmpwi cr1, rWORD3, 0 - bdz L(u3) - cmpw rWORD3, rWORD4 - beq- cr1, L(u3) -+ bne- L(u3) - lbzu rWORD1, 1(rSTR1) - lbzu rWORD2, 1(rSTR2) -- bne- L(u3) - cmpwi cr1, rWORD1, 0 - bdz L(u4) - cmpw rWORD1, rWORD2 - beq- cr1, L(u4) -+ bne- L(u4) - lbzu rWORD3, 1(rSTR1) - lbzu rWORD4, 1(rSTR2) -- bne- L(u4) - cmpwi cr1, rWORD3, 0 - bdz L(u3) - cmpw rWORD3, rWORD4 - beq- cr1, L(u3) -+ bne- L(u3) - lbzu rWORD1, 1(rSTR1) - lbzu rWORD2, 1(rSTR2) -- beq+ L(u1) -+ b L(u1) - - L(u3): sub rRTN, rWORD3, rWORD4 - blr -diff --git a/sysdeps/powerpc/powerpc64/power4/strncmp.S b/sysdeps/powerpc/powerpc64/power4/strncmp.S -index 7a1665d..94ae85b 100644 ---- a/sysdeps/powerpc/powerpc64/power4/strncmp.S -+++ b/sysdeps/powerpc/powerpc64/power4/strncmp.S -@@ -143,30 +143,31 @@ L(u1): - bdz L(u4) - cmpd rWORD1, rWORD2 - beq- cr1, L(u4) -+ bne- L(u4) - lbzu rWORD3, 1(rSTR1) - lbzu rWORD4, 1(rSTR2) -- bne- L(u4) - cmpdi cr1, rWORD3, 0 - bdz L(u3) - cmpd rWORD3, rWORD4 - beq- cr1, L(u3) -+ bne- L(u3) - lbzu rWORD1, 1(rSTR1) - lbzu rWORD2, 1(rSTR2) -- bne- L(u3) - cmpdi cr1, rWORD1, 0 - bdz L(u4) - cmpd rWORD1, rWORD2 - beq- cr1, L(u4) -+ bne- L(u4) - lbzu rWORD3, 1(rSTR1) - lbzu rWORD4, 1(rSTR2) -- bne- L(u4) - cmpdi cr1, rWORD3, 0 - bdz L(u3) - cmpd rWORD3, rWORD4 - beq- cr1, L(u3) -+ bne- L(u3) - lbzu rWORD1, 1(rSTR1) - lbzu rWORD2, 1(rSTR2) -- beq+ L(u1) -+ b L(u1) - - L(u3): sub rRTN, rWORD3, rWORD4 - blr diff --git a/src/patches/glibc/glibc-rh695595.patch b/src/patches/glibc/glibc-rh695595.patch deleted file mode 100644 index 0e6c72b..0000000 --- a/src/patches/glibc/glibc-rh695595.patch +++ /dev/null @@ -1,17 +0,0 @@ -2010-11-11 H.J. Lu hongjiu.lu@intel.com - - * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): - Support Intel processor model 6 and model 0x2c. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c -@@ -81,6 +81,7 @@ __init_cpu_features (void) - case 0x1e: - case 0x1f: - case 0x25: -+ case 0x2c: - case 0x2e: - case 0x2f: - /* Rep string instructions are fast on Intel Core i3, i5 diff --git a/src/patches/glibc/glibc-rh695963.patch b/src/patches/glibc/glibc-rh695963.patch deleted file mode 100644 index e8053dc..0000000 --- a/src/patches/glibc/glibc-rh695963.patch +++ /dev/null @@ -1,1284 +0,0 @@ -2010-08-27 Ulrich Drepper drepper@redhat.com - - * sysdeps/x86_64/multiarch/strlen-no-bsf.S: Move to .text.slow section. - - * sysdeps/x86_64/strlen.S: Minimal code improvement. - -2010-08-26 H.J. Lu hongjiu.lu@intel.com - - * sysdeps/x86_64/strlen.S: Unroll the loop. - * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add - strlen-sse2 strlen-sse2-bsf. - * sysdeps/x86_64/multiarch/strlen.S ((strlen): Return - __strlen_no_bsf if bit_Slow_BSF is set. - (__strlen_sse42): Removed. - * sysdeps/x86_64/multiarch/strlen-no-bsf.S: New file. - * sysdeps/x86_64/multiarch/strlen-sse4.S: New file. - -2010-08-25 H.J. Lu hongjiu.lu@intel.com - - * sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add - strlen-sse2 strlen-sse2-bsf. - * sysdeps/i386/i686/multiarch/strlen.S (strlen): Return - __strlen_sse2_bsf if bit_Slow_BSF is unset. - (__strlen_sse2): Removed. - * sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S: New file. - * sysdeps/i386/i686/multiarch/strlen-sse2.S: New file. - * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): Set - bit_Slow_BSF for Atom. - * sysdeps/x86_64/multiarch/init-arch.h (bit_Slow_BSF): Define. - (index_Slow_BSF): Define. - (HAS_SLOW_BSF): Define. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/i386/i686/multiarch/Makefile -+++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/Makefile -@@ -9,7 +9,8 @@ sysdep_routines += bzero-sse2 memset-sse - memmove-ssse3-rep bcopy-ssse3 bcopy-ssse3-rep \ - memset-sse2-rep bzero-sse2-rep strcmp-ssse3 \ - strcmp-sse4 strncmp-c strncmp-ssse3 strncmp-sse4 \ -- memcmp-ssse3 memcmp-sse4 strcasestr-nonascii -+ memcmp-ssse3 memcmp-sse4 strcasestr-nonascii \ -+ strlen-sse2 strlen-sse2-bsf - ifeq (yes,$(config-cflags-sse4)) - sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c - CFLAGS-strcspn-c.c += -msse4 -Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S -@@ -0,0 +1,127 @@ -+/* strlen with SSE2 and BSF -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ Contributed by Intel Corporation. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#if defined SHARED && !defined NOT_IN_libc -+ -+#include <sysdep.h> -+#include "asm-syntax.h" -+ -+#define CFI_PUSH(REG) \ -+ cfi_adjust_cfa_offset (4); \ -+ cfi_rel_offset (REG, 0) -+ -+#define CFI_POP(REG) \ -+ cfi_adjust_cfa_offset (-4); \ -+ cfi_restore (REG) -+ -+#define PUSH(REG) pushl REG; CFI_PUSH (REG) -+#define POP(REG) popl REG; CFI_POP (REG) -+#define PARMS 4 + 8 /* Preserve ESI and EDI. */ -+#define STR PARMS -+#define ENTRANCE PUSH (%esi); PUSH (%edi); cfi_remember_state -+#define RETURN POP (%edi); POP (%esi); ret; \ -+ cfi_restore_state; cfi_remember_state -+ -+ .text -+ENTRY ( __strlen_sse2_bsf) -+ ENTRANCE -+ mov STR(%esp), %edi -+ xor %eax, %eax -+ mov %edi, %ecx -+ and $0x3f, %ecx -+ pxor %xmm0, %xmm0 -+ cmp $0x30, %ecx -+ ja L(next) -+ movdqu (%edi), %xmm1 -+ pcmpeqb %xmm1, %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ jnz L(exit_less16) -+ mov %edi, %eax -+ and $-16, %eax -+ jmp L(align16_start) -+L(next): -+ -+ mov %edi, %eax -+ and $-16, %eax -+ pcmpeqb (%eax), %xmm0 -+ mov $-1, %esi -+ sub %eax, %ecx -+ shl %cl, %esi -+ pmovmskb %xmm0, %edx -+ and %esi, %edx -+ jnz L(exit) -+L(align16_start): -+ pxor %xmm0, %xmm0 -+ pxor %xmm1, %xmm1 -+ pxor %xmm2, %xmm2 -+ pxor %xmm3, %xmm3 -+ .p2align 4 -+L(align16_loop): -+ pcmpeqb 16(%eax), %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ jnz L(exit16) -+ -+ pcmpeqb 32(%eax), %xmm1 -+ pmovmskb %xmm1, %edx -+ test %edx, %edx -+ jnz L(exit32) -+ -+ pcmpeqb 48(%eax), %xmm2 -+ pmovmskb %xmm2, %edx -+ test %edx, %edx -+ jnz L(exit48) -+ -+ pcmpeqb 64(%eax), %xmm3 -+ pmovmskb %xmm3, %edx -+ lea 64(%eax), %eax -+ test %edx, %edx -+ jz L(align16_loop) -+L(exit): -+ sub %edi, %eax -+L(exit_less16): -+ bsf %edx, %edx -+ add %edx, %eax -+ RETURN -+L(exit16): -+ sub %edi, %eax -+ bsf %edx, %edx -+ add %edx, %eax -+ add $16, %eax -+ RETURN -+L(exit32): -+ sub %edi, %eax -+ bsf %edx, %edx -+ add %edx, %eax -+ add $32, %eax -+ RETURN -+L(exit48): -+ sub %edi, %eax -+ bsf %edx, %edx -+ add %edx, %eax -+ add $48, %eax -+ POP (%edi) -+ POP (%esi) -+ ret -+ -+END ( __strlen_sse2_bsf) -+ -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen-sse2.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen-sse2.S -@@ -0,0 +1,347 @@ -+/* strlen with SSE2 -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ Contributed by Intel Corporation. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#if defined SHARED && !defined NOT_IN_libc -+ -+#include <sysdep.h> -+#include "asm-syntax.h" -+ -+#define CFI_PUSH(REG) \ -+ cfi_adjust_cfa_offset (4); \ -+ cfi_rel_offset (REG, 0) -+ -+#define CFI_POP(REG) \ -+ cfi_adjust_cfa_offset (-4); \ -+ cfi_restore (REG) -+ -+#define PUSH(REG) pushl REG; CFI_PUSH (REG) -+#define POP(REG) popl REG; CFI_POP (REG) -+#define PARMS 4 -+#define STR PARMS -+#define ENTRANCE -+#define RETURN ret -+ -+ .text -+ENTRY (__strlen_sse2) -+ ENTRANCE -+ mov STR(%esp), %edx -+ xor %eax, %eax -+ cmpb $0, (%edx) -+ jz L(exit_tail0) -+ cmpb $0, 1(%edx) -+ jz L(exit_tail1) -+ cmpb $0, 2(%edx) -+ jz L(exit_tail2) -+ cmpb $0, 3(%edx) -+ jz L(exit_tail3) -+ cmpb $0, 4(%edx) -+ jz L(exit_tail4) -+ cmpb $0, 5(%edx) -+ jz L(exit_tail5) -+ cmpb $0, 6(%edx) -+ jz L(exit_tail6) -+ cmpb $0, 7(%edx) -+ jz L(exit_tail7) -+ cmpb $0, 8(%edx) -+ jz L(exit_tail8) -+ cmpb $0, 9(%edx) -+ jz L(exit_tail9) -+ cmpb $0, 10(%edx) -+ jz L(exit_tail10) -+ cmpb $0, 11(%edx) -+ jz L(exit_tail11) -+ cmpb $0, 12(%edx) -+ jz L(exit_tail12) -+ cmpb $0, 13(%edx) -+ jz L(exit_tail13) -+ cmpb $0, 14(%edx) -+ jz L(exit_tail14) -+ cmpb $0, 15(%edx) -+ jz L(exit_tail15) -+ pxor %xmm0, %xmm0 -+ mov %edx, %eax -+ mov %edx, %ecx -+ and $-16, %eax -+ add $16, %ecx -+ add $16, %eax -+ -+ pcmpeqb (%eax), %xmm0 -+ pmovmskb %xmm0, %edx -+ pxor %xmm1, %xmm1 -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm1 -+ pmovmskb %xmm1, %edx -+ pxor %xmm2, %xmm2 -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ -+ pcmpeqb (%eax), %xmm2 -+ pmovmskb %xmm2, %edx -+ pxor %xmm3, %xmm3 -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm3 -+ pmovmskb %xmm3, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm1 -+ pmovmskb %xmm1, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm2 -+ pmovmskb %xmm2, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm3 -+ pmovmskb %xmm3, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm1 -+ pmovmskb %xmm1, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm2 -+ pmovmskb %xmm2, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm3 -+ pmovmskb %xmm3, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm1 -+ pmovmskb %xmm1, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm2 -+ pmovmskb %xmm2, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm3 -+ pmovmskb %xmm3, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ and $-0x40, %eax -+ PUSH (%esi) -+ PUSH (%edi) -+ PUSH (%ebx) -+ PUSH (%ebp) -+ xor %ebp, %ebp -+L(aligned_64): -+ pcmpeqb (%eax), %xmm0 -+ pcmpeqb 16(%eax), %xmm1 -+ pcmpeqb 32(%eax), %xmm2 -+ pcmpeqb 48(%eax), %xmm3 -+ pmovmskb %xmm0, %edx -+ pmovmskb %xmm1, %esi -+ pmovmskb %xmm2, %edi -+ pmovmskb %xmm3, %ebx -+ or %edx, %ebp -+ or %esi, %ebp -+ or %edi, %ebp -+ or %ebx, %ebp -+ lea 64(%eax), %eax -+ jz L(aligned_64) -+L(48leave): -+ test %edx, %edx -+ jnz L(aligned_64_exit_16) -+ test %esi, %esi -+ jnz L(aligned_64_exit_32) -+ test %edi, %edi -+ jnz L(aligned_64_exit_48) -+ mov %ebx, %edx -+ lea (%eax), %eax -+ jmp L(aligned_64_exit) -+L(aligned_64_exit_48): -+ lea -16(%eax), %eax -+ mov %edi, %edx -+ jmp L(aligned_64_exit) -+L(aligned_64_exit_32): -+ lea -32(%eax), %eax -+ mov %esi, %edx -+ jmp L(aligned_64_exit) -+L(aligned_64_exit_16): -+ lea -48(%eax), %eax -+L(aligned_64_exit): -+ POP (%ebp) -+ POP (%ebx) -+ POP (%edi) -+ POP (%esi) -+L(exit): -+ sub %ecx, %eax -+ test %dl, %dl -+ jz L(exit_high) -+ test $0x01, %dl -+ jnz L(exit_tail0) -+ -+ test $0x02, %dl -+ jnz L(exit_tail1) -+ -+ test $0x04, %dl -+ jnz L(exit_tail2) -+ -+ test $0x08, %dl -+ jnz L(exit_tail3) -+ -+ test $0x10, %dl -+ jnz L(exit_tail4) -+ -+ test $0x20, %dl -+ jnz L(exit_tail5) -+ -+ test $0x40, %dl -+ jnz L(exit_tail6) -+ add $7, %eax -+L(exit_tail0): -+ RETURN -+ -+L(exit_high): -+ add $8, %eax -+ test $0x01, %dh -+ jnz L(exit_tail0) -+ -+ test $0x02, %dh -+ jnz L(exit_tail1) -+ -+ test $0x04, %dh -+ jnz L(exit_tail2) -+ -+ test $0x08, %dh -+ jnz L(exit_tail3) -+ -+ test $0x10, %dh -+ jnz L(exit_tail4) -+ -+ test $0x20, %dh -+ jnz L(exit_tail5) -+ -+ test $0x40, %dh -+ jnz L(exit_tail6) -+ add $7, %eax -+ RETURN -+ -+ .p2align 4 -+L(exit_tail1): -+ add $1, %eax -+ RETURN -+ -+L(exit_tail2): -+ add $2, %eax -+ RETURN -+ -+L(exit_tail3): -+ add $3, %eax -+ RETURN -+ -+L(exit_tail4): -+ add $4, %eax -+ RETURN -+ -+L(exit_tail5): -+ add $5, %eax -+ RETURN -+ -+L(exit_tail6): -+ add $6, %eax -+ RETURN -+ -+L(exit_tail7): -+ add $7, %eax -+ RETURN -+ -+L(exit_tail8): -+ add $8, %eax -+ RETURN -+ -+L(exit_tail9): -+ add $9, %eax -+ RETURN -+ -+L(exit_tail10): -+ add $10, %eax -+ RETURN -+ -+L(exit_tail11): -+ add $11, %eax -+ RETURN -+ -+L(exit_tail12): -+ add $12, %eax -+ RETURN -+ -+L(exit_tail13): -+ add $13, %eax -+ RETURN -+ -+L(exit_tail14): -+ add $14, %eax -+ RETURN -+ -+L(exit_tail15): -+ add $15, %eax -+ ret -+ -+END (__strlen_sse2) -+ -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/i386/i686/multiarch/strlen.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen.S -@@ -48,6 +48,9 @@ ENTRY(strlen) - 1: leal __strlen_ia32@GOTOFF(%ebx), %eax - testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx) - jz 2f -+ leal __strlen_sse2_bsf@GOTOFF(%ebx), %eax -+ testl $bit_Slow_BSF, FEATURE_OFFSET+index_Slow_BSF+__cpu_features@GOTOFF(%ebx) -+ jz 2f - leal __strlen_sse2@GOTOFF(%ebx), %eax - 2: popl %ebx - cfi_adjust_cfa_offset (-4); -@@ -55,84 +58,6 @@ ENTRY(strlen) - ret - END(strlen) - --#define CFI_POP(REG) \ -- cfi_adjust_cfa_offset (-4); \ -- cfi_restore (REG) -- --#define RETURN popl %esi; CFI_POP (esi); ret -- -- .text --ENTRY (__strlen_sse2) --/* -- * This implementation uses SSE instructions to compare up to 16 bytes -- * at a time looking for the end of string (null char). -- */ -- pushl %esi -- cfi_adjust_cfa_offset (4) -- cfi_rel_offset (%esi, 0) -- mov 8(%esp), %eax -- mov %eax, %ecx -- pxor %xmm0, %xmm0 /* 16 null chars */ -- mov %eax, %esi -- and $15, %ecx -- jz 1f /* string is 16 byte aligned */ -- -- /* -- * Unaligned case. Round down to 16-byte boundary before comparing -- * 16 bytes for a null char. The code then compensates for any extra chars -- * preceding the start of the string. -- */ -- and $-16, %esi -- -- pcmpeqb (%esi), %xmm0 -- lea 16(%eax), %esi -- pmovmskb %xmm0, %edx -- -- shr %cl, %edx /* Compensate for bytes preceding the string */ -- test %edx, %edx -- jnz 2f -- sub %ecx, %esi /* no null, adjust to next 16-byte boundary */ -- pxor %xmm0, %xmm0 /* clear xmm0, may have been changed... */ -- -- .p2align 4 --1: /* 16 byte aligned */ -- pcmpeqb (%esi), %xmm0 /* look for null bytes */ -- pmovmskb %xmm0, %edx /* move each byte mask of %xmm0 to edx */ -- -- add $16, %esi /* prepare to search next 16 bytes */ -- test %edx, %edx /* if no null byte, %edx must be 0 */ -- jnz 2f /* found a null */ -- -- pcmpeqb (%esi), %xmm0 -- pmovmskb %xmm0, %edx -- add $16, %esi -- test %edx, %edx -- jnz 2f -- -- pcmpeqb (%esi), %xmm0 -- pmovmskb %xmm0, %edx -- add $16, %esi -- test %edx, %edx -- jnz 2f -- -- pcmpeqb (%esi), %xmm0 -- pmovmskb %xmm0, %edx -- add $16, %esi -- test %edx, %edx -- jz 1b -- --2: -- neg %eax -- lea -16(%eax, %esi), %eax /* calculate exact offset */ -- bsf %edx, %ecx /* Least significant 1 bit is index of null */ -- add %ecx, %eax -- popl %esi -- cfi_adjust_cfa_offset (-4) -- cfi_restore (%esi) -- ret -- --END (__strlen_sse2) -- - # undef ENTRY - # define ENTRY(name) \ - .type __strlen_ia32, @function; \ ---- a/sysdeps/x86_64/multiarch/Makefile 2012-03-01 10:43:30.060487726 -0700 -+++ b/sysdeps/x86_64/multiarch/Makefile 2012-03-01 10:45:57.894692115 -0700 -@@ -7,7 +7,7 @@ ifeq ($(subdir),string) - sysdep_routines += stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \ - strend-sse4 memcmp-sse4 \ - strcasestr-nonascii strcasecmp_l-ssse3 \ -- strncase_l-ssse3 \ -+ strncase_l-ssse3 strlen-sse4 strlen-no-bsf \ - memset-x86-64 - ifeq (yes,$(config-cflags-sse4)) - sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c -@@ -77,6 +77,12 @@ __init_cpu_features (void) - model += extended_model; - switch (model) - { -+ case 0x1c: -+ case 0x26: -+ /* BSF is slow on Atom. */ -+ __cpu_features.feature[index_Slow_BSF] |= bit_Slow_BSF; -+ break; -+ - case 0x1a: - case 0x1e: - case 0x1f: ---- a/sysdeps/x86_64/multiarch/init-arch.h 2012-03-01 10:43:30.061487720 -0700 -+++ b/sysdeps/x86_64/multiarch/init-arch.h 2012-03-01 10:48:13.371963005 -0700 -@@ -17,6 +17,7 @@ - 02111-1307 USA. */ - - #define bit_Fast_Rep_String (1 << 0) -+#define bit_Slow_BSF (1 << 2) - #define bit_Prefer_SSE_for_memop (1 << 3) - - #ifdef __ASSEMBLER__ -@@ -34,6 +35,7 @@ - # define index_SSE4_2 COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET - - #define index_Fast_Rep_String FEATURE_INDEX_1*FEATURE_SIZE -+# define index_Slow_BSF FEATURE_INDEX_1*FEATURE_SIZE - # define index_Prefer_SSE_for_memop FEATURE_INDEX_1*FEATURE_SIZE - - #else /* __ASSEMBLER__ */ -@@ -105,11 +107,15 @@ extern const struct cpu_features *__get_ - # define HAS_FMA HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, 12) - - # define index_Fast_Rep_String FEATURE_INDEX_1 -+# define index_Slow_BSF FEATURE_INDEX_1 - # define index_Prefer_SSE_for_memop FEATURE_INDEX_1 - - #define HAS_ARCH_FEATURE(idx, bit) \ - ((__get_cpu_features ()->feature[idx] & (bit)) != 0) - -+#define HAS_SLOW_BSF \ -+ HAS_ARCH_FEATURE (index_Slow_BSF, bit_Slow_BSF) -+ - #define HAS_PREFER_SSE_FOR_MEMOP \ - HAS_ARCH_FEATURE (index_Prefer_SSE_for_memop, bit_Prefer_SSE_for_memop) - -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen-no-bsf.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen-no-bsf.S -@@ -0,0 +1,309 @@ -+/* strlen without BSF -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ Contributed by Intel Corporation. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#if defined SHARED && !defined NOT_IN_libc -+ -+#include <sysdep.h> -+ -+ .section .text.slow,"ax",@progbits -+ENTRY (__strlen_no_bsf) -+ xor %eax, %eax -+ cmpb $0, (%rdi) -+ jz L(exit_tail0) -+ cmpb $0, 1(%rdi) -+ jz L(exit_tail1) -+ cmpb $0, 2(%rdi) -+ jz L(exit_tail2) -+ cmpb $0, 3(%rdi) -+ jz L(exit_tail3) -+ cmpb $0, 4(%rdi) -+ jz L(exit_tail4) -+ cmpb $0, 5(%rdi) -+ jz L(exit_tail5) -+ cmpb $0, 6(%rdi) -+ jz L(exit_tail6) -+ cmpb $0, 7(%rdi) -+ jz L(exit_tail7) -+ cmpb $0, 8(%rdi) -+ jz L(exit_tail8) -+ cmpb $0, 9(%rdi) -+ jz L(exit_tail9) -+ cmpb $0, 10(%rdi) -+ jz L(exit_tail10) -+ cmpb $0, 11(%rdi) -+ jz L(exit_tail11) -+ cmpb $0, 12(%rdi) -+ jz L(exit_tail12) -+ cmpb $0, 13(%rdi) -+ jz L(exit_tail13) -+ cmpb $0, 14(%rdi) -+ jz L(exit_tail14) -+ cmpb $0, 15(%rdi) -+ jz L(exit_tail15) -+ pxor %xmm0, %xmm0 -+ mov %rdi, %rcx -+ mov %rdi, %rax -+ and $-16, %rax -+ add $16, %rax -+ add $16, %rcx -+ -+ pcmpeqb (%rax), %xmm0 -+ pmovmskb %xmm0, %edx -+ pxor %xmm1, %xmm1 -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm1 -+ pmovmskb %xmm1, %edx -+ pxor %xmm2, %xmm2 -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ -+ pcmpeqb (%rax), %xmm2 -+ pmovmskb %xmm2, %edx -+ pxor %xmm3, %xmm3 -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm3 -+ pmovmskb %xmm3, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm1 -+ pmovmskb %xmm1, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm2 -+ pmovmskb %xmm2, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm3 -+ pmovmskb %xmm3, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm1 -+ pmovmskb %xmm1, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm2 -+ pmovmskb %xmm2, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm3 -+ pmovmskb %xmm3, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm1 -+ pmovmskb %xmm1, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm2 -+ pmovmskb %xmm2, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm3 -+ pmovmskb %xmm3, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ and $-0x40, %rax -+ xor %r8d, %r8d -+L(aligned_64): -+ pcmpeqb (%rax), %xmm0 -+ pcmpeqb 16(%rax), %xmm1 -+ pcmpeqb 32(%rax), %xmm2 -+ pcmpeqb 48(%rax), %xmm3 -+ pmovmskb %xmm0, %edx -+ pmovmskb %xmm1, %esi -+ pmovmskb %xmm2, %edi -+ pmovmskb %xmm3, %r9d -+ or %edx, %r8d -+ or %esi, %r8d -+ or %edi, %r8d -+ or %r9d, %r8d -+ lea 64(%rax), %rax -+ jz L(aligned_64) -+ -+ test %edx, %edx -+ jnz L(aligned_64_exit_16) -+ test %esi, %esi -+ jnz L(aligned_64_exit_32) -+ test %edi, %edi -+ jnz L(aligned_64_exit_48) -+L(aligned_64_exit_64): -+ mov %r9d, %edx -+ jmp L(aligned_64_exit) -+L(aligned_64_exit_48): -+ lea -16(%rax), %rax -+ mov %edi, %edx -+ jmp L(aligned_64_exit) -+L(aligned_64_exit_32): -+ lea -32(%rax), %rax -+ mov %esi, %edx -+ jmp L(aligned_64_exit) -+L(aligned_64_exit_16): -+ lea -48(%rax), %rax -+L(aligned_64_exit): -+L(exit): -+ sub %rcx, %rax -+ test %dl, %dl -+ jz L(exit_high) -+ test $0x01, %dl -+ jnz L(exit_tail0) -+ -+ test $0x02, %dl -+ jnz L(exit_tail1) -+ -+ test $0x04, %dl -+ jnz L(exit_tail2) -+ -+ test $0x08, %dl -+ jnz L(exit_tail3) -+ -+ test $0x10, %dl -+ jnz L(exit_tail4) -+ -+ test $0x20, %dl -+ jnz L(exit_tail5) -+ -+ test $0x40, %dl -+ jnz L(exit_tail6) -+ add $7, %eax -+L(exit_tail0): -+ ret -+ -+L(exit_high): -+ add $8, %eax -+ test $0x01, %dh -+ jnz L(exit_tail0) -+ -+ test $0x02, %dh -+ jnz L(exit_tail1) -+ -+ test $0x04, %dh -+ jnz L(exit_tail2) -+ -+ test $0x08, %dh -+ jnz L(exit_tail3) -+ -+ test $0x10, %dh -+ jnz L(exit_tail4) -+ -+ test $0x20, %dh -+ jnz L(exit_tail5) -+ -+ test $0x40, %dh -+ jnz L(exit_tail6) -+ add $7, %eax -+ ret -+ .p2align 4 -+L(exit_tail1): -+ add $1, %eax -+ ret -+ -+L(exit_tail2): -+ add $2, %eax -+ ret -+ -+L(exit_tail3): -+ add $3, %eax -+ ret -+ -+L(exit_tail4): -+ add $4, %eax -+ ret -+ -+L(exit_tail5): -+ add $5, %eax -+ ret -+L(exit_tail6): -+ add $6, %eax -+ ret -+L(exit_tail7): -+ add $7, %eax -+ ret -+L(exit_tail8): -+ add $8, %eax -+ ret -+L(exit_tail9): -+ add $9, %eax -+ ret -+L(exit_tail10): -+ add $10, %eax -+ ret -+L(exit_tail11): -+ add $11, %eax -+ ret -+L(exit_tail12): -+ add $12, %eax -+ ret -+L(exit_tail13): -+ add $13, %eax -+ ret -+L(exit_tail14): -+ add $14, %eax -+ ret -+L(exit_tail15): -+ add $15, %eax -+ ret -+END (__strlen_no_bsf) -+ -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen-sse4.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen-sse4.S -@@ -0,0 +1,85 @@ -+/* strlen with SSE4 -+ Copyright (C) 2009, 2010 Free Software Foundation, Inc. -+ Contributed by Ulrich Drepper drepper@redhat.com. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#if defined SHARED && !defined NOT_IN_libc -+ -+#include <sysdep.h> -+ -+ .section .text.sse4.2,"ax",@progbits -+ENTRY (__strlen_sse42) -+ pxor %xmm1, %xmm1 -+ movl %edi, %ecx -+ movq %rdi, %r8 -+ andq $~15, %rdi -+ xor %edi, %ecx -+ pcmpeqb (%rdi), %xmm1 -+ pmovmskb %xmm1, %edx -+ shrl %cl, %edx -+ shll %cl, %edx -+ andl %edx, %edx -+ jnz L(less16bytes) -+ pxor %xmm1, %xmm1 -+ -+ .p2align 4 -+L(more64bytes_loop): -+ pcmpistri $0x08, 16(%rdi), %xmm1 -+ jz L(more32bytes) -+ -+ pcmpistri $0x08, 32(%rdi), %xmm1 -+ jz L(more48bytes) -+ -+ pcmpistri $0x08, 48(%rdi), %xmm1 -+ jz L(more64bytes) -+ -+ add $64, %rdi -+ pcmpistri $0x08, (%rdi), %xmm1 -+ jnz L(more64bytes_loop) -+ leaq (%rdi,%rcx), %rax -+ subq %r8, %rax -+ ret -+ -+ .p2align 4 -+L(more32bytes): -+ leaq 16(%rdi,%rcx, 1), %rax -+ subq %r8, %rax -+ ret -+ -+ .p2align 4 -+L(more48bytes): -+ leaq 32(%rdi,%rcx, 1), %rax -+ subq %r8, %rax -+ ret -+ -+ .p2align 4 -+L(more64bytes): -+ leaq 48(%rdi,%rcx, 1), %rax -+ subq %r8, %rax -+ ret -+ -+ .p2align 4 -+L(less16bytes): -+ subq %r8, %rdi -+ bsfl %edx, %eax -+ addq %rdi, %rax -+ ret -+ -+END (__strlen_sse42) -+ -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strlen.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen.S -@@ -36,74 +36,12 @@ ENTRY(strlen) - testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip) - jz 2f - leaq __strlen_sse42(%rip), %rax --2: ret --END(strlen) -- -- -- .section .text.sse4.2,"ax",@progbits -- .align 16 -- .type __strlen_sse42, @function --__strlen_sse42: -- cfi_startproc -- CALL_MCOUNT -- pxor %xmm1, %xmm1 -- movl %edi, %ecx -- movq %rdi, %r8 -- andq $~15, %rdi -- xor %edi, %ecx -- pcmpeqb (%rdi), %xmm1 -- pmovmskb %xmm1, %edx -- shrl %cl, %edx -- shll %cl, %edx -- andl %edx, %edx -- jnz L(less16bytes) -- pxor %xmm1, %xmm1 -- -- .p2align 4 --L(more64bytes_loop): -- pcmpistri $0x08, 16(%rdi), %xmm1 -- jz L(more32bytes) -- -- pcmpistri $0x08, 32(%rdi), %xmm1 -- jz L(more48bytes) -- -- pcmpistri $0x08, 48(%rdi), %xmm1 -- jz L(more64bytes) -- -- add $64, %rdi -- pcmpistri $0x08, (%rdi), %xmm1 -- jnz L(more64bytes_loop) -- leaq (%rdi,%rcx), %rax -- subq %r8, %rax -- ret -- -- .p2align 4 --L(more32bytes): -- leaq 16(%rdi,%rcx, 1), %rax -- subq %r8, %rax -- ret -- -- .p2align 4 --L(more48bytes): -- leaq 32(%rdi,%rcx, 1), %rax -- subq %r8, %rax -- ret -- -- .p2align 4 --L(more64bytes): -- leaq 48(%rdi,%rcx, 1), %rax -- subq %r8, %rax - ret -- -- .p2align 4 --L(less16bytes): -- subq %r8, %rdi -- bsfl %edx, %eax -- addq %rdi, %rax -- ret -- cfi_endproc -- .size __strlen_sse42, .-__strlen_sse42 -- -+2: testl $bit_Slow_BSF, __cpu_features+FEATURE_OFFSET+index_Slow_BSF(%rip) -+ jz 3f -+ leaq __strlen_no_bsf(%rip), %rax -+3: ret -+END(strlen) - - # undef ENTRY - # define ENTRY(name) \ -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strlen.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/strlen.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strlen.S -@@ -23,29 +23,80 @@ - - .text - ENTRY(strlen) -- pxor %xmm2, %xmm2 -- movq %rdi, %rcx -- movq %rdi, %r8 -- andq $~15, %rdi -- movdqa %xmm2, %xmm1 -- pcmpeqb (%rdi), %xmm2 -- orl $0xffffffff, %esi -- subq %rdi, %rcx -- shll %cl, %esi -- pmovmskb %xmm2, %edx -- andl %esi, %edx -- jnz 1f -- --2: movdqa 16(%rdi), %xmm0 -- leaq 16(%rdi), %rdi -+ xor %rax, %rax -+ mov %edi, %ecx -+ and $0x3f, %ecx -+ pxor %xmm0, %xmm0 -+ cmp $0x30, %ecx -+ ja L(next) -+ movdqu (%rdi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pmovmskb %xmm0, %edx -- testl %edx, %edx -- jz 2b -+ test %edx, %edx -+ jnz L(exit_less16) -+ mov %rdi, %rax -+ and $-16, %rax -+ jmp L(align16_start) -+L(next): -+ mov %rdi, %rax -+ and $-16, %rax -+ pcmpeqb (%rax), %xmm0 -+ mov $-1, %esi -+ sub %rax, %rcx -+ shl %cl, %esi -+ pmovmskb %xmm0, %edx -+ and %esi, %edx -+ jnz L(exit) -+L(align16_start): -+ pxor %xmm0, %xmm0 -+ pxor %xmm1, %xmm1 -+ pxor %xmm2, %xmm2 -+ pxor %xmm3, %xmm3 -+ .p2align 4 -+L(align16_loop): -+ pcmpeqb 16(%rax), %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ jnz L(exit16) - --1: subq %r8, %rdi -- bsfl %edx, %eax -- addq %rdi, %rax -+ pcmpeqb 32(%rax), %xmm1 -+ pmovmskb %xmm1, %edx -+ test %edx, %edx -+ jnz L(exit32) -+ -+ pcmpeqb 48(%rax), %xmm2 -+ pmovmskb %xmm2, %edx -+ test %edx, %edx -+ jnz L(exit48) -+ -+ pcmpeqb 64(%rax), %xmm3 -+ pmovmskb %xmm3, %edx -+ lea 64(%rax), %rax -+ test %edx, %edx -+ jz L(align16_loop) -+L(exit): -+ sub %rdi, %rax -+L(exit_less16): -+ bsf %rdx, %rdx -+ add %rdx, %rax -+ ret -+ .p2align 4 -+L(exit16): -+ sub %rdi, %rax -+ bsf %rdx, %rdx -+ lea 16(%rdx,%rax), %rax -+ ret -+ .p2align 4 -+L(exit32): -+ sub %rdi, %rax -+ bsf %rdx, %rdx -+ lea 32(%rdx,%rax), %rax -+ ret -+ .p2align 4 -+L(exit48): -+ sub %rdi, %rax -+ bsf %rdx, %rdx -+ lea 48(%rdx,%rax), %rax - ret - END(strlen) - libc_hidden_builtin_def (strlen) diff --git a/src/patches/glibc/glibc-rh696472.patch b/src/patches/glibc/glibc-rh696472.patch deleted file mode 100644 index 9d30d38..0000000 --- a/src/patches/glibc/glibc-rh696472.patch +++ /dev/null @@ -1,36 +0,0 @@ -commit 3d29045b5e8329d97693eda8d98f1d1e60b99c8f -Author: H.J. Lu hongjiu.lu@intel.com -Date: Fri Jun 3 07:01:25 2011 -0400 - - Assume Intel Core i3/i5/i7 processor if AVX is available - -2011-06-02 H.J. Lu hongjiu.lu@intel.com - - * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): - Assume Intel Core i3/i5/i7 processor if AVX is available. - -diff --git a/sysdeps/x86_64/multiarch/init-arch.c b/sysdeps/x86_64/multiarch/init-arch.c -index 34ec2df..809d105 100644 ---- a/sysdeps/x86_64/multiarch/init-arch.c -+++ b/sysdeps/x86_64/multiarch/init-arch.c -@@ -74,6 +74,7 @@ __init_cpu_features (void) - } - else if (family == 0x06) - { -+ ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx; - model += extended_model; - switch (model) - { -@@ -83,6 +84,12 @@ __init_cpu_features (void) - __cpu_features.feature[index_Slow_BSF] |= bit_Slow_BSF; - break; - -+ default: -+ /* Unknown family 0x06 processors. Assuming this is one -+ of Core i3/i5/i7 processors if AVX is available. */ -+ if ((ecx & bit_AVX) == 0) -+ break; -+ - case 0x1a: - case 0x1e: - case 0x1f: diff --git a/src/patches/glibc/glibc-rh697421.patch b/src/patches/glibc/glibc-rh697421.patch deleted file mode 100644 index 961c805..0000000 --- a/src/patches/glibc/glibc-rh697421.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff -rup a/iconvdata/gconv-modules b/iconvdata/gconv-modules ---- a/iconvdata/gconv-modules 2010-05-04 05:27:23.000000000 -0600 -+++ b/iconvdata/gconv-modules 2012-01-26 10:58:24.181895489 -0700 -@@ -1954,3 +1954,6 @@ alias HPGREEK8// HP-GREEK8// - alias OSF10010004// HP-GREEK8// - module HP-GREEK8// INTERNAL HP-GREEK8 1 - module INTERNAL HP-GREEK8// HP-GREEK8 1 -+ -+alias ISO-10646-UCS-2// UNICODE// -+alias ISO-10646-UCS-2// ISO-10646/UTF8/ diff --git a/src/patches/glibc/glibc-rh699724.patch b/src/patches/glibc/glibc-rh699724.patch deleted file mode 100644 index d25ce84..0000000 --- a/src/patches/glibc/glibc-rh699724.patch +++ /dev/null @@ -1,188 +0,0 @@ -2011-02-23 Andreas Schwab schwab@redhat.com - - [BZ #12509] - * elf/dl-load.c (_dl_map_object_from_fd): Free realname before - returning unsuccessfully. - * elf/Makefile ($(objpfx)noload-mem): New rule. - (noload-ENV): Define. - (tests): Add $(objpfx)noload-mem. - * elf/noload.c: Include <memcheck.h>. - (main): Call mtrace. Close all opened handles. - -2010-09-27 Andreas Schwab schwab@redhat.com - - * include/link.h (struct link_map): Add l_free_initfini. - * elf/dl-deps.c (_dl_map_object_deps): Set it when assigning - l_initfini. - * elf/rtld.c (dl_main): Clear it on all objects loaded on startup. - * elf/dl-libc.c (free_mem): Free l_initfini if l_free_initfini is - set. - -Index: glibc-2.12-2-gc4ccff1/elf/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/Makefile -+++ glibc-2.12-2-gc4ccff1/elf/Makefile -@@ -211,7 +211,7 @@ endif - ifeq (yesyes,$(have-fpie)$(build-shared)) - tests: $(objpfx)tst-pie1.out - endif --tests: $(objpfx)tst-leaks1-mem -+tests: $(objpfx)tst-leaks1-mem $(objpfx)noload-mem - tlsmod17a-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 - tlsmod18a-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 - modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ -@@ -664,6 +664,10 @@ $(objpfx)noload: $(objpfx)testobj1.so $( - LDFLAGS-noload = -rdynamic - $(objpfx)noload.out: $(objpfx)testobj5.so - -+$(objpfx)noload-mem: $(objpfx)noload.out -+ $(common-objpfx)malloc/mtrace $(objpfx)noload.mtrace > $@ -+noload-ENV = MALLOC_TRACE=$(objpfx)noload.mtrace -+ - LDFLAGS-nodelete = -rdynamic - LDFLAGS-nodelmod1.so = -Wl,--enable-new-dtags,-z,nodelete - LDFLAGS-nodelmod4.so = -Wl,--enable-new-dtags,-z,nodelete -Index: glibc-2.12-2-gc4ccff1/elf/dl-deps.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-deps.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-deps.c -@@ -478,6 +478,7 @@ _dl_map_object_deps (struct link_map *ma - nneeded * sizeof needed[0]); - atomic_write_barrier (); - l->l_initfini = l_initfini; -+ l->l_free_initfini = 1; - } - - /* If we have no auxiliary objects just go on to the next map. */ -@@ -662,6 +663,7 @@ Filters not supported with LD_TRACE_PREL - l_initfini[nlist] = NULL; - atomic_write_barrier (); - map->l_initfini = l_initfini; -+ map->l_free_initfini = 1; - if (l_reldeps != NULL) - { - atomic_write_barrier (); -Index: glibc-2.12-2-gc4ccff1/elf/dl-libc.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-libc.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-libc.c -@@ -250,5 +250,9 @@ libc_freeres_fn (free_mem) - if (! old->dont_free) - free (old); - } -+ -+ /* Free the initfini dependency list. */ -+ if (l->l_free_initfini) -+ free (l->l_initfini); - } - } -Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-load.c -@@ -907,6 +907,7 @@ _dl_map_object_from_fd (const char *name - { - /* We are not supposed to load the object unless it is already - loaded. So return now. */ -+ free (realname); - __close (fd); - return NULL; - } -@@ -925,6 +926,7 @@ _dl_map_object_from_fd (const char *name - _dl_zerofd = _dl_sysdep_open_zero_fill (); - if (_dl_zerofd == -1) - { -+ free (realname); - __close (fd); - _dl_signal_error (errno, NULL, NULL, - N_("cannot open zero fill device")); -Index: glibc-2.12-2-gc4ccff1/elf/noload.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/noload.c -+++ glibc-2.12-2-gc4ccff1/elf/noload.c -@@ -1,20 +1,28 @@ - #include <dlfcn.h> - #include <stdio.h> -+#include <mcheck.h> - - int - main (void) - { - int result = 0; -+ void *p; -+ -+ mtrace (); - - /* First try to load an object which is a dependency. This should - succeed. */ -- if (dlopen ("testobj1.so", RTLD_LAZY | RTLD_NOLOAD) == NULL) -+ p = dlopen ("testobj1.so", RTLD_LAZY | RTLD_NOLOAD); -+ if (p == NULL) - { - printf ("cannot open "testobj1.so": %s\n", dlerror ()); - result = 1; - } - else -- puts ("loading "testobj1.so" succeeded, OK"); -+ { -+ puts ("loading "testobj1.so" succeeded, OK"); -+ dlclose (p); -+ } - - /* Now try loading an object which is not already loaded. */ - if (dlopen ("testobj5.so", RTLD_LAZY | RTLD_NOLOAD) != NULL) -@@ -25,8 +33,6 @@ main (void) - else - { - /* Load the object and run the same test again. */ -- void *p; -- - puts (""testobj5.so" wasn't loaded and RTLD_NOLOAD prevented it, OK"); - - p = dlopen ("testobj5.so", RTLD_LAZY); -@@ -41,13 +47,17 @@ main (void) - { - puts ("loading "testobj5.so" succeeded, OK"); - -- if (dlopen ("testobj5.so", RTLD_LAZY | RTLD_NOLOAD) == NULL) -+ void *q = dlopen ("testobj5.so", RTLD_LAZY | RTLD_NOLOAD); -+ if (q == NULL) - { - printf ("cannot open "testobj5.so": %s\n", dlerror ()); - result = 1; - } - else -- puts ("loading "testobj5.so" with RTLD_NOLOAD succeeded, OK"); -+ { -+ puts ("loading "testobj5.so" with RTLD_NOLOAD succeeded, OK"); -+ dlclose (q); -+ } - - if (dlclose (p) != 0) - { -Index: glibc-2.12-2-gc4ccff1/elf/rtld.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c -+++ glibc-2.12-2-gc4ccff1/elf/rtld.c -@@ -2249,6 +2249,7 @@ ERROR: ld.so: object '%s' cannot be load - lnp->dont_free = 1; - lnp = lnp->next; - } -+ l->l_free_initfini = 0; - - if (l != &GL(dl_rtld_map)) - _dl_relocate_object (l, l->l_scope, GLRO(dl_lazy) ? RTLD_LAZY : 0, -Index: glibc-2.12-2-gc4ccff1/include/link.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/include/link.h -+++ glibc-2.12-2-gc4ccff1/include/link.h -@@ -192,6 +192,9 @@ struct link_map - during LD_TRACE_PRELINKING=1 - contains any DT_SYMBOLIC - libraries. */ -+ unsigned int l_free_initfini:1; /* Nonzero if l_initfini can be -+ freed, ie. not allocated with -+ the dummy malloc in ld.so. */ - - /* Collected information about own RPATH directories. */ - struct r_search_path_struct l_rpath_dirs; diff --git a/src/patches/glibc/glibc-rh700507.patch b/src/patches/glibc/glibc-rh700507.patch deleted file mode 100644 index 0660431..0000000 --- a/src/patches/glibc/glibc-rh700507.patch +++ /dev/null @@ -1,26 +0,0 @@ -Index: glibc-2.12-2-gc4ccff1/nscd/nscd.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/nscd.c -+++ glibc-2.12-2-gc4ccff1/nscd/nscd.c -@@ -260,10 +260,6 @@ main (int argc, char **argv) - /* In foreground mode we are not paranoid. */ - paranoia = 0; - -- /* Start the SELinux AVC. */ -- if (selinux_enabled) -- nscd_avc_init (); -- - signal (SIGINT, termination_handler); - signal (SIGQUIT, termination_handler); - signal (SIGTERM, termination_handler); -@@ -278,6 +274,10 @@ main (int argc, char **argv) - /* Init databases. */ - nscd_init (); - -+ /* Start the SELinux AVC. */ -+ if (selinux_enabled) -+ nscd_avc_init (); -+ - /* Handle incoming requests */ - start_threads (); - diff --git a/src/patches/glibc/glibc-rh703480.patch b/src/patches/glibc/glibc-rh703480.patch deleted file mode 100644 index 742a79a..0000000 --- a/src/patches/glibc/glibc-rh703480.patch +++ /dev/null @@ -1,68 +0,0 @@ -2011-01-15 Ulrich Drepper drepper@gmail.com - - [BZ #6812] - * nscd/hstcache.c (tryagain): Define. - (cache_addhst): Return tryagain not notfound for temporary errors. - (addhstbyX): Also set h_errno to TRY_AGAIN when memory allocation - failed. - -Index: glibc-2.12-2-gc4ccff1/nscd/hstcache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/hstcache.c -+++ glibc-2.12-2-gc4ccff1/nscd/hstcache.c -@@ -77,6 +77,20 @@ static const hst_response_header notfoun - }; - - -+/* This is the standard reply in case there are temporary problems. */ -+static const hst_response_header tryagain = -+{ -+ .version = NSCD_VERSION, -+ .found = 0, -+ .h_name_len = 0, -+ .h_aliases_cnt = 0, -+ .h_addrtype = -1, -+ .h_length = -1, -+ .h_addr_list_cnt = 0, -+ .error = TRY_AGAIN -+}; -+ -+ - static void - cache_addhst (struct database_dyn *db, int fd, request_header *req, - const void *key, struct hostent *hst, uid_t owner, -@@ -111,11 +125,15 @@ cache_addhst (struct database_dyn *db, i - else - { - /* We have no data. This means we send the standard reply for this -- case. */ -+ case. Possibly this is only temporary. */ - ssize_t total = sizeof (notfound); -+ assert (sizeof (notfound) == sizeof (tryagain)); -+ -+ const hst_response_header *resp = (errval == EAGAIN -+ ? &tryagain : ¬found); - - if (fd != -1 && -- TEMP_FAILURE_RETRY (send (fd, ¬found, total, -+ TEMP_FAILURE_RETRY (send (fd, resp, total, - MSG_NOSIGNAL)) != total) - all_written = false; - -@@ -135,7 +153,7 @@ cache_addhst (struct database_dyn *db, i - ? db->negtimeout : ttl); - - /* This is the reply. */ -- memcpy (&dataset->resp, ¬found, total); -+ memcpy (&dataset->resp, resp, total); - - /* Copy the key data. */ - memcpy (dataset->strdata, key, req->key_len); -@@ -490,6 +508,7 @@ addhstbyX (struct database_dyn *db, int - /* We set the error to indicate this is (possibly) a - temporary error and that it does not mean the entry - is not available at all. */ -+ h_errno = TRY_AGAIN; - errval = EAGAIN; - break; - } diff --git a/src/patches/glibc/glibc-rh703481.patch b/src/patches/glibc/glibc-rh703481.patch deleted file mode 100644 index fdde4b5..0000000 --- a/src/patches/glibc/glibc-rh703481.patch +++ /dev/null @@ -1,875 +0,0 @@ -2011-02-05 Ulrich Drepper drepper@gmail.com - - * nscd/nscd-client.h: Define MAX_TIMEOUT_VALUE. - (struct datahead): Reuse 32 bits of the alignment for a TTL field. - * nscd/aicache.c (addhstaiX): Return timeout of added value. - (readdhstai): Return value of addhstaiX call. - * nscd/grpcache.c (cache_addgr): Return timeout of added value. - (addgrbyX): Return value returned by cache_addgr. - (readdgrbyname): Return value returned by addgrbyX. - (readdgrbygid): Likewise. - * nscd/pwdcache.c (cache_addpw): Return timeout of added value. - (addpwbyX): Return value returned by cache_addpw. - (readdpwbyname): Return value returned by addhstbyX. - (readdpwbyuid): Likewise. - * nscd/servicescache.c (cache_addserv): Return timeout of added value. - (addservbyX): Return value returned by cache_addserv. - (readdservbyname): Return value returned by addservbyX: - (readdservbyport): Likewise. - * nscd/hstcache.c (cache_addhst): Return timeout of added value. - (addhstbyX): Return value returned by cache_addhst. - (readdhstbyname): Return value returned by addhstbyX. - (readdhstbyaddr): Likewise. - (readdhstbynamev6): Likewise. - (readdhstbyaddrv6): Likewise. - * nscd/initgrcache.c (addinitgroupsX): Return timeout of added value. - (readdinitgroups): Return value returned by addinitgroupsX. - * nscd/cache.c (readdfcts): Change return value of functions to time_t. - (prune_cache): Keep track of timeout value of re-added entries. - * nscd/connections.c (nscd_run_prune): Use MAX_TIMEOUT_VALUE. - * nscd/nscd.h: Adjust prototypes of readd* functions. - -Index: glibc-2.12-2-gc4ccff1/nscd/aicache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/aicache.c -+++ glibc-2.12-2-gc4ccff1/nscd/aicache.c -@@ -58,7 +58,7 @@ static const ai_response_header notfound - }; - - --static void -+static time_t - addhstaiX (struct database_dyn *db, int fd, request_header *req, - void *key, uid_t uid, struct hashentry *const he, - struct datahead *dh) -@@ -119,6 +119,7 @@ addhstaiX (struct database_dyn *db, int - ssize_t total = 0; - char *key_copy = NULL; - bool alloca_used = false; -+ time_t timeout = MAX_TIMEOUT_VALUE; - - while (!no_more) - { -@@ -388,8 +389,8 @@ addhstaiX (struct database_dyn *db, int - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = time (NULL) + (ttl == INT32_MAX -- ? db->postimeout : ttl); -+ dataset->head.ttl = ttl == INT32_MAX ? db->postimeout : ttl; -+ timeout = dataset->head.timeout = time (NULL) + dataset->head.ttl; - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -@@ -421,6 +422,7 @@ addhstaiX (struct database_dyn *db, int - timeout value. Note that the new record has been - allocated on the stack and need not be freed. */ - dh->timeout = dataset->head.timeout; -+ dh->ttl = dataset->head.ttl; - ++dh->nreloads; - } - else -@@ -496,6 +498,9 @@ next_nip: - if (reload_count != UINT_MAX && dh->nreloads == reload_count) - /* Do not reset the value if we never not reload the record. */ - dh->nreloads = reload_count - 1; -+ -+ /* Reload with the same time-to-live value. */ -+ timeout = dh->timeout = time (NULL) + dh->ttl; - } - else - { -@@ -517,7 +522,8 @@ next_nip: - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = time (NULL) + db->negtimeout; -+ timeout = dataset->head.timeout = time (NULL) + db->negtimeout; -+ dataset->head.ttl = db->negtimeout; - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -551,6 +557,8 @@ next_nip: - if (dh != NULL) - dh->usable = false; - } -+ -+ return timeout; - } - - -@@ -562,7 +570,7 @@ addhstai (struct database_dyn *db, int f - } - - --void -+time_t - readdhstai (struct database_dyn *db, struct hashentry *he, struct datahead *dh) - { - request_header req = -@@ -571,5 +579,5 @@ readdhstai (struct database_dyn *db, str - .key_len = he->len - }; - -- addhstaiX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+ return addhstaiX (db, -1, &req, db->data + he->key, he->owner, he, dh); - } -Index: glibc-2.12-2-gc4ccff1/nscd/cache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/cache.c -+++ glibc-2.12-2-gc4ccff1/nscd/cache.c -@@ -45,9 +45,9 @@ extern void *xcalloc (size_t n, size_t s - unsigned int reload_count = DEFAULT_RELOAD_LIMIT; - - --static void (*const readdfcts[LASTREQ]) (struct database_dyn *, -- struct hashentry *, -- struct datahead *) = -+static time_t (*const readdfcts[LASTREQ]) (struct database_dyn *, -+ struct hashentry *, -+ struct datahead *) = - { - [GETPWBYNAME] = readdpwbyname, - [GETPWBYUID] = readdpwbyuid, -@@ -389,7 +389,8 @@ prune_cache (struct database_dyn *table, - assert (runp->type < LASTREQ - && readdfcts[runp->type] != NULL); - -- readdfcts[runp->type] (table, runp, dh); -+ time_t timeout = readdfcts[runp->type] (table, runp, dh); -+ next_timeout = MIN (next_timeout, timeout); - - /* If the entry has been replaced, we might need - cleanup. */ -Index: glibc-2.12-2-gc4ccff1/nscd/connections.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/connections.c -+++ glibc-2.12-2-gc4ccff1/nscd/connections.c -@@ -1533,10 +1533,7 @@ nscd_run_prune (void *p) - pruning we want to know about it. Therefore set the - timeout to the maximum. It will be descreased when adding - new entries to the cache, if necessary. */ -- if (sizeof (time_t) == sizeof (long int)) -- dbs[my_number].wakeup_time = LONG_MAX; -- else -- dbs[my_number].wakeup_time = INT_MAX; -+ dbs[my_number].wakeup_time = MAX_TIMEOUT_VALUE; - - /* Unconditionally reset the flag. */ - time_t prune_now = dbs[my_number].clear_cache ? LONG_MAX : now; -Index: glibc-2.12-2-gc4ccff1/nscd/grpcache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/grpcache.c -+++ glibc-2.12-2-gc4ccff1/nscd/grpcache.c -@@ -71,7 +71,7 @@ static const gr_response_header notfound - }; - - --static void -+static time_t - cache_addgr (struct database_dyn *db, int fd, request_header *req, - const void *key, struct group *grp, uid_t owner, - struct hashentry *const he, struct datahead *dh, int errval) -@@ -91,6 +91,7 @@ cache_addgr (struct database_dyn *db, in - - assert (offsetof (struct dataset, resp) == offsetof (struct datahead, data)); - -+ time_t timeout = MAX_TIMEOUT_VALUE; - if (grp == NULL) - { - if (he != NULL && errval == EAGAIN) -@@ -102,6 +103,9 @@ cache_addgr (struct database_dyn *db, in - /* Do not reset the value if we never not reload the record. */ - dh->nreloads = reload_count - 1; - -+ /* Reload with the same time-to-live value. */ -+ timeout = dh->timeout = t + db->postimeout; -+ - written = total = 0; - } - else -@@ -125,7 +129,7 @@ cache_addgr (struct database_dyn *db, in - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = t + db->negtimeout; -+ timeout = dataset->head.timeout = t + db->negtimeout; - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -217,7 +221,7 @@ cache_addgr (struct database_dyn *db, in - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = t + db->postimeout; -+ timeout = dataset->head.timeout = t + db->postimeout; - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -@@ -379,6 +383,8 @@ cache_addgr (struct database_dyn *db, in - dbg_log (_("short write in %s: %s"), __FUNCTION__, - strerror_r (errno, buf, sizeof (buf))); - } -+ -+ return timeout; - } - - -@@ -400,7 +406,7 @@ lookup (int type, union keytype key, str - } - - --static void -+static time_t - addgrbyX (struct database_dyn *db, int fd, request_header *req, - union keytype key, const char *keystr, uid_t uid, - struct hashentry *he, struct datahead *dh) -@@ -456,10 +462,12 @@ addgrbyX (struct database_dyn *db, int f - buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen); - } - -- cache_addgr (db, fd, req, keystr, grp, uid, he, dh, errval); -+ time_t timeout = cache_addgr (db, fd, req, keystr, grp, uid, he, dh, errval); - - if (use_malloc) - free (buffer); -+ -+ return timeout; - } - - -@@ -473,7 +481,7 @@ addgrbyname (struct database_dyn *db, in - } - - --void -+time_t - readdgrbyname (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -484,7 +492,7 @@ readdgrbyname (struct database_dyn *db, - }; - union keytype u = { .v = db->data + he->key }; - -- addgrbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); -+ return addgrbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); - } - - -@@ -510,7 +518,7 @@ addgrbygid (struct database_dyn *db, int - } - - --void -+time_t - readdgrbygid (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -527,5 +535,5 @@ readdgrbygid (struct database_dyn *db, s - }; - union keytype u = { .g = gid }; - -- addgrbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); -+ return addgrbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); - } -Index: glibc-2.12-2-gc4ccff1/nscd/hstcache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/hstcache.c -+++ glibc-2.12-2-gc4ccff1/nscd/hstcache.c -@@ -91,7 +91,7 @@ static const hst_response_header tryagai - }; - - --static void -+static time_t - cache_addhst (struct database_dyn *db, int fd, request_header *req, - const void *key, struct hostent *hst, uid_t owner, - struct hashentry *const he, struct datahead *dh, int errval, -@@ -111,6 +111,7 @@ cache_addhst (struct database_dyn *db, i - - assert (offsetof (struct dataset, resp) == offsetof (struct datahead, data)); - -+ time_t timeout = MAX_TIMEOUT_VALUE; - if (hst == NULL) - { - if (he != NULL && errval == EAGAIN) -@@ -121,6 +122,9 @@ cache_addhst (struct database_dyn *db, i - if (reload_count != UINT_MAX) - /* Do not reset the value if we never not reload the record. */ - dh->nreloads = reload_count - 1; -+ -+ /* Reload with the same time-to-live value. */ -+ timeout = dh->timeout = t + dh->ttl; - } - else - { -@@ -149,8 +153,8 @@ cache_addhst (struct database_dyn *db, i - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = t + (ttl == INT32_MAX -- ? db->negtimeout : ttl); -+ dataset->head.ttl = ttl == INT32_MAX ? db->negtimeout : ttl; -+ timeout = dataset->head.timeout = t + dataset->head.ttl; - - /* This is the reply. */ - memcpy (&dataset->resp, resp, total); -@@ -214,7 +218,7 @@ cache_addhst (struct database_dyn *db, i - - if (h_addr_list_cnt == 0) - /* Invalid entry. */ -- return; -+ return MAX_TIMEOUT_VALUE; - - total += (sizeof (struct dataset) - + h_name_len -@@ -255,7 +259,8 @@ cache_addhst (struct database_dyn *db, i - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = t + (ttl == INT32_MAX ? db->postimeout : ttl); -+ dataset->head.ttl = ttl == INT32_MAX ? db->postimeout : ttl; -+ timeout = dataset->head.timeout = t + dataset->head.ttl; - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -@@ -312,6 +317,7 @@ cache_addhst (struct database_dyn *db, i - timeout value. Note that the new record has been - allocated on the stack and need not be freed. */ - assert (h_addr_list_cnt == 1); -+ dh->ttl = dataset->head.ttl; - dh->timeout = dataset->head.timeout; - ++dh->nreloads; - } -@@ -433,6 +439,8 @@ cache_addhst (struct database_dyn *db, i - dbg_log (_("short write in %s: %s"), __FUNCTION__, - strerror_r (errno, buf, sizeof (buf))); - } -+ -+ return timeout; - } - - -@@ -454,7 +462,7 @@ lookup (int type, void *key, struct host - } - - --static void -+static time_t - addhstbyX (struct database_dyn *db, int fd, request_header *req, - void *key, uid_t uid, struct hashentry *he, struct datahead *dh) - { -@@ -520,11 +528,13 @@ addhstbyX (struct database_dyn *db, int - buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen); - } - -- cache_addhst (db, fd, req, key, hst, uid, he, dh, -- h_errno == TRY_AGAIN ? errval : 0, ttl); -+ time_t timeout = cache_addhst (db, fd, req, key, hst, uid, he, dh, -+ h_errno == TRY_AGAIN ? errval : 0, ttl); - - if (use_malloc) - free (buffer); -+ -+ return timeout; - } - - -@@ -536,7 +546,7 @@ addhstbyname (struct database_dyn *db, i - } - - --void -+time_t - readdhstbyname (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -546,7 +556,7 @@ readdhstbyname (struct database_dyn *db, - .key_len = he->len - }; - -- addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+ return addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); - } - - -@@ -558,7 +568,7 @@ addhstbyaddr (struct database_dyn *db, i - } - - --void -+time_t - readdhstbyaddr (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -568,7 +578,7 @@ readdhstbyaddr (struct database_dyn *db, - .key_len = he->len - }; - -- addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+ return addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); - } - - -@@ -580,7 +590,7 @@ addhstbynamev6 (struct database_dyn *db, - } - - --void -+time_t - readdhstbynamev6 (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -590,7 +600,7 @@ readdhstbynamev6 (struct database_dyn *d - .key_len = he->len - }; - -- addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+ return addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); - } - - -@@ -602,7 +612,7 @@ addhstbyaddrv6 (struct database_dyn *db, - } - - --void -+time_t - readdhstbyaddrv6 (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -612,5 +622,5 @@ readdhstbyaddrv6 (struct database_dyn *d - .key_len = he->len - }; - -- addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+ return addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); - } -Index: glibc-2.12-2-gc4ccff1/nscd/initgrcache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/initgrcache.c -+++ glibc-2.12-2-gc4ccff1/nscd/initgrcache.c -@@ -52,7 +52,7 @@ static const initgr_response_header notf - #include "../grp/compat-initgroups.c" - - --static void -+static time_t - addinitgroupsX (struct database_dyn *db, int fd, request_header *req, - void *key, uid_t uid, struct hashentry *const he, - struct datahead *dh) -@@ -174,7 +174,9 @@ addinitgroupsX (struct database_dyn *db, - - ssize_t total; - ssize_t written; -+ time_t timeout; - out: -+ timeout = MAX_TIMEOUT_VALUE; - if (!any_success) - { - /* Nothing found. Create a negative result record. */ -@@ -188,6 +190,9 @@ addinitgroupsX (struct database_dyn *db, - if (reload_count != UINT_MAX && dh->nreloads == reload_count) - /* Do not reset the value if we never not reload the record. */ - dh->nreloads = reload_count - 1; -+ -+ /* Reload with the same time-to-live value. */ -+ timeout = dh->timeout = time (NULL) + db->postimeout; - } - else - { -@@ -209,7 +214,7 @@ addinitgroupsX (struct database_dyn *db, - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = time (NULL) + db->negtimeout; -+ timeout = dataset->head.timeout = time (NULL) + db->negtimeout; - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -273,7 +278,7 @@ addinitgroupsX (struct database_dyn *db, - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = time (NULL) + db->postimeout; -+ timeout = dataset->head.timeout = time (NULL) + db->postimeout; - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -@@ -401,6 +406,8 @@ addinitgroupsX (struct database_dyn *db, - dbg_log (_("short write in %s: %s"), __FUNCTION__, - strerror_r (errno, buf, sizeof (buf))); - } -+ -+ return timeout; - } - - -@@ -412,7 +419,7 @@ addinitgroups (struct database_dyn *db, - } - - --void -+time_t - readdinitgroups (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -422,5 +429,5 @@ readdinitgroups (struct database_dyn *db - .key_len = he->len - }; - -- addinitgroupsX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+ return addinitgroupsX (db, -1, &req, db->data + he->key, he->owner, he, dh); - } -Index: glibc-2.12-2-gc4ccff1/nscd/nscd-client.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/nscd-client.h -+++ glibc-2.12-2-gc4ccff1/nscd/nscd-client.h -@@ -179,6 +179,10 @@ typedef uint32_t ref_t; - /* Timestamp type. */ - typedef uint64_t nscd_time_t; - -+/* Maximum timestamp. */ -+#define MAX_TIMEOUT_VALUE \ -+ (sizeof (time_t) == sizeof (long int) ? LONG_MAX : INT_MAX) -+ - /* Alignment requirement of the beginning of the data region. */ - #define ALIGN 16 - -@@ -192,7 +196,8 @@ struct datahead - uint8_t notfound; /* Nonzero if data has not been found. */ - uint8_t nreloads; /* Reloads without use. */ - uint8_t usable; /* False if the entry must be ignored. */ -- uint64_t :40; /* Alignment. */ -+ uint8_t unused; /* Unused. */ -+ uint32_t ttl; /* TTL value used. */ - - /* We need to have the following element aligned for the response - header data types and their use in the 'struct dataset' types -Index: glibc-2.12-2-gc4ccff1/nscd/nscd.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/nscd.h -+++ glibc-2.12-2-gc4ccff1/nscd/nscd.h -@@ -217,20 +217,20 @@ extern void addpwbyname (struct database - void *key, uid_t uid); - extern void addpwbyuid (struct database_dyn *db, int fd, request_header *req, - void *key, uid_t uid); --extern void readdpwbyname (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); --extern void readdpwbyuid (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); -+extern time_t readdpwbyname (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); -+extern time_t readdpwbyuid (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); - - /* grpcache.c */ - extern void addgrbyname (struct database_dyn *db, int fd, request_header *req, - void *key, uid_t uid); - extern void addgrbygid (struct database_dyn *db, int fd, request_header *req, - void *key, uid_t uid); --extern void readdgrbyname (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); --extern void readdgrbygid (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); -+extern time_t readdgrbyname (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); -+extern time_t readdgrbygid (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); - - /* hstcache.c */ - extern void addhstbyname (struct database_dyn *db, int fd, request_header *req, -@@ -241,37 +241,37 @@ extern void addhstbynamev6 (struct datab - request_header *req, void *key, uid_t uid); - extern void addhstbyaddrv6 (struct database_dyn *db, int fd, - request_header *req, void *key, uid_t uid); --extern void readdhstbyname (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); --extern void readdhstbyaddr (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); --extern void readdhstbynamev6 (struct database_dyn *db, struct hashentry *he, -+extern time_t readdhstbyname (struct database_dyn *db, struct hashentry *he, - struct datahead *dh); --extern void readdhstbyaddrv6 (struct database_dyn *db, struct hashentry *he, -+extern time_t readdhstbyaddr (struct database_dyn *db, struct hashentry *he, - struct datahead *dh); -+extern time_t readdhstbynamev6 (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); -+extern time_t readdhstbyaddrv6 (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); - - /* aicache.c */ - extern void addhstai (struct database_dyn *db, int fd, request_header *req, - void *key, uid_t uid); --extern void readdhstai (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); -+extern time_t readdhstai (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); - - - /* initgrcache.c */ - extern void addinitgroups (struct database_dyn *db, int fd, - request_header *req, void *key, uid_t uid); --extern void readdinitgroups (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); -+extern time_t readdinitgroups (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); - - /* servicecache.c */ - extern void addservbyname (struct database_dyn *db, int fd, - request_header *req, void *key, uid_t uid); --extern void readdservbyname (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); -+extern time_t readdservbyname (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); - extern void addservbyport (struct database_dyn *db, int fd, - request_header *req, void *key, uid_t uid); --extern void readdservbyport (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); -+extern time_t readdservbyport (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); - - /* mem.c */ - extern void *mempool_alloc (struct database_dyn *db, size_t len, -Index: glibc-2.12-2-gc4ccff1/nscd/pwdcache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/pwdcache.c -+++ glibc-2.12-2-gc4ccff1/nscd/pwdcache.c -@@ -77,7 +77,7 @@ static const pw_response_header notfound - }; - - --static void -+static time_t - cache_addpw (struct database_dyn *db, int fd, request_header *req, - const void *key, struct passwd *pwd, uid_t owner, - struct hashentry *const he, struct datahead *dh, int errval) -@@ -97,6 +97,7 @@ cache_addpw (struct database_dyn *db, in - - assert (offsetof (struct dataset, resp) == offsetof (struct datahead, data)); - -+ time_t timeout = MAX_TIMEOUT_VALUE; - if (pwd == NULL) - { - if (he != NULL && errval == EAGAIN) -@@ -108,6 +109,9 @@ cache_addpw (struct database_dyn *db, in - /* Do not reset the value if we never not reload the record. */ - dh->nreloads = reload_count - 1; - -+ /* Reload with the same time-to-live value. */ -+ timeout = dh->timeout = t + db->postimeout; -+ - written = total = 0; - } - else -@@ -132,7 +136,7 @@ cache_addpw (struct database_dyn *db, in - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = t + db->negtimeout; -+ timeout = dataset->head.timeout = t + db->negtimeout; - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -212,7 +216,7 @@ cache_addpw (struct database_dyn *db, in - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = t + db->postimeout; -+ timeout = dataset->head.timeout = t + db->postimeout; - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -@@ -293,8 +297,8 @@ cache_addpw (struct database_dyn *db, in - assert ((char *) dataset - (char *) db->head - + total - <= (sizeof (struct database_pers_head) -- + db->head->module * sizeof (ref_t) -- + db->head->data_size)); -+ + db->head->module * sizeof (ref_t) -+ + db->head->data_size)); - written = sendfileall (fd, db->wr_fd, - (char *) &dataset->resp - - (char *) db->head, dataset->head.recsize ); -@@ -374,6 +378,8 @@ cache_addpw (struct database_dyn *db, in - dbg_log (_("short write in %s: %s"), __FUNCTION__, - strerror_r (errno, buf, sizeof (buf))); - } -+ -+ return timeout; - } - - -@@ -395,7 +401,7 @@ lookup (int type, union keytype key, str - } - - --static void -+static time_t - addpwbyX (struct database_dyn *db, int fd, request_header *req, - union keytype key, const char *keystr, uid_t c_uid, - struct hashentry *he, struct datahead *dh) -@@ -452,10 +458,13 @@ addpwbyX (struct database_dyn *db, int f - } - - /* Add the entry to the cache. */ -- cache_addpw (db, fd, req, keystr, pwd, c_uid, he, dh, errval); -+ time_t timeout = cache_addpw (db, fd, req, keystr, pwd, c_uid, he, dh, -+ errval); - - if (use_malloc) - free (buffer); -+ -+ return timeout; - } - - -@@ -469,7 +478,7 @@ addpwbyname (struct database_dyn *db, in - } - - --void -+time_t - readdpwbyname (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -480,7 +489,7 @@ readdpwbyname (struct database_dyn *db, - }; - union keytype u = { .v = db->data + he->key }; - -- addpwbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); -+ return addpwbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); - } - - -@@ -506,7 +515,7 @@ addpwbyuid (struct database_dyn *db, int - } - - --void -+time_t - readdpwbyuid (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -523,5 +532,5 @@ readdpwbyuid (struct database_dyn *db, s - }; - union keytype u = { .u = uid }; - -- addpwbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); -+ return addpwbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); - } -Index: glibc-2.12-2-gc4ccff1/nscd/servicescache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/servicescache.c -+++ glibc-2.12-2-gc4ccff1/nscd/servicescache.c -@@ -61,7 +61,7 @@ static const serv_response_header notfou - }; - - --static void -+static time_t - cache_addserv (struct database_dyn *db, int fd, request_header *req, - const void *key, struct servent *serv, uid_t owner, - struct hashentry *const he, struct datahead *dh, int errval) -@@ -81,6 +81,7 @@ cache_addserv (struct database_dyn *db, - - assert (offsetof (struct dataset, resp) == offsetof (struct datahead, data)); - -+ time_t timeout = MAX_TIMEOUT_VALUE; - if (serv == NULL) - { - if (he != NULL && errval == EAGAIN) -@@ -92,6 +93,9 @@ cache_addserv (struct database_dyn *db, - /* Do not reset the value if we never not reload the record. */ - dh->nreloads = reload_count - 1; - -+ /* Reload with the same time-to-live value. */ -+ timeout = dh->timeout = t + db->postimeout; -+ - written = total = 0; - } - else -@@ -115,7 +119,7 @@ cache_addserv (struct database_dyn *db, - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = t + db->negtimeout; -+ timeout = dataset->head.timeout = t + db->negtimeout; - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -203,7 +207,7 @@ cache_addserv (struct database_dyn *db, - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = t + db->postimeout; -+ timeout = dataset->head.timeout = t + db->postimeout; - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -@@ -328,6 +332,8 @@ cache_addserv (struct database_dyn *db, - dbg_log (_("short write in %s: %s"), __FUNCTION__, - strerror_r (errno, buf, sizeof (buf))); - } -+ -+ return timeout; - } - - -@@ -354,7 +360,7 @@ lookup (int type, char *key, struct serv - } - - --static void -+static time_t - addservbyX (struct database_dyn *db, int fd, request_header *req, - char *key, uid_t uid, struct hashentry *he, struct datahead *dh) - { -@@ -409,10 +415,12 @@ addservbyX (struct database_dyn *db, int - buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen); - } - -- cache_addserv (db, fd, req, key, serv, uid, he, dh, errval); -+ time_t timeout = cache_addserv (db, fd, req, key, serv, uid, he, dh, errval); - - if (use_malloc) - free (buffer); -+ -+ return timeout; - } - - -@@ -424,7 +432,7 @@ addservbyname (struct database_dyn *db, - } - - --void -+time_t - readdservbyname (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -434,7 +442,7 @@ readdservbyname (struct database_dyn *db - .key_len = he->len - }; - -- addservbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+ return addservbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); - } - - -@@ -446,7 +454,7 @@ addservbyport (struct database_dyn *db, - } - - --void -+time_t - readdservbyport (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -456,5 +464,5 @@ readdservbyport (struct database_dyn *db - .key_len = he->len - }; - -- addservbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+ return addservbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); - } diff --git a/src/patches/glibc/glibc-rh705465.patch b/src/patches/glibc/glibc-rh705465.patch deleted file mode 100644 index 63b971e..0000000 --- a/src/patches/glibc/glibc-rh705465.patch +++ /dev/null @@ -1,449 +0,0 @@ -2011-11-07 Andreas Schwab schwab@redhat.com - - * nss/nss_files/files-initgroups.c (_nss_files_initgroups_dyn): - Fix size of allocated buffer. - -2011-05-10 Ulrich Drepper drepper@gmail.com - - [BZ #11257] - * grp/initgroups.c (internal_getgrouplist): When we found the service - list through the initgroups entry in nsswitch.conf do not always - continue on a successful lookup. Don't always use the - __nss_group_data-ase value if it is set. - * nss/nsswitch.conf (initgroups): Change action for successful db - lookup to continue for compatibility. - -2011-05-06 Ulrich Drepper drepper@gmail.com - - * nss/nss_files/files-initgroups.c (_nss_files_initgroups_dyn): Return - NSS_STATUS_NOTFOUND if no record was found. - -2011-04-29 Ulrich Drepper drepper@gmail.com - - * grp/initgroups.c (internal_getgrouplist): Prefer initgroups setting - to groups setting in database lookup. - * nss/nsswitch.conf: Add initgroups entry. - -2011-04-21 Ulrich Drepper drepper@gmail.com - - * nss/nss_files/files-initgroups.c (_nss_files_initgroups_dyn): Fix - problem in reallocation in last patch. - -2011-04-19 Ulrich Drepper drepper@gmail.com - - * nss/nss_files/files-initgroups.c: New file. - * nss/Makefile (libnss_files-routines): Add files-initgroups. - * nss/Versions (libnss_files) [GLIBC_PRIVATE]: Export - _nss_files_initgroups_dyn. - -2011-01-13 Ulrich Drepper drepper@gmail.com - - [BZ #10484] - * nss/nss_files/files-hosts.c (HOST_DB_LOOKUP): Handle overflows of - temporary buffer used to handle multi lookups locally. - * include/alloca.h: Add libc_hidden_proto for __libc_alloca_cutoff. - -2011-01-13 Ulrich Drepper drepper@gmail.com - - [BZ #10484] - * Versions [libc] (GLIBC_PRIVATE): Export __libc_alloca_cutoff. - * alloca_cutoff.c: Add libc_hidden_def. - -Index: glibc-2.12-2-gc4ccff1/grp/initgroups.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/grp/initgroups.c -+++ glibc-2.12-2-gc4ccff1/grp/initgroups.c -@@ -43,6 +43,8 @@ extern int __nss_group_lookup (service_u - extern void *__nss_lookup_function (service_user *ni, const char *fct_name); - - extern service_user *__nss_group_database attribute_hidden; -+static service_user *initgroups_database; -+static bool use_initgroups_entry; - - - #include "compat-initgroups.c" -@@ -67,32 +69,41 @@ internal_getgrouplist (const char *user, - } - #endif - -- service_user *nip = NULL; -- initgroups_dyn_function fct; - enum nss_status status = NSS_STATUS_UNAVAIL; -- int no_more; -- /* Start is one, because we have the first group as parameter. */ -- long int start = 1; -+ int no_more = 0; - - /* Never store more than the starting *SIZE number of elements. */ - assert (*size > 0); - (*groupsp)[0] = group; -+ /* Start is one, because we have the first group as parameter. */ -+ long int start = 1; - -- if (__nss_group_database != NULL) -+ if (initgroups_database == NULL) - { -- no_more = 0; -- nip = __nss_group_database; -+ no_more = __nss_database_lookup ("initgroups", NULL, "", -+ &initgroups_database); -+ if (no_more == 0 && initgroups_database == NULL) -+ { -+ if (__nss_group_database == NULL) -+ no_more = __nss_database_lookup ("group", NULL, "compat files", -+ &__nss_group_database); -+ -+ initgroups_database = __nss_group_database; -+ } -+ else if (initgroups_database != NULL) -+ { -+ assert (no_more == 0); -+ use_initgroups_entry = true; -+ } - } -- else -- no_more = __nss_database_lookup ("group", NULL, -- "compat [NOTFOUND=return] files", &nip); - -+ service_user *nip = initgroups_database; - while (! no_more) - { - long int prev_start = start; - -- fct = __nss_lookup_function (nip, "initgroups_dyn"); -- -+ initgroups_dyn_function fct = __nss_lookup_function (nip, -+ "initgroups_dyn"); - if (fct == NULL) - status = compat_call (nip, user, group, &start, size, groupsp, - limit, &errno); -@@ -119,7 +130,13 @@ internal_getgrouplist (const char *user, - if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN) - __libc_fatal ("illegal status in internal_getgrouplist"); - -- if (status != NSS_STATUS_SUCCESS -+ /* For compatibility reason we will continue to look for more -+ entries using the next service even though data has already -+ been found if the nsswitch.conf file contained only a 'groups' -+ line and no 'initgroups' line. If the latter is available -+ we always respect the status. This means that the default -+ for successful lookups is to return. */ -+ if ((use_initgroups_entry || status != NSS_STATUS_SUCCESS) - && nss_next_action (nip, status) == NSS_ACTION_RETURN) - break; - -Index: glibc-2.12-2-gc4ccff1/include/alloca.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/include/alloca.h -+++ glibc-2.12-2-gc4ccff1/include/alloca.h -@@ -14,6 +14,7 @@ extern void *__alloca (size_t __size); - - extern int __libc_use_alloca (size_t size) __attribute__ ((const)); - extern int __libc_alloca_cutoff (size_t size) __attribute__ ((const)); -+libc_hidden_proto (__libc_alloca_cutoff) - - #define __MAX_ALLOCA_CUTOFF 65536 - -Index: glibc-2.12-2-gc4ccff1/nptl/Versions -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/Versions -+++ glibc-2.12-2-gc4ccff1/nptl/Versions -@@ -27,6 +27,7 @@ libc { - pthread_cond_broadcast; pthread_cond_timedwait; - } - GLIBC_PRIVATE { -+ __libc_alloca_cutoff; - # Internal libc interface to libpthread - __libc_dl_error_tsd; - } -Index: glibc-2.12-2-gc4ccff1/nptl/alloca_cutoff.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/alloca_cutoff.c -+++ glibc-2.12-2-gc4ccff1/nptl/alloca_cutoff.c -@@ -34,3 +34,4 @@ __libc_alloca_cutoff (size_t size) - assume the maximum available stack space. */ - ?: __MAX_ALLOCA_CUTOFF * 4)); - } -+libc_hidden_def (__libc_alloca_cutoff) -Index: glibc-2.12-2-gc4ccff1/nss/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nss/Makefile -+++ glibc-2.12-2-gc4ccff1/nss/Makefile -@@ -63,7 +63,7 @@ vpath %.c $(subdir-dirs) - - - libnss_files-routines := $(addprefix files-,$(databases)) \ -- files-have_o_cloexec -+ files-initgroups files-have_o_cloexec - distribute += files-XXX.c files-parse.c - - -Index: glibc-2.12-2-gc4ccff1/nss/Versions -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nss/Versions -+++ glibc-2.12-2-gc4ccff1/nss/Versions -@@ -95,5 +95,7 @@ libnss_files { - _nss_netgroup_parseline; - _nss_files_getpublickey; - _nss_files_getsecretkey; -+ -+ _nss_files_initgroups_dyn; - } - } -Index: glibc-2.12-2-gc4ccff1/nss/nss_files/files-hosts.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nss/nss_files/files-hosts.c -+++ glibc-2.12-2-gc4ccff1/nss/nss_files/files-hosts.c -@@ -129,19 +129,22 @@ _nss_files_get##name##_r (proto, - && _res_hconf.flags & HCONF_FLAG_MULTI) \ - { \ - /* We have to get all host entries from the file. */ \ -- const size_t tmp_buflen = MIN (buflen, 4096); \ -- char tmp_buffer[tmp_buflen] \ -+ size_t tmp_buflen = MIN (buflen, 4096); \ -+ char tmp_buffer_stack[tmp_buflen] \ - __attribute__ ((__aligned__ (__alignof__ (struct hostent_data))));\ -+ char *tmp_buffer = tmp_buffer_stack; \ - struct hostent tmp_result_buf; \ - int naddrs = 1; \ - int naliases = 0; \ - char *bufferend; \ -+ bool tmp_buffer_malloced = false; \ - \ - while (result->h_aliases[naliases] != NULL) \ - ++naliases; \ - \ - bufferend = (char *) &result->h_aliases[naliases + 1]; \ - \ -+ again: \ - while ((status = internal_getent (&tmp_result_buf, tmp_buffer, \ - tmp_buflen, errnop H_ERRNO_ARG \ - EXTRA_ARGS_VALUE)) \ -@@ -182,7 +185,7 @@ _nss_files_get##name##_r (proto, - } \ - /* If the real name is different add it also to the \ - aliases. This means that there is a duplication \ -- in the alias list but this is really the users \ -+ in the alias list but this is really the user's \ - problem. */ \ - if (strcmp (old_result->h_name, \ - tmp_result_buf.h_name) != 0) \ -@@ -204,7 +207,7 @@ _nss_files_get##name##_r (proto, - *errnop = ERANGE; \ - *herrnop = NETDB_INTERNAL; \ - status = NSS_STATUS_TRYAGAIN; \ -- break; \ -+ goto out; \ - } \ - \ - new_h_addr_list = \ -@@ -268,8 +271,54 @@ _nss_files_get##name##_r (proto, - } \ - } \ - \ -- if (status != NSS_STATUS_TRYAGAIN) \ -+ if (status == NSS_STATUS_TRYAGAIN) \ -+ { \ -+ size_t newsize = 2 * tmp_buflen; \ -+ if (tmp_buffer_malloced) \ -+ { \ -+ char *newp = realloc (tmp_buffer, newsize); \ -+ if (newp != NULL) \ -+ { \ -+ assert ((((uintptr_t) newp) \ -+ & (__alignof__ (struct hostent_data) - 1)) \ -+ == 0); \ -+ tmp_buffer = newp; \ -+ tmp_buflen = newsize; \ -+ goto again; \ -+ } \ -+ } \ -+ else if (!__libc_use_alloca (buflen + newsize)) \ -+ { \ -+ tmp_buffer = malloc (newsize); \ -+ if (tmp_buffer != NULL) \ -+ { \ -+ assert ((((uintptr_t) tmp_buffer) \ -+ & (__alignof__ (struct hostent_data) - 1)) \ -+ == 0); \ -+ tmp_buffer_malloced = true; \ -+ tmp_buflen = newsize; \ -+ goto again; \ -+ } \ -+ } \ -+ else \ -+ { \ -+ tmp_buffer \ -+ = extend_alloca (tmp_buffer, tmp_buflen, \ -+ newsize \ -+ + __alignof__ (struct hostent_data)); \ -+ tmp_buffer = (char *) (((uintptr_t) tmp_buffer \ -+ + __alignof__ (struct hostent_data) \ -+ - 1) \ -+ & ~(__alignof__ (struct hostent_data)\ -+ - 1)); \ -+ goto again; \ -+ } \ -+ } \ -+ else \ - status = NSS_STATUS_SUCCESS; \ -+ out: \ -+ if (tmp_buffer_malloced) \ -+ free (tmp_buffer); \ - } \ - \ - \ -Index: glibc-2.12-2-gc4ccff1/nss/nss_files/files-initgroups.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/nss/nss_files/files-initgroups.c -@@ -0,0 +1,137 @@ -+/* Initgroups handling in nss_files module. -+ Copyright (C) 2011 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include <alloca.h> -+#include <errno.h> -+#include <grp.h> -+#include <nss.h> -+#include <stdio_ext.h> -+#include <string.h> -+#include <sys/param.h> -+ -+enum nss_status -+_nss_files_initgroups_dyn (const char *user, gid_t group, long int *start, -+ long int *size, gid_t **groupsp, long int limit, -+ int *errnop) -+{ -+ FILE *stream = fopen ("/etc/group", "re"); -+ if (stream == NULL) -+ { -+ *errnop = errno; -+ return *errnop == ENOMEM ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; -+ } -+ -+ /* No other thread using this stream. */ -+ __fsetlocking (stream, FSETLOCKING_BYCALLER); -+ -+ char *line = NULL; -+ size_t linelen = 0; -+ enum nss_status status = NSS_STATUS_SUCCESS; -+ bool any = false; -+ -+ size_t buflen = 1024; -+ void *buffer = alloca (buflen); -+ bool buffer_use_malloc = false; -+ -+ gid_t *groups = *groupsp; -+ -+ /* We have to iterate over the entire file. */ -+ while (!feof_unlocked (stream)) -+ { -+ ssize_t n = getline (&line, &linelen, stream); -+ if (n < 0) -+ { -+ if (! feof_unlocked (stream)) -+ status = ((*errnop = errno) == ENOMEM -+ ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL); -+ break; -+ } -+ -+ struct group grp; -+ int res; -+ while ((res = _nss_files_parse_grent (line, &grp, buffer, buflen, -+ errnop)) == -1) -+ { -+ size_t newbuflen = 2 * buflen; -+ if (buffer_use_malloc || ! __libc_use_alloca (buflen + newbuflen)) -+ { -+ void *newbuf = realloc (buffer_use_malloc ? buffer : NULL, -+ newbuflen); -+ if (newbuf == NULL) -+ { -+ *errnop = ENOMEM; -+ status = NSS_STATUS_TRYAGAIN; -+ goto out; -+ } -+ buffer = newbuf; -+ buflen = newbuflen; -+ buffer_use_malloc = true; -+ } -+ else -+ buffer = extend_alloca (buffer, buflen, newbuflen); -+ } -+ -+ if (res > 0 && grp.gr_gid != group) -+ for (char **m = grp.gr_mem; *m != NULL; ++m) -+ if (strcmp (*m, user) == 0) -+ { -+ /* Matches user. Insert this group. */ -+ if (*start == *size) -+ { -+ /* Need a bigger buffer. */ -+ if (limit > 0 && *size == limit) -+ /* We reached the maximum. */ -+ goto out; -+ -+ long int newsize; -+ if (limit <= 0) -+ newsize = 2 * *size; -+ else -+ newsize = MIN (limit, 2 * *size); -+ -+ gid_t *newgroups = realloc (groups, -+ newsize * sizeof (*groups)); -+ if (newgroups == NULL) -+ { -+ *errnop = ENOMEM; -+ status = NSS_STATUS_TRYAGAIN; -+ goto out; -+ } -+ *groupsp = groups = newgroups; -+ *size = newsize; -+ } -+ -+ groups[*start] = grp.gr_gid; -+ *start += 1; -+ any = true; -+ -+ break; -+ } -+ } -+ -+ out: -+ /* Free memory. */ -+ if (buffer_use_malloc) -+ free (buffer); -+ free (line); -+ -+ fclose (stream); -+ -+ return status == NSS_STATUS_SUCCESS && !any ? NSS_STATUS_NOTFOUND : status; -+} -Index: glibc-2.12-2-gc4ccff1/nss/nsswitch.conf -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nss/nsswitch.conf -+++ glibc-2.12-2-gc4ccff1/nss/nsswitch.conf -@@ -5,6 +5,7 @@ - - passwd: db files - group: db files -+initgroups: db [SUCCESS=continue] files - shadow: db files - gshadow: files - diff --git a/src/patches/glibc/glibc-rh711927.patch b/src/patches/glibc/glibc-rh711927.patch deleted file mode 100644 index 26949fe..0000000 --- a/src/patches/glibc/glibc-rh711927.patch +++ /dev/null @@ -1,503 +0,0 @@ -Index: glibc-2.12-2-gc4ccff1/config.h.in -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/config.h.in -+++ glibc-2.12-2-gc4ccff1/config.h.in -@@ -201,6 +201,9 @@ - /* Define if multi-arch DSOs should be generated. */ - #undef USE_MULTIARCH - -+/* Define if Systemtap <sys/sdt.h> probes should be defined. */ -+#undef USE_STAP_PROBE -+ - /* - */ - -Index: glibc-2.12-2-gc4ccff1/configure -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/configure -+++ glibc-2.12-2-gc4ccff1/configure -@@ -830,6 +830,7 @@ enable_all_warnings - enable_multi_arch - enable_experimental_malloc - enable_nss_crypt -+enable_systemtap - with_cpu - ' - ac_precious_vars='build_alias -@@ -1501,6 +1502,7 @@ Optional Features: - --enable-experimental-malloc - enable experimental malloc features - --enable-nss-crypt enable libcrypt to use nss -+ --enable-systemtap enable systemtap static probe points [default=no] - - Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] -@@ -3932,6 +3934,79 @@ else - fi - - -+# Check whether --enable-systemtap was given. -+if test "${enable_systemtap+set}" = set; then -+ enableval=$enable_systemtap; systemtap=$enableval -+else -+ systemtap=no -+fi -+ -+if test x$systemtap != xno; then -+ -+ { $as_echo "$as_me:$LINENO: checking for systemtap static probe support" >&5 -+$as_echo_n "checking for systemtap static probe support... " >&6; } -+if test "${libc_cv_sdt+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+else -+ old_CFLAGS="$CFLAGS" -+ CFLAGS="-std=gnu99 $CFLAGS" -+ cat >conftest.$ac_ext <<_ACEOF -+#include <sys/sdt.h> -+void foo (int i, void *p) -+{ -+ asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) "" -+ :: STAP_PROBE_ASM_OPERANDS (2, i, p)); -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *"* | *`* | *\*) ac_try_echo=$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo=""$as_me:$LINENO: $ac_try_echo"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: $? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ libc_cv_sdt=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ libc_cv_sdt=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ CFLAGS="$old_CFLAGS" -+fi -+{ $as_echo "$as_me:$LINENO: result: $libc_cv_sdt" >&5 -+$as_echo "$libc_cv_sdt" >&6; } -+ if test $libc_cv_sdt = yes; then -+ cat >>confdefs.h <<_ACEOF -+#define USE_STAP_PROBE 1 -+_ACEOF -+ -+ else -+ { { $as_echo "$as_me:$LINENO: error: in `$ac_pwd':" >&5 -+$as_echo "$as_me: error: in `$ac_pwd':" >&2;} -+{ { $as_echo "$as_me:$LINENO: error: systemtap support needs sys/sdt.h with asm support -+See `config.log' for more details." >&5 -+$as_echo "$as_me: error: systemtap support needs sys/sdt.h with asm support -+See `config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; }; } -+ fi -+ -+fi -+ -+ - # The way shlib-versions is used to generate soversions.mk uses a - # fairly simplistic model for name recognition that can't distinguish - # i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os -Index: glibc-2.12-2-gc4ccff1/configure.in -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/configure.in -+++ glibc-2.12-2-gc4ccff1/configure.in -@@ -319,6 +319,29 @@ else - fi - AC_SUBST(libc_cv_nss_crypt) - -+AC_ARG_ENABLE([systemtap], -+ [AS_HELP_STRING([--enable-systemtap], -+ [enable systemtap static probe points @<:@default=no@:>@])], -+ [systemtap=$enableval], -+ [systemtap=no]) -+AS_IF([test x$systemtap != xno], [ -+ AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl -+ old_CFLAGS="$CFLAGS" -+ CFLAGS="-std=gnu99 $CFLAGS" -+ AC_COMPILE_IFELSE([#include <sys/sdt.h> -+void foo (int i, void *p) -+{ -+ asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) "" -+ :: STAP_PROBE_ASM_OPERANDS (2, i, p)); -+}], [libc_cv_sdt=yes], [libc_cv_sdt=no]) -+ CFLAGS="$old_CFLAGS"]) -+ if test $libc_cv_sdt = yes; then -+ AC_DEFINE([USE_STAP_PROBE]) -+ else -+ AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support]) -+ fi -+]) -+ - # The way shlib-versions is used to generate soversions.mk uses a - # fairly simplistic model for name recognition that can't distinguish - # i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os -Index: glibc-2.12-2-gc4ccff1/elf/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/Makefile -+++ glibc-2.12-2-gc4ccff1/elf/Makefile -@@ -458,7 +458,8 @@ CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D' - CFLAGS-dl-cache.c = $(SYSCONF-FLAGS) - CFLAGS-cache.c = $(SYSCONF-FLAGS) - --CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),-DNOT_IN_libc=1 -DIS_IN_rtld=1) -+CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\ -+ -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld) - - test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names)))) - generated += $(addsuffix .so,$(strip $(modules-names))) -Index: glibc-2.12-2-gc4ccff1/elf/dl-close.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-close.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-close.c -@@ -32,6 +32,7 @@ - #include <sys/mman.h> - #include <sysdep-cancel.h> - #include <tls.h> -+#include <stap-probe.h> - - - /* Type of the constructor functions. */ -@@ -469,6 +470,7 @@ _dl_close_worker (struct link_map *map) - struct r_debug *r = _dl_debug_initialize (0, nsid); - r->r_state = RT_DELETE; - _dl_debug_state (); -+ LIBC_PROBE (rtld_unmap_start, 2, nsid, r); - - if (unload_global) - { -@@ -722,6 +724,7 @@ _dl_close_worker (struct link_map *map) - /* Notify the debugger those objects are finalized and gone. */ - r->r_state = RT_CONSISTENT; - _dl_debug_state (); -+ LIBC_PROBE (rtld_unmap_complete, 2, nsid, r); - - /* Recheck if we need to retry, release the lock. */ - out: -Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-load.c -@@ -36,6 +36,7 @@ - #include <stackinfo.h> - #include <caller.h> - #include <sysdep.h> -+#include <stap-probe.h> - - #include <dl-dst.h> - -@@ -806,7 +807,7 @@ _dl_init_paths (const char *llp) - static void - __attribute__ ((noreturn, noinline)) - lose (int code, int fd, const char *name, char *realname, struct link_map *l, -- const char *msg, struct r_debug *r) -+ const char *msg, struct r_debug *r, Lmid_t nsid) - { - /* The file might already be closed. */ - if (fd != -1) -@@ -818,6 +819,7 @@ lose (int code, int fd, const char *name - { - r->r_state = RT_CONSISTENT; - _dl_debug_state (); -+ LIBC_PROBE (rtld_map_complete, 2, nsid, r); - } - - _dl_signal_error (code, name, NULL, msg); -@@ -856,7 +858,7 @@ _dl_map_object_from_fd (const char *name - errval = errno; - call_lose: - lose (errval, fd, name, realname, l, errstring, -- make_consistent ? r : NULL); -+ make_consistent ? r : NULL, nsid); - } - - /* Look again to see if the real name matched another already loaded. */ -@@ -963,6 +965,7 @@ _dl_map_object_from_fd (const char *name - linking has not been used before. */ - r->r_state = RT_ADD; - _dl_debug_state (); -+ LIBC_PROBE (rtld_map_start, 2, nsid, r); - make_consistent = true; - } - else -@@ -1656,7 +1659,7 @@ open_verify (const char *name, struct fi - name = strdupa (realname); - free (realname); - } -- lose (errval, fd, name, NULL, NULL, errstring, NULL); -+ lose (errval, fd, name, NULL, NULL, errstring, NULL, 0); - } - - /* See whether the ELF header is what we expect. */ -Index: glibc-2.12-2-gc4ccff1/elf/dl-open.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-open.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-open.c -@@ -33,6 +33,7 @@ - #include <caller.h> - #include <sysdep-cancel.h> - #include <tls.h> -+#include <stap-probe.h> - - #include <dl-dst.h> - -@@ -297,6 +298,7 @@ dl_open_worker (void *a) - struct r_debug *r = _dl_debug_initialize (0, args->nsid); - r->r_state = RT_CONSISTENT; - _dl_debug_state (); -+ LIBC_PROBE (rtld_map_complete, 2, args->nsid, r); - - /* Only do lazy relocation if `LD_BIND_NOW' is not set. */ - int reloc_mode = mode & __RTLD_AUDIT; -@@ -309,10 +311,18 @@ dl_open_worker (void *a) - struct link_map *l = new; - while (l->l_next) - l = l->l_next; -+ int relocation_in_progress = 0; - while (1) - { - if (! l->l_real->l_relocated) - { -+ if (! relocation_in_progress) -+ { -+ /* Notify the debugger that relocations are about to happen. */ -+ LIBC_PROBE (rtld_reloc_start, 2, args->nsid, r); -+ relocation_in_progress = 1; -+ } -+ - #ifdef SHARED - if (__builtin_expect (GLRO(dl_profile) != NULL, 0)) - { -@@ -460,6 +470,10 @@ cannot load any more object with static - _dl_fatal_printf (N_("\ - TLS generation counter wrapped! Please report this.")); - -+ /* Notify the debugger all new objects have been relocated. */ -+ if (relocation_in_progress) -+ LIBC_PROBE (rtld_reloc_complete, 2, args->nsid, r); -+ - /* Run the initializer functions of new objects. */ - _dl_init (new, args->argc, args->argv, args->env); - -Index: glibc-2.12-2-gc4ccff1/elf/rtld-Rules -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/rtld-Rules -+++ glibc-2.12-2-gc4ccff1/elf/rtld-Rules -@@ -122,6 +122,6 @@ ifdef rtld-depfiles - endif - - # This here is the whole point of all the shenanigans. --rtld-CPPFLAGS := -DNOT_IN_libc=1 -DIS_IN_rtld=1 -+rtld-CPPFLAGS := -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld - - endif -Index: glibc-2.12-2-gc4ccff1/elf/rtld.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c -+++ glibc-2.12-2-gc4ccff1/elf/rtld.c -@@ -40,6 +40,7 @@ - #include <dl-osinfo.h> - #include <dl-procinfo.h> - #include <tls.h> -+#include <stap-probe.h> - - #include <assert.h> - -@@ -1656,6 +1657,7 @@ ERROR: ld.so: object '%s' cannot be load - /* We start adding objects. */ - r->r_state = RT_ADD; - _dl_debug_state (); -+ LIBC_PROBE (rtld_init_start, 2, LM_ID_BASE, r); - - /* Auditing checkpoint: we are ready to signal that the initial map - is being constructed. */ -@@ -2353,6 +2355,7 @@ ERROR: ld.so: object '%s' cannot be load - r = _dl_debug_initialize (0, LM_ID_BASE); - r->r_state = RT_CONSISTENT; - _dl_debug_state (); -+ LIBC_PROBE (rtld_init_complete, 2, LM_ID_BASE, r); - - #ifndef MAP_COPY - /* We must munmap() the cache file. */ -Index: glibc-2.12-2-gc4ccff1/extra-lib.mk -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/extra-lib.mk -+++ glibc-2.12-2-gc4ccff1/extra-lib.mk -@@ -101,4 +101,4 @@ ifneq (,$(cpp-srcs-left)) - include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left)) - endif - --CPPFLAGS-$(lib) := -DNOT_IN_libc=1 -DIS_IN_$(lib)=1 -+CPPFLAGS-$(lib) := -DNOT_IN_libc=1 -DIS_IN_$(lib)=1 -DIN_LIB=$(lib) -Index: glibc-2.12-2-gc4ccff1/include/stap-probe.h -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/include/stap-probe.h -@@ -0,0 +1,140 @@ -+/* Macros for defining Systemtap <sys/sdt.h> static probe points. -+ Copyright (C) 2011 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#ifndef _STAP_PROBE_H -+#define _STAP_PROBE_H 1 -+ -+#ifdef USE_STAP_PROBE -+ -+# include <sys/sdt.h> -+ -+/* Our code uses one macro LIBC_PROBE (name, n, arg1, ..., argn). -+ -+ Without USE_STAP_PROBE, that does nothing but evaluates all -+ its arguments (to prevent bit rot, unlike e.g. assert). -+ -+ Systemtap's header defines the macros STAP_PROBE (provider, name) and -+ STAP_PROBEn (provider, name, arg1, ..., argn). For "provider" we paste -+ in the IN_LIB name (libc, libpthread, etc.) automagically. */ -+ -+# ifndef NOT_IN_libc -+# define IN_LIB libc -+# elif !defined IN_LIB -+/* This is intentionally defined with extra unquoted commas in it so -+ that macro substitution will bomb out when it is used. We don't -+ just use #error here, so that this header can be included by -+ other headers that use LIBC_PROBE inside their own macros. We -+ only want such headers to fail to compile if those macros are -+ actually used in a context where IN_LIB has not been defined. */ -+# define IN_LIB ,,,missing -DIN_LIB=... -- not extra-lib.mk?,,, -+# endif -+ -+# define LIBC_PROBE(name, n, ...) \ -+ LIBC_PROBE_1 (IN_LIB, name, n, ## __VA_ARGS__) -+ -+# define LIBC_PROBE_1(lib, name, n, ...) \ -+ STAP_PROBE##n (lib, name, ## __VA_ARGS__) -+ -+# define STAP_PROBE0 STAP_PROBE -+ -+# define LIBC_PROBE_ASM(name, template) \ -+ STAP_PROBE_ASM (IN_LIB, name, template) -+ -+# define LIBC_PROBE_ASM_OPERANDS STAP_PROBE_ASM_OPERANDS -+ -+#else /* Not USE_STAP_PROBE. */ -+ -+# ifndef __ASSEMBLER__ -+# define LIBC_PROBE(name, n, ...) DUMMY_PROBE##n (__VA_ARGS__) -+# else -+# define LIBC_PROBE(name, n, ...) /* Nothing. */ -+# endif -+ -+# define LIBC_PROBE_ASM(name, template) /* Nothing. */ -+# define LIBC_PROBE_ASM_OPERANDS(n, ...) /* Nothing. */ -+ -+/* This silliness lets us evaluate all the arguments for each arity -+ of probe. My kingdom for a real macro system. */ -+ -+# define DUMMY_PROBE0() do {} while (0) -+# define DUMMY_PROBE1(a1) do {} while ((void) (a1), 0) -+# define DUMMY_PROBE2(a1, a2) do {} while ((void) (a1), \ -+ (void) (a2), 0) -+# define DUMMY_PROBE3(a1, a2, a3) do {} while ((void) (a1), \ -+ (void) (a2), \ -+ (void) (a3), 0) -+# define DUMMY_PROBE4(a1, a2, a3, a4) do {} while ((void) (a1), \ -+ (void) (a2), \ -+ (void) (a3), \ -+ (void) (a4), 0) -+# define DUMMY_PROBE5(a1, a2, a3, a4, a5) \ -+ do {} while ((void) (a1), \ -+ (void) (a2), \ -+ (void) (a3), \ -+ (void) (a4), \ -+ (void) (a5), 0) -+# define DUMMY_PROBE6(a1, a2, a3, a4, a5, a6) \ -+ do {} while ((void) (a1), \ -+ (void) (a2), \ -+ (void) (a3), \ -+ (void) (a4), \ -+ (void) (a5), \ -+ (void) (a6), 0) -+# define DUMMY_PROBE7(a1, a2, a3, a4, a5, a6, a7) \ -+ do {} while ((void) (a1), \ -+ (void) (a2), \ -+ (void) (a3), \ -+ (void) (a4), \ -+ (void) (a5), \ -+ (void) (a6), \ -+ (void) (a7), 0) -+# define DUMMY_PROBE8(a1, a2, a3, a4, a5, a6, a7, a8) \ -+ do {} while ((void) (a1), \ -+ (void) (a2), \ -+ (void) (a3), \ -+ (void) (a4), \ -+ (void) (a5), \ -+ (void) (a6), \ -+ (void) (a7), \ -+ (void) (a8), 0) -+# define DUMMY_PROBE9(a1, a2, a3, a4, a5, a6, a7, a8, a9) \ -+ do {} while ((void) (a1), \ -+ (void) (a2), \ -+ (void) (a3), \ -+ (void) (a4), \ -+ (void) (a5), \ -+ (void) (a6), \ -+ (void) (a7), \ -+ (void) (a8), \ -+ (void) (a9), 0) -+# define DUMMY_PROBE10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) \ -+ do {} while ((void) (a1), \ -+ (void) (a2), \ -+ (void) (a3), \ -+ (void) (a4), \ -+ (void) (a5), \ -+ (void) (a6), \ -+ (void) (a7), \ -+ (void) (a8), \ -+ (void) (a9), \ -+ (void) (a10), 0) -+ -+#endif /* USE_STAP_PROBE. */ -+ -+#endif /* stap-probe.h */ -Index: glibc-2.12-2-gc4ccff1/scripts/check-local-headers.sh -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/scripts/check-local-headers.sh -+++ glibc-2.12-2-gc4ccff1/scripts/check-local-headers.sh -@@ -31,6 +31,8 @@ fgrep -v "$includedir/asm" | - fgrep -v "$includedir/linux" | - fgrep -v "$includedir/selinux" | - fgrep -v "$includedir/sys/capability.h" | -+fgrep -v "$includedir/sys/sdt.h" | -+fgrep -v "$includedir/sys/sdt-config.h" | - fgrep -v "$includedir/gd" | - fgrep -v "$includedir/nss3"; then - # If we found a match something is wrong. diff --git a/src/patches/glibc/glibc-rh711987.patch b/src/patches/glibc/glibc-rh711987.patch deleted file mode 100644 index bd286e1..0000000 --- a/src/patches/glibc/glibc-rh711987.patch +++ /dev/null @@ -1,136 +0,0 @@ -2010-08-11 Ulrich Drepper drepper@redhat.com - - * sysdeps/unix/sysv/linux/bits/statfs.h (struct statfs): Add f_flags - field. - (struct statfs64): Likewise. - (_STATFS_F_FLAGS): Define. - * sysdeps/unix/sysv/linux/s390/bits/statfs.h: Likewise. - * sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags): - Don't define if __ASSUME_STATFS_F_FLAGS is defined. - (ST_VALID): Define locally. - (INTERNAL_STATVFS): If f_flags has ST_VALID set don't call - __statvfs_getflags, use the provided value. - * sysdeps/unix/sysv/linux/kernel-features.h: Define - __ASSUME_STATFS_F_FLAGS. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/statfs.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/bits/statfs.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/statfs.h -@@ -42,7 +42,8 @@ struct statfs - __fsid_t f_fsid; - __SWORD_TYPE f_namelen; - __SWORD_TYPE f_frsize; -- __SWORD_TYPE f_spare[5]; -+ __SWORD_TYPE f_flags; -+ __SWORD_TYPE f_spare[4]; - }; - - #ifdef __USE_LARGEFILE64 -@@ -58,10 +59,12 @@ struct statfs64 - __fsid_t f_fsid; - __SWORD_TYPE f_namelen; - __SWORD_TYPE f_frsize; -- __SWORD_TYPE f_spare[5]; -+ __SWORD_TYPE f_flags; -+ __SWORD_TYPE f_spare[4]; - }; - #endif - - /* Tell code we have these members. */ - #define _STATFS_F_NAMELEN - #define _STATFS_F_FRSIZE -+#define _STATFS_F_FLAGS -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_statvfs.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/internal_statvfs.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_statvfs.c -@@ -29,6 +29,11 @@ - #include <sys/statfs.h> - #include <sys/statvfs.h> - #include "linux_fsinfo.h" -+#include "kernel-features.h" -+ -+ -+/* Special internal-only bit value. */ -+#define ST_VALID 0x0020 - - - #ifndef STATFS -@@ -37,6 +42,7 @@ - # define INTERNAL_STATVFS __internal_statvfs - - -+# ifndef __ASSUME_STATFS_F_FLAGS - int - __statvfs_getflags (const char *name, int fstype, struct stat64 *st) - { -@@ -200,6 +206,7 @@ __statvfs_getflags (const char *name, in - - return result; - } -+# endif - #else - extern int __statvfs_getflags (const char *name, int fstype, - struct stat64 *st); -@@ -240,9 +247,14 @@ INTERNAL_STATVFS (const char *name, stru - /* XXX I have no idea how to compute f_favail. Any idea??? */ - buf->f_favail = buf->f_ffree; - -- /* Determining the flags is tricky. We have to read /proc/mounts or -- the /etc/mtab file and search for the entry which matches the given -- file. The way we can test for matching filesystem is using the -- device number. */ -- buf->f_flag = __statvfs_getflags (name, fsbuf->f_type, st); -+#ifndef __ASSUME_STATFS_F_FLAGS -+ if ((fsbuf->f_flags & ST_VALID) == 0) -+ /* Determining the flags is tricky. We have to read /proc/mounts or -+ the /etc/mtab file and search for the entry which matches the given -+ file. The way we can test for matching filesystem is using the -+ device number. */ -+ buf->f_flag = __statvfs_getflags (name, fsbuf->f_type, st); -+ else -+#endif -+ buf->f_flag = fsbuf->f_flags ^ ST_VALID; - } -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/kernel-features.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/kernel-features.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/kernel-features.h -@@ -552,3 +552,8 @@ - #if __LINUX_KERNEL_VERSION >= 0x020621 - # define __ASSUME_RECVMMSG 1 - #endif -+ -+/* statfs fills in f_flags since 2.6.36. */ -+#if __LINUX_KERNEL_VERSION >= 0x020624 -+# define __ASSUME_STATFS_F_FLAGS 1 -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/s390/bits/statfs.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/s390/bits/statfs.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/s390/bits/statfs.h -@@ -42,7 +42,8 @@ struct statfs - __fsid_t f_fsid; - int f_namelen; - int f_frsize; -- int f_spare[5]; -+ int f_flags; -+ int f_spare[4]; - }; - - #ifdef __USE_LARGEFILE64 -@@ -58,10 +59,12 @@ struct statfs64 - __fsid_t f_fsid; - int f_namelen; - int f_frsize; -- int f_spare[5]; -+ int f_flags; -+ int f_spare[4]; - }; - #endif - - /* Tell code we have this member. */ - #define _STATFS_F_NAMELEN - #define _STATFS_F_FRSIZE -+#define _STATFS_F_FLAGS diff --git a/src/patches/glibc/glibc-rh712248.patch b/src/patches/glibc/glibc-rh712248.patch deleted file mode 100644 index afadc66..0000000 --- a/src/patches/glibc/glibc-rh712248.patch +++ /dev/null @@ -1,69 +0,0 @@ -2011-07-07 Ulrich Drepper drepper@gmail.com - - [BZ #12868] - * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define Lustre constants. - * sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags): - Handle Lustre. - * sysdeps/unix/sysv/linux/pathconf.c (__statfs_link_max): Likewise. - (__statfs_filesize_max): Likewise. - Patch mostly by Andreas Dilger adilger@whamcloud.com. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_statvfs.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/internal_statvfs.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_statvfs.c -@@ -109,6 +109,9 @@ __statvfs_getflags (const char *name, in - case LOGFS_MAGIC_U32: - fsname = "logfs"; - break; -+ case LUSTRE_SUPER_MAGIC: -+ fsname = "lustre"; -+ break; - } - - FILE *mtab = __setmntent ("/proc/mounts", "r"); -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/linux_fsinfo.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/linux_fsinfo.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/linux_fsinfo.h -@@ -77,6 +77,9 @@ - /* Constant that identifies the `logfsŽ filesystem. */ - #define LOGFS_MAGIC_U32 0xc97e8168u - -+/* Constant that identifies the `lustre' filesystem. */ -+#define LUSTRE_SUPER_MAGIC 0x0BD00BD0 -+ - /* Constants that identify the `minix2' filesystem. */ - #define MINIX2_SUPER_MAGIC 0x2468 - #define MINIX2_SUPER_MAGIC2 0x2478 -@@ -144,6 +147,8 @@ - /* Maximum link counts. */ - #define COH_LINK_MAX 10000 - #define EXT2_LINK_MAX 32000 -+#define EXT4_LINK_MAX 65000 -+#define LUSTRE_LINK_MAX EXT4_LINK_MAX - #define MINIX2_LINK_MAX 65530 - #define MINIX_LINK_MAX 250 - #define REISERFS_LINK_MAX 64535 -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/pathconf.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/pathconf.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/pathconf.c -@@ -104,6 +104,9 @@ __statfs_link_max (int result, const str - case XFS_SUPER_MAGIC: - return XFS_LINK_MAX; - -+ case LUSTRE_SUPER_MAGIC: -+ return LUSTRE_LINK_MAX; -+ - default: - return LINUX_LINK_MAX; - } -@@ -136,6 +139,7 @@ __statfs_filesize_max (int result, const - case UDF_SUPER_MAGIC: - case JFS_SUPER_MAGIC: - case VXFS_SUPER_MAGIC: -+ case LUSTRE_SUPER_MAGIC: - return 64; - - case MSDOS_SUPER_MAGIC: diff --git a/src/patches/glibc/glibc-rh713134.patch b/src/patches/glibc/glibc-rh713134.patch deleted file mode 100644 index dc979be..0000000 --- a/src/patches/glibc/glibc-rh713134.patch +++ /dev/null @@ -1,36 +0,0 @@ -2011-03-18 Andreas Schwab schwab@redhat.com - - * elf/ldd.bash.in: Never run file directly. - -Index: glibc-2.12-2-gc4ccff1/elf/ldd.bash.in -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/ldd.bash.in -+++ glibc-2.12-2-gc4ccff1/elf/ldd.bash.in -@@ -167,18 +167,6 @@ warning: you do not have execution permi - fi - done - case $ret in -- 0) -- # If the program exits with exit code 5, it means the process has been -- # invoked with __libc_enable_secure. Fall back to running it through -- # the dynamic linker. -- try_trace "$file" -- rc=$? -- if [ $rc = 5 ]; then -- try_trace "$RTLD" "$file" -- rc=$? -- fi -- [ $rc = 0 ] || result=1 -- ;; - 1) - # This can be a non-ELF binary or no binary at all. - nonelf "$file" || { -@@ -186,7 +174,7 @@ warning: you do not have execution permi - result=1 - } - ;; -- 2) -+ 0|2) - try_trace "$RTLD" "$file" || result=1 - ;; - *) diff --git a/src/patches/glibc/glibc-rh714823.patch b/src/patches/glibc/glibc-rh714823.patch deleted file mode 100644 index 8bd121b..0000000 --- a/src/patches/glibc/glibc-rh714823.patch +++ /dev/null @@ -1,126 +0,0 @@ -2011-06-28 Andreas Schwab schwab@redhat.com - - * sysdeps/posix/getaddrinfo.c (gaih_inet): Don't use gethostbyaddr - to determine canonical name. - -2011-06-22 Andreas Schwab schwab@redhat.com - - * sysdeps/posix/getaddrinfo.c (gaih_inet): Fix last change. - -2011-06-21 Ulrich Drepper drepper@gmail.com - - [BZ #12885] - * sysdeps/posix/getaddrinfo.c (gaih_inet): When looking up only IPv6 - addresses using gethostbyname4_r ignore IPv4 addresses. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/posix/getaddrinfo.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c -@@ -512,10 +512,11 @@ gaih_inet (const char *name, const struc - - /* If we do not have to look for IPv4 and IPv6 together, use - the simple, old functions. */ -- if (req->ai_family == AF_INET -- || (req->ai_family == AF_INET6 -- && ((req->ai_flags & AI_V4MAPPED) == 0 -- || (req->ai_flags & AI_ALL) == 0))) -+ if ((req->ai_family == AF_INET -+ || (req->ai_family == AF_INET6 -+ && ((req->ai_flags & AI_V4MAPPED) == 0 -+ || (req->ai_flags & AI_ALL) == 0))) -+ && (req->ai_flags & AI_CANONNAME) == 0) - { - int family = req->ai_family; - size_t tmpbuflen = 512; -@@ -731,16 +732,44 @@ gaih_inet (const char *name, const struc - tmpbuflen, 2 * tmpbuflen); - } - -- no_inet6_data = no_data; -- - if (status == NSS_STATUS_SUCCESS) - { -+ assert (!no_data); -+ no_data = 1; -+ - if ((req->ai_flags & AI_CANONNAME) != 0 && canon == NULL) - canon = (*pat)->name; - - while (*pat != NULL) -- pat = &((*pat)->next); -+ { -+ if ((*pat)->family == AF_INET -+ && req->ai_family == AF_INET6 -+ && (req->ai_flags & AI_V4MAPPED) != 0) -+ { -+ uint32_t *pataddr = (*pat)->addr; -+ (*pat)->family = AF_INET6; -+ pataddr[3] = pataddr[0]; -+ pataddr[2] = htonl (0xffff); -+ pataddr[1] = 0; -+ pataddr[0] = 0; -+ pat = &((*pat)->next); -+ no_data = 0; -+ } -+ else if (req->ai_family == AF_UNSPEC -+ || (*pat)->family == req->ai_family) -+ { -+ pat = &((*pat)->next); -+ -+ no_data = 0; -+ if (req->ai_family == AF_INET6) -+ got_ipv6 = true; -+ } -+ else -+ *pat = ((*pat)->next); -+ } - } -+ -+ no_inet6_data = no_data; - } - else - { -@@ -905,39 +934,9 @@ gaih_inet (const char *name, const struc - { - if (canon == NULL) - { -- struct hostent *h = NULL; -- int herrno; -- struct hostent th; -- size_t tmpbuflen = 512; -- char *tmpbuf = NULL; -- -- do -- { -- tmpbuf = extend_alloca (tmpbuf, tmpbuflen, tmpbuflen * 2); -- rc = __gethostbyaddr_r (at2->addr, -- ((at2->family == AF_INET6) -- ? sizeof (struct in6_addr) -- : sizeof (struct in_addr)), -- at2->family, &th, tmpbuf, -- tmpbuflen, &h, &herrno); -- } -- while (rc == ERANGE && herrno == NETDB_INTERNAL); -- -- if (rc != 0 && herrno == NETDB_INTERNAL) -- { -- __set_h_errno (herrno); -- return -EAI_SYSTEM; -- } -- -- if (h != NULL) -- canon = h->h_name; -- else -- { -- assert (orig_name != NULL); -- /* If the canonical name cannot be determined, use -- the passed in string. */ -- canon = orig_name; -- } -+ /* If the canonical name cannot be determined, use -+ the passed in string. */ -+ canon = orig_name; - } - - #ifdef HAVE_LIBIDN diff --git a/src/patches/glibc/glibc-rh718057.patch b/src/patches/glibc/glibc-rh718057.patch deleted file mode 100644 index d331996..0000000 --- a/src/patches/glibc/glibc-rh718057.patch +++ /dev/null @@ -1,109 +0,0 @@ -2011-07-01 Andreas Schwab schwab@redhat.com - - * nis/nss_compat/compat-pwd.c (getpwent_next_nss_netgr): Query NIS - domain only when needed. - -Index: glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-pwd.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nis/nss_compat/compat-pwd.c -+++ glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-pwd.c -@@ -360,7 +360,7 @@ getpwent_next_nss_netgr (const char *nam - char *group, char *buffer, size_t buflen, - int *errnop) - { -- char *curdomain, *host, *user, *domain, *p2; -+ char *curdomain = NULL, *host, *user, *domain, *p2; - int status; - size_t p2len; - -@@ -369,15 +369,7 @@ getpwent_next_nss_netgr (const char *nam - if (!nss_getpwnam_r) - return NSS_STATUS_UNAVAIL; - -- if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS) -- { -- ent->netgroup = false; -- ent->first = false; -- give_pwd_free (&ent->pwd); -- return NSS_STATUS_UNAVAIL; -- } -- -- if (ent->first == true) -+ if (ent->first) - { - memset (&ent->netgrdata, 0, sizeof (struct __netgrent)); - __internal_setnetgrent (group, &ent->netgrdata); -@@ -403,8 +395,19 @@ getpwent_next_nss_netgr (const char *nam - if (user == NULL || user[0] == '-') - continue; - -- if (domain != NULL && strcmp (curdomain, domain) != 0) -- continue; -+ if (domain != NULL) -+ { -+ if (curdomain == NULL -+ && yp_get_default_domain (&curdomain) != YPERR_SUCCESS) -+ { -+ __internal_endnetgrent (&ent->netgrdata); -+ ent->netgroup = false; -+ give_pwd_free (&ent->pwd); -+ return NSS_STATUS_UNAVAIL; -+ } -+ if (strcmp (curdomain, domain) != 0) -+ continue; -+ } - - /* If name != NULL, we are called from getpwnam. */ - if (name != NULL) -Index: glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-spwd.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nis/nss_compat/compat-spwd.c -+++ glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-spwd.c -@@ -317,7 +317,7 @@ getspent_next_nss_netgr (const char *nam - char *group, char *buffer, size_t buflen, - int *errnop) - { -- char *curdomain, *host, *user, *domain, *p2; -+ char *curdomain = NULL, *host, *user, *domain, *p2; - size_t p2len; - - if (!nss_getspnam_r) -@@ -327,15 +327,7 @@ getspent_next_nss_netgr (const char *nam - if (ent->setent_status != NSS_STATUS_SUCCESS) - return ent->setent_status; - -- if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS) -- { -- ent->netgroup = false; -- ent->first = false; -- give_spwd_free (&ent->pwd); -- return NSS_STATUS_UNAVAIL; -- } -- -- if (ent->first == true) -+ if (ent->first) - { - memset (&ent->netgrdata, 0, sizeof (struct __netgrent)); - __internal_setnetgrent (group, &ent->netgrdata); -@@ -362,8 +354,19 @@ getspent_next_nss_netgr (const char *nam - if (user == NULL || user[0] == '-') - continue; - -- if (domain != NULL && strcmp (curdomain, domain) != 0) -- continue; -+ if (domain != NULL) -+ { -+ if (curdomain == NULL -+ && yp_get_default_domain (&curdomain) != YPERR_SUCCESS) -+ { -+ __internal_endnetgrent (&ent->netgrdata); -+ ent->netgroup = false; -+ give_spwd_free (&ent->pwd); -+ return NSS_STATUS_UNAVAIL; -+ } -+ if (strcmp (curdomain, domain) != 0) -+ continue; -+ } - - /* If name != NULL, we are called from getpwnam */ - if (name != NULL) diff --git a/src/patches/glibc/glibc-rh726517.patch b/src/patches/glibc/glibc-rh726517.patch deleted file mode 100644 index 26addbf..0000000 --- a/src/patches/glibc/glibc-rh726517.patch +++ /dev/null @@ -1,173 +0,0 @@ -Index: glibc-2.12-2-gc4ccff1/malloc/arena.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/malloc/arena.c -+++ glibc-2.12-2-gc4ccff1/malloc/arena.c -@@ -870,7 +870,7 @@ heap_trim(heap, pad) heap_info *heap; si - heap = prev_heap; - if(!prev_inuse(p)) { /* consolidate backward */ - p = prev_chunk(p); -- unlink(p, bck, fwd); -+ unlink(ar_ptr, p, bck, fwd); - } - assert(((unsigned long)((char*)p + new_size) & (pagesz-1)) == 0); - assert( ((char*)p + new_size) == ((char*)heap + heap->size) ); -Index: glibc-2.12-2-gc4ccff1/malloc/hooks.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/malloc/hooks.c -+++ glibc-2.12-2-gc4ccff1/malloc/hooks.c -@@ -219,7 +219,9 @@ top_check() - (char*)t + chunksize(t) == mp_.sbrk_base + main_arena.system_mem))) - return 0; - -+ mutex_unlock(&main_arena); - malloc_printerr (check_action, "malloc: top chunk is corrupt", t); -+ mutex_lock(&main_arena); - - /* Try to set up a new top chunk. */ - brk = MORECORE(0); -Index: glibc-2.12-2-gc4ccff1/malloc/malloc.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/malloc/malloc.c -+++ glibc-2.12-2-gc4ccff1/malloc/malloc.c -@@ -2109,12 +2109,14 @@ typedef struct malloc_chunk* mbinptr; - #define last(b) ((b)->bk) - - /* Take a chunk off a bin list */ --#define unlink(P, BK, FD) { \ -+#define unlink(AV, P, BK, FD) { \ - FD = P->fd; \ - BK = P->bk; \ -- if (__builtin_expect (FD->bk != P || BK->fd != P, 0)) \ -+ if (__builtin_expect (FD->bk != P || BK->fd != P, 0)) { \ -+ mutex_unlock(&(AV)->mutex); \ - malloc_printerr (check_action, "corrupted double-linked list", P); \ -- else { \ -+ mutex_lock(&(AV)->mutex); \ -+ } else { \ - FD->bk = BK; \ - BK->fd = FD; \ - if (!in_smallbin_range (P->size) \ -@@ -3257,7 +3259,9 @@ static Void_t* sYSMALLOc(nb, av) INTERNA - - else if (contiguous(av) && old_size && brk < old_end) { - /* Oops! Someone else killed our space.. Can't touch anything. */ -+ mutex_unlock(&av->mutex); - malloc_printerr (3, "break adjusted to free malloc space", brk); -+ mutex_lock(&av->mutex); - } - - /* -@@ -4305,7 +4309,9 @@ _int_malloc(mstate av, size_t bytes) - { - errstr = "malloc(): memory corruption (fast)"; - errout: -+ mutex_unlock(&av->mutex); - malloc_printerr (check_action, errstr, chunk2mem (victim)); -+ mutex_lock(&av->mutex); - return NULL; - } - #ifndef ATOMIC_FASTBINS -@@ -4393,8 +4399,12 @@ _int_malloc(mstate av, size_t bytes) - bck = victim->bk; - if (__builtin_expect (victim->size <= 2 * SIZE_SZ, 0) - || __builtin_expect (victim->size > av->system_mem, 0)) -- malloc_printerr (check_action, "malloc(): memory corruption", -- chunk2mem (victim)); -+ { -+ void *p = chunk2mem(victim); -+ mutex_unlock(&av->mutex); -+ malloc_printerr (check_action, "malloc(): memory corruption", p); -+ mutex_lock(&av->mutex); -+ } - size = chunksize(victim); - - /* -@@ -4535,7 +4545,7 @@ _int_malloc(mstate av, size_t bytes) - victim = victim->fd; - - remainder_size = size - nb; -- unlink(victim, bck, fwd); -+ unlink(av, victim, bck, fwd); - - /* Exhaust */ - if (remainder_size < MINSIZE) { -@@ -4633,7 +4643,7 @@ _int_malloc(mstate av, size_t bytes) - remainder_size = size - nb; - - /* unlink */ -- unlink(victim, bck, fwd); -+ unlink(av, victim, bck, fwd); - - /* Exhaust */ - if (remainder_size < MINSIZE) { -@@ -4789,10 +4799,14 @@ _int_free(mstate av, mchunkptr p) - errstr = "free(): invalid pointer"; - errout: - #ifdef ATOMIC_FASTBINS -- if (! have_lock && locked) -+ if (have_lock || locked) - (void)mutex_unlock(&av->mutex); - #endif - malloc_printerr (check_action, errstr, chunk2mem(p)); -+#ifdef ATOMIC_FASTBINS -+ if (have_lock) -+ mutex_lock(&av->mutex); -+#endif - return; - } - /* We know that each chunk is at least MINSIZE bytes in size. */ -@@ -4961,7 +4975,7 @@ _int_free(mstate av, mchunkptr p) - prevsize = p->prev_size; - size += prevsize; - p = chunk_at_offset(p, -((long) prevsize)); -- unlink(p, bck, fwd); -+ unlink(av, p, bck, fwd); - } - - if (nextchunk != av->top) { -@@ -4970,7 +4984,7 @@ _int_free(mstate av, mchunkptr p) - - /* consolidate forward */ - if (!nextinuse) { -- unlink(nextchunk, bck, fwd); -+ unlink(av, nextchunk, bck, fwd); - size += nextsize; - } else - clear_inuse_bit_at_offset(nextchunk, 0); -@@ -5158,7 +5172,7 @@ static void malloc_consolidate(av) mstat - prevsize = p->prev_size; - size += prevsize; - p = chunk_at_offset(p, -((long) prevsize)); -- unlink(p, bck, fwd); -+ unlink(av, p, bck, fwd); - } - - if (nextchunk != av->top) { -@@ -5166,7 +5180,7 @@ static void malloc_consolidate(av) mstat - - if (!nextinuse) { - size += nextsize; -- unlink(nextchunk, bck, fwd); -+ unlink(av, nextchunk, bck, fwd); - } else - clear_inuse_bit_at_offset(nextchunk, 0); - -@@ -5235,7 +5249,9 @@ _int_realloc(mstate av, mchunkptr oldp, - { - errstr = "realloc(): invalid old size"; - errout: -+ mutex_unlock(&av->mutex); - malloc_printerr (check_action, errstr, chunk2mem(oldp)); -+ mutex_lock(&av->mutex); - return NULL; - } - -@@ -5282,7 +5298,7 @@ _int_realloc(mstate av, mchunkptr oldp, - (unsigned long)(newsize = oldsize + nextsize) >= - (unsigned long)(nb)) { - newp = oldp; -- unlink(next, bck, fwd); -+ unlink(av, next, bck, fwd); - } - - /* allocate, copy, free */ diff --git a/src/patches/glibc/glibc-rh730379.patch b/src/patches/glibc/glibc-rh730379.patch deleted file mode 100644 index 45808af..0000000 --- a/src/patches/glibc/glibc-rh730379.patch +++ /dev/null @@ -1,34 +0,0 @@ -2011-08-17 Ulrich Drepper drepper@gmail.com - - * Makeconfig (override CFLAGS): Add library-specific CFLAGS. - * resolv/Makefile: Define CFLAGS-libresolv. - -Index: glibc-2.12-2-gc4ccff1/Makeconfig -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/Makeconfig -+++ glibc-2.12-2-gc4ccff1/Makeconfig -@@ -700,7 +700,9 @@ CPPFLAGS = $($(subdir)-CPPFLAGS) $(+incl - override CFLAGS = -std=gnu99 $(gnu89-inline-CFLAGS) \ - $(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \ - $(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) \ -- $(CFLAGS-$(@F)) -+ $(CFLAGS-$(@F)) \ -+ $(foreach lib,$(libof-$(basename $(@F))) \ -+ $(libof-$(<F)) $(libof-$(@F)),$(CFLAGS-$(lib))) - override CXXFLAGS = $(c++-sysincludes) \ - $(filter-out %frame-pointer,$(+cflags)) $(sysdep-CFLAGS) \ - $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) $(CFLAGS-$(@F)) -Index: glibc-2.12-2-gc4ccff1/resolv/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/Makefile -+++ glibc-2.12-2-gc4ccff1/resolv/Makefile -@@ -76,6 +76,9 @@ CPPFLAGS += -Dgethostbyname=res_gethostb - -Dgetnetbyname=res_getnetbyname \ - -Dgetnetbyaddr=res_getnetbyaddr - -+ifeq (yes,$(have-ssp)) -+CFLAGS-libresolv += -fstack-protector -+endif - CFLAGS-res_hconf.c = -fexceptions - CFLAGS-res_send.c += -fno-strict-aliasing - diff --git a/src/patches/glibc/glibc-rh731042.patch b/src/patches/glibc/glibc-rh731042.patch deleted file mode 100644 index d2f7b55..0000000 --- a/src/patches/glibc/glibc-rh731042.patch +++ /dev/null @@ -1,51 +0,0 @@ -2011-08-08 Andreas Schwab schwab@redhat.com - - * sysdeps/unix/sysv/linux/x86_64/cancellation.S: Maintain aligned - stack. - * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise. - * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise. - -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S -@@ -71,7 +71,9 @@ ENTRY(__pthread_enable_asynccancel) - - 1: ret - --3: movq $TCB_PTHREAD_CANCELED, %fs:RESULT -+3: subq $8, %rsp -+ cfi_adjust_cfa_offset(8) -+ movq $TCB_PTHREAD_CANCELED, %fs:RESULT - lock - orl $TCB_EXITING_BITMASK, %fs:CANCELHANDLING - movq %fs:CLEANUP_JMP_BUF, %rdi -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S -@@ -63,9 +63,9 @@ __pthread_cond_timedwait: - cfi_adjust_cfa_offset(8) - cfi_rel_offset(%r15, 0) - #ifdef __ASSUME_FUTEX_CLOCK_REALTIME --# define FRAME_SIZE 32 -+# define FRAME_SIZE (32+8) - #else --# define FRAME_SIZE 48 -+# define FRAME_SIZE (48+8) - #endif - subq $FRAME_SIZE, %rsp - cfi_adjust_cfa_offset(FRAME_SIZE) -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S -@@ -45,7 +45,7 @@ __pthread_cond_wait: - cfi_lsda(DW_EH_PE_udata4, .LexceptSTART) - #endif - --#define FRAME_SIZE 32 -+#define FRAME_SIZE (32+8) - leaq -FRAME_SIZE(%rsp), %rsp - cfi_adjust_cfa_offset(FRAME_SIZE) - diff --git a/src/patches/glibc/glibc-rh736346.patch b/src/patches/glibc/glibc-rh736346.patch deleted file mode 100644 index 2dd3f8a..0000000 --- a/src/patches/glibc/glibc-rh736346.patch +++ /dev/null @@ -1,116 +0,0 @@ -2011-01-14 Ulrich Drepper drepper@gmail.com - - [BZ #10563] - * sysdeps/unix/sysv/linux/i386/setgroups.c: Use INLINE_SETXID_SYSCALL - to make the syscall. - * sysdeps/unix/sysv/linux/setgroups.c: New file. - -2011-01-14 Ulrich Drepper drepper@gmail.com - - [BZ #10563] - * sysdeps/pthread/setxid.h (__SETXID_1): Add cast to assignment. - (__SETXID_2): Likewise. - (__SETXID_3): Likewise. - -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/setxid.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/pthread/setxid.h -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/setxid.h -@@ -20,11 +20,11 @@ - #include <sysdep.h> - - #define __SETXID_1(cmd, arg1) \ -- cmd.id[0] = arg1 -+ cmd.id[0] = (long int) arg1 - #define __SETXID_2(cmd, arg1, arg2) \ -- __SETXID_1 (cmd, arg1); cmd.id[1] = arg2 -+ __SETXID_1 (cmd, arg1); cmd.id[1] = (long int) arg2 - #define __SETXID_3(cmd, arg1, arg2, arg3) \ -- __SETXID_2 (cmd, arg1, arg2); cmd.id[2] = arg3 -+ __SETXID_2 (cmd, arg1, arg2); cmd.id[2] = (long int) arg3 - - #ifdef SINGLE_THREAD - # define INLINE_SETXID_SYSCALL(name, nr, args...) \ -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/setgroups.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/i386/setgroups.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/setgroups.c -@@ -25,6 +25,7 @@ - #include <sys/syscall.h> - #include <bp-checks.h> - -+#include <setxid.h> - #include <linux/posix_types.h> - #include <kernel-features.h> - -@@ -44,7 +45,7 @@ int - setgroups (size_t n, const gid_t *groups) - { - #if __ASSUME_32BITUIDS > 0 -- return INLINE_SYSCALL (setgroups32, 2, n, CHECK_N (groups, n)); -+ return INLINE_SETXID_SYSCALL (setgroups32, 2, n, CHECK_N (groups, n)); - #else - if (n > (size_t) __sysconf (_SC_NGROUPS_MAX)) - { -@@ -62,7 +63,8 @@ setgroups (size_t n, const gid_t *groups - int result; - int saved_errno = errno; - -- result = INLINE_SYSCALL (setgroups32, 2, n, CHECK_N (groups, n)); -+ result = INLINE_SETXID_SYSCALL (setgroups32, 2, n, -+ CHECK_N (groups, n)); - if (result == 0 || errno != ENOSYS) - return result; - -@@ -80,7 +82,8 @@ setgroups (size_t n, const gid_t *groups - } - } - -- return INLINE_SYSCALL (setgroups, 2, n, CHECK_N (kernel_groups, n)); -+ return INLINE_SETXID_SYSCALL (setgroups, 2, n, -+ CHECK_N (kernel_groups, n)); - } - #endif - } -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/setgroups.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/setgroups.c -@@ -0,0 +1,37 @@ -+/* Copyright (C) 1997,1998,2000,2002,2004,2006,2011 -+ Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include <errno.h> -+#include <grp.h> -+#include <setxid.h> -+#include <sysdep.h> -+ -+ -+/* Set the group set for the current user to GROUPS (N of them). For -+ Linux we must convert the array of groups into the format that the -+ kernel expects. */ -+int -+setgroups (size_t n, const gid_t *groups) -+{ -+#ifdef __NR_setgroups32 -+# error "wrong setgroups.c file used" -+#endif -+ return INLINE_SETXID_SYSCALL (setgroups, 2, n, groups); -+} -+libc_hidden_def (setgroups) diff --git a/src/patches/glibc/glibc-rh737778.patch b/src/patches/glibc/glibc-rh737778.patch deleted file mode 100644 index 5d3c131..0000000 --- a/src/patches/glibc/glibc-rh737778.patch +++ /dev/null @@ -1,122 +0,0 @@ -2011-08-14 Roland McGrath roland@hack.frob.com - - * locale/Makefile (locale-CPPFLAGS): Renamed CPPFLAGS-locale-programs. - (locale-CPPFLAGS): New variable; put LOCALEDIR, LOCALE_ALIAS_PATH and - -Iprograms here. - (cppflags-iterator.mk sequence): Use locale-programs in place of nonlib. - (localedef-modules): Add localedef. - (locale-modules): Add locale. - -2011-08-13 Ulrich Drepper drepper@gmail.com - - * intl/l10nflist.c (_nl_normalize_codeset): Make it compile outside - of libc. Make tolower call locale-independent. Optimize a bit by - using isdigit instead of isalnum. - * locale/Makefile (locale-CPPFLAGS): Add -DNOT_IN_libc. - -2011-08-11 Ulrich Drepper drepper@gmail.com - - * intl/l10nflist.c (_nl_make_l10nflist): Use locale-independent - classification. - -Index: glibc-2.12-2-gc4ccff1/intl/l10nflist.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/intl/l10nflist.c -+++ glibc-2.12-2-gc4ccff1/intl/l10nflist.c -@@ -332,13 +332,18 @@ _nl_normalize_codeset (codeset, name_len - char *retval; - char *wp; - size_t cnt; -+#ifdef NOT_IN_libc -+ locale_t locale = newlocale (0, "C", NULL); -+#else -+# define locale _nl_C_locobj_ptr -+#endif - - for (cnt = 0; cnt < name_len; ++cnt) -- if (isalnum ((unsigned char) codeset[cnt])) -+ if (__isalnum_l ((unsigned char) codeset[cnt], locale)) - { - ++len; - -- if (isalpha ((unsigned char) codeset[cnt])) -+ if (! __isdigit_l ((unsigned char) codeset[cnt], locale)) - only_digit = 0; - } - -@@ -346,15 +351,14 @@ _nl_normalize_codeset (codeset, name_len - - if (retval != NULL) - { -+ wp = retval; - if (only_digit) -- wp = stpcpy (retval, "iso"); -- else -- wp = retval; -+ wp = stpcpy (wp, "iso"); - - for (cnt = 0; cnt < name_len; ++cnt) -- if (isalpha ((unsigned char) codeset[cnt])) -- *wp++ = tolower ((unsigned char) codeset[cnt]); -- else if (isdigit ((unsigned char) codeset[cnt])) -+ if (__isalpha_l ((unsigned char) codeset[cnt], locale)) -+ *wp++ = __tolower_l ((unsigned char) codeset[cnt], locale); -+ else if (__isdigit_l ((unsigned char) codeset[cnt], locale)) - *wp++ = codeset[cnt]; - - *wp = '\0'; -Index: glibc-2.12-2-gc4ccff1/locale/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/locale/Makefile -+++ glibc-2.12-2-gc4ccff1/locale/Makefile -@@ -59,10 +59,11 @@ vpath %.c programs ../crypt - vpath %.h programs - vpath %.gperf programs - --localedef-modules := $(categories:%=ld-%) charmap linereader locfile \ -+localedef-modules := localedef $(categories:%=ld-%) \ -+ charmap linereader locfile \ - repertoire locarchive - localedef-aux := md5 --locale-modules := locale-spec -+locale-modules := locale locale-spec - lib-modules := charmap-dir simple-hash xmalloc xstrdup - - -@@ -90,22 +91,27 @@ endif - - localepath = "$(localedir):$(i18ndir)" - --locale-CPPFLAGS := -DLOCALE_PATH='$(localepath)' \ -- -DLOCALEDIR='"$(localedir)"' \ -- -DLOCALE_ALIAS_PATH='"$(msgcatdir)"' \ -- -DCHARMAP_PATH='"$(i18ndir)/charmaps"' \ -- -DREPERTOIREMAP_PATH='"$(i18ndir)/repertoiremaps"' \ -- -DLOCSRCDIR='"$(i18ndir)/locales"' -DHAVE_CONFIG_H \ -- -Iprograms -+# -Iprograms doesn't really belong here, but this gets it at the head -+# of the list instead of the tail, where CPPFLAGS-$(lib) gets added. -+# We need it before the standard -I's to see programs/config.h first. -+locale-CPPFLAGS = -DLOCALEDIR='"$(localedir)"' \ -+ -DLOCALE_ALIAS_PATH='"$(msgcatdir)"' \ -+ -Iprograms -+ -+CPPFLAGS-locale-programs = -DLOCALE_PATH='$(localepath)' \ -+ -DCHARMAP_PATH='"$(i18ndir)/charmaps"' \ -+ -DREPERTOIREMAP_PATH='"$(i18ndir)/repertoiremaps"' \ -+ -DLOCSRCDIR='"$(i18ndir)/locales"' \ -+ -DHAVE_CONFIG_H -DNOT_IN_libc - - CFLAGS-charmap.c = -Wno-write-strings -Wno-char-subscripts - CFLAGS-locfile.c = -Wno-write-strings -Wno-char-subscripts - CFLAGS-charmap-dir.c = -Wno-write-strings - --# This makes sure -DNOT_IN_libc is passed for all these modules. -+# This makes sure -DNOT_IN_libc et al are passed for all these modules. - cpp-srcs-left := $(addsuffix .c,$(localedef-modules) $(localedef-aux) \ - $(locale-modules) $(lib-modules)) --lib := nonlib -+lib := locale-programs - include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left)) - - # Depend on libc.so so a DT_NEEDED is generated in the shared objects. diff --git a/src/patches/glibc/glibc-rh738665.patch b/src/patches/glibc/glibc-rh738665.patch deleted file mode 100644 index 1eea554..0000000 --- a/src/patches/glibc/glibc-rh738665.patch +++ /dev/null @@ -1,149 +0,0 @@ -2011-09-15 Andreas Schwab schwab@redhat.com - - * sysdeps/pthread/list.h: Define only list_t if __need_list_t is - defined. - (list_add): Add atomic_write_barrier. - * descr.h: Define __need_list_t before including <list.h>. - * nptl-init.c: Include <list.h> - * allocatestack.c: Likewise. - -2011-09-15 Andreas Schwab schwab@redhat.com - - * thread_dbP.h: Include <list.h> - -Index: glibc-2.12-2-gc4ccff1/nptl/allocatestack.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/allocatestack.c -+++ glibc-2.12-2-gc4ccff1/nptl/allocatestack.c -@@ -27,6 +27,7 @@ - #include <sys/param.h> - #include <dl-sysdep.h> - #include <tls.h> -+#include <list.h> - #include <lowlevellock.h> - #include <kernel-features.h> - -Index: glibc-2.12-2-gc4ccff1/nptl/descr.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/descr.h -+++ glibc-2.12-2-gc4ccff1/nptl/descr.h -@@ -26,6 +26,7 @@ - #include <stdbool.h> - #include <sys/types.h> - #include <hp-timing.h> -+#define __need_list_t - #include <list.h> - #include <lowlevellock.h> - #include <pthreaddef.h> -Index: glibc-2.12-2-gc4ccff1/nptl/nptl-init.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/nptl-init.c -+++ glibc-2.12-2-gc4ccff1/nptl/nptl-init.c -@@ -29,6 +29,7 @@ - #include <atomic.h> - #include <ldsodefs.h> - #include <tls.h> -+#include <list.h> - #include <fork.h> - #include <version.h> - #include <shlib-compat.h> -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/list.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/pthread/list.h -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/list.h -@@ -18,27 +18,39 @@ - 02111-1307 USA. */ - - #ifndef _LIST_H --#define _LIST_H 1 -+ -+#ifndef __need_list_t -+# define _LIST_H 1 -+#endif - - /* The definitions of this file are adopted from those which can be - found in the Linux kernel headers to enable people familiar with - the latter find their way in these sources as well. */ - - -+#if defined __need_list_t || defined _LIST_H -+# ifndef __list_t_defined -+# define __list_t_defined - /* Basic type for the double-link list. */ - typedef struct list_head - { - struct list_head *next; - struct list_head *prev; - } list_t; -+# endif -+# undef __need_list_t -+#endif -+ -+#ifdef _LIST_H - -+# include <atomic.h> - - /* Define a variable with the head and tail of the list. */ --#define LIST_HEAD(name) \ -+# define LIST_HEAD(name) \ - list_t name = { &(name), &(name) } - - /* Initialize a new list head. */ --#define INIT_LIST_HEAD(ptr) \ -+# define INIT_LIST_HEAD(ptr) \ - (ptr)->next = (ptr)->prev = (ptr) - - -@@ -49,6 +61,7 @@ list_add (list_t *newp, list_t *head) - newp->next = head->next; - newp->prev = head; - head->next->prev = newp; -+ atomic_write_barrier (); - head->next = newp; - } - -@@ -78,26 +91,28 @@ list_splice (list_t *add, list_t *head) - - - /* Get typed element from list at a given position. */ --#define list_entry(ptr, type, member) \ -+# define list_entry(ptr, type, member) \ - ((type *) ((char *) (ptr) - (unsigned long) (&((type *) 0)->member))) - - - - /* Iterate forward over the elements of the list. */ --#define list_for_each(pos, head) \ -+# define list_for_each(pos, head) \ - for (pos = (head)->next; pos != (head); pos = pos->next) - - - /* Iterate forward over the elements of the list. */ --#define list_for_each_prev(pos, head) \ -+# define list_for_each_prev(pos, head) \ - for (pos = (head)->prev; pos != (head); pos = pos->prev) - - - /* Iterate backwards over the elements list. The list elements can be - removed from the list while doing this. */ --#define list_for_each_prev_safe(pos, p, head) \ -+# define list_for_each_prev_safe(pos, p, head) \ - for (pos = (head)->prev, p = pos->prev; \ - pos != (head); \ - pos = p, p = pos->prev) - -+#endif /* _LIST_H */ -+ - #endif /* list.h */ -Index: glibc-2.12-2-gc4ccff1/nptl_db/thread_dbP.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl_db/thread_dbP.h -+++ glibc-2.12-2-gc4ccff1/nptl_db/thread_dbP.h -@@ -29,6 +29,7 @@ - #include "proc_service.h" - #include "thread_db.h" - #include "../nptl/pthreadP.h" /* This is for *_BITMASK only. */ -+#include <list.h> - - /* Indeces for the symbol names. */ - enum diff --git a/src/patches/glibc/glibc-rh738763.patch b/src/patches/glibc/glibc-rh738763.patch deleted file mode 100644 index 728464d..0000000 --- a/src/patches/glibc/glibc-rh738763.patch +++ /dev/null @@ -1,17 +0,0 @@ -2011-09-15 Ulrich Drepper drepper@gmail.com - - * sysdeps/unix/sysv/linux/bits/in.h (IP_MULTICAST_ALL): Define. - Patch mostly by Neil Horman nhorman@tuxdriver.com. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/in.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/bits/in.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/in.h -@@ -70,6 +70,7 @@ - #define IP_XFRM_POLICY 17 - #define IP_PASSSEC 18 - #define IP_TRANSPARENT 19 -+#define IP_MULTICAST_ALL 49 /* bool */ - - /* TProxy original addresses */ - #define IP_ORIGDSTADDR 20 diff --git a/src/patches/glibc/glibc-rh739184.patch b/src/patches/glibc/glibc-rh739184.patch deleted file mode 100644 index cf12246..0000000 --- a/src/patches/glibc/glibc-rh739184.patch +++ /dev/null @@ -1,18 +0,0 @@ -2010-06-10 Andreas Schwab schwab@redhat.com - - * sysdeps/unix/sysv/linux/getpagesize.c: Don't assume AT_PAGESIZE - is always available. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getpagesize.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/getpagesize.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getpagesize.c -@@ -28,7 +28,7 @@ - int - __getpagesize () - { --#ifdef __ASSUME_AT_PAGESIZE -+#if 0 && defined __ASSUME_AT_PAGESIZE - assert (GLRO(dl_pagesize) != 0); - return GLRO(dl_pagesize); - #else diff --git a/src/patches/glibc/glibc-rh739971.patch b/src/patches/glibc/glibc-rh739971.patch deleted file mode 100644 index 960c192..0000000 --- a/src/patches/glibc/glibc-rh739971.patch +++ /dev/null @@ -1,44 +0,0 @@ -commit 32c76b63be605d12314e0c6ac2bd702c883d1423 -Author: Andreas Schwab schwab@redhat.com -Date: Mon Sep 26 17:49:14 2011 +0200 - - Correctly reparse group line after enlarging the buffer - -diff --git a/nss/nss_files/files-initgroups.c b/nss/nss_files/files-initgroups.c -index 113abf2..c343b35 100644 ---- a/nss/nss_files/files-initgroups.c -+++ b/nss/nss_files/files-initgroups.c -@@ -52,8 +52,10 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start, - gid_t *groups = *groupsp; - - /* We have to iterate over the entire file. */ -- while (!feof_unlocked (stream)) -+ while (1) - { -+ fpos_t pos; -+ fgetpos (stream, &pos); - ssize_t n = getline (&line, &linelen, stream); - if (n < 0) - { -@@ -64,9 +66,8 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start, - } - - struct group grp; -- int res; -- while ((res = _nss_files_parse_grent (line, &grp, buffer, buflen, -- errnop)) == -1) -+ int res = _nss_files_parse_grent (line, &grp, buffer, buflen, errnop); -+ if (res == -1) - { - size_t newbuflen = 2 * buflen; - if (buffer_use_malloc || ! __libc_use_alloca (buflen + newbuflen)) -@@ -85,6 +86,9 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start, - } - else - buffer = extend_alloca (buffer, buflen, newbuflen); -+ /* Reread current line, the parser has clobbered it. */ -+ fsetpos (stream, &pos); -+ continue; - } - - if (res > 0 && grp.gr_gid != group) diff --git a/src/patches/glibc/glibc-rh740506-2.patch b/src/patches/glibc/glibc-rh740506-2.patch deleted file mode 100644 index adefea0..0000000 --- a/src/patches/glibc/glibc-rh740506-2.patch +++ /dev/null @@ -1,35 +0,0 @@ - * malloc/arena.c (arena_get2): Avoid unnecessarily - retrieving #cpus from /proc. - * malloc/malloc.c (mALLOPt): Clamp arena_test based on - the value of arena_max. - -diff --git a/malloc/arena.c b/malloc/arena.c -index cb8548b..00f1da5 100644 ---- a/malloc/arena.c -+++ b/malloc/arena.c -@@ -828,7 +828,7 @@ arena_get2(mstate a_tsd, size_t size) - { - if (mp_.arena_max != 0) - narenas_limit = mp_.arena_max; -- else -+ else if (narenas > mp_.arena_test) - { - int n = __get_nprocs (); - -diff --git a/malloc/malloc.c b/malloc/malloc.c -index 8608083..f8d32da 100644 ---- a/malloc/malloc.c -+++ b/malloc/malloc.c -@@ -6134,6 +6134,12 @@ int mALLOPt(param_number, value) int par - break; - #endif - } -+#ifdef PER_THREAD -+ /* Clamp ARENA_TEST from ARENA_MAX to avoid creating too many -+ arenas. */ -+ if (mp_.arena_max > 0 && mp_.arena_max <= mp_.arena_test) -+ mp_.arena_test = mp_.arena_max - 1; -+#endif - (void)mutex_unlock(&av->mutex); - return res; - } diff --git a/src/patches/glibc/glibc-rh740506.patch b/src/patches/glibc/glibc-rh740506.patch deleted file mode 100644 index 6c74ccf..0000000 --- a/src/patches/glibc/glibc-rh740506.patch +++ /dev/null @@ -1,132 +0,0 @@ -2011-11-14 Andreas Schwab schwab@redhat.com - - * malloc/arena.c (arena_get2): Don't call reused_arena when - _int_new_arena failed. - -2011-11-10 Andreas Schwab schwab@redhat.com - - * malloc/arena.c (_int_new_arena): Don't increment narenas. - (reused_arena): Don't check arena limit. - (arena_get2): Atomically check arena limit. - -diff --git a/malloc/arena.c b/malloc/arena.c -index 9114fd2..042cac8 100644 ---- a/malloc/arena.c -+++ b/malloc/arena.c -@@ -747,8 +747,6 @@ _int_new_arena(size_t size) - main_arena.next = a; - - #ifdef PER_THREAD -- ++narenas; -- - (void)mutex_unlock(&list_lock); - #endif - -@@ -786,30 +784,6 @@ get_free_list (void) - static mstate - reused_arena (void) - { -- if (narenas <= mp_.arena_test) -- return NULL; -- -- static int narenas_limit; -- if (narenas_limit == 0) -- { -- if (mp_.arena_max != 0) -- narenas_limit = mp_.arena_max; -- else -- { -- int n = __get_nprocs (); -- -- if (n >= 1) -- narenas_limit = NARENAS_FROM_NCORES (n); -- else -- /* We have no information about the system. Assume two -- cores. */ -- narenas_limit = NARENAS_FROM_NCORES (2); -- } -- } -- -- if (narenas < narenas_limit) -- return NULL; -- - mstate result; - static mstate next_to_use; - if (next_to_use == NULL) -@@ -844,10 +818,41 @@ arena_get2(mstate a_tsd, size_t size) - mstate a; - - #ifdef PER_THREAD -- if ((a = get_free_list ()) == NULL -- && (a = reused_arena ()) == NULL) -- /* Nothing immediately available, so generate a new arena. */ -- a = _int_new_arena(size); -+ static size_t narenas_limit; -+ -+ a = get_free_list (); -+ if (a == NULL) -+ { -+ /* Nothing immediately available, so generate a new arena. */ -+ if (narenas_limit == 0) -+ { -+ if (mp_.arena_max != 0) -+ narenas_limit = mp_.arena_max; -+ else -+ { -+ int n = __get_nprocs (); -+ -+ if (n >= 1) -+ narenas_limit = NARENAS_FROM_NCORES (n); -+ else -+ /* We have no information about the system. Assume two -+ cores. */ -+ narenas_limit = NARENAS_FROM_NCORES (2); -+ } -+ } -+ repeat:; -+ size_t n = narenas; -+ if (__builtin_expect (n <= mp_.arena_test || n < narenas_limit, 0)) -+ { -+ if (catomic_compare_and_exchange_bool_acq(&narenas, n + 1, n)) -+ goto repeat; -+ a = _int_new_arena (size); -+ if (__builtin_expect (a != NULL, 1)) -+ return a; -+ catomic_decrement(&narenas); -+ } -+ a = reused_arena (); -+ } - #else - if(!a_tsd) - a = a_tsd = &main_arena; - -commit a5fb313cb7b7e692fd4684916aaa98e03ec7e8b6 -Author: Andreas Schwab schwab@redhat.com -Date: Mon Nov 14 11:41:52 2011 +0100 - - Don't call reused_arena when _int_new_arena failed - -diff --git a/malloc/arena.c b/malloc/arena.c -index 042cac8..cb8548b 100644 ---- a/malloc/arena.c -+++ b/malloc/arena.c -@@ -844,14 +844,14 @@ arena_get2(mstate a_tsd, size_t size) - size_t n = narenas; - if (__builtin_expect (n <= mp_.arena_test || n < narenas_limit, 0)) - { -- if (catomic_compare_and_exchange_bool_acq(&narenas, n + 1, n)) -+ if (catomic_compare_and_exchange_bool_acq (&narenas, n + 1, n)) - goto repeat; - a = _int_new_arena (size); -- if (__builtin_expect (a != NULL, 1)) -- return a; -- catomic_decrement(&narenas); -+ if (__builtin_expect (a == NULL, 0)) -+ catomic_decrement (&narenas); - } -- a = reused_arena (); -+ else -+ a = reused_arena (); - } - #else - if(!a_tsd) diff --git a/src/patches/glibc/glibc-rh749188.patch b/src/patches/glibc/glibc-rh749188.patch deleted file mode 100644 index 43157cd..0000000 --- a/src/patches/glibc/glibc-rh749188.patch +++ /dev/null @@ -1,32 +0,0 @@ -commit 0e8131bb32cf026c87baeacb7abf2a9bdbbc4953 -Author: Andreas Schwab schwab@redhat.com -Date: Sun May 8 21:48:03 2011 -0400 - - Remove .UTF-8 suffix from locale names when it is the only supported codeset - -diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED -index d665961..e952c17 100644 ---- a/localedata/SUPPORTED -+++ b/localedata/SUPPORTED -@@ -46,8 +46,8 @@ ar_TN.UTF-8/UTF-8 \ - ar_TN/ISO-8859-6 \ - ar_YE.UTF-8/UTF-8 \ - ar_YE/ISO-8859-6 \ --az_AZ.UTF-8/UTF-8 \ --as_IN.UTF-8/UTF-8 \ -+az_AZ/UTF-8 \ -+as_IN/UTF-8 \ - ast_ES.UTF-8/UTF-8 \ - ast_ES/ISO-8859-15 \ - be_BY.UTF-8/UTF-8 \ -@@ -385,8 +385,8 @@ tr_CY/ISO-8859-9 \ - tr_TR.UTF-8/UTF-8 \ - tr_TR/ISO-8859-9 \ - ts_ZA/UTF-8 \ --tt_RU.UTF-8/UTF-8 \ --tt_RU.UTF-8@iqtelif/UTF-8 \ -+tt_RU/UTF-8 \ -+tt_RU@iqtelif/UTF-8 \ - ug_CN/UTF-8 \ - uk_UA.UTF-8/UTF-8 \ - uk_UA/KOI8-U \ diff --git a/src/patches/glibc/glibc-rh750531.patch b/src/patches/glibc/glibc-rh750531.patch deleted file mode 100644 index a53e770..0000000 --- a/src/patches/glibc/glibc-rh750531.patch +++ /dev/null @@ -1,122 +0,0 @@ -commit 69da074d7adfab7b57004a0dea9403a928e310a5 -Author: Ulrich Drepper drepper@gmail.com -Date: Wed Nov 10 02:38:35 2010 -0500 - - Fix warnings in __bswap_16. - -diff --git a/sysdeps/i386/bits/byteswap.h b/sysdeps/i386/bits/byteswap.h -index 1f3fc5e..c246ae8 100644 ---- a/sysdeps/i386/bits/byteswap.h -+++ b/sysdeps/i386/bits/byteswap.h -@@ -1,5 +1,5 @@ - /* Macros to swap the order of bytes in integer values. -- Copyright (C) 1997, 1998, 2000, 2002, 2003, 2006, 2007, 2008 -+ Copyright (C) 1997, 1998, 2000, 2002, 2003, 2006, 2007, 2008, 2010 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - -@@ -27,26 +27,27 @@ - - /* Swap bytes in 16 bit value. */ - #define __bswap_constant_16(x) \ -- ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)) -+ ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))) - - #ifdef __GNUC__ - # if __GNUC__ >= 2 - # define __bswap_16(x) \ - (__extension__ \ -- ({ register unsigned short int __v, __x = (x); \ -+ ({ register unsigned short int __v, __x = (unsigned short int) (x); \ - if (__builtin_constant_p (__x)) \ - __v = __bswap_constant_16 (__x); \ - else \ - __asm__ ("rorw $8, %w0" \ - : "=r" (__v) \ -- : "0" (__x) \ -- : "cc"); \ -+ : "0" (__x) \ -+ : "cc"); \ - __v; })) - # else - /* This is better than nothing. */ - # define __bswap_16(x) \ - (__extension__ \ -- ({ register unsigned short int __x = (x); __bswap_constant_16 (__x); })) -+ ({ register unsigned short int __x = (unsigned short int) (x); \ -+ __bswap_constant_16 (__x); })) - # endif - #else - static __inline unsigned short int -@@ -122,7 +123,7 @@ __bswap_32 (unsigned int __bsx) - (__extension__ \ - ({ union { __extension__ unsigned long long int __ll; \ - unsigned long int __l[2]; } __w, __r; \ -- if (__builtin_constant_p (x)) \ -+ if (__builtin_constant_p (x)) \ - __r.__ll = __bswap_constant_64 (x); \ - else \ - { \ -diff --git a/sysdeps/x86_64/bits/byteswap.h b/sysdeps/x86_64/bits/byteswap.h -index 08b38e8..e350fb8 100644 ---- a/sysdeps/x86_64/bits/byteswap.h -+++ b/sysdeps/x86_64/bits/byteswap.h -@@ -1,5 +1,5 @@ - /* Macros to swap the order of bytes in integer values. -- Copyright (C) 1997, 1998, 2000, 2002, 2003, 2007, 2008 -+ Copyright (C) 1997, 1998, 2000, 2002, 2003, 2007, 2008, 2010 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - -@@ -29,12 +29,12 @@ - - /* Swap bytes in 16 bit value. */ - #define __bswap_constant_16(x) \ -- ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)) -+ ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))) - - #if defined __GNUC__ && __GNUC__ >= 2 - # define __bswap_16(x) \ - (__extension__ \ -- ({ register unsigned short int __v, __x = (x); \ -+ ({ register unsigned short int __v, __x = (unsigned short int) (x); \ - if (__builtin_constant_p (__x)) \ - __v = __bswap_constant_16 (__x); \ - else \ -@@ -47,7 +47,8 @@ - /* This is better than nothing. */ - # define __bswap_16(x) \ - (__extension__ \ -- ({ register unsigned short int __x = (x); __bswap_constant_16 (__x); })) -+ ({ register unsigned short int __x = (unsigned short int) (x); \ -+ __bswap_constant_16 (__x); })) - #endif - - -@@ -120,16 +121,16 @@ - # define __bswap_64(x) \ - (__extension__ \ - ({ union { __extension__ unsigned long long int __ll; \ -- unsigned int __l[2]; } __w, __r; \ -- if (__builtin_constant_p (x)) \ -- __r.__ll = __bswap_constant_64 (x); \ -- else \ -- { \ -- __w.__ll = (x); \ -- __r.__l[0] = __bswap_32 (__w.__l[1]); \ -- __r.__l[1] = __bswap_32 (__w.__l[0]); \ -- } \ -- __r.__ll; })) -+ unsigned int __l[2]; } __w, __r; \ -+ if (__builtin_constant_p (x)) \ -+ __r.__ll = __bswap_constant_64 (x); \ -+ else \ -+ { \ -+ __w.__ll = (x); \ -+ __r.__l[0] = __bswap_32 (__w.__l[1]); \ -+ __r.__l[1] = __bswap_32 (__w.__l[0]); \ -+ } \ -+ __r.__ll; })) - # endif - #endif - diff --git a/src/patches/glibc/glibc-rh751750.patch b/src/patches/glibc/glibc-rh751750.patch deleted file mode 100644 index 6f9dd12..0000000 --- a/src/patches/glibc/glibc-rh751750.patch +++ /dev/null @@ -1,28 +0,0 @@ -commit 7583a88d1c7170caad26966bcea8bfc2c92093ba -Author: Andreas Schwab schwab@redhat.com -Date: Mon Nov 7 15:07:31 2011 +0100 - - Fix locking in _IO_flush_all_lockp - -diff --git a/libio/genops.c b/libio/genops.c -index 5d21c42..bb40c34 100644 ---- a/libio/genops.c -+++ b/libio/genops.c -@@ -826,7 +826,7 @@ _IO_flush_all_lockp (int do_lock) - int last_stamp; - - #ifdef _IO_MTSAFE_IO -- _IO_cleanup_region_start_noarg (flush_cleanup); -+ __libc_cleanup_region_start (do_lock, flush_cleanup, 0); - if (do_lock) - _IO_lock_lock (list_all_lock); - #endif -@@ -866,7 +866,7 @@ _IO_flush_all_lockp (int do_lock) - #ifdef _IO_MTSAFE_IO - if (do_lock) - _IO_lock_unlock (list_all_lock); -- _IO_cleanup_region_end (0); -+ __libc_cleanup_region_end (0); - #endif - - return result; diff --git a/src/patches/glibc/glibc-rh752122.patch b/src/patches/glibc/glibc-rh752122.patch deleted file mode 100644 index 0176dc9..0000000 --- a/src/patches/glibc/glibc-rh752122.patch +++ /dev/null @@ -1,260 +0,0 @@ -2011-07-24 H.J. Lu hongjiu.lu@intel.com - - * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Simplify - AVX check. - -2011-08-20 Ulrich Drepper drepper@gmail.com - - * sysdeps/x86_64/dl-trampoline.h: If MORE_CODE is defined, restore - the CFI state in the end. - * sysdeps/x86_64/dl-trampoline.S: Define MORE_CODE before first - inclusion of dl-trampoline.h. - Based on a patch by Jiri Olsa jolsa@redhat.com. - -2011-07-23 Ulrich Drepper drepper@gmail.com - - * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix one more - typo. - (_dl_x86_64_save_sse): Likewise. - -2011-07-22 Ulrich Drepper drepper@gmail.com - - * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix test for - OSXSAVE. - (_dl_x86_64_save_sse): Likewise. - -2011-07-21 Andreas Schwab schwab@redhat.com - - * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix last - change. - (_dl_x86_64_save_sse): Use correct AVX check. - -2011-07-20 Ulrich Drepper drepper@gmail.com - - [BZ #13007] - * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): More complete - check for AVX enablement so that we don't crash with old kernels and - new hardware. - * elf/tst-audit4.c: Add same checks here. - * elf/tst-audit6.c: Likewise. - -Index: glibc-2.12-2-gc4ccff1/elf/tst-audit4.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/tst-audit4.c -+++ glibc-2.12-2-gc4ccff1/elf/tst-audit4.c -@@ -6,16 +6,30 @@ - #include <cpuid.h> - #include <immintrin.h> - -+ -+static int -+avx_enabled (void) -+{ -+ unsigned int eax, ebx, ecx, edx; -+ -+ if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) == 0 -+ || (ecx & (bit_AVX | bit_OSXSAVE)) != (bit_AVX | bit_OSXSAVE)) -+ return 0; -+ -+ /* Check the OS has AVX and SSE saving enabled. */ -+ asm ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0)); -+ -+ return (eax & 6) == 6; -+} -+ -+ - extern __m256i audit_test (__m256i, __m256i, __m256i, __m256i, - __m256i, __m256i, __m256i, __m256i); - int - main (void) - { -- unsigned int eax, ebx, ecx, edx; -- - /* Run AVX test only if AVX is supported. */ -- if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) -- && (ecx & bit_AVX)) -+ if (avx_enabled ()) - { - __m256i ymm = _mm256_setzero_si256 (); - __m256i ret = audit_test (ymm, ymm, ymm, ymm, ymm, ymm, ymm, ymm); -Index: glibc-2.12-2-gc4ccff1/elf/tst-audit6.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/tst-audit6.c -+++ glibc-2.12-2-gc4ccff1/elf/tst-audit6.c -@@ -8,14 +8,28 @@ - extern __m128i audit_test (__m128i, __m128i, __m128i, __m128i, - __m128i, __m128i, __m128i, __m128i); - --int --main (void) -+ -+static int -+avx_enabled (void) - { - unsigned int eax, ebx, ecx, edx; - -+ if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) == 0 -+ || (ecx & (bit_AVX | bit_OSXSAVE)) != (bit_AVX | bit_OSXSAVE)) -+ return 0; -+ -+ /* Check the OS has AVX and SSE saving enabled. */ -+ asm ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0)); -+ -+ return (eax & 6) == 6; -+} -+ -+ -+int -+main (void) -+{ - /* Run AVX test only if AVX is supported. */ -- if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) -- && (ecx & bit_AVX)) -+ if (avx_enabled ()) - { - __m128i xmm = _mm_setzero_si128 (); - __m128i ret = audit_test (xmm, xmm, xmm, xmm, xmm, xmm, xmm, xmm); -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/dl-trampoline.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.S -@@ -139,24 +139,31 @@ L(have_avx): - movl $1, %eax - cpuid - movq %r11,%rbx # Restore rbx -- movl $1, %eax -- testl $(1 << 28), %ecx -+ xorl %eax, %eax -+ // AVX and XSAVE supported? -+ andl $((1 << 28) | (1 << 27)), %ecx -+ cmpl $((1 << 28) | (1 << 27)), %ecx - jne 2f -- negl %eax --2: movl %eax, L(have_avx)(%rip) -+ xorl %ecx, %ecx -+ // Get XFEATURE_ENABLED_MASK -+ xgetbv -+ andl $0x6, %eax -+2: subl $0x5, %eax -+ movl %eax, L(have_avx)(%rip) - cmpl $0, %eax - - 1: js L(no_avx) - - # define RESTORE_AVX -+# define MORE_CODE - # include "dl-trampoline.h" - - .align 16 - L(no_avx): - # endif - --# undef RESTORE_AVX --# include "dl-trampoline.h" -+# undef RESTORE_AVX -+# include "dl-trampoline.h" - - cfi_endproc - .size _dl_runtime_profile, .-_dl_runtime_profile -@@ -176,11 +183,20 @@ _dl_x86_64_save_sse: - movl $1, %eax - cpuid - movq %r11,%rbx # Restore rbx -- movl $1, %eax -- testl $(1 << 28), %ecx -+ xorl %eax, %eax -+ // AVX and XSAVE supported? -+ andl $((1 << 28) | (1 << 27)), %ecx -+ cmpl $((1 << 28) | (1 << 27)), %ecx - jne 2f -- negl %eax --2: movl %eax, L(have_avx)(%rip) -+ xorl %ecx, %ecx -+ // Get XFEATURE_ENABLED_MASK -+ xgetbv -+ andl $0x6, %eax -+ cmpl $0x6, %eax -+ // Nonzero if SSE and AVX state saving is enabled. -+ sete %al -+2: leal -1(%eax,%eax), %eax -+ movl %eax, L(have_avx)(%rip) - cmpl $0, %eax - - 1: js L(no_avx5) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/dl-trampoline.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.h -@@ -195,14 +195,14 @@ - _dl_call_pltexit. The La_x86_64_regs is being pointed by rsp now, - so we just need to allocate the sizeof(La_x86_64_retval) space on - the stack, since the alignment has already been taken care of. */ --# ifdef RESTORE_AVX -+#ifdef RESTORE_AVX - /* sizeof(La_x86_64_retval). Need extra space for 2 SSE - registers to detect if xmm0/xmm1 registers are changed - by audit module. */ - subq $(LRV_SIZE + XMM_SIZE*2), %rsp --# else -+#else - subq $LRV_SIZE, %rsp # sizeof(La_x86_64_retval) --# endif -+#endif - movq %rsp, %rcx # La_x86_64_retval argument to %rcx. - - /* Fill in the La_x86_64_retval structure. */ -@@ -212,7 +212,7 @@ - movaps %xmm0, LRV_XMM0_OFFSET(%rcx) - movaps %xmm1, LRV_XMM1_OFFSET(%rcx) - --# ifdef RESTORE_AVX -+#ifdef RESTORE_AVX - /* This is to support AVX audit modules. */ - vmovdqu %ymm0, LRV_VECTOR0_OFFSET(%rcx) - vmovdqu %ymm1, LRV_VECTOR1_OFFSET(%rcx) -@@ -221,14 +221,14 @@ - by audit module. */ - vmovdqa %xmm0, (LRV_SIZE)(%rcx) - vmovdqa %xmm1, (LRV_SIZE + XMM_SIZE)(%rcx) --# endif -+#endif - - fstpt LRV_ST0_OFFSET(%rcx) - fstpt LRV_ST1_OFFSET(%rcx) - - movq 24(%rbx), %rdx # La_x86_64_regs argument to %rdx. - movq 40(%rbx), %rsi # Copy args pushed by PLT in register. -- movq 32(%rbx), %rdi # %rdi: link_map, %rsi: reloc_index -+ movq 32(%rbx), %rdi # %rdi: link_map, %rsi: reloc_index - call _dl_call_pltexit - - /* Restore return registers. */ -@@ -238,7 +238,7 @@ - movaps LRV_XMM0_OFFSET(%rsp), %xmm0 - movaps LRV_XMM1_OFFSET(%rsp), %xmm1 - --# ifdef RESTORE_AVX -+#ifdef RESTORE_AVX - /* Check if xmm0/xmm1 registers are changed by audit module. */ - vpcmpeqq (LRV_SIZE)(%rsp), %xmm0, %xmm2 - vpmovmskb %xmm2, %esi -@@ -253,7 +253,7 @@ - vmovdqu LRV_VECTOR1_OFFSET(%rsp), %ymm1 - - 1: --# endif -+#endif - - fldt LRV_ST1_OFFSET(%rsp) - fldt LRV_ST0_OFFSET(%rsp) -@@ -267,3 +267,10 @@ - # (eats the reloc index and link_map) - cfi_adjust_cfa_offset(-48) - retq -+ -+#ifdef MORE_CODE -+ cfi_adjust_cfa_offset(48) -+ cfi_rel_offset(%rbx, 0) -+ cfi_def_cfa_register(%rbx) -+# undef MORE_CODE -+#endif diff --git a/src/patches/glibc/glibc-rh757888.patch b/src/patches/glibc/glibc-rh757888.patch deleted file mode 100644 index 721d4a4..0000000 --- a/src/patches/glibc/glibc-rh757888.patch +++ /dev/null @@ -1,225 +0,0 @@ -commit f3a6cc0a560a17f32a3e90d2f20501a53cab6058 -Author: Andreas Schwab schwab@redhat.com -Date: Tue Nov 29 10:52:22 2011 +0100 - - Fix access after end of search string in regex matcher - -diff --git a/locale/weight.h b/locale/weight.h -index dc70a00..967e176 100644 ---- a/locale/weight.h -+++ b/locale/weight.h -@@ -1,4 +1,4 @@ --/* Copyright (C) 1996,1997,1998,1999,2000,2003,2004 Free Software Foundation, Inc. -+/* Copyright (C) 1996,1997,1998,1999,2000,2003,2004,2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Written by Ulrich Drepper, drepper@cygnus.com. - -@@ -20,7 +20,7 @@ - /* Find index of weight. */ - auto inline int32_t - __attribute ((always_inline)) --findidx (const unsigned char **cpp) -+findidx (const unsigned char **cpp, size_t len) - { - int_fast32_t i = table[*(*cpp)++]; - const unsigned char *cp; -@@ -34,6 +34,7 @@ findidx (const unsigned char **cpp) - Search for the correct one. */ - cp = &extra[-i]; - usrc = *cpp; -+ --len; - while (1) - { - size_t nhere; -@@ -56,7 +57,7 @@ findidx (const unsigned char **cpp) - already. */ - size_t cnt; - -- for (cnt = 0; cnt < nhere; ++cnt) -+ for (cnt = 0; cnt < nhere && cnt < len; ++cnt) - if (cp[cnt] != usrc[cnt]) - break; - -@@ -79,13 +80,13 @@ findidx (const unsigned char **cpp) - size_t cnt; - size_t offset = 0; - -- for (cnt = 0; cnt < nhere; ++cnt) -+ for (cnt = 0; cnt < nhere && cnt < len; ++cnt) - if (cp[cnt] != usrc[cnt]) - break; - - if (cnt != nhere) - { -- if (cp[cnt] > usrc[cnt]) -+ if (cnt == len || cp[cnt] > usrc[cnt]) - { - /* Cannot be in this range. */ - cp += 2 * nhere; -diff --git a/locale/weightwc.h b/locale/weightwc.h -index 9ea1126..7862091 100644 ---- a/locale/weightwc.h -+++ b/locale/weightwc.h -@@ -1,4 +1,4 @@ --/* Copyright (C) 1996-2001,2003,2004,2005,2007 Free Software Foundation, Inc. -+/* Copyright (C) 1996-2001,2003,2004,2005,2007,2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Written by Ulrich Drepper, drepper@cygnus.com. - -@@ -20,7 +20,7 @@ - /* Find index of weight. */ - auto inline int32_t - __attribute ((always_inline)) --findidx (const wint_t **cpp) -+findidx (const wint_t **cpp, size_t len) - { - wint_t ch = *(*cpp)++; - int32_t i = __collidx_table_lookup ((const char *) table, ch); -@@ -32,6 +32,7 @@ findidx (const wint_t **cpp) - /* Oh well, more than one sequence starting with this byte. - Search for the correct one. */ - const int32_t *cp = (const int32_t *) &extra[-i]; -+ --len; - while (1) - { - size_t nhere; -@@ -54,7 +55,7 @@ findidx (const wint_t **cpp) - already. */ - size_t cnt; - -- for (cnt = 0; cnt < nhere; ++cnt) -+ for (cnt = 0; cnt < nhere && cnt < len; ++cnt) - if (cp[cnt] != usrc[cnt]) - break; - -@@ -75,7 +76,7 @@ findidx (const wint_t **cpp) - size_t cnt; - size_t offset; - -- for (cnt = 0; cnt < nhere - 1; ++cnt) -+ for (cnt = 0; cnt < nhere - 1 && cnt < len; ++cnt) - if (cp[cnt] != usrc[cnt]) - break; - -diff --git a/posix/fnmatch_loop.c b/posix/fnmatch_loop.c -index 18a6667..72bd3ee 100644 ---- a/posix/fnmatch_loop.c -+++ b/posix/fnmatch_loop.c -@@ -412,7 +412,7 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used) - _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB); - # endif - -- idx = findidx (&cp); -+ idx = findidx (&cp, 1); - if (idx != 0) - { - /* We found a table entry. Now see whether the -@@ -422,7 +422,7 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used) - int32_t idx2; - const UCHAR *np = (const UCHAR *) n; - -- idx2 = findidx (&np); -+ idx2 = findidx (&np, string_end - n); - if (idx2 != 0 - && (idx >> 24) == (idx2 >> 24) - && len == weights[idx2 & 0xffffff]) -diff --git a/posix/regcomp.c b/posix/regcomp.c -index b238c08..34ee845 100644 ---- a/posix/regcomp.c -+++ b/posix/regcomp.c -@@ -1,5 +1,5 @@ - /* Extended regular expression matching and search library. -- Copyright (C) 2002-2007,2009,2010 Free Software Foundation, Inc. -+ Copyright (C) 2002-2007,2009,2010,2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Isamu Hasegawa isamu@yamato.ibm.com. - -@@ -3409,19 +3409,18 @@ build_equiv_class (bitset_t sbcset, const unsigned char *name) - _NL_COLLATE_EXTRAMB); - indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE, - _NL_COLLATE_INDIRECTMB); -- idx1 = findidx (&cp); -- if (BE (idx1 == 0 || cp < name + strlen ((const char *) name), 0)) -+ idx1 = findidx (&cp, -1); -+ if (BE (idx1 == 0 || *cp != '\0', 0)) - /* This isn't a valid character. */ - return REG_ECOLLATE; - - /* Build single byte matcing table for this equivalence class. */ -- char_buf[1] = (unsigned char) '\0'; - len = weights[idx1 & 0xffffff]; - for (ch = 0; ch < SBC_MAX; ++ch) - { - char_buf[0] = ch; - cp = char_buf; -- idx2 = findidx (&cp); -+ idx2 = findidx (&cp, 1); - /* - idx2 = table[ch]; - */ - ---- a/posix/regex_internal.h 2011-11-30 12:47:02.706567482 -0700 -+++ a/posix/regex_internal.h 2011-11-30 12:47:32.969558337 -0700 -@@ -756,7 +756,7 @@ - indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE, - _NL_COLLATE_INDIRECTMB); - p = pstr->mbs + idx; -- tmp = findidx (&p); -+ tmp = findidx (&p, pstr->len - idx); - return p - pstr->mbs - idx; - } - else -diff --git a/posix/regexec.c b/posix/regexec.c -index 9e0c565..3ea810b 100644 ---- a/posix/regexec.c -+++ b/posix/regexec.c -@@ -3924,7 +3924,7 @@ check_node_accept_bytes (const re_dfa_t *dfa, int node_idx, - _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAMB); - indirect = (const int32_t *) - _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB); -- int32_t idx = findidx (&cp); -+ int32_t idx = findidx (&cp, elem_len); - if (idx > 0) - for (i = 0; i < cset->nequiv_classes; ++i) - { -diff --git a/string/strcoll_l.c b/string/strcoll_l.c -index d8d1139..fb77d08 100644 ---- a/string/strcoll_l.c -+++ b/string/strcoll_l.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 1995-1997,2002,2004,2007,2010 Free Software Foundation, Inc. -+/* Copyright (C) 1995-1997,2002,2004,2007,2010,2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Written by Ulrich Drepper drepper@gnu.org, 1995. - -@@ -205,7 +205,7 @@ STRCOLL (s1, s2, l) - - while (*us1 != L('\0')) - { -- int32_t tmp = findidx (&us1); -+ int32_t tmp = findidx (&us1, -1); - rule1arr[idx1max] = tmp >> 24; - idx1arr[idx1max] = tmp & 0xffffff; - idx1cnt = idx1max++; -@@ -267,7 +267,7 @@ STRCOLL (s1, s2, l) - - while (*us2 != L('\0')) - { -- int32_t tmp = findidx (&us2); -+ int32_t tmp = findidx (&us2, -1); - rule2arr[idx2max] = tmp >> 24; - idx2arr[idx2max] = tmp & 0xffffff; - idx2cnt = idx2max++; -diff --git a/string/strxfrm_l.c b/string/strxfrm_l.c -index 220253c..b06556d 100644 ---- a/string/strxfrm_l.c -+++ b/string/strxfrm_l.c -@@ -176,7 +176,7 @@ STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n, __locale_t l) - idxmax = 0; - do - { -- int32_t tmp = findidx (&usrc); -+ int32_t tmp = findidx (&usrc, -1); - rulearr[idxmax] = tmp >> 24; - idxarr[idxmax] = tmp & 0xffffff; - diff --git a/src/patches/glibc/glibc-rh766513.patch b/src/patches/glibc/glibc-rh766513.patch deleted file mode 100644 index 3f629b4..0000000 --- a/src/patches/glibc/glibc-rh766513.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -rup a/po/ja.po b/po/ja.po ---- a/po/ja.po 2010-05-04 05:27:23.000000000 -0600 -+++ b/po/ja.po 2012-02-07 12:21:03.023806370 -0700 -@@ -3549,8 +3549,8 @@ msgstr "%s: ÉÔÀµ€Ê¥ª¥×¥·¥ç¥ó€Ç€¹ -- %c\n - - #: posix/getopt.c:945 posix/getopt.c:948 - #, c-format --msgid "%s: invalid option -- %c\n" --msgstr "%s: ¥ª¥×¥·¥ç¥ó€¬°ã€€€Þ€¹ -- %c\n" -+msgid "%s: invalid option -- '%c'\n" -+msgstr "%s: ¥ª¥×¥·¥ç¥ó€¬°ã€€€Þ€¹ -- '%c'\n" - - #: posix/getopt.c:1003 posix/getopt.c:1022 posix/getopt.c:1234 - #: posix/getopt.c:1255 diff --git a/src/patches/glibc/glibc-rh767146.patch b/src/patches/glibc/glibc-rh767146.patch deleted file mode 100644 index 8252062..0000000 --- a/src/patches/glibc/glibc-rh767146.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -rup a/elf/dl-load.c b/elf/dl-load.c ---- a/elf/dl-load.c 2012-02-03 10:59:58.917870716 -0700 -+++ b/elf/dl-load.c 2012-02-03 11:01:01.796580644 -0700 -@@ -1130,6 +1130,16 @@ _dl_map_object_from_fd (const char *name - = N_("ELF load command address/offset not properly aligned"); - goto call_lose; - } -+ if (__builtin_expect ((ph->p_offset + ph->p_filesz > st.st_size), 0)) -+ { -+ /* If the segment requires zeroing of part of its last -+ page, we'll crash when accessing the unmapped page. -+ There's still a possibility of a race, if the shared -+ object is truncated between the fxstat above and the -+ memset below. */ -+ errstring = N_("ELF load command past end of file"); -+ goto call_lose; -+ } - - c = &loadcmds[nloadcmds++]; - c->mapstart = ph->p_vaddr & ~(GLRO(dl_pagesize) - 1); -Only in b/elf: dl-load.c.orig diff --git a/src/patches/glibc/glibc-rh767693-2.patch b/src/patches/glibc/glibc-rh767693-2.patch deleted file mode 100644 index 4418ac6..0000000 --- a/src/patches/glibc/glibc-rh767693-2.patch +++ /dev/null @@ -1,79 +0,0 @@ -Index: glibc-2.5-20061008T1257/sunrpc/svc_tcp.c -=================================================================== ---- glibc-2.5-20061008T1257.orig/sunrpc/svc_tcp.c -+++ glibc-2.5-20061008T1257/sunrpc/svc_tcp.c -@@ -50,6 +50,7 @@ static char sccsid[] = "@(#)svc_tcp.c 1. - #include <sys/poll.h> - #include <errno.h> - #include <stdlib.h> -+#include <time.h> - - #ifdef USE_IN_LIBIO - # include <wchar.h> -@@ -249,6 +250,11 @@ again: - { - if (errno == EINTR) - goto again; -+ if (errno == EMFILE) -+ { -+ struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 }; -+ __nanosleep(&ts , NULL); -+ } - return FALSE; - } - /* -Index: glibc-2.5-20061008T1257/sunrpc/svc_udp.c -=================================================================== ---- glibc-2.5-20061008T1257.orig/sunrpc/svc_udp.c -+++ glibc-2.5-20061008T1257/sunrpc/svc_udp.c -@@ -46,6 +46,7 @@ static char sccsid[] = "@(#)svc_udp.c 1. - #include <sys/socket.h> - #include <errno.h> - #include <libintl.h> -+#include <time.h> - - #ifdef IP_PKTINFO - #include <sys/uio.h> -@@ -277,8 +278,16 @@ again: - (int) su->su_iosz, 0, - (struct sockaddr *) &(xprt->xp_raddr), &len); - xprt->xp_addrlen = len; -- if (rlen == -1 && errno == EINTR) -- goto again; -+ if (rlen == -1) -+ { -+ if (errno == EINTR) -+ goto again; -+ if (errno == EMFILE) -+ { -+ struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 }; -+ __nanosleep(&ts , NULL); -+ } -+ } - if (rlen < 16) /* < 4 32-bit ints? */ - return FALSE; - xdrs->x_op = XDR_DECODE; -Index: glibc-2.5-20061008T1257/sunrpc/svc_unix.c -=================================================================== ---- glibc-2.5-20061008T1257.orig/sunrpc/svc_unix.c -+++ glibc-2.5-20061008T1257/sunrpc/svc_unix.c -@@ -48,6 +48,7 @@ - #include <errno.h> - #include <stdlib.h> - #include <libintl.h> -+#include <time.h> - - #ifdef USE_IN_LIBIO - # include <wchar.h> -@@ -247,6 +248,11 @@ again: - { - if (errno == EINTR) - goto again; -+ if (errno == EMFILE) -+ { -+ struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 }; -+ __nanosleep(&ts , NULL); -+ } - return FALSE; - } - /* diff --git a/src/patches/glibc/glibc-rh767693.patch b/src/patches/glibc/glibc-rh767693.patch deleted file mode 100644 index 8f76beb..0000000 --- a/src/patches/glibc/glibc-rh767693.patch +++ /dev/null @@ -1,89 +0,0 @@ -commit 97ac2654b2d831acaa18a2b018b0736245903fd2 -Author: Ulrich Drepper drepper@gmail.com -Date: Sat Dec 17 20:18:42 2011 -0500 - - Check values from TZ file header - - - [BZ #13506] - * time/tzfile.c (__tzfile_read): Check values from file header. - -diff -ru a/time/tzfile.c b/time/tzfile.c ---- a/time/tzfile.c 2010-05-04 11:27:23.000000000 +0000 -+++ b/time/tzfile.c 2011-12-19 06:39:49.875358578 +0000 -@@ -19,6 +19,7 @@ - - #include <assert.h> - #include <limits.h> -+#include <stdint.h> - #include <stdio.h> - #include <stdio_ext.h> - #include <stdlib.h> -@@ -234,23 +235,58 @@ - goto read_again; - } - -+ if (__builtin_expect (num_transitions -+ > ((SIZE_MAX - (__alignof__ (struct ttinfo) - 1)) -+ / (sizeof (time_t) + 1)), 0)) -+ goto lose; - total_size = num_transitions * (sizeof (time_t) + 1); - total_size = ((total_size + __alignof__ (struct ttinfo) - 1) - & ~(__alignof__ (struct ttinfo) - 1)); - types_idx = total_size; -- total_size += num_types * sizeof (struct ttinfo) + chars; -+ if (__builtin_expect (num_types -+ > (SIZE_MAX - total_size) / sizeof (struct ttinfo), 0)) -+ goto lose; -+ total_size += num_types * sizeof (struct ttinfo); -+ if (__builtin_expect (chars > SIZE_MAX - total_size, 0)) -+ goto lose; -+ total_size += chars; -+ if (__builtin_expect (__alignof__ (struct leap) - 1 -+ > SIZE_MAX - total_size, 0)) -+ goto lose; - total_size = ((total_size + __alignof__ (struct leap) - 1) - & ~(__alignof__ (struct leap) - 1)); - leaps_idx = total_size; -+ if (__builtin_expect (num_leaps -+ > (SIZE_MAX - total_size) / sizeof (struct leap), 0)) -+ goto lose; - total_size += num_leaps * sizeof (struct leap); -- tzspec_len = (sizeof (time_t) == 8 && trans_width == 8 -- ? st.st_size - (ftello (f) -- + num_transitions * (8 + 1) -- + num_types * 6 -- + chars -- + num_leaps * 12 -- + num_isstd -- + num_isgmt) - 1 : 0); -+ tzspec_len = 0; -+ if (sizeof (time_t) == 8 && trans_width == 8) -+ { -+ off_t rem = st.st_size - ftello (f); -+ if (__builtin_expect (rem < 0 -+ || (size_t) rem < (num_transitions * (8 + 1) -+ + num_types * 6 -+ + chars), 0)) -+ goto lose; -+ tzspec_len = (size_t) rem - (num_transitions * (8 + 1) -+ + num_types * 6 -+ + chars); -+ if (__builtin_expect (num_leaps > SIZE_MAX / 12 -+ || tzspec_len < num_leaps * 12, 0)) -+ goto lose; -+ tzspec_len -= num_leaps * 12; -+ if (__builtin_expect (tzspec_len < num_isstd, 0)) -+ goto lose; -+ tzspec_len -= num_isstd; -+ if (__builtin_expect (tzspec_len == 0 || tzspec_len - 1 < num_isgmt, 0)) -+ goto lose; -+ tzspec_len -= num_isgmt + 1; -+ if (__builtin_expect (SIZE_MAX - total_size < tzspec_len, 0)) -+ goto lose; -+ } -+ if (__builtin_expect (SIZE_MAX - total_size - tzspec_len < extra, 0)) -+ goto lose; - - /* Allocate enough memory including the extra block requested by the - caller. */ diff --git a/src/patches/glibc/glibc-rh767746.patch b/src/patches/glibc/glibc-rh767746.patch deleted file mode 100644 index 58d96d8..0000000 --- a/src/patches/glibc/glibc-rh767746.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- a/nptl/pthread_create.c 2011-12-13 11:41:37.000000000 -0700 -+++ b/nptl/pthread_create.c 2011-12-14 10:03:13.000000000 -0700 -@@ -440,8 +440,9 @@ - int err = ALLOCATE_STACK (iattr, &pd); - if (__builtin_expect (err != 0, 0)) - /* Something went wrong. Maybe a parameter of the attributes is -- invalid or we could not allocate memory. */ -- return err; -+ invalid or we could not allocate memory. Note we have to -+ translate error codes. */ -+ return err == ENOMEM ? EAGAIN : err; - - - /* Initialize the TCB. All initializations with zero should be diff --git a/src/patches/glibc/glibc-rh771342.patch b/src/patches/glibc/glibc-rh771342.patch deleted file mode 100644 index 0a49b8c..0000000 --- a/src/patches/glibc/glibc-rh771342.patch +++ /dev/null @@ -1,155 +0,0 @@ -2011-06-30 Ulrich Drepper drepper@gmail.com - - * nptl-init.c (__nptl_set_robust): New function. - (pthread_functions): Add reference. - * npthreadP.h: Declare __nptl_set_robust. - * sysdeps/pthread/pthread-functions.h (pthread_functions): Add - ptr_set_robust member. - * sysdeps/unix/sysv/linux/fork.c: Call set_robust_list syscall in - child if threads are used. - -diff -Nrup a/nptl/nptl-init.c b/nptl/nptl-init.c ---- a/nptl/nptl-init.c 2011-12-20 00:29:54.645538691 -0700 -+++ b/nptl/nptl-init.c 2012-01-03 10:18:38.977513783 -0700 -@@ -69,6 +69,13 @@ extern void __libc_setup_tls (size_t tcb - #endif - - #ifdef SHARED -+static -+#else -+extern -+#endif -+void __nptl_set_robust (struct pthread *); -+ -+#ifdef SHARED - static void nptl_freeres (void); - - -@@ -131,13 +138,25 @@ static const struct pthread_functions pt - .ptr__nptl_deallocate_tsd = __nptl_deallocate_tsd, - .ptr__nptl_setxid = __nptl_setxid, - /* For now only the stack cache needs to be freed. */ -- .ptr_freeres = nptl_freeres -+ .ptr_freeres = nptl_freeres, -+ .ptr_set_robust = __nptl_set_robust - }; - # define ptr_pthread_functions &pthread_functions - #else - # define ptr_pthread_functions NULL - #endif - -+#ifdef SHARED -+static -+#endif -+void -+__nptl_set_robust (struct pthread *self) -+{ -+ INTERNAL_SYSCALL_DECL (err); -+ INTERNAL_SYSCALL (set_robust_list, err, 2, &self->robust_head, -+ sizeof (struct robust_list_head)); -+} -+ - - #ifdef SHARED - /* This function is called indirectly from the freeres code in libc. */ -diff -Nrup a/nptl/pthreadP.h b/nptl/pthreadP.h ---- a/nptl/pthreadP.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/nptl/pthreadP.h 2012-01-03 10:12:35.599269269 -0700 -@@ -555,17 +555,20 @@ extern void __pthread_cleanup_pop_restor - - /* Old cleanup interfaces, still used in libc.so. */ - extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer, -- void (*routine) (void *), void *arg); -+ void (*routine) (void *), void *arg); - extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer, -- int execute); -+ int execute); - extern void _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer, -- void (*routine) (void *), void *arg); -+ void (*routine) (void *), void *arg); - extern void _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer, -- int execute); -+ int execute); - - extern void __nptl_deallocate_tsd (void) attribute_hidden; - - extern int __nptl_setxid (struct xid_command *cmdp) attribute_hidden; -+#ifndef SHARED -+extern void __nptl_set_robust (struct pthread *self); -+#endif - - extern void __free_stacks (size_t limit) attribute_hidden; - -diff -Nrup a/nptl/sysdeps/pthread/pthread-functions.h b/nptl/sysdeps/pthread/pthread-functions.h ---- a/nptl/sysdeps/pthread/pthread-functions.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/nptl/sysdeps/pthread/pthread-functions.h 2012-01-03 10:12:35.639269301 -0700 -@@ -97,6 +97,7 @@ struct pthread_functions - void (*ptr__nptl_deallocate_tsd) (void); - int (*ptr__nptl_setxid) (struct xid_command *); - void (*ptr_freeres) (void); -+ void (*ptr_set_robust) (struct pthread *); - }; - - /* Variable in libc.so. */ -diff -Nrup a/nptl/sysdeps/unix/sysv/linux/fork.c b/nptl/sysdeps/unix/sysv/linux/fork.c ---- a/nptl/sysdeps/unix/sysv/linux/fork.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/nptl/sysdeps/unix/sysv/linux/fork.c 2012-01-03 10:12:35.649269309 -0700 -@@ -29,6 +29,7 @@ - #include <ldsodefs.h> - #include <bits/stdio-lock.h> - #include <atomic.h> -+#include <pthreadP.h> - - - unsigned long int *__fork_generation_pointer; -@@ -86,8 +87,8 @@ __libc_fork (void) - just go away. The unloading code works in the order of the - list. - -- While executing the registered handlers we are building a -- list of all the entries so that we can go backward later on. */ -+ While executing the registered handlers we are building a -+ list of all the entries so that we can go backward later on. */ - while (1) - { - /* Execute the handler if there is one. */ -@@ -154,6 +155,24 @@ __libc_fork (void) - GL(dl_cpuclock_offset) = now; - #endif - -+#ifdef __NR_set_robust_list -+ /* Initialize the robust mutex list which has been reset during -+ the fork. We do not check for errors since if it fails here -+ it failed at process start as well and noone could have used -+ robust mutexes. We also do not have to set -+ self->robust_head.futex_offset since we inherit the correct -+ value from the parent. */ -+# ifdef SHARED -+ if (__libc_pthread_functions.ptr_set_robust != NULL) -+ PTHFCT_CALL (ptr_set_robust, (self)); -+# else -+ extern __typeof (__nptl_set_robust) __nptl_set_robust -+ __attribute__((weak)); -+ if (__builtin_expect (__nptl_set_robust != NULL, 0)) -+ __nptl_set_robust (self); -+# endif -+#endif -+ - /* Reset the file list. These are recursive mutexes. */ - fresetlockfiles (); - -@@ -170,10 +189,10 @@ __libc_fork (void) - allp->handler->child_handler (); - - /* Note that we do not have to wake any possible waiter. -- This is the only thread in the new process. The count -- may have been bumped up by other threads doing a fork. -- We reset it to 1, to avoid waiting for non-existing -- thread(s) to release the count. */ -+ This is the only thread in the new process. The count -+ may have been bumped up by other threads doing a fork. -+ We reset it to 1, to avoid waiting for non-existing -+ thread(s) to release the count. */ - allp->handler->refcntr = 1; - - /* XXX We could at this point look through the object pool diff --git a/src/patches/glibc/glibc-rh782585.patch b/src/patches/glibc/glibc-rh782585.patch deleted file mode 100644 index a554d4b..0000000 --- a/src/patches/glibc/glibc-rh782585.patch +++ /dev/null @@ -1,329 +0,0 @@ -diff -rup a/elf/dl-close.c b/elf/dl-close.c ---- a/elf/dl-close.c 2012-01-19 12:59:42.759484350 -0700 -+++ b/elf/dl-close.c 2012-01-19 14:10:20.439263806 -0700 -@@ -223,7 +223,7 @@ _dl_close_worker (struct link_map *map) - } - - /* Sort the entries. */ -- _dl_sort_fini (ns->_ns_loaded, maps, nloaded, used, nsid); -+ _dl_sort_fini (maps, nloaded, used, nsid); - - /* Call all termination functions at once. */ - #ifdef SHARED -diff -rup a/elf/dl-deps.c b/elf/dl-deps.c ---- a/elf/dl-deps.c 2012-01-19 12:59:42.716484301 -0700 -+++ b/elf/dl-deps.c 2012-01-19 13:52:35.223720556 -0700 -@@ -614,51 +614,67 @@ Filters not supported with LD_TRACE_PREL - map->l_searchlist.r_list[i]->l_reserved = 0; - } - -- /* Now determine the order in which the initialization has to happen. */ -+ /* Sort the initializer list to take dependencies into account. The binary -+ itself will always be initialize last. */ - memcpy (l_initfini, map->l_searchlist.r_list, - nlist * sizeof (struct link_map *)); -- /* We can skip looking for the binary itself which is at the front -- of the search list. Look through the list backward so that circular -- dependencies are not changing the order. */ -- for (i = 1; i < nlist; ++i) -+ if (__builtin_expect (nlist > 1, 1)) - { -- struct link_map *l = map->l_searchlist.r_list[i]; -- unsigned int j; -- unsigned int k; -- -- /* Find the place in the initfini list where the map is currently -- located. */ -- for (j = 1; l_initfini[j] != l; ++j) -- ; -- -- /* Find all object for which the current one is a dependency and -- move the found object (if necessary) in front. */ -- for (k = j + 1; k < nlist; ++k) -+ /* We can skip looking for the binary itself which is at the front -+ of the search list. */ -+ i = 1; -+ unsigned int seen[nlist]; -+ memset (seen, 0, nlist * sizeof (seen[0])); -+ while (1) - { -- struct link_map **runp; -- -- runp = l_initfini[k]->l_initfini; -- if (runp != NULL) -+ /* Keep track of which object we looked at this round. */ -+ ++seen[i]; -+ struct link_map *thisp = l_initfini[i]; -+ -+ /* Find the last object in the list for which the current one is -+ a dependency and move the current object behind the object -+ with the dependency. */ -+ unsigned int k = nlist - 1; -+ while (k > i) - { -- while (*runp != NULL) -- if (__builtin_expect (*runp++ == l, 0)) -- { -- struct link_map *here = l_initfini[k]; -- -- /* Move it now. */ -- memmove (&l_initfini[j] + 1, &l_initfini[j], -- (k - j) * sizeof (struct link_map *)); -- l_initfini[j] = here; -- -- /* Don't insert further matches before the last -- entry moved to the front. */ -- ++j; -+ struct link_map **runp = l_initfini[k]->l_initfini; -+ if (runp != NULL) -+ /* Look through the dependencies of the object. */ -+ while (*runp != NULL) -+ if (__builtin_expect (*runp++ == thisp, 0)) -+ { -+ /* Move the current object to the back past the last -+ object with it as the dependency. */ -+ memmove (&l_initfini[i], &l_initfini[i + 1], -+ (k - i) * sizeof (l_initfini[0])); -+ l_initfini[k] = thisp; -+ -+ if (seen[i + 1] > nlist - i - 2) -+ { -+ ++i; -+ goto next_clear; -+ } -+ -+ unsigned int this_seen = seen[i]; -+ memmove (&seen[i], &seen[i + 1], -+ (k - i) * sizeof (seen[0])); -+ seen[k] = this_seen; -+ -+ goto next; -+ } - -- break; -- } -+ --k; - } -+ -+ if (++i == nlist) -+ break; -+ next_clear: -+ memset (&seen[i], 0, (nlist - i) * sizeof (seen[0])); -+ -+ next:; - } - } -+ - /* Terminate the list of dependencies. */ - l_initfini[nlist] = NULL; - atomic_write_barrier (); -diff -rup a/elf/dl-fini.c b/elf/dl-fini.c ---- a/elf/dl-fini.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/elf/dl-fini.c 2012-01-19 13:56:38.653842046 -0700 -@@ -1,5 +1,6 @@ - /* Call the termination functions of loaded shared objects. -- Copyright (C) 1995,96,1998-2002,2004-2005,2009 Free Software Foundation, Inc. -+ Copyright (C) 1995,96,1998-2002,2004-2005,2009,2011 -+ Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -29,89 +30,100 @@ typedef void (*fini_t) (void); - - void - internal_function --_dl_sort_fini (struct link_map *l, struct link_map **maps, size_t nmaps, -- char *used, Lmid_t ns) -+_dl_sort_fini (struct link_map **maps, size_t nmaps, char *used, Lmid_t ns) - { -- if (ns == LM_ID_BASE) -- /* The main executable always comes first. */ -- l = l->l_next; -- -- for (; l != NULL; l = l->l_next) -- /* Do not handle ld.so in secondary namespaces and object which -- are not removed. */ -- if (l == l->l_real && l->l_idx != -1) -- { -- /* Find the place in the 'maps' array. */ -- unsigned int j; -- for (j = ns == LM_ID_BASE ? 1 : 0; maps[j] != l; ++j) -- assert (j < nmaps); -- -- /* Find all object for which the current one is a dependency -- and move the found object (if necessary) in front. */ -- for (unsigned int k = j + 1; k < nmaps; ++k) -- { -- struct link_map **runp = maps[k]->l_initfini; -- if (runp != NULL) -- { -- while (*runp != NULL) -- if (*runp == l) -- { -- struct link_map *here = maps[k]; -+ /* A list of one element need not be sorted. */ -+ if (nmaps == 1) -+ return; -+ -+ /* We can skip looking for the binary itself which is at the front -+ of the search list for the main namespace. */ -+ unsigned int i = ns == LM_ID_BASE; -+ unsigned int seen[nmaps]; -+ memset (seen, 0, nmaps * sizeof (seen[0])); -+ while (1) -+ { -+ /* Keep track of which object we looked at this round. */ -+ ++seen[i]; -+ struct link_map *thisp = maps[i]; -+ -+ /* Do not handle ld.so in secondary namespaces and object which -+ are not removed. */ -+ if (thisp != thisp->l_real || thisp->l_idx == -1) -+ goto skip; -+ -+ /* Find the last object in the list for which the current one is -+ a dependency and move the current object behind the object -+ with the dependency. */ -+ unsigned int k = nmaps - 1; -+ while (k > i) -+ { -+ struct link_map **runp = maps[k]->l_initfini; -+ if (runp != NULL) -+ /* Look through the dependencies of the object. */ -+ while (*runp != NULL) -+ if (__builtin_expect (*runp++ == thisp, 0)) -+ { -+ move: -+ /* Move the current object to the back past the last -+ object with it as the dependency. */ -+ memmove (&maps[i], &maps[i + 1], -+ (k - i) * sizeof (maps[0])); -+ maps[k] = thisp; - -- /* Move it now. */ -- memmove (&maps[j] + 1, -- &maps[j], (k - j) * sizeof (struct link_map *)); -- maps[j] = here; -+ if (used != NULL) -+ { -+ char here_used = used[i]; -+ memmove (&used[i], &used[i + 1], -+ (k - i) * sizeof (used[0])); -+ used[k] = here_used; -+ } - -- if (used != NULL) -- { -- char here_used = used[k]; -+ if (seen[i + 1] > nmaps - i - 2) -+ { -+ ++i; -+ goto next_clear; -+ } - -- memmove (&used[j] + 1, -- &used[j], (k - j) * sizeof (char)); -- used[j] = here_used; -- } -+ unsigned int this_seen = seen[i]; -+ memmove (&seen[i], &seen[i + 1], (k - i) * sizeof (seen[0])); -+ seen[k] = this_seen; - -- ++j; -+ goto next; -+ } - -- break; -- } -- else -- ++runp; -- } -- -- if (__builtin_expect (maps[k]->l_reldeps != NULL, 0)) -- { -- unsigned int m = maps[k]->l_reldeps->act; -- struct link_map **relmaps = &maps[k]->l_reldeps->list[0]; -+ if (__builtin_expect (maps[k]->l_reldeps != NULL, 0)) -+ { -+ unsigned int m = maps[k]->l_reldeps->act; -+ struct link_map **relmaps = &maps[k]->l_reldeps->list[0]; - -- while (m-- > 0) -+ /* Look through the relocation dependencies of the object. */ -+ while (m-- > 0) -+ if (__builtin_expect (relmaps[m] == thisp, 0)) - { -- if (relmaps[m] == l) -- { -- struct link_map *here = maps[k]; -- -- /* Move it now. */ -- memmove (&maps[j] + 1, -- &maps[j], -- (k - j) * sizeof (struct link_map *)); -- maps[j] = here; -- -- if (used != NULL) -- { -- char here_used = used[k]; -- -- memmove (&used[j] + 1, -- &used[j], (k - j) * sizeof (char)); -- used[j] = here_used; -- } -- -- break; -- } -+ /* If a cycle exists with a link time dependency, -+ preserve the latter. */ -+ struct link_map **runp = thisp->l_initfini; -+ if (runp != NULL) -+ while (*runp != NULL) -+ if (__builtin_expect (*runp++ == maps[k], 0)) -+ goto ignore; -+ goto move; - } -- } -- } -- } -+ ignore:; -+ } -+ -+ --k; -+ } -+ -+ skip: -+ if (++i == nmaps) -+ break; -+ next_clear: -+ memset (&seen[i], 0, (nmaps - i) * sizeof (seen[0])); -+ -+ next:; -+ } - } - - -@@ -196,9 +208,8 @@ _dl_fini (void) - assert (ns == LM_ID_BASE || i == nloaded || i == nloaded - 1); - nmaps = i; - -- if (nmaps != 0) -- /* Now we have to do the sorting. */ -- _dl_sort_fini (GL(dl_ns)[ns]._ns_loaded, maps, nmaps, NULL, ns); -+ /* Now we have to do the sorting. */ -+ _dl_sort_fini (maps, nmaps, NULL, ns); - - /* We do not rely on the linked list of loaded object anymore from - this point on. We have our own list here (maps). The various -diff -rup a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h ---- a/sysdeps/generic/ldsodefs.h 2012-01-19 12:59:42.446483997 -0700 -+++ b/sysdeps/generic/ldsodefs.h 2012-01-19 14:16:36.242453532 -0700 -@@ -947,7 +947,7 @@ extern void _dl_init (struct link_map *m - extern void _dl_fini (void) internal_function; - - /* Sort array MAPS according to dependencies of the contained objects. */ --extern void _dl_sort_fini (struct link_map *l, struct link_map **maps, -+extern void _dl_sort_fini (struct link_map **maps, - size_t nmaps, char *used, Lmid_t ns) - internal_function; - diff --git a/src/patches/glibc/glibc-rh784402.patch b/src/patches/glibc/glibc-rh784402.patch deleted file mode 100644 index d75773e..0000000 --- a/src/patches/glibc/glibc-rh784402.patch +++ /dev/null @@ -1,166 +0,0 @@ -commit 3e1aa84e7f9f38815f5db9cd7654b1a9497cf6e4 -Author: Ulrich Drepper drepper@gmail.com -Date: Fri Jan 20 22:39:54 2012 -0500 - - Do not cache negative results in nscd if these are transient - -diff -rup a/nscd/aicache.c b/nscd/aicache.c ---- a/nscd/aicache.c 2012-01-24 20:32:58.906826425 -0700 -+++ b/nscd/aicache.c 2012-01-24 20:42:17.663968882 -0700 -@@ -511,9 +511,17 @@ next_nip: - if (fd != -1) - TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); - -- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1); -- /* If we cannot permanently store the result, so be it. */ -- if (dataset != NULL) -+ /* If we have a transient error or cannot permanently store the -+ result, so be it. */ -+ if (rc4 == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) -+ { -+ /* Mark the old entry as obsolete. */ -+ if (dh != NULL) -+ dh->usable = false; -+ dataset = NULL; -+ } -+ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) -+ + req->key_len), 1)) != NULL) - { - dataset->head.allocsize = sizeof (struct dataset) + req->key_len; - dataset->head.recsize = total; -diff -rup a/nscd/grpcache.c b/nscd/grpcache.c ---- a/nscd/grpcache.c 2012-01-24 20:32:58.910826427 -0700 -+++ b/nscd/grpcache.c 2012-01-24 20:42:17.666968883 -0700 -@@ -114,13 +114,21 @@ cache_addgr (struct database_dyn *db, in - case. */ - total = sizeof (notfound); - -- written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, -- MSG_NOSIGNAL)); -+ if (fd != -1) -+ written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, -+ MSG_NOSIGNAL)); -+ else -+ written = total; - -- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, -- 1); -- /* If we cannot permanently store the result, so be it. */ -- if (dataset != NULL) -+ /* If we have a transient error or cannot permanently store -+ the result, so be it. */ -+ if (errno == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) -+ { -+ /* Mark the old entry as obsolete. */ -+ if (dh != NULL) -+ dh->usable = false; -+ } -+ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1)) != NULL) - { - dataset->head.allocsize = sizeof (struct dataset) + req->key_len; - dataset->head.recsize = total; -diff -rup a/nscd/hstcache.c b/nscd/hstcache.c ---- a/nscd/hstcache.c 2012-01-24 20:32:58.911826427 -0700 -+++ b/nscd/hstcache.c 2012-01-24 20:42:17.668968883 -0700 -@@ -141,10 +141,16 @@ cache_addhst (struct database_dyn *db, i - MSG_NOSIGNAL)) != total) - all_written = false; - -- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, -- 1); -- /* If we cannot permanently store the result, so be it. */ -- if (dataset != NULL) -+ /* If we have a transient error or cannot permanently store -+ the result, so be it. */ -+ if (errval == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) -+ { -+ /* Mark the old entry as obsolete. */ -+ if (dh != NULL) -+ dh->usable = false; -+ } -+ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) -+ + req->key_len), 1)) != NULL) - { - dataset->head.allocsize = sizeof (struct dataset) + req->key_len; - dataset->head.recsize = total; -diff -rup a/nscd/initgrcache.c b/nscd/initgrcache.c ---- a/nscd/initgrcache.c 2012-01-24 20:32:58.912826427 -0700 -+++ b/nscd/initgrcache.c 2012-01-24 20:42:17.671968883 -0700 -@@ -202,10 +202,16 @@ addinitgroupsX (struct database_dyn *db, - written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, - MSG_NOSIGNAL)); - -- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, -- 1); -- /* If we cannot permanently store the result, so be it. */ -- if (dataset != NULL) -+ /* If we have a transient error or cannot permanently store -+ the result, so be it. */ -+ if (all_tryagain || __builtin_expect (db->negtimeout == 0, 0)) -+ { -+ /* Mark the old entry as obsolete. */ -+ if (dh != NULL) -+ dh->usable = false; -+ } -+ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) -+ + req->key_len), 1)) != NULL) - { - dataset->head.allocsize = sizeof (struct dataset) + req->key_len; - dataset->head.recsize = total; -diff -rup a/nscd/pwdcache.c b/nscd/pwdcache.c ---- a/nscd/pwdcache.c 2012-01-24 20:32:58.914826427 -0700 -+++ b/nscd/pwdcache.c 2012-01-24 20:42:17.671968883 -0700 -@@ -124,10 +124,16 @@ cache_addpw (struct database_dyn *db, in - written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, - MSG_NOSIGNAL)); - -- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, -- 1); -- /* If we cannot permanently store the result, so be it. */ -- if (dataset != NULL) -+ /* If we have a transient error or cannot permanently store -+ the result, so be it. */ -+ if (errno == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) -+ { -+ /* Mark the old entry as obsolete. */ -+ if (dh != NULL) -+ dh->usable = false; -+ } -+ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) -+ + req->key_len), 1)) != NULL) - { - dataset->head.allocsize = sizeof (struct dataset) + req->key_len; - dataset->head.recsize = total; -diff -rup a/nscd/servicescache.c b/nscd/servicescache.c ---- a/nscd/servicescache.c 2012-01-24 20:32:58.915826427 -0700 -+++ b/nscd/servicescache.c 2012-01-24 20:42:17.672968884 -0700 -@@ -102,15 +102,22 @@ cache_addserv (struct database_dyn *db, - { - /* We have no data. This means we send the standard reply for this - case. */ -- total = sizeof (notfound); -+ written = total = sizeof (notfound); - -- written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, -- MSG_NOSIGNAL)); -+ if (fd != -1) -+ written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, -+ MSG_NOSIGNAL)); - -- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, -- 1); -- /* If we cannot permanently store the result, so be it. */ -- if (dataset != NULL) -+ /* If we have a transient error or cannot permanently store -+ the result, so be it. */ -+ if (errval == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) -+ { -+ /* Mark the old entry as obsolete. */ -+ if (dh != NULL) -+ dh->usable = false; -+ } -+ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) -+ + req->key_len), 1)) != NULL) - { - dataset->head.allocsize = sizeof (struct dataset) + req->key_len; - dataset->head.recsize = total; diff --git a/src/patches/glibc/glibc-rh785984.patch b/src/patches/glibc/glibc-rh785984.patch deleted file mode 100644 index 80ba5e8..0000000 --- a/src/patches/glibc/glibc-rh785984.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -rup a/localedata/locales/zh_CN b/localedata/locales/zh_CN ---- a/localedata/locales/zh_CN 2006-07-30 16:19:43.000000000 -0600 -+++ b/localedata/locales/zh_CN 2012-01-30 21:24:46.905115483 -0700 -@@ -108,11 +108,11 @@ day "<U661F><U671F><U65E5>";/ - "<U661F><U671F><U4E94>";/ - "<U661F><U671F><U516D>" - --abmon "<U0020><U0031><U6708>";"<U0020><U0032><U6708>";/ -- "<U0020><U0033><U6708>";"<U0020><U0034><U6708>";/ -- "<U0020><U0035><U6708>";"<U0020><U0036><U6708>";/ -- "<U0020><U0037><U6708>";"<U0020><U0038><U6708>";/ -- "<U0020><U0039><U6708>";"<U0031><U0030><U6708>";/ -+abmon "<U0031><U6708>";"<U0032><U6708>";/ -+ "<U0033><U6708>";"<U0034><U6708>";/ -+ "<U0035><U6708>";"<U0036><U6708>";/ -+ "<U0037><U6708>";"<U0038><U6708>";/ -+ "<U0039><U6708>";"<U0031><U0030><U6708>";/ - "<U0031><U0031><U6708>";"<U0031><U0032><U6708>" - - mon "<U4E00><U6708>";"<U4E8C><U6708>";"<U4E09><U6708>";/ diff --git a/src/patches/glibc/glibc-rh788959-2.patch b/src/patches/glibc/glibc-rh788959-2.patch deleted file mode 100644 index 1147af6..0000000 --- a/src/patches/glibc/glibc-rh788959-2.patch +++ /dev/null @@ -1,92 +0,0 @@ -Index: glibc-2.12-2-gc4ccff1/nscd/grpcache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/grpcache.c -+++ glibc-2.12-2-gc4ccff1/nscd/grpcache.c -@@ -178,7 +178,8 @@ cache_addgr (struct database_dyn *db, in - char *cp; - const size_t key_len = strlen (key); - const size_t buf_len = 3 * sizeof (grp->gr_gid) + key_len + 1; -- char *buf = alloca (buf_len); -+ size_t alloca_used = 0; -+ char *buf = alloca_account (buf_len, alloca_used); - ssize_t n; - size_t cnt; - -@@ -190,7 +191,8 @@ cache_addgr (struct database_dyn *db, in - /* Determine the length of all members. */ - while (grp->gr_mem[gr_mem_cnt]) - ++gr_mem_cnt; -- gr_mem_len = (uint32_t *) alloca (gr_mem_cnt * sizeof (uint32_t)); -+ gr_mem_len = (uint32_t *) alloca_account (gr_mem_cnt * sizeof (uint32_t), -+ alloca_used); - for (gr_mem_cnt = 0; grp->gr_mem[gr_mem_cnt]; ++gr_mem_cnt) - { - gr_mem_len[gr_mem_cnt] = strlen (grp->gr_mem[gr_mem_cnt]) + 1; -@@ -205,10 +207,10 @@ cache_addgr (struct database_dyn *db, in - change. Allocate memory on the cache since it is likely - discarded anyway. If it turns out to be necessary to have a - new record we can still allocate real memory. */ -- bool alloca_used = false; -+ bool dataset_in_stack_or_freed = false; - dataset = NULL; - -- if (he == NULL) -+ if (he == NULL || ! __libc_use_alloca (alloca_used + total + n)) - dataset = (struct dataset *) mempool_alloc (db, total + n, 1); - - if (dataset == NULL) -@@ -216,10 +218,10 @@ cache_addgr (struct database_dyn *db, in - /* We cannot permanently add the result in the moment. But - we can provide the result as is. Store the data in some - temporary memory. */ -- dataset = (struct dataset *) alloca (total + n); -+ dataset = (struct dataset *) alloca_account (total + n, alloca_used); - - /* We cannot add this record to the permanent database. */ -- alloca_used = true; -+ dataset_in_stack_or_freed = true; - } - - dataset->head.allocsize = total + n; -@@ -273,6 +275,14 @@ cache_addgr (struct database_dyn *db, in - allocated on the stack and need not be freed. */ - dh->timeout = dataset->head.timeout; - ++dh->nreloads; -+ -+ /* If the new record was not allocated on the stack, then it must -+ be freed. Note that it can no longer be used. */ -+ if (! dataset_in_stack_or_freed) -+ { -+ free (dataset); -+ dataset_in_stack_or_freed = true; -+ } - } - else - { -@@ -288,7 +298,7 @@ cache_addgr (struct database_dyn *db, in - key_copy = (char *) newp + (key_copy - (char *) dataset); - - dataset = memcpy (newp, dataset, total + n); -- alloca_used = false; -+ dataset_in_stack_or_freed = false; - } - - /* Mark the old record as obsolete. */ -@@ -303,7 +313,7 @@ cache_addgr (struct database_dyn *db, in - assert (fd != -1); - - #ifdef HAVE_SENDFILE -- if (__builtin_expect (db->mmap_used, 1) && !alloca_used) -+ if (__builtin_expect (db->mmap_used, 1) && !dataset_in_stack_or_freed) - { - assert (db->wr_fd != -1); - assert ((char *) &dataset->resp > (char *) db->data); -@@ -330,7 +340,7 @@ cache_addgr (struct database_dyn *db, in - - /* Add the record to the database. But only if it has not been - stored on the stack. */ -- if (! alloca_used) -+ if (! dataset_in_stack_or_freed) - { - /* If necessary, we also propagate the data to disk. */ - if (db->persistent) diff --git a/src/patches/glibc/glibc-rh788959.patch b/src/patches/glibc/glibc-rh788959.patch deleted file mode 100644 index adc6c99..0000000 --- a/src/patches/glibc/glibc-rh788959.patch +++ /dev/null @@ -1,130 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-initgroups.c glibc-2.12-2-gc4ccff1.patched/nis/nss_compat/compat-initgroups.c ---- glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-initgroups.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.patched/nis/nss_compat/compat-initgroups.c 2012-02-21 11:11:19.877008465 +0530 -@@ -297,6 +297,8 @@ getgrent_next_nss (ent_t *ent, char *buf - if (nss_initgroups_dyn (user, group, &mystart, &mysize, &mygroups, - limit, errnop) == NSS_STATUS_SUCCESS) - { -+ status = NSS_STATUS_NOTFOUND; -+ - /* If there is no blacklist we can trust the underlying - initgroups implementation. */ - if (ent->blacklist.current <= 1) -@@ -309,6 +311,7 @@ getgrent_next_nss (ent_t *ent, char *buf - overwrite the pointer with one to a bigger buffer. */ - char *tmpbuf = buffer; - size_t tmplen = buflen; -+ bool use_malloc = false; - - for (int i = 0; i < mystart; i++) - { -@@ -316,21 +319,36 @@ getgrent_next_nss (ent_t *ent, char *buf - tmpbuf, tmplen, errnop)) - == NSS_STATUS_TRYAGAIN - && *errnop == ERANGE) -- if (tmpbuf == buffer) -- { -- tmplen *= 2; -- tmpbuf = __alloca (tmplen); -- } -- else -- tmpbuf = extend_alloca (tmpbuf, tmplen, 2 * tmplen); -+ { -+ if (__libc_use_alloca (tmplen * 2)) -+ { -+ if (tmpbuf == buffer) -+ { -+ tmplen *= 2; -+ tmpbuf = __alloca (tmplen); -+ } -+ else -+ tmpbuf = extend_alloca (tmpbuf, tmplen, tmplen * 2); -+ } -+ else -+ { -+ tmplen *= 2; -+ char *newbuf = realloc (use_malloc ? tmpbuf : NULL, tmplen); -+ -+ if (newbuf == NULL) -+ { -+ status = NSS_STATUS_TRYAGAIN; -+ goto done; -+ } -+ use_malloc = true; -+ tmpbuf = newbuf; -+ } -+ } - - if (__builtin_expect (status != NSS_STATUS_NOTFOUND, 1)) - { - if (__builtin_expect (status != NSS_STATUS_SUCCESS, 0)) -- { -- free (mygroups); -- return status; -- } -+ goto done; - - if (!in_blacklist (grpbuf.gr_name, - strlen (grpbuf.gr_name), ent) -@@ -348,11 +366,17 @@ getgrent_next_nss (ent_t *ent, char *buf - } - } - } -+ -+ status = NSS_STATUS_NOTFOUND; -+ -+ done: -+ if (use_malloc) -+ free (tmpbuf); - } - - free (mygroups); - -- return NSS_STATUS_NOTFOUND; -+ return status; - } - - free (mygroups); -@@ -506,6 +530,7 @@ _nss_compat_initgroups_dyn (const char * - char *tmpbuf; - enum nss_status status; - ent_t intern = { true, false, false, NULL, {NULL, 0, 0} }; -+ bool use_malloc = false; - - status = internal_setgrent (&intern); - if (status != NSS_STATUS_SUCCESS) -@@ -519,13 +544,32 @@ _nss_compat_initgroups_dyn (const char * - user, group, start, size, - groupsp, limit, errnop)) - == NSS_STATUS_TRYAGAIN && *errnop == ERANGE) -- tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen); -+ if (__libc_use_alloca (buflen * 2)) -+ tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen); -+ else -+ { -+ buflen *= 2; -+ char *newbuf = realloc (use_malloc ? tmpbuf : NULL, buflen); -+ if (newbuf == NULL) -+ { -+ status = NSS_STATUS_TRYAGAIN; -+ goto done; -+ } -+ use_malloc = true; -+ tmpbuf = newbuf; -+ } - } - while (status == NSS_STATUS_SUCCESS); - -+ status = NSS_STATUS_SUCCESS; -+ -+ done: -+ if (use_malloc) -+ free (tmpbuf); -+ - internal_endgrent (&intern); - -- return NSS_STATUS_SUCCESS; -+ return status; - } - - diff --git a/src/patches/glibc/glibc-rh789189.patch b/src/patches/glibc/glibc-rh789189.patch deleted file mode 100644 index fc0e2e0..0000000 --- a/src/patches/glibc/glibc-rh789189.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -rup a/resolv/res_init.c b/resolv/res_init.c ---- a/resolv/res_init.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/resolv/res_init.c 2012-02-10 10:20:24.923578396 -0700 -@@ -325,7 +325,7 @@ __res_vinit(res_state statp, int preinit - struct in6_addr a6; - char *el; - -- if ((el = strchr(cp, '\n')) != NULL) -+ if ((el = strpbrk(cp, " \t\n")) != NULL) - *el = '\0'; - if ((el = strchr(cp, SCOPE_DELIMITER)) != NULL) - *el = '\0'; diff --git a/src/patches/glibc/glibc-rh789209.patch b/src/patches/glibc/glibc-rh789209.patch deleted file mode 100644 index 3aea97e..0000000 --- a/src/patches/glibc/glibc-rh789209.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -rup a/localedata/locales/uk_UA b/localedata/locales/uk_UA ---- a/localedata/locales/uk_UA 2010-05-04 05:27:23.000000000 -0600 -+++ b/localedata/locales/uk_UA 2012-02-10 09:59:16.934189715 -0700 -@@ -700,7 +700,7 @@ LC_MONETARY - % 200 hrv. - 200 hryven (money) - - % the local currency symbol --currency_symbol "<U0433><U0440>" % hr (hryvnya) -+currency_symbol "<U0433><U0440><U043D><U002E>" % hr (hryvnya) - - % This must be a 4-character string containing the international currency - % symbol as defined by the ISO 4217 standard (three characters) followed diff --git a/src/patches/glibc/glibc-rh789238-2.patch b/src/patches/glibc/glibc-rh789238-2.patch deleted file mode 100644 index 62b5492..0000000 --- a/src/patches/glibc/glibc-rh789238-2.patch +++ /dev/null @@ -1,114 +0,0 @@ -diff -rup a/malloc/arena.c b/malloc/arena.c ---- a/malloc/arena.c 2012-03-02 10:22:47.025002715 -0700 -+++ b/malloc/arena.c 2012-03-02 10:27:47.442361529 -0700 -@@ -123,14 +123,14 @@ int __malloc_initialized = -1; - if(ptr) \ - (void)mutex_lock(&ptr->mutex); \ - else \ -- ptr = arena_get2(ptr, (size)); \ -+ ptr = arena_get2(ptr, (size), false); \ - } while(0) - #else - #define arena_lock(ptr, size) do { \ - if(ptr && !mutex_trylock(&ptr->mutex)) { \ - THREAD_STAT(++(ptr->stat_lock_direct)); \ - } else \ -- ptr = arena_get2(ptr, (size)); \ -+ ptr = arena_get2(ptr, (size), false); \ - } while(0) - #endif - -@@ -982,7 +982,7 @@ get_free_list (void) - - - static mstate --reused_arena (void) -+reused_arena (bool retrying) - { - mstate result; - static mstate next_to_use; -@@ -999,6 +999,15 @@ reused_arena (void) - } - while (result != next_to_use); - -+ /* If we are retrying due to a failure to allocate in the main -+ arena, don't wait for the main arena to become available, select -+ another. -+ -+ To really fix this right we would have to try the allocation -+ in every other arena, but that seems like severe overkill. */ -+ if (retrying && result == &main_arena) -+ result = result->next; -+ - /* No arena available. Wait for the next in line. */ - (void)mutex_lock(&result->mutex); - -@@ -1014,9 +1023,9 @@ reused_arena (void) - static mstate - internal_function - #if __STD_C --arena_get2(mstate a_tsd, size_t size) -+arena_get2(mstate a_tsd, size_t size, bool retrying) - #else --arena_get2(a_tsd, size) mstate a_tsd; size_t size; -+arena_get2(a_tsd, size, retrying) mstate a_tsd; size_t size; bool retrying - #endif - { - mstate a; -@@ -1055,7 +1064,7 @@ arena_get2(a_tsd, size) mstate a_tsd; si - catomic_decrement (&narenas); - } - else -- a = reused_arena (); -+ a = reused_arena (retrying); - } - #else - if(!a_tsd) -diff -rup a/malloc/malloc.c b/malloc/malloc.c ---- a/malloc/malloc.c 2012-03-02 10:22:47.061002519 -0700 -+++ b/malloc/malloc.c 2012-03-02 10:23:53.151643863 -0700 -@@ -3671,7 +3671,7 @@ public_mALLOc(size_t bytes) - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); -- ar_ptr = arena_get2(prev, bytes); -+ ar_ptr = arena_get2(prev, bytes, true); - if(ar_ptr) { - victim = _int_malloc(ar_ptr, bytes); - (void)mutex_unlock(&ar_ptr->mutex); -@@ -3892,7 +3892,7 @@ public_mEMALIGn(size_t alignment, size_t - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); -- ar_ptr = arena_get2(prev, bytes); -+ ar_ptr = arena_get2(prev, bytes, true); - if(ar_ptr) { - p = _int_memalign(ar_ptr, alignment, bytes); - (void)mutex_unlock(&ar_ptr->mutex); -@@ -3943,7 +3943,7 @@ public_vALLOc(size_t bytes) - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); -- ar_ptr = arena_get2(prev, bytes); -+ ar_ptr = arena_get2(prev, bytes, true); - if(ar_ptr) { - p = _int_memalign(ar_ptr, pagesz, bytes); - (void)mutex_unlock(&ar_ptr->mutex); -@@ -3992,7 +3992,7 @@ public_pVALLOc(size_t bytes) - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); -- ar_ptr = arena_get2(prev, bytes + 2*pagesz + MINSIZE); -+ ar_ptr = arena_get2(prev, bytes + 2*pagesz + MINSIZE, true); - if(ar_ptr) { - p = _int_memalign(ar_ptr, pagesz, rounded_bytes); - (void)mutex_unlock(&ar_ptr->mutex); -@@ -4086,7 +4086,7 @@ public_cALLOc(size_t n, size_t elem_size - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = av->next ? av : 0; - (void)mutex_unlock(&av->mutex); -- av = arena_get2(prev, sz); -+ av = arena_get2(prev, sz, true); - if(av) { - mem = _int_malloc(av, sz); - (void)mutex_unlock(&av->mutex); diff --git a/src/patches/glibc/glibc-rh789238.patch b/src/patches/glibc/glibc-rh789238.patch deleted file mode 100644 index f2c90e2..0000000 --- a/src/patches/glibc/glibc-rh789238.patch +++ /dev/null @@ -1,119 +0,0 @@ -diff -rup a/malloc/malloc.c b/malloc/malloc.c ---- a/malloc/malloc.c 2012-02-13 21:46:11.678847531 -0700 -+++ b/malloc/malloc.c 2012-02-13 22:43:14.788431976 -0700 -@@ -3669,8 +3669,9 @@ public_mALLOc(size_t bytes) - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ -- ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, bytes); -- (void)mutex_unlock(&main_arena.mutex); -+ mstate prev = ar_ptr->next ? ar_ptr : 0; -+ (void)mutex_unlock(&ar_ptr->mutex); -+ ar_ptr = arena_get2(prev, bytes); - if(ar_ptr) { - victim = _int_malloc(ar_ptr, bytes); - (void)mutex_unlock(&ar_ptr->mutex); -@@ -3929,10 +3930,10 @@ public_vALLOc(size_t bytes) - if(!ar_ptr) - return 0; - p = _int_valloc(ar_ptr, bytes); -- (void)mutex_unlock(&ar_ptr->mutex); - if(!p) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(ar_ptr != &main_arena) { -+ (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = &main_arena; - (void)mutex_lock(&ar_ptr->mutex); - p = _int_memalign(ar_ptr, pagesz, bytes); -@@ -3940,14 +3941,17 @@ public_vALLOc(size_t bytes) - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ -- ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, bytes); -+ mstate prev = ar_ptr->next ? ar_ptr : 0; -+ (void)mutex_unlock(&ar_ptr->mutex); -+ ar_ptr = arena_get2(prev, bytes); - if(ar_ptr) { - p = _int_memalign(ar_ptr, pagesz, bytes); - (void)mutex_unlock(&ar_ptr->mutex); - } - #endif - } -- } -+ } else -+ (void)mutex_unlock(&ar_ptr->mutex); - assert(!p || chunk_is_mmapped(mem2chunk(p)) || - ar_ptr == arena_for_chunk(mem2chunk(p))); - -@@ -3975,10 +3979,10 @@ public_pVALLOc(size_t bytes) - - arena_get(ar_ptr, bytes + 2*pagesz + MINSIZE); - p = _int_pvalloc(ar_ptr, bytes); -- (void)mutex_unlock(&ar_ptr->mutex); - if(!p) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(ar_ptr != &main_arena) { -+ (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = &main_arena; - (void)mutex_lock(&ar_ptr->mutex); - p = _int_memalign(ar_ptr, pagesz, rounded_bytes); -@@ -3986,15 +3990,17 @@ public_pVALLOc(size_t bytes) - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ -- ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, -- bytes + 2*pagesz + MINSIZE); -+ mstate prev = ar_ptr->next ? ar_ptr : 0; -+ (void)mutex_unlock(&ar_ptr->mutex); -+ ar_ptr = arena_get2(prev, bytes + 2*pagesz + MINSIZE); - if(ar_ptr) { - p = _int_memalign(ar_ptr, pagesz, rounded_bytes); - (void)mutex_unlock(&ar_ptr->mutex); - } - #endif - } -- } -+ } else -+ (void)mutex_unlock(&ar_ptr->mutex); - assert(!p || chunk_is_mmapped(mem2chunk(p)) || - ar_ptr == arena_for_chunk(mem2chunk(p))); - -@@ -4064,8 +4070,6 @@ public_cALLOc(size_t n, size_t elem_size - #endif - mem = _int_malloc(av, sz); - -- /* Only clearing follows, so we can unlock early. */ -- (void)mutex_unlock(&av->mutex); - - assert(!mem || chunk_is_mmapped(mem2chunk(mem)) || - av == arena_for_chunk(mem2chunk(mem))); -@@ -4073,15 +4077,16 @@ public_cALLOc(size_t n, size_t elem_size - if (mem == 0) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(av != &main_arena) { -+ (void)mutex_unlock(&av->mutex); - (void)mutex_lock(&main_arena.mutex); - mem = _int_malloc(&main_arena, sz); - (void)mutex_unlock(&main_arena.mutex); - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ -- (void)mutex_lock(&main_arena.mutex); -- av = arena_get2(av->next ? av : 0, sz); -- (void)mutex_unlock(&main_arena.mutex); -+ mstate prev = av->next ? av : 0; -+ (void)mutex_unlock(&av->mutex); -+ av = arena_get2(prev, sz); - if(av) { - mem = _int_malloc(av, sz); - (void)mutex_unlock(&av->mutex); -@@ -4089,7 +4094,8 @@ public_cALLOc(size_t n, size_t elem_size - #endif - } - if (mem == 0) return 0; -- } -+ } else -+ (void)mutex_unlock(&av->mutex); - p = mem2chunk(mem); - - /* Two optional cases in which clearing not necessary */ diff --git a/src/patches/glibc/glibc-rh794817-2.patch b/src/patches/glibc/glibc-rh794817-2.patch deleted file mode 100644 index 15774b4..0000000 --- a/src/patches/glibc/glibc-rh794817-2.patch +++ /dev/null @@ -1,85 +0,0 @@ -diff -rup a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c ---- a/stdio-common/vfprintf.c 2012-03-05 09:43:14.705536167 -0700 -+++ b/stdio-common/vfprintf.c 2012-03-05 09:48:11.602890982 -0700 -@@ -822,7 +822,7 @@ vfprintf (FILE *s, const CHAR_T *format, - \ - if (function_done < 0) \ - { \ -- /* Error in print handler. */ \ -+ /* Error in print handler; up to handler to set errno. */ \ - done = -1; \ - goto all_done; \ - } \ -@@ -876,7 +876,7 @@ vfprintf (FILE *s, const CHAR_T *format, - \ - if (function_done < 0) \ - { \ -- /* Error in print handler. */ \ -+ /* Error in print handler; up to handler to set errno. */ \ - done = -1; \ - goto all_done; \ - } \ -@@ -1117,7 +1117,7 @@ vfprintf (FILE *s, const CHAR_T *format, - &mbstate); \ - if (len == (size_t) -1) \ - { \ -- /* Something went wron gduring the conversion. Bail out. */ \ -+ /* Something went wrong during the conversion. Bail out. */ \ - done = -1; \ - goto all_done; \ - } \ -@@ -1188,6 +1188,7 @@ vfprintf (FILE *s, const CHAR_T *format, - if (__mbsnrtowcs (ignore, &str2, strend - str2, \ - ignore_size, &ps) == (size_t) -1) \ - { \ -+ /* Conversion function has set errno. */ \ - done = -1; \ - goto all_done; \ - } \ -@@ -1599,6 +1600,7 @@ vfprintf (FILE *s, const CHAR_T *format, - if (spec == L_('\0')) - { - /* The format string ended before the specifier is complete. */ -+ __set_errno (EINVAL); - done = -1; - goto all_done; - } -@@ -1696,17 +1698,20 @@ do_positional: - - /* Determine the number of arguments the format string consumes. */ - nargs = MAX (nargs, max_ref_arg); -+ /* Calculate total size needed to represent a single argument across -+ all three argument-related arrays. */ - bytes_per_arg = sizeof (*args_value) + sizeof (*args_size) - + sizeof (*args_type); - - /* Check for potential integer overflow. */ -- if (nargs > SIZE_MAX / bytes_per_arg) -+ if (__builtin_expect (nargs > SIZE_MAX / bytes_per_arg, 0)) - { -+ __set_errno (ERANGE); - done = -1; - goto all_done; - } - -- /* Allocate memory for the argument descriptions. */ -+ /* Allocate memory for all three argument arrays. */ - if (__libc_use_alloca (nargs * bytes_per_arg)) - args_value = alloca (nargs * bytes_per_arg); - else -@@ -1937,6 +1942,7 @@ do_positional: - about # of chars. */ - if (function_done < 0) - { -+ /* Function has set errno. */ - done = -1; - goto all_done; - } -@@ -1971,6 +1977,7 @@ do_positional: - of chars. */ - if (function_done < 0) - { -+ /* Function has set errno. */ - done = -1; - goto all_done; - } diff --git a/src/patches/glibc/glibc-rh794817.patch b/src/patches/glibc/glibc-rh794817.patch deleted file mode 100644 index e21caaa..0000000 --- a/src/patches/glibc/glibc-rh794817.patch +++ /dev/null @@ -1,239 +0,0 @@ -From libc-alpha-return-25252-listarch-libc-alpha=sources dot redhat dot com at sourceware dot org Thu Feb 16 16:21:17 2012 -Return-Path: <libc-alpha-return-25252-listarch-libc-alpha=sources dot redhat dot com at sourceware dot org> -Delivered-To: listarch-libc-alpha at sources dot redhat dot com -Received: (qmail 5187 invoked by alias); 16 Feb 2012 16:21:14 -0000 -Delivered-To: moderator for libc-alpha at sourceware dot org -Received: (qmail 2174 invoked by uid 22791); 16 Feb 2012 16:17:18 -0000 -X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 - tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,TW_TV,TW_VB,TW_VF,T_RP_MATCHES_RCVD -X-Spam-Check-By: sourceware.org -Date: Thu, 16 Feb 2012 08:16:13 -0800 -From: Kees Cook <kees at outflux dot net> -To: "Ryan S dot Arnold" <ryan dot arnold at gmail dot com> -Cc: libc-alpha at sourceware dot org, Paul Eggert <eggert at cs dot ucla dot edu>, - Roland McGrath <roland at hack dot frob dot com>, - Andreas Schwab <schwab at linux-m68k dot org> -Subject: Re: [PATCH] vfprintf: validate nargs and maybe allocate from heap -Message-ID: 20120216161613.GZ20420@outflux.net -References: 20120206062537.GM4979@outflux.net - <20120207000509 dot GP4989 at outflux dot net> - <20120210192457 dot GF20420 at outflux dot net> - <CAAKybw8AgkGsKAx=kvX4Tsi74f+HtuVnatTCB0VfsHi7vVFi1Q at mail dot gmail dot com> - <20120214223048 dot GM20420 at outflux dot net> - <CAAKybw_HS+cav+YcDw3ns7UXu6_xA7EHPrkiB87P+OGwEB0PVQ at mail dot gmail dot com> - <20120214224543 dot GN20420 at outflux dot net> -MIME-Version: 1.0 -Content-Type: text/plain; charset=us-ascii -Content-Disposition: inline -In-Reply-To: <20120214224543 dot GN20420 at outflux dot net> -X-MIMEDefang-Filter: outflux$Revision: 1.316 $ -X-HELO: www.outflux.net -Mailing-List: contact libc-alpha-help at sourceware dot org; run by ezmlm -Precedence: bulk -List-Id: <libc-alpha.sourceware.org> -List-Subscribe: <mailto:libc-alpha-subscribe at sourceware dot org> -List-Archive: http://sourceware.org/ml/libc-alpha/ -List-Post: <mailto:libc-alpha at sourceware dot org> -List-Help: <mailto:libc-alpha-help at sourceware dot org>, <http://sourceware dot org/ml/#faqs> -Sender: libc-alpha-owner at sourceware dot org -Delivered-To: mailing list libc-alpha at sourceware dot org - -The nargs value can overflow when doing allocations, allowing arbitrary -memory writes via format strings, bypassing _FORTIFY_SOURCE: -http://www.phrack.org/issues.html?issue=67&id=9 - -This checks for nargs overflow and possibly allocates from heap instead of -stack, and adds a regression test for the situation. - -I have FSF assignment via Google. (Sent from @outflux since that's how I'm -subscribed here, but CL shows @chromium.org as part of my Google work.) - -This version disables the useless test on non-32-bit platforms. - -2012-02-16 Kees Cook keescook@chromium.org - - [BZ #13656] - * stdio-common/vfprintf.c (vfprintf): Check for nargs overflow and - possibly allocate from heap instead of stack. - * stdio-common/bug-vfprintf-nargs.c: New file. - * stdio-common/Makefile (tests): Add nargs overflow test. - - -diff -rup a/stdio-common/Makefile b/stdio-common/Makefile ---- a/stdio-common/Makefile 2010-05-04 05:27:23.000000000 -0600 -+++ b/stdio-common/Makefile 2012-02-20 21:57:52.983040992 -0700 -@@ -60,7 +60,7 @@ tests := tstscanf test_rdwr test-popen t - tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \ - tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \ - bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \ -- scanf16 scanf17 tst-setvbuf1 -+ scanf16 scanf17 tst-setvbuf1 bug-vfprintf-nargs - - test-srcs = tst-unbputc tst-printf - -diff --git a/stdio-common/bug-vfprintf-nargs.c b/stdio-common/bug-vfprintf-nargs.c -new file mode 100644 -index 0000000..13c66c0 ---- /dev/null -+++ b/stdio-common/bug-vfprintf-nargs.c -@@ -0,0 +1,78 @@ -+/* Test for vfprintf nargs allocation overflow (BZ #13656). -+ Copyright (C) 2012 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Kees Cook keescook@chromium.org, 2012. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include <stdio.h> -+#include <stdlib.h> -+#include <stdint.h> -+#include <unistd.h> -+#include <inttypes.h> -+#include <string.h> -+#include <signal.h> -+ -+static int -+format_failed (const char *fmt, const char *expected) -+{ -+ char output[80]; -+ -+ printf ("%s : ", fmt); -+ -+ memset (output, 0, sizeof output); -+ /* Having sprintf itself detect a failure is good. */ -+ if (sprintf (output, fmt, 1, 2, 3, "test") > 0 -+ && strcmp (output, expected) != 0) -+ { -+ printf ("FAIL (output '%s' != expected '%s')\n", output, expected); -+ return 1; -+ } -+ puts ("ok"); -+ return 0; -+} -+ -+static int -+do_test (void) -+{ -+ int rc = 0; -+ char buf[64]; -+ -+ /* Regular positionals work. */ -+ if (format_failed ("%1$d", "1") != 0) -+ rc = 1; -+ -+ /* Regular width positionals work. */ -+ if (format_failed ("%1$*2$d", " 1") != 0) -+ rc = 1; -+ -+ /* Positional arguments are constructed via read_int, so nargs can only -+ overflow on 32-bit systems. On 64-bit systems, it will attempt to -+ allocate a giant amount of memory and possibly crash, which is the -+ expected situation. Since the 64-bit behavior is arch-specific, only -+ test this on 32-bit systems. */ -+ if (sizeof (long int) == 4) -+ { -+ sprintf (buf, "%%1$d %%%" PRIdPTR "$d", UINT32_MAX / sizeof (int)); -+ if (format_failed (buf, "1 %$d") != 0) -+ rc = 1; -+ } -+ -+ return rc; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c -index 863cd5d..022e72b 100644 ---- a/stdio-common/vfprintf.c -+++ b/stdio-common/vfprintf.c -@@ -235,6 +235,9 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) - 0 if unknown. */ - int readonly_format = 0; - -+ /* For the argument descriptions, which may be allocated on the heap. */ -+ void *args_malloced = NULL; -+ - /* This table maps a character into a number representing a - class. In each step there is a destination label for each - class. */ -@@ -1647,9 +1650,10 @@ do_positional: - determine the size of the array needed to store the argument - attributes. */ - size_t nargs = 0; -- int *args_type; -- union printf_arg *args_value = NULL; -+ size_t bytes_per_arg; -+ union printf_arg *args_value; - int *args_size; -+ int *args_type; - - /* Positional parameters refer to arguments directly. This could - also determine the maximum number of arguments. Track the -@@ -1698,13 +1702,33 @@ do_positional: - - /* Determine the number of arguments the format string consumes. */ - nargs = MAX (nargs, max_ref_arg); -+ bytes_per_arg = sizeof (*args_value) + sizeof (*args_size) -+ + sizeof (*args_type); -+ -+ /* Check for potential integer overflow. */ -+ if (nargs > SIZE_MAX / bytes_per_arg) -+ { -+ done = -1; -+ goto all_done; -+ } - - /* Allocate memory for the argument descriptions. */ -- args_type = alloca (nargs * sizeof (int)); -+ if (__libc_use_alloca (nargs * bytes_per_arg)) -+ args_value = alloca (nargs * bytes_per_arg); -+ else -+ { -+ args_value = args_malloced = malloc (nargs * bytes_per_arg); -+ if (args_value == NULL) -+ { -+ done = -1; -+ goto all_done; -+ } -+ } -+ -+ args_size = &args_value[nargs].pa_int; -+ args_type = &args_size[nargs]; - memset (args_type, s->_flags2 & _IO_FLAGS2_FORTIFY ? '\xff' : '\0', -- nargs * sizeof (int)); -- args_value = alloca (nargs * sizeof (union printf_arg)); -- args_size = alloca (nargs * sizeof (int)); -+ nargs * sizeof (*args_type)); - - /* XXX Could do sanity check here: If any element in ARGS_TYPE is - still zero after this loop, format is invalid. For now we -@@ -1973,8 +1997,8 @@ do_positional: - } - - all_done: -- if (__builtin_expect (workstart != NULL, 0)) -- free (workstart); -+ free (args_malloced); -+ free (workstart); - /* Unlock the stream. */ - _IO_funlockfile (s); - _IO_cleanup_region_end (0); --- -1.7.5.4 - --- -Kees Cook @outflux.net - diff --git a/src/patches/glibc/glibc-rh795498.patch b/src/patches/glibc/glibc-rh795498.patch deleted file mode 100644 index 729c5a4..0000000 --- a/src/patches/glibc/glibc-rh795498.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c -index 01369f6..44ad04d 100644 ---- a/resolv/nss_dns/dns-host.c -+++ b/resolv/nss_dns/dns-host.c -@@ -1219,7 +1219,7 @@ gaih_getanswer (const querybuf *answer1, int anslen1, const querybuf *answer2, - &first); - if ((status == NSS_STATUS_SUCCESS || status == NSS_STATUS_NOTFOUND - || (status == NSS_STATUS_TRYAGAIN -- && (errno != ERANGE || *h_errnop != NO_RECOVERY))) -+ && (*errnop != ERANGE || *h_errnop == NO_RECOVERY))) - && answer2 != NULL && anslen2 > 0) - { - enum nss_status status2 = gaih_getanswer_slice(answer2, anslen2, qname, diff --git a/src/patches/glibc/glibc-rh797094-1.patch b/src/patches/glibc/glibc-rh797094-1.patch deleted file mode 100644 index e98b9c0..0000000 --- a/src/patches/glibc/glibc-rh797094-1.patch +++ /dev/null @@ -1,657 +0,0 @@ -diff -rup a/include/alloca.h b/include/alloca.h ---- a/include/alloca.h 2012-02-29 13:11:19.439693476 -0700 -+++ b/include/alloca.h 2012-02-29 13:11:49.832530623 -0700 -@@ -49,15 +49,24 @@ libc_hidden_proto (__libc_alloca_cutoff) - - #if defined stackinfo_get_sp && defined stackinfo_sub_sp - # define alloca_account(size, avar) \ -- ({ void *old__ = stackinfo_get_sp (); \ -- void *m__ = __alloca (size); \ -- avar += stackinfo_sub_sp (old__); \ -+ ({ void *old__ = stackinfo_get_sp (); \ -+ void *m__ = __alloca (size); \ -+ avar += stackinfo_sub_sp (old__); \ -+ m__; }) -+# define extend_alloca_account(buf, len, newlen, avar) \ -+ ({ void *old__ = stackinfo_get_sp (); \ -+ void *m__ = extend_alloca (buf, len, newlen); \ -+ avar += stackinfo_sub_sp (old__); \ - m__; }) - #else - # define alloca_account(size, avar) \ -- ({ size_t s__ = (size); \ -- avar += s__; \ -+ ({ size_t s__ = (size); \ -+ avar += s__; \ - __alloca (s__); }) -+# define extend_alloca_account(buf, len, newlen, avar) \ -+ ({ size_t s__ = (newlen); \ -+ avar += s__; \ -+ extend_alloca (buf, len, s__); }) - #endif - - #endif -diff -rup a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c ---- a/sysdeps/posix/getaddrinfo.c 2012-02-29 13:11:19.588692676 -0700 -+++ b/sysdeps/posix/getaddrinfo.c 2012-02-29 13:12:42.972245862 -0700 -@@ -278,6 +278,7 @@ gaih_inet (const char *name, const struc - bool got_ipv6 = false; - const char *canon = NULL; - const char *orig_name = name; -+ size_t alloca_used = 0; - - if (req->ai_protocol || req->ai_socktype) - { -@@ -310,7 +311,7 @@ gaih_inet (const char *name, const struc - if (tp->name[0]) - { - st = (struct gaih_servtuple *) -- __alloca (sizeof (struct gaih_servtuple)); -+ alloca_account (sizeof (struct gaih_servtuple), alloca_used); - - if ((rc = gaih_inet_serv (service->name, tp, req, st))) - return rc; -@@ -334,7 +335,8 @@ gaih_inet (const char *name, const struc - continue; - - newp = (struct gaih_servtuple *) -- __alloca (sizeof (struct gaih_servtuple)); -+ alloca_account (sizeof (struct gaih_servtuple), -+ alloca_used); - - if ((rc = gaih_inet_serv (service->name, tp, req, newp))) - { -@@ -362,7 +364,7 @@ gaih_inet (const char *name, const struc - - if (req->ai_socktype || req->ai_protocol) - { -- st = __alloca (sizeof (struct gaih_servtuple)); -+ st = alloca_account (sizeof (struct gaih_servtuple), alloca_used); - st->next = NULL; - st->socktype = tp->socktype; - st->protocol = ((tp->protoflag & GAI_PROTO_PROTOANY) -@@ -379,7 +381,8 @@ gaih_inet (const char *name, const struc - { - struct gaih_servtuple *newp; - -- newp = __alloca (sizeof (struct gaih_servtuple)); -+ newp = alloca_account (sizeof (struct gaih_servtuple), -+ alloca_used); - newp->next = NULL; - newp->socktype = tp->socktype; - newp->protocol = tp->protocol; -@@ -391,10 +394,17 @@ gaih_inet (const char *name, const struc - } - } - -+ bool malloc_name = false; -+ bool malloc_addrmem = false; -+ struct gaih_addrtuple *addrmem = NULL; -+ bool malloc_canonbuf = false; -+ char *canonbuf = NULL; -+ bool malloc_tmpbuf = false; -+ char *tmpbuf = NULL; -+ int result = 0; - if (name != NULL) - { -- at = __alloca (sizeof (struct gaih_addrtuple)); -- -+ at = alloca_account (sizeof (struct gaih_addrtuple), alloca_used); - at->family = AF_UNSPEC; - at->scopeid = 0; - at->next = NULL; -@@ -412,6 +422,7 @@ gaih_inet (const char *name, const struc - rc = __idna_to_ascii_lz (name, &p, idn_flags); - if (rc != IDNA_SUCCESS) - { -+ /* No need to jump to free_and_return here. */ - if (rc == IDNA_MALLOC_ERROR) - return -EAI_MEMORY; - if (rc == IDNA_DLOPEN_ERROR) -@@ -421,10 +432,7 @@ gaih_inet (const char *name, const struc - /* In case the output string is the same as the input string - no new string has been allocated. */ - if (p != name) -- { -- name = strdupa (p); -- free (p); -- } -+ malloc_name = true; - } - #endif - -@@ -441,23 +449,59 @@ gaih_inet (const char *name, const struc - at->family = AF_INET6; - } - else -- return -EAI_ADDRFAMILY; -+ { -+ result = -EAI_ADDRFAMILY; -+ goto free_and_return; -+ } - - if (req->ai_flags & AI_CANONNAME) - canon = name; - } - else if (at->family == AF_UNSPEC) - { -- char *namebuf = (char *) name; - char *scope_delim = strchr (name, SCOPE_DELIMITER); -+ int e; - -- if (__builtin_expect (scope_delim != NULL, 0)) -- { -- namebuf = alloca (scope_delim - name + 1); -- *((char *) __mempcpy (namebuf, name, scope_delim - name)) = '\0'; -- } -+ { -+ bool malloc_namebuf = false; -+ char *namebuf = (char *) name; -+ -+ if (__builtin_expect (scope_delim != NULL, 0)) -+ { -+ if (malloc_name) -+ *scope_delim = '\0'; -+ else -+ { -+ if (__libc_use_alloca (alloca_used -+ + scope_delim - name + 1)) -+ { -+ namebuf = alloca_account (scope_delim - name + 1, -+ alloca_used); -+ *((char *) __mempcpy (namebuf, name, -+ scope_delim - name)) = '\0'; -+ } -+ else -+ { -+ namebuf = strndup (name, scope_delim - name); -+ if (namebuf == NULL) -+ { -+ assert (!malloc_name); -+ return -EAI_MEMORY; -+ } -+ malloc_namebuf = true; -+ } -+ } -+ } - -- if (inet_pton (AF_INET6, namebuf, at->addr) > 0) -+ e = inet_pton (AF_INET6, namebuf, at->addr); -+ -+ if (malloc_namebuf) -+ free (namebuf); -+ else if (scope_delim != NULL && malloc_name) -+ /* Undo what we did above. */ -+ *scope_delim = SCOPE_DELIMITER; -+ } -+ if (e > 0) - { - if (req->ai_family == AF_UNSPEC || req->ai_family == AF_INET6) - at->family = AF_INET6; -@@ -468,7 +512,10 @@ gaih_inet (const char *name, const struc - at->family = AF_INET; - } - else -- return -EAI_ADDRFAMILY; -+ { -+ result = -EAI_ADDRFAMILY; -+ goto free_and_return; -+ } - - if (scope_delim != NULL) - { -@@ -490,7 +537,10 @@ gaih_inet (const char *name, const struc - at->scopeid = (uint32_t) strtoul (scope_delim + 1, &end, - 10); - if (*end != '\0') -- return GAIH_OKIFUNSPEC | -EAI_NONAME; -+ { -+ result = GAIH_OKIFUNSPEC | -EAI_NONAME; -+ goto free_and_return; -+ } - } - } - -@@ -520,59 +570,80 @@ gaih_inet (const char *name, const struc - { - int family = req->ai_family; - size_t tmpbuflen = 512; -- char *tmpbuf = alloca (tmpbuflen); -+ assert (tmpbuf == NULL); -+ tmpbuf = alloca_account (tmpbuflen, alloca_used); - int rc; - struct hostent th; - struct hostent *h; - int herrno; - -- simple_again: - while (1) - { -- rc = __gethostbyname2_r (name, family, &th, tmpbuf, -+ rc = __gethostbyname2_r (name, AF_INET, &th, tmpbuf, - tmpbuflen, &h, &herrno); - if (rc != ERANGE || herrno != NETDB_INTERNAL) - break; -- tmpbuf = extend_alloca (tmpbuf, tmpbuflen, 2 * tmpbuflen); -+ -+ if (!malloc_tmpbuf -+ && __libc_use_alloca (alloca_used + 2 * tmpbuflen)) -+ tmpbuf = extend_alloca_account (tmpbuf, tmpbuflen, -+ 2 * tmpbuflen, -+ alloca_used); -+ else -+ { -+ char *newp = realloc (malloc_tmpbuf ? tmpbuf : NULL, -+ 2 * tmpbuflen); -+ if (newp == NULL) -+ { -+ result = -EAI_MEMORY; -+ goto free_and_return; -+ } -+ tmpbuf = newp; -+ malloc_tmpbuf = true; -+ tmpbuflen = 2 * tmpbuflen; -+ } - } - - if (rc == 0) - { -- if (h == NULL) -+ if (h != NULL) - { -- if (req->ai_family == AF_INET6 -- && (req->ai_flags & AI_V4MAPPED) -- && family == AF_INET6) -+ int i; -+ /* We found data, count the number of addresses. */ -+ for (i = 0; h->h_addr_list[i]; ++i) -+ ; -+ if (i > 0 && *pat != NULL) -+ --i; -+ -+ if (__libc_use_alloca (alloca_used -+ + i * sizeof (struct gaih_addrtuple))) -+ addrmem = alloca_account (i * sizeof (struct gaih_addrtuple), -+ alloca_used); -+ else - { -- /* Try again, this time looking for IPv4 -- addresses. */ -- family = AF_INET; -- goto simple_again; -+ addrmem = malloc (i -+ * sizeof (struct gaih_addrtuple)); -+ if (addrmem == NULL) -+ { -+ result = -EAI_MEMORY; -+ goto free_and_return; - } -+ malloc_addrmem = true; - } -- else -- { -- /* We found data, now convert it into the list. */ -- for (int i = 0; h->h_addr_list[i]; ++i) -+ -+ /* Now convert it into the list. */ -+ struct gaih_addrtuple *addrfree = addrmem; -+ for (i = 0; h->h_addr_list[i]; ++i) - { - if (*pat == NULL) - { -- *pat = __alloca (sizeof (struct gaih_addrtuple)); -+ *pat = addrfree++; - (*pat)->scopeid = 0; - } - (*pat)->next = NULL; -- (*pat)->family = req->ai_family; -- if (family == req->ai_family) -+ (*pat)->family = AF_INET; - memcpy ((*pat)->addr, h->h_addr_list[i], - h->h_length); -- else -- { -- uint32_t *addr = (uint32_t *) (*pat)->addr; -- addr[3] = *(uint32_t *) h->h_addr_list[i]; -- addr[2] = htonl (0xffff); -- addr[1] = 0; -- addr[0] = 0; -- } - pat = &((*pat)->next); - } - } -@@ -582,15 +653,16 @@ gaih_inet (const char *name, const struc - if (herrno == NETDB_INTERNAL) - { - __set_h_errno (herrno); -- return -EAI_SYSTEM; -- } -- if (herrno == TRY_AGAIN) -- { -- return -EAI_AGAIN; -+ result = -EAI_SYSTEM; - } -+ else if (herrno == TRY_AGAIN) -+ result = -EAI_AGAIN; -+ else - /* We made requests but they turned out no data. - The name is known, though. */ -- return GAIH_OKIFUNSPEC | -EAI_NODATA; -+ result = GAIH_OKIFUNSPEC | -EAI_NODATA; -+ -+ goto free_and_return; - } - - goto process_list; -@@ -613,21 +685,56 @@ gaih_inet (const char *name, const struc - bool added_canon = (req->ai_flags & AI_CANONNAME) == 0; - char *addrs = air->addrs; - -+ if (__libc_use_alloca (alloca_used -+ + air->naddrs * sizeof (struct gaih_addrtuple))) -+ addrmem = alloca_account (air->naddrs -+ * sizeof (struct gaih_addrtuple), -+ alloca_used); -+ else -+ { -+ addrmem = malloc (air->naddrs -+ * sizeof (struct gaih_addrtuple)); -+ if (addrmem == NULL) -+ { -+ result = -EAI_MEMORY; -+ goto free_and_return; -+ } -+ malloc_addrmem = true; -+ } -+ -+ struct gaih_addrtuple *addrfree = addrmem; - for (int i = 0; i < air->naddrs; ++i) - { - socklen_t size = (air->family[i] == AF_INET - ? INADDRSZ : IN6ADDRSZ); - if (*pat == NULL) - { -- *pat = __alloca (sizeof (struct gaih_addrtuple)); -+ *pat = addrfree++; - (*pat)->scopeid = 0; - } - uint32_t *pataddr = (*pat)->addr; - (*pat)->next = NULL; - if (added_canon || air->canon == NULL) - (*pat)->name = NULL; -- else -- canon = (*pat)->name = strdupa (air->canon); -+ else if (canonbuf == NULL) -+ { -+ size_t canonlen = strlen (air->canon) + 1; -+ if ((req->ai_flags & AI_CANONIDN) != 0 -+ && __libc_use_alloca (alloca_used + canonlen)) -+ canonbuf = alloca_account (canonlen, alloca_used); -+ else -+ { -+ canonbuf = malloc (canonlen); -+ if (canonbuf == NULL) -+ { -+ result = -EAI_MEMORY; -+ goto free_and_return; -+ } -+ malloc_canonbuf = true; -+ } -+ canon = (*pat)->name = memcpy (canonbuf, air->canon, -+ canonlen); -+ } - - if (air->family[i] == AF_INET - && req->ai_family == AF_INET6 -@@ -657,20 +764,26 @@ gaih_inet (const char *name, const struc - free (air); - - if (at->family == AF_UNSPEC) -- return GAIH_OKIFUNSPEC | -EAI_NONAME; -+ { -+ result = GAIH_OKIFUNSPEC | -EAI_NONAME; -+ goto free_and_return; -+ } - - goto process_list; - } - else if (err == 0) - /* The database contains a negative entry. */ -- return 0; -+ goto free_and_return; - else if (__nss_not_use_nscd_hosts == 0) - { - if (herrno == NETDB_INTERNAL && errno == ENOMEM) -- return -EAI_MEMORY; -- if (herrno == TRY_AGAIN) -- return -EAI_AGAIN; -- return -EAI_SYSTEM; -+ result = -EAI_MEMORY; -+ else if (herrno == TRY_AGAIN) -+ result = -EAI_AGAIN; -+ else -+ result = -EAI_SYSTEM; -+ -+ goto free_and_return; - } - } - #endif -@@ -699,7 +812,19 @@ gaih_inet (const char *name, const struc - _res.options &= ~RES_USE_INET6; - - size_t tmpbuflen = 1024; -- char *tmpbuf = alloca (tmpbuflen); -+ malloc_tmpbuf = !__libc_use_alloca (alloca_used + tmpbuflen); -+ assert (tmpbuf == NULL); -+ if (!malloc_tmpbuf) -+ tmpbuf = alloca_account (tmpbuflen, alloca_used); -+ else -+ { -+ tmpbuf = malloc (tmpbuflen); -+ if (tmpbuf == NULL) -+ { -+ result = -EAI_MEMORY; -+ goto free_and_return; -+ } -+ } - - while (!no_more) - { -@@ -728,8 +853,25 @@ gaih_inet (const char *name, const struc - no_data = herrno == NO_DATA; - break; - } -- tmpbuf = extend_alloca (tmpbuf, -- tmpbuflen, 2 * tmpbuflen); -+ -+ if (!malloc_tmpbuf -+ && __libc_use_alloca (alloca_used + 2 * tmpbuflen)) -+ tmpbuf = extend_alloca_account (tmpbuf, tmpbuflen, -+ 2 * tmpbuflen, -+ alloca_used); -+ else -+ { -+ char *newp = realloc (malloc_tmpbuf ? tmpbuf : NULL, -+ 2 * tmpbuflen); -+ if (newp == NULL) -+ { -+ result = -EAI_MEMORY; -+ goto free_and_return; -+ } -+ tmpbuf = newp; -+ malloc_tmpbuf = true; -+ tmpbuflen = 2 * tmpbuflen; -+ } - } - - if (status == NSS_STATUS_SUCCESS) -@@ -832,18 +974,40 @@ gaih_inet (const char *name, const struc - if (cfct != NULL) - { - const size_t max_fqdn_len = 256; -- char *buf = alloca (max_fqdn_len); -+ if ((req->ai_flags & AI_CANONIDN) != 0 -+ && __libc_use_alloca (alloca_used -+ + max_fqdn_len)) -+ canonbuf = alloca_account (max_fqdn_len, -+ alloca_used); -+ else -+ { -+ canonbuf = malloc (max_fqdn_len); -+ if (canonbuf == NULL) -+ { -+ result = -EAI_MEMORY; -+ goto free_and_return; -+ } -+ malloc_canonbuf = true; -+ } - char *s; - - if (DL_CALL_FCT (cfct, (at->name ?: name, -- buf, max_fqdn_len, -+ canonbuf, -+ max_fqdn_len, - &s, &rc, &herrno)) - == NSS_STATUS_SUCCESS) - canon = s; - else -- /* Set to name now to avoid using -- gethostbyaddr. */ -- canon = name; -+ { -+ /* Set to name now to avoid using -+ gethostbyaddr. */ -+ if (malloc_canonbuf) -+ { -+ free (canonbuf); -+ malloc_canonbuf = false; -+ } -+ canon = name; -+ } - } - } - status = NSS_STATUS_SUCCESS; -@@ -878,22 +1042,27 @@ gaih_inet (const char *name, const struc - { - /* If both requests timed out report this. */ - if (no_data == EAI_AGAIN && no_inet6_data == EAI_AGAIN) -- return -EAI_AGAIN; -+ result = -EAI_AGAIN; -+ else -+ /* We made requests but they turned out no data. The name -+ is known, though. */ -+ result = GAIH_OKIFUNSPEC | -EAI_NODATA; - -- /* We made requests but they turned out no data. The name -- is known, though. */ -- return GAIH_OKIFUNSPEC | -EAI_NODATA; -+ goto free_and_return; - } - } - - process_list: - if (at->family == AF_UNSPEC) -- return GAIH_OKIFUNSPEC | -EAI_NONAME; -+ { -+ result = GAIH_OKIFUNSPEC | -EAI_NONAME; -+ goto free_and_return; -+ } - } - else - { - struct gaih_addrtuple *atr; -- atr = at = __alloca (sizeof (struct gaih_addrtuple)); -+ atr = at = alloca_account (sizeof (struct gaih_addrtuple), alloca_used); - memset (at, '\0', sizeof (struct gaih_addrtuple)); - - if (req->ai_family == AF_UNSPEC) -@@ -932,6 +1101,9 @@ gaih_inet (const char *name, const struc - /* Only the first entry gets the canonical name. */ - if (at2 == at && (req->ai_flags & AI_CANONNAME) != 0) - { -+ char *tmpbuf2 = NULL; -+ bool malloc_tmpbuf2 = false; -+ - if (canon == NULL) - { - /* If the canonical name cannot be determined, use -@@ -952,11 +1124,16 @@ gaih_inet (const char *name, const struc - int rc = __idna_to_unicode_lzlz (canon, &out, idn_flags); - if (rc != IDNA_SUCCESS) - { -+ if (malloc_tmpbuf2) -+ free (tmpbuf2); -+ - if (rc == IDNA_MALLOC_ERROR) -- return -EAI_MEMORY; -- if (rc == IDNA_DLOPEN_ERROR) -- return -EAI_SYSTEM; -- return -EAI_IDN_ENCODE; -+ result = -EAI_MEMORY; -+ else if (rc == IDNA_DLOPEN_ERROR) -+ result = -EAI_SYSTEM; -+ else -+ result = -EAI_IDN_ENCODE; -+ goto free_and_return; - } - /* In case the output string is the same as the input - string no new string has been allocated and we -@@ -970,10 +1147,25 @@ gaih_inet (const char *name, const struc - #ifdef HAVE_LIBIDN - make_copy: - #endif -- canon = strdup (canon); -- if (canon == NULL) -- return -EAI_MEMORY; -+ if (malloc_canonbuf) -+ /* We already allocated the string using malloc. */ -+ malloc_canonbuf = false; -+ else -+ { -+ canon = strdup (canon); -+ if (canon == NULL) -+ { -+ if (malloc_tmpbuf2) -+ free (tmpbuf2); -+ -+ result = -EAI_MEMORY; -+ goto free_and_return; -+ } -+ } - } -+ -+ if (malloc_tmpbuf2) -+ free (tmpbuf2); - } - - family = at2->family; -@@ -999,7 +1191,8 @@ gaih_inet (const char *name, const struc - if (ai == NULL) - { - free ((char *) canon); -- return -EAI_MEMORY; -+ result = -EAI_MEMORY; -+ goto free_and_return; - } - - ai->ai_flags = req->ai_flags; -@@ -1052,7 +1245,18 @@ gaih_inet (const char *name, const struc - at2 = at2->next; - } - } -- return 0; -+ -+ free_and_return: -+ if (malloc_name) -+ free ((char *) name); -+ if (malloc_addrmem) -+ free (addrmem); -+ if (malloc_canonbuf) -+ free (canonbuf); -+ if (malloc_tmpbuf) -+ free (tmpbuf); -+ -+ return result; - } - - diff --git a/src/patches/glibc/glibc-rh797094-2.patch b/src/patches/glibc/glibc-rh797094-2.patch deleted file mode 100644 index 5aa9084..0000000 --- a/src/patches/glibc/glibc-rh797094-2.patch +++ /dev/null @@ -1,862 +0,0 @@ -From: Ulrich Drepper drepper@gmail.com -Date: Mon, 23 May 2011 03:04:16 +0000 (-0400) -Subject: Add a few more alloca size checks -X-Git-Tag: glibc-2.14~41 -X-Git-Url: http://sourceware.org/git/?p=glibc.git;a=commitdiff_plain;h=f2962a71959fd254... - -Add a few more alloca size checks ---- - - 2011-05-22 Ulrich Drepper drepper@gmail.com - - [BZ #12671] - * nis/nss_nis/nis-alias.c (_nss_nis_getaliasbyname_r): Use malloc in - some situations. - * nscd/nscd_getserv_r.c (nscd_getserv_r): Likewise. - * posix/glob.c (glob_in_dir): Take additional parameter alloca_used. - add in in __libc_use_alloca calls. Adjust callers. - (glob): Use malloc in some situations. -diff --git a/nis/nss_nis/nis-alias.c b/nis/nss_nis/nis-alias.c -index 9286e36..cfe4097 100644 ---- a/nis/nss_nis/nis-alias.c -+++ b/nis/nss_nis/nis-alias.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 1996-2002, 2003, 2006 Free Software Foundation, Inc. -+/* Copyright (C) 1996-2002, 2003, 2006, 2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Thorsten Kukuk kukuk@vt.uni-paderborn.de, 1996. - -@@ -142,10 +142,10 @@ internal_nis_getaliasent_r (struct aliasent *alias, char *buffer, - int yperr; - - if (new_start) -- yperr = yp_first (domain, "mail.aliases", &outkey, &keylen, &result, -+ yperr = yp_first (domain, "mail.aliases", &outkey, &keylen, &result, - &len); - else -- yperr = yp_next (domain, "mail.aliases", oldkey, oldkeylen, &outkey, -+ yperr = yp_next (domain, "mail.aliases", oldkey, oldkeylen, &outkey, - &keylen, &result, &len); - - if (__builtin_expect (yperr != YPERR_SUCCESS, 0)) -@@ -153,20 +153,20 @@ internal_nis_getaliasent_r (struct aliasent *alias, char *buffer, - enum nss_status retval = yperr2nss (yperr); - - if (retval == NSS_STATUS_TRYAGAIN) -- *errnop = errno; -- return retval; -- } -+ *errnop = errno; -+ return retval; -+ } - - if (__builtin_expect ((size_t) (len + 1) > buflen, 0)) -- { -+ { - free (result); -- *errnop = ERANGE; -- return NSS_STATUS_TRYAGAIN; -- } -+ *errnop = ERANGE; -+ return NSS_STATUS_TRYAGAIN; -+ } - char *p = strncpy (buffer, result, len); - buffer[len] = '\0'; - while (isspace (*p)) -- ++p; -+ ++p; - free (result); - - parse_res = _nss_nis_parse_aliasent (outkey, p, alias, buffer, -@@ -213,13 +213,25 @@ _nss_nis_getaliasbyname_r (const char *name, struct aliasent *alias, - return NSS_STATUS_UNAVAIL; - } - -- size_t namlen = strlen (name); -- char name2[namlen + 1]; -- - char *domain; - if (__builtin_expect (yp_get_default_domain (&domain), 0)) - return NSS_STATUS_UNAVAIL; - -+ size_t namlen = strlen (name); -+ char *name2; -+ int use_alloca = __libc_use_alloca (namlen + 1); -+ if (use_alloca) -+ name2 = __alloca (namlen + 1); -+ else -+ { -+ name2 = malloc (namlen + 1); -+ if (name2 == NULL) -+ { -+ *errnop = ENOMEM; -+ return NSS_STATUS_TRYAGAIN; -+ } -+ } -+ - /* Convert name to lowercase. */ - size_t i; - for (i = 0; i < namlen; ++i) -@@ -230,6 +242,9 @@ _nss_nis_getaliasbyname_r (const char *name, struct aliasent *alias, - int len; - int yperr = yp_match (domain, "mail.aliases", name2, namlen, &result, &len); - -+ if (!use_alloca) -+ free (name2); -+ - if (__builtin_expect (yperr != YPERR_SUCCESS, 0)) - { - enum nss_status retval = yperr2nss (yperr); -diff --git a/nscd/nscd_getserv_r.c b/nscd/nscd_getserv_r.c -index dce4165..de96a57 100644 ---- a/nscd/nscd_getserv_r.c -+++ b/nscd/nscd_getserv_r.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2007, 2009 Free Software Foundation, Inc. -+/* Copyright (C) 2007, 2009, 2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper drepper@redhat.com, 2007. - -@@ -17,6 +17,7 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -+#include <assert.h> - #include <errno.h> - #include <string.h> - #include <not-cancel.h> -@@ -80,6 +81,7 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, - { - int gc_cycle; - int nretries = 0; -+ size_t alloca_used = 0; - - /* If the mapping is available, try to search there instead of - communicating with the nscd. */ -@@ -88,13 +90,23 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, - &gc_cycle); - size_t protolen = proto == NULL ? 0 : strlen (proto); - size_t keylen = critlen + 1 + protolen + 1; -- char *key = alloca (keylen); -+ int alloca_key = __libc_use_alloca (keylen); -+ char *key; -+ if (alloca_key) -+ key = alloca_account (keylen, alloca_used); -+ else -+ { -+ key = malloc (keylen); -+ if (key == NULL) -+ return -1; -+ } - memcpy (__mempcpy (__mempcpy (key, crit, critlen), - "/", 1), proto ?: "", protolen + 1); - - retry:; - const char *s_name = NULL; - const char *s_proto = NULL; -+ int alloca_aliases_len = 0; - const uint32_t *aliases_len = NULL; - const char *aliases_list = NULL; - int retval = -1; -@@ -136,8 +148,22 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, - if (((uintptr_t) aliases_len & (__alignof__ (*aliases_len) - 1)) - != 0) - { -- uint32_t *tmp = alloca (serv_resp.s_aliases_cnt -- * sizeof (uint32_t)); -+ uint32_t *tmp; -+ alloca_aliases_len -+ = __libc_use_alloca (alloca_used -+ + (serv_resp.s_aliases_cnt -+ * sizeof (uint32_t))); -+ if (alloca_aliases_len) -+ tmp = __alloca (serv_resp.s_aliases_cnt * sizeof (uint32_t)); -+ else -+ { -+ tmp = malloc (serv_resp.s_aliases_cnt * sizeof (uint32_t)); -+ if (tmp == NULL) -+ { -+ retval = ENOMEM; -+ goto out; -+ } -+ } - aliases_len = memcpy (tmp, aliases_len, - serv_resp.s_aliases_cnt - * sizeof (uint32_t)); -@@ -217,8 +243,24 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, - - if (serv_resp.s_aliases_cnt > 0) - { -- aliases_len = alloca (serv_resp.s_aliases_cnt -- * sizeof (uint32_t)); -+ assert (alloca_aliases_len == 0); -+ alloca_aliases_len -+ = __libc_use_alloca (alloca_used -+ + (serv_resp.s_aliases_cnt -+ * sizeof (uint32_t))); -+ if (alloca_aliases_len) -+ aliases_len = alloca (serv_resp.s_aliases_cnt -+ * sizeof (uint32_t)); -+ else -+ { -+ aliases_len = malloc (serv_resp.s_aliases_cnt -+ * sizeof (uint32_t)); -+ if (aliases_len == NULL) -+ { -+ retval = ENOMEM; -+ goto out_close; -+ } -+ } - vec[n].iov_base = (void *) aliases_len; - vec[n].iov_len = serv_resp.s_aliases_cnt * sizeof (uint32_t); - -@@ -329,5 +371,10 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, - goto retry; - } - -+ if (!alloca_aliases_len) -+ free ((void *) aliases_len); -+ if (!alloca_key) -+ free (key); -+ - return retval; - } -diff --git a/posix/glob.c b/posix/glob.c -index 6df083a..79b6e50 100644 ---- a/posix/glob.c -+++ b/posix/glob.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 1991-2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 -+/* Copyright (C) 1991-2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - -@@ -199,7 +199,7 @@ static const char *next_brace_sub (const char *begin, int flags) __THROW; - - static int glob_in_dir (const char *pattern, const char *directory, - int flags, int (*errfunc) (const char *, int), -- glob_t *pglob); -+ glob_t *pglob, size_t alloca_used); - extern int __glob_pattern_type (const char *pattern, int quote) - attribute_hidden; - -@@ -253,13 +253,18 @@ glob (pattern, flags, errfunc, pglob) - glob_t *pglob; - { - const char *filename; -- const char *dirname; -+ char *dirname = NULL; - size_t dirlen; - int status; - size_t oldcount; - int meta; - int dirname_modified; -+ int malloc_dirname = 0; - glob_t dirs; -+ int retval = 0; -+#ifdef _LIBC -+ size_t alloca_used = 0; -+#endif - - if (pattern == NULL || pglob == NULL || (flags & ~__GLOB_FLAGS) != 0) - { -@@ -308,20 +313,26 @@ glob (pattern, flags, errfunc, pglob) - const char *next; - const char *rest; - size_t rest_len; --#ifdef __GNUC__ -- char onealt[strlen (pattern) - 1]; --#else -- char *onealt = (char *) malloc (strlen (pattern) - 1); -- if (onealt == NULL) -+ char *onealt; -+ size_t pattern_len = strlen (pattern) - 1; -+#ifdef _LIBC -+ int alloca_onealt = __libc_use_alloca (alloca_used + pattern_len); -+ if (alloca_onealt) -+ onealt = alloca_account (pattern_len, alloca_used); -+ else -+#endif - { -- if (!(flags & GLOB_APPEND)) -+ onealt = (char *) malloc (pattern_len); -+ if (onealt == NULL) - { -- pglob->gl_pathc = 0; -- pglob->gl_pathv = NULL; -+ if (!(flags & GLOB_APPEND)) -+ { -+ pglob->gl_pathc = 0; -+ pglob->gl_pathv = NULL; -+ } -+ return GLOB_NOSPACE; - } -- return GLOB_NOSPACE; - } --#endif - - /* We know the prefix for all sub-patterns. */ - alt_start = mempcpy (onealt, pattern, begin - pattern); -@@ -332,9 +343,11 @@ glob (pattern, flags, errfunc, pglob) - if (next == NULL) - { - /* It is an illegal expression. */ --#ifndef __GNUC__ -- free (onealt); -+ illegal_brace: -+#ifdef _LIBC -+ if (__builtin_expect (!alloca_onealt, 0)) - #endif -+ free (onealt); - return glob (pattern, flags & ~GLOB_BRACE, errfunc, pglob); - } - -@@ -344,13 +357,8 @@ glob (pattern, flags, errfunc, pglob) - { - rest = next_brace_sub (rest + 1, flags); - if (rest == NULL) -- { -- /* It is an illegal expression. */ --#ifndef __GNUC__ -- free (onealt); --#endif -- return glob (pattern, flags & ~GLOB_BRACE, errfunc, pglob); -- } -+ /* It is an illegal expression. */ -+ goto illegal_brace; - } - /* Please note that we now can be sure the brace expression - is well-formed. */ -@@ -386,9 +394,10 @@ glob (pattern, flags, errfunc, pglob) - /* If we got an error, return it. */ - if (result && result != GLOB_NOMATCH) - { --#ifndef __GNUC__ -- free (onealt); -+#ifdef _LIBC -+ if (__builtin_expect (!alloca_onealt, 0)) - #endif -+ free (onealt); - if (!(flags & GLOB_APPEND)) - { - globfree (pglob); -@@ -406,9 +415,10 @@ glob (pattern, flags, errfunc, pglob) - assert (next != NULL); - } - --#ifndef __GNUC__ -- free (onealt); -+#ifdef _LIBC -+ if (__builtin_expect (!alloca_onealt, 0)) - #endif -+ free (onealt); - - if (pglob->gl_pathc != firstc) - /* We found some entries. */ -@@ -455,7 +465,7 @@ glob (pattern, flags, errfunc, pglob) - case is nothing but a notation for a directory. */ - if ((flags & (GLOB_TILDE|GLOB_TILDE_CHECK)) && pattern[0] == '~') - { -- dirname = pattern; -+ dirname = (char *) pattern; - dirlen = strlen (pattern); - - /* Set FILENAME to NULL as a special flag. This is ugly but -@@ -473,9 +483,9 @@ glob (pattern, flags, errfunc, pglob) - - filename = pattern; - #ifdef _AMIGA -- dirname = ""; -+ dirname = (char *) ""; - #else -- dirname = "."; -+ dirname = (char *) "."; - #endif - dirlen = 0; - } -@@ -485,7 +495,7 @@ glob (pattern, flags, errfunc, pglob) - && (flags & GLOB_NOESCAPE) == 0)) - { - /* "/pattern" or "\/pattern". */ -- dirname = "/"; -+ dirname = (char *) "/"; - dirlen = 1; - ++filename; - } -@@ -511,7 +521,17 @@ glob (pattern, flags, errfunc, pglob) - from "d:/", since "d:" and "d:/" are not the same.*/ - } - #endif -- newp = (char *) __alloca (dirlen + 1); -+#ifdef _LIBC -+ if (__libc_use_alloca (alloca_used + dirlen + 1)) -+ newp = alloca_account (dirlen + 1, alloca_used); -+ else -+#endif -+ { -+ newp = malloc (dirlen + 1); -+ if (newp == NULL) -+ return GLOB_NOSPACE; -+ malloc_dirname = 1; -+ } - *((char *) mempcpy (newp, pattern, dirlen)) = '\0'; - dirname = newp; - ++filename; -@@ -551,7 +571,8 @@ glob (pattern, flags, errfunc, pglob) - oldcount = pglob->gl_pathc + pglob->gl_offs; - goto no_matches; - } -- return val; -+ retval = val; -+ goto out; - } - } - -@@ -563,7 +584,8 @@ glob (pattern, flags, errfunc, pglob) - && (dirname[2] == '\0' || dirname[2] == '/'))) - { - /* Look up home directory. */ -- const char *home_dir = getenv ("HOME"); -+ char *home_dir = getenv ("HOME"); -+ int malloc_home_dir = 0; - # ifdef _AMIGA - if (home_dir == NULL || home_dir[0] == '\0') - home_dir = "SYS:"; -@@ -582,7 +604,7 @@ glob (pattern, flags, errfunc, pglob) - /* `sysconf' does not support _SC_LOGIN_NAME_MAX. Try - a moderate value. */ - buflen = 20; -- name = (char *) __alloca (buflen); -+ name = alloca_account (buflen, alloca_used); - - success = getlogin_r (name, buflen) == 0; - if (success) -@@ -592,6 +614,7 @@ glob (pattern, flags, errfunc, pglob) - long int pwbuflen = GETPW_R_SIZE_MAX (); - char *pwtmpbuf; - struct passwd pwbuf; -+ int malloc_pwtmpbuf = 0; - int save = errno; - - # ifndef _LIBC -@@ -600,7 +623,18 @@ glob (pattern, flags, errfunc, pglob) - Try a moderate value. */ - pwbuflen = 1024; - # endif -- pwtmpbuf = (char *) __alloca (pwbuflen); -+ if (__libc_use_alloca (alloca_used + pwbuflen)) -+ pwtmpbuf = alloca_account (pwbuflen, alloca_used); -+ else -+ { -+ pwtmpbuf = malloc (pwbuflen); -+ if (pwtmpbuf == NULL) -+ { -+ retval = GLOB_NOSPACE; -+ goto out; -+ } -+ malloc_pwtmpbuf = 1; -+ } - - while (getpwnam_r (name, &pwbuf, pwtmpbuf, pwbuflen, &p) - != 0) -@@ -610,46 +644,115 @@ glob (pattern, flags, errfunc, pglob) - p = NULL; - break; - } --# ifdef _LIBC -- pwtmpbuf = extend_alloca (pwtmpbuf, pwbuflen, -+ -+ if (!malloc_pwtmpbuf -+ && __libc_use_alloca (alloca_used -+ + 2 * pwbuflen)) -+ pwtmpbuf = extend_alloca_account (pwtmpbuf, pwbuflen, -+ 2 * pwbuflen, -+ alloca_used); -+ else -+ { -+ char *newp = realloc (malloc_pwtmpbuf -+ ? pwtmpbuf : NULL, - 2 * pwbuflen); --# else -- pwbuflen *= 2; -- pwtmpbuf = (char *) __alloca (pwbuflen); --# endif -+ if (newp == NULL) -+ { -+ if (__builtin_expect (malloc_pwtmpbuf, 0)) -+ free (pwtmpbuf); -+ retval = GLOB_NOSPACE; -+ goto out; -+ } -+ pwtmpbuf = newp; -+ pwbuflen = 2 * pwbuflen; -+ malloc_pwtmpbuf = 1; -+ } - __set_errno (save); - } - # else - p = getpwnam (name); - # endif - if (p != NULL) -- home_dir = p->pw_dir; -+ { -+ if (!malloc_pwtmpbuf) -+ home_dir = p->pw_dir; -+ else -+ { -+ size_t home_dir_len = strlen (p->pw_dir) + 1; -+ if (__libc_use_alloca (alloca_used + home_dir_len)) -+ home_dir = alloca_account (home_dir_len, -+ alloca_used); -+ else -+ { -+ home_dir = malloc (home_dir_len); -+ if (home_dir == NULL) -+ { -+ free (pwtmpbuf); -+ retval = GLOB_NOSPACE; -+ goto out; -+ } -+ malloc_home_dir = 1; -+ } -+ memcpy (home_dir, p->pw_dir, home_dir_len); -+ -+ free (pwtmpbuf); -+ } -+ } - } - } - if (home_dir == NULL || home_dir[0] == '\0') - { - if (flags & GLOB_TILDE_CHECK) -- return GLOB_NOMATCH; -+ { -+ if (__builtin_expect (malloc_home_dir, 0)) -+ free (home_dir); -+ retval = GLOB_NOMATCH; -+ goto out; -+ } - else -- home_dir = "~"; /* No luck. */ -+ home_dir = (char *) "~"; /* No luck. */ - } - # endif /* WINDOWS32 */ - # endif - /* Now construct the full directory. */ - if (dirname[1] == '\0') - { -+ if (__builtin_expect (malloc_dirname, 0)) -+ free (dirname); -+ - dirname = home_dir; - dirlen = strlen (dirname); -+ malloc_dirname = malloc_home_dir; - } - else - { - char *newp; - size_t home_len = strlen (home_dir); -- newp = (char *) __alloca (home_len + dirlen); -+ int use_alloca = __libc_use_alloca (alloca_used -+ + home_len + dirlen); -+ if (use_alloca) -+ newp = alloca_account (home_len + dirlen, alloca_used); -+ else -+ { -+ newp = malloc (home_len + dirlen); -+ if (newp == NULL) -+ { -+ if (__builtin_expect (malloc_home_dir, 0)) -+ free (home_dir); -+ retval = GLOB_NOSPACE; -+ goto out; -+ } -+ } -+ - mempcpy (mempcpy (newp, home_dir, home_len), - &dirname[1], dirlen); -+ -+ if (__builtin_expect (malloc_dirname, 0)) -+ free (dirname); -+ - dirname = newp; - dirlen += home_len - 1; -+ malloc_dirname = !use_alloca; - } - dirname_modified = 1; - } -@@ -657,7 +760,8 @@ glob (pattern, flags, errfunc, pglob) - else - { - char *end_name = strchr (dirname, '/'); -- const char *user_name; -+ char *user_name; -+ int malloc_user_name = 0; - const char *home_dir; - char *unescape = NULL; - -@@ -677,7 +781,18 @@ glob (pattern, flags, errfunc, pglob) - else - { - char *newp; -- newp = (char *) __alloca (end_name - dirname); -+ if (__libc_use_alloca (alloca_used + (end_name - dirname))) -+ newp = alloca_account (end_name - dirname, alloca_used); -+ else -+ { -+ newp = malloc (end_name - dirname); -+ if (newp == NULL) -+ { -+ retval = GLOB_NOSPACE; -+ goto out; -+ } -+ malloc_user_name = 1; -+ } - if (unescape != NULL) - { - char *p = mempcpy (newp, dirname + 1, -@@ -714,6 +829,7 @@ glob (pattern, flags, errfunc, pglob) - # if defined HAVE_GETPWNAM_R || defined _LIBC - long int buflen = GETPW_R_SIZE_MAX (); - char *pwtmpbuf; -+ int malloc_pwtmpbuf = 0; - struct passwd pwbuf; - int save = errno; - -@@ -723,7 +839,21 @@ glob (pattern, flags, errfunc, pglob) - moderate value. */ - buflen = 1024; - # endif -- pwtmpbuf = (char *) __alloca (buflen); -+ if (__libc_use_alloca (alloca_used + buflen)) -+ pwtmpbuf = alloca_account (buflen, alloca_used); -+ else -+ { -+ pwtmpbuf = malloc (buflen); -+ if (pwtmpbuf == NULL) -+ { -+ nomem_getpw: -+ if (__builtin_expect (malloc_user_name, 0)) -+ free (user_name); -+ retval = GLOB_NOSPACE; -+ goto out; -+ } -+ malloc_pwtmpbuf = 1; -+ } - - while (getpwnam_r (user_name, &pwbuf, pwtmpbuf, buflen, &p) != 0) - { -@@ -732,40 +862,77 @@ glob (pattern, flags, errfunc, pglob) - p = NULL; - break; - } --# ifdef _LIBC -- pwtmpbuf = extend_alloca (pwtmpbuf, buflen, 2 * buflen); --# else -- buflen *= 2; -- pwtmpbuf = __alloca (buflen); --# endif -+ if (!malloc_pwtmpbuf -+ && __libc_use_alloca (alloca_used + 2 * buflen)) -+ pwtmpbuf = extend_alloca_account (pwtmpbuf, buflen, -+ 2 * buflen, alloca_used); -+ else -+ { -+ char *newp = realloc (malloc_pwtmpbuf ? pwtmpbuf : NULL, -+ 2 * buflen); -+ if (newp == NULL) -+ { -+ if (__builtin_expect (malloc_pwtmpbuf, 0)) -+ free (pwtmpbuf); -+ goto nomem_getpw; -+ } -+ pwtmpbuf = newp; -+ malloc_pwtmpbuf = 1; -+ } - __set_errno (save); - } - # else - p = getpwnam (user_name); - # endif -+ -+ if (__builtin_expect (malloc_user_name, 0)) -+ free (user_name); -+ -+ /* If we found a home directory use this. */ - if (p != NULL) -- home_dir = p->pw_dir; -+ { -+ size_t home_len = strlen (p->pw_dir); -+ size_t rest_len = end_name == NULL ? 0 : strlen (end_name); -+ -+ if (__builtin_expect (malloc_dirname, 0)) -+ free (dirname); -+ malloc_dirname = 0; -+ -+ if (__libc_use_alloca (alloca_used + home_len + rest_len + 1)) -+ dirname = alloca_account (home_len + rest_len + 1, -+ alloca_used); -+ else -+ { -+ dirname = malloc (home_len + rest_len + 1); -+ if (dirname == NULL) -+ { -+ if (__builtin_expect (malloc_pwtmpbuf, 0)) -+ free (pwtmpbuf); -+ retval = GLOB_NOSPACE; -+ goto out; -+ } -+ malloc_dirname = 1; -+ } -+ *((char *) mempcpy (mempcpy (dirname, p->pw_dir, home_len), -+ end_name, rest_len)) = '\0'; -+ -+ dirlen = home_len + rest_len; -+ dirname_modified = 1; -+ -+ if (__builtin_expect (malloc_pwtmpbuf, 0)) -+ free (pwtmpbuf); -+ } - else -- home_dir = NULL; -+ { -+ if (__builtin_expect (malloc_pwtmpbuf, 0)) -+ free (pwtmpbuf); -+ -+ if (flags & GLOB_TILDE_CHECK) -+ /* We have to regard it as an error if we cannot find the -+ home directory. */ -+ return GLOB_NOMATCH; -+ } - } -- /* If we found a home directory use this. */ -- if (home_dir != NULL) -- { -- char *newp; -- size_t home_len = strlen (home_dir); -- size_t rest_len = end_name == NULL ? 0 : strlen (end_name); -- newp = (char *) __alloca (home_len + rest_len + 1); -- *((char *) mempcpy (mempcpy (newp, home_dir, home_len), -- end_name, rest_len)) = '\0'; -- dirname = newp; -- dirlen = home_len + rest_len; -- dirname_modified = 1; -- } -- else -- if (flags & GLOB_TILDE_CHECK) -- /* We have to regard it as an error if we cannot find the -- home directory. */ -- return GLOB_NOMATCH; - } - # endif /* Not Amiga && not WINDOWS32. */ - } -@@ -899,7 +1066,7 @@ glob (pattern, flags, errfunc, pglob) - status = glob_in_dir (filename, dirs.gl_pathv[i], - ((flags | GLOB_APPEND) - & ~(GLOB_NOCHECK | GLOB_NOMAGIC)), -- errfunc, pglob); -+ errfunc, pglob, alloca_used); - if (status == GLOB_NOMATCH) - /* No matches in this directory. Try the next. */ - continue; -@@ -1000,7 +1167,8 @@ glob (pattern, flags, errfunc, pglob) - } - if (dirname_modified) - flags &= ~(GLOB_NOCHECK | GLOB_NOMAGIC); -- status = glob_in_dir (filename, dirname, flags, errfunc, pglob); -+ status = glob_in_dir (filename, dirname, flags, errfunc, pglob, -+ alloca_used); - if (status != 0) - { - if (status == GLOB_NOMATCH && flags != orig_flags -@@ -1063,7 +1231,11 @@ glob (pattern, flags, errfunc, pglob) - sizeof (char *), collated_compare); - } - -- return 0; -+ out: -+ if (__builtin_expect (malloc_dirname, 0)) -+ free (dirname); -+ -+ return retval; - } - #if defined _LIBC && !defined glob - libc_hidden_def (glob) -@@ -1273,7 +1445,7 @@ link_exists2_p (const char *dir, size_t dirlen, const char *fname, - static int - glob_in_dir (const char *pattern, const char *directory, int flags, - int (*errfunc) (const char *, int), -- glob_t *pglob) -+ glob_t *pglob, size_t alloca_used) - { - size_t dirlen = strlen (directory); - void *stream = NULL; -@@ -1288,11 +1460,12 @@ glob_in_dir (const char *pattern, const char *directory, int flags, - struct globnames *names = &init_names; - struct globnames *names_alloca = &init_names; - size_t nfound = 0; -- size_t allocasize = sizeof (init_names); - size_t cur = 0; - int meta; - int save; - -+ alloca_used += sizeof (init_names); -+ - init_names.next = NULL; - init_names.count = INITIAL_COUNT; - -@@ -1308,20 +1481,36 @@ glob_in_dir (const char *pattern, const char *directory, int flags, - { - /* Since we use the normal file functions we can also use stat() - to verify the file is there. */ -- struct stat st; -- struct_stat64 st64; -+ union -+ { -+ struct stat st; -+ struct_stat64 st64; -+ } ust; - size_t patlen = strlen (pattern); -- char *fullname = (char *) __alloca (dirlen + 1 + patlen + 1); -+ int alloca_fullname = __libc_use_alloca (alloca_used -+ + dirlen + 1 + patlen + 1); -+ char *fullname; -+ if (alloca_fullname) -+ fullname = alloca_account (dirlen + 1 + patlen + 1, alloca_used); -+ else -+ { -+ fullname = malloc (dirlen + 1 + patlen + 1); -+ if (fullname == NULL) -+ return GLOB_NOSPACE; -+ } - - mempcpy (mempcpy (mempcpy (fullname, directory, dirlen), - "/", 1), - pattern, patlen + 1); - if ((__builtin_expect (flags & GLOB_ALTDIRFUNC, 0) -- ? (*pglob->gl_stat) (fullname, &st) -- : __stat64 (fullname, &st64)) == 0) -+ ? (*pglob->gl_stat) (fullname, &ust.st) -+ : __stat64 (fullname, &ust.st64)) == 0) - /* We found this file to be existing. Now tell the rest - of the function to copy this name into the result. */ - flags |= GLOB_NOCHECK; -+ -+ if (__builtin_expect (!alloca_fullname, 0)) -+ free (fullname); - } - else - { -@@ -1409,9 +1598,9 @@ glob_in_dir (const char *pattern, const char *directory, int flags, - size_t size = (sizeof (struct globnames) - + ((count - INITIAL_COUNT) - * sizeof (char *))); -- allocasize += size; -- if (__libc_use_alloca (allocasize)) -- newnames = names_alloca = __alloca (size); -+ if (__libc_use_alloca (alloca_used + size)) -+ newnames = names_alloca -+ = alloca_account (size, alloca_used); - else if ((newnames = malloc (size)) - == NULL) - goto memory_error; diff --git a/src/patches/glibc/glibc-rh804686.patch b/src/patches/glibc/glibc-rh804686.patch deleted file mode 100644 index 292cd84..0000000 --- a/src/patches/glibc/glibc-rh804686.patch +++ /dev/null @@ -1,87 +0,0 @@ ---- a/resolv/res_query.c 2010-05-04 05:27:23.000000000 -0600 -+++ a/resolv/res_query.c 2012-08-03 13:43:10.761506047 -0600 -@@ -122,6 +122,7 @@ __libc_res_nquery(res_state statp, - int *resplen2) - { - HEADER *hp = (HEADER *) answer; -+ HEADER *hp2; - int n, use_malloc = 0; - u_int oflags = statp->_flags; - -@@ -239,26 +240,25 @@ __libc_res_nquery(res_state statp, - /* __libc_res_nsend might have reallocated the buffer. */ - hp = (HEADER *) *answerp; - -- /* We simplify the following tests by assigning HP to HP2. It -- is easy to verify that this is the same as ignoring all -- tests of HP2. */ -- HEADER *hp2 = answerp2 ? (HEADER *) *answerp2 : hp; -- -- if (n < (int) sizeof (HEADER) && answerp2 != NULL -- && *resplen2 > (int) sizeof (HEADER)) -+ /* We simplify the following tests by assigning HP to HP2 or -+ vice versa. It is easy to verify that this is the same as -+ ignoring all tests of HP or HP2. */ -+ if (answerp2 == NULL || *resplen2 < (int) sizeof (HEADER)) - { -- /* Special case of partial answer. */ -- assert (hp != hp2); -- hp = hp2; -+ hp2 = hp; - } -- else if (answerp2 != NULL && *resplen2 < (int) sizeof (HEADER) -- && n > (int) sizeof (HEADER)) -+ else - { -- /* Special case of partial answer. */ -- assert (hp != hp2); -- hp2 = hp; -+ hp2 = (HEADER *) *answerp2; -+ if (n < (int) sizeof (HEADER)) -+ { -+ hp = hp2; -+ } - } - -+ /* Make sure both hp and hp2 are defined */ -+ assert((hp != NULL) && (hp2 != NULL)); -+ - if ((hp->rcode != NOERROR || ntohs(hp->ancount) == 0) - && (hp2->rcode != NOERROR || ntohs(hp2->ancount) == 0)) { - #ifdef DEBUG ---- a/resolv/res_send.c 2012-08-03 13:31:26.622168278 -0600 -+++ a/resolv/res_send.c 2012-08-03 13:43:11.881501862 -0600 -@@ -549,7 +549,7 @@ __libc_res_nsend(res_state statp, const - ns, ansp, ansp2, nansp2, resplen2); - if (n < 0) - return (-1); -- if (n == 0) -+ if (n == 0 && (buf2 == NULL || *resplen2 == 0)) - goto next_ns; - } else { - /* Use datagrams. */ -@@ -559,7 +559,7 @@ __libc_res_nsend(res_state statp, const - ansp2, nansp2, resplen2); - if (n < 0) - return (-1); -- if (n == 0) -+ if (n == 0 && (buf2 == NULL || *resplen2 == 0)) - goto next_ns; - if (v_circuit) - // XXX Check whether both requests failed or -@@ -1275,10 +1275,14 @@ send_dg(res_state statp, - (*thisresplenp > *thisanssizp) - ? *thisanssizp : *thisresplenp); - -- if (recvresp1 || (buf2 != NULL && recvresp2)) -+ if (recvresp1 || (buf2 != NULL && recvresp2)) { -+ *resplen2 = 0; - return resplen; -+ } - if (buf2 != NULL) - { -+ /* No data from the first reply. */ -+ resplen = 0; - /* We are waiting for a possible second reply. */ - if (hp->id == anhp->id) - recvresp1 = 1; diff --git a/src/patches/glibc/glibc-rh804689.patch b/src/patches/glibc/glibc-rh804689.patch deleted file mode 100644 index a96a33f..0000000 --- a/src/patches/glibc/glibc-rh804689.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff -rup a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c ---- a/sysdeps/posix/getaddrinfo.c 2012-03-20 21:31:14.177358937 -0600 -+++ b/sysdeps/posix/getaddrinfo.c 2012-03-21 09:13:17.198290683 -0600 -@@ -560,15 +563,11 @@ gaih_inet (const char *name, const struc - int no_more; - int old_res_options; - -- /* If we do not have to look for IPv4 and IPv6 together, use -- the simple, old functions. */ -- if ((req->ai_family == AF_INET -- || (req->ai_family == AF_INET6 -- && ((req->ai_flags & AI_V4MAPPED) == 0 -- || (req->ai_flags & AI_ALL) == 0))) -- && (req->ai_flags & AI_CANONNAME) == 0) -+ /* If we do not have to look for IPv6 addresses, use -+ the simple, old functions, which do not support -+ IPv6 scope ids. */ -+ if (req->ai_family == AF_INET) - { -- int family = req->ai_family; - size_t tmpbuflen = 512; - assert (tmpbuf == NULL); - tmpbuf = alloca_account (tmpbuflen, alloca_used); diff --git a/src/patches/glibc/glibc-rh806404.patch b/src/patches/glibc/glibc-rh806404.patch deleted file mode 100644 index b78b903..0000000 --- a/src/patches/glibc/glibc-rh806404.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -rup a/nss/getnssent.c b/nss/getnssent.c ---- a/nss/getnssent.c 2004-12-13 14:48:34.000000000 -0700 -+++ b/nss/getnssent.c 2012-03-23 13:46:54.639095121 -0600 -@@ -33,7 +33,7 @@ __nss_getent (getent_r_function func, vo - *buffer = malloc (*buffer_size); - } - -- while (buffer != NULL -+ while (*buffer != NULL - && func (resbuf, *buffer, *buffer_size, &result, h_errnop) == ERANGE - && (h_errnop == NULL || *h_errnop == NETDB_INTERNAL)) - { diff --git a/src/patches/glibc/glibc-rh808337.patch b/src/patches/glibc/glibc-rh808337.patch deleted file mode 100644 index bc20cbc..0000000 --- a/src/patches/glibc/glibc-rh808337.patch +++ /dev/null @@ -1,21 +0,0 @@ -commit 6a5ee1029b3966c5ae9adaaa881e255b2880f511 -Author: Ulrich Drepper drepper@gmail.com -Date: Sun Mar 6 00:01:50 2011 -0500 - - Fix loading first object along a path when tracing. - -diff --git a/elf/dl-load.c b/elf/dl-load.c -index 1ad16a0..f866066 100644 ---- a/elf/dl-load.c -+++ b/elf/dl-load.c -@@ -2111,7 +2111,9 @@ _dl_map_object (struct link_map *loader, const char *name, - { - #ifdef SHARED - // XXX Correct to unconditionally default to namespace 0? -- l = loader ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded; -+ l = (loader -+ ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded -+ ?: &GL(dl_rtld_map)); - #else - l = loader; - #endif diff --git a/src/patches/glibc/glibc-rh808545.patch b/src/patches/glibc/glibc-rh808545.patch deleted file mode 100644 index 9a2cae3..0000000 --- a/src/patches/glibc/glibc-rh808545.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff -rup a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c ---- a/resolv/nss_dns/dns-host.c 2012-04-18 11:17:31.527539744 -0600 -+++ b/resolv/nss_dns/dns-host.c 2012-04-18 11:21:45.441394159 -0600 -@@ -745,6 +745,10 @@ getanswer_r (const querybuf *answer, int - - if ((qtype == T_A || qtype == T_AAAA) && type == T_CNAME) - { -+ /* A CNAME could also have a TTL entry. */ -+ if (ttlp != NULL && ttl < *ttlp) -+ *ttlp = ttl; -+ - if (ap >= &host_data->aliases[MAX_NR_ALIASES - 1]) - continue; - n = dn_expand (answer->buf, end_of_message, cp, tbuf, sizeof tbuf); -@@ -906,7 +910,7 @@ getanswer_r (const querybuf *answer, int - { - register int nn; - -- if (ttlp != NULL) -+ if (ttlp != NULL && ttl < *ttlp) - *ttlp = ttl; - if (canonp != NULL) - *canonp = bp; -@@ -1082,6 +1086,11 @@ gaih_getanswer_slice (const querybuf *an - if (type == T_CNAME) - { - char tbuf[MAXDNAME]; -+ -+ /* A CNAME could also have a TTL entry. */ -+ if (ttlp != NULL && ttl < *ttlp) -+ *ttlp = ttl; -+ - n = dn_expand (answer->buf, end_of_message, cp, tbuf, sizeof tbuf); - if (__builtin_expect (n < 0 || res_hnok (tbuf) == 0, 0)) - { -@@ -1162,7 +1171,7 @@ gaih_getanswer_slice (const querybuf *an - - if (*firstp) - { -- if (ttlp != NULL) -+ if (ttlp != NULL && ttl < *ttlp) - *ttlp = ttl; - - (*pat)->name = canon ?: h_name; diff --git a/src/patches/glibc/glibc-rh809602.patch b/src/patches/glibc/glibc-rh809602.patch deleted file mode 100644 index 81aa63a..0000000 --- a/src/patches/glibc/glibc-rh809602.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff -rup a/nscd/nscd_getserv_r.c b/nscd/nscd_getserv_r.c ---- a/nscd/nscd_getserv_r.c 2012-04-04 16:37:27.873951850 -0600 -+++ b/nscd/nscd_getserv_r.c 2012-04-04 16:37:49.904837348 -0600 -@@ -124,6 +123,7 @@ nscd_getserv_r (const char *crit, size_t - s_name = (char *) (&found->data[0].servdata + 1); - serv_resp = found->data[0].servdata; - s_proto = s_name + serv_resp.s_name_len; -+ alloca_aliases_len = 1; - aliases_len = (uint32_t *) (s_proto + serv_resp.s_proto_len); - aliases_list = ((char *) aliases_len - + serv_resp.s_aliases_cnt * sizeof (uint32_t)); -@@ -154,7 +154,9 @@ nscd_getserv_r (const char *crit, size_t - + (serv_resp.s_aliases_cnt - * sizeof (uint32_t))); - if (alloca_aliases_len) -- tmp = __alloca (serv_resp.s_aliases_cnt * sizeof (uint32_t)); -+ tmp = alloca_account (serv_resp.s_aliases_cnt -+ * sizeof (uint32_t), -+ alloca_used); - else - { - tmp = malloc (serv_resp.s_aliases_cnt * sizeof (uint32_t)); -@@ -249,8 +251,9 @@ nscd_getserv_r (const char *crit, size_t - + (serv_resp.s_aliases_cnt - * sizeof (uint32_t))); - if (alloca_aliases_len) -- aliases_len = alloca (serv_resp.s_aliases_cnt -- * sizeof (uint32_t)); -+ aliases_len = alloca_account (serv_resp.s_aliases_cnt -+ * sizeof (uint32_t), -+ alloca_used); - else - { - aliases_len = malloc (serv_resp.s_aliases_cnt -@@ -368,7 +371,11 @@ nscd_getserv_r (const char *crit, size_t - } - - if (retval != -1) -- goto retry; -+ { -+ if (!alloca_aliases_len) -+ free ((void *) aliases_len); -+ goto retry; -+ } - } - - if (!alloca_aliases_len) diff --git a/src/patches/glibc/glibc-rh809726.patch b/src/patches/glibc/glibc-rh809726.patch deleted file mode 100644 index 0f264c8..0000000 --- a/src/patches/glibc/glibc-rh809726.patch +++ /dev/null @@ -1,89 +0,0 @@ -diff -rup a/localedata/locales/fi_FI b/localedata/locales/fi_FI ---- a/localedata/locales/fi_FI 2012-07-11 14:48:45.994749607 -0600 -+++ b/localedata/locales/fi_FI 2012-07-11 14:50:20.003277477 -0600 -@@ -63,60 +63,65 @@ reorder-after <z> - <a-diaerisis> - <o-diaerisis> - --reorder-after <U005A> -+reorder-after <U007A> - <U00E5> <a-ring>;<BAS>;<MIN>;IGNORE --<U00C5> <a-ring>;<BAS>;<CAP>;IGNORE - <U01FB> <a-ring>;<ACA>;<MIN>;IGNORE --<U01FA> <a-ring>;<ACA>;<CAP>;IGNORE - <U00E4> <a-diaerisis>;<BAS>;<MIN>;IGNORE --<U00C4> <a-diaerisis>;<BAS>;<CAP>;IGNORE - <U00E6> <a-diaerisis>;<REU>;<MIN>;IGNORE --<U00C6> <a-diaerisis>;<REU>;<CAP>;IGNORE - <U01FD> <a-diaerisis>;<U01FD>;<MIN>;IGNORE --<U01FC> <a-diaerisis>;<U01FD>;<CAP>;IGNORE - <U01E3> <a-diaerisis>;<MAC>;<MIN>;IGNORE --<U01E2> <a-diaerisis>;<MAC>;<CAP>;IGNORE - <U00F6> <o-diaerisis>;<BAS>;<MIN>;IGNORE --<U00D6> <o-diaerisis>;<BAS>;<CAP>;IGNORE - <U00F8> <o-diaerisis>;<U00D8>;<MIN>;IGNORE --<U00D8> <o-diaerisis>;<U00D8>;<CAP>;IGNORE - <U01FF> <o-diaerisis>;<U01FF>;<MIN>;IGNORE --<U01FE> <o-diaerisis>;<U01FF>;<CAP>;IGNORE - <U00F5> <o-diaerisis>;<TIL>;<MIN>;IGNORE -+reorder-after <U005A> -+<U00C5> <a-ring>;<BAS>;<CAP>;IGNORE -+<U01FA> <a-ring>;<ACA>;<CAP>;IGNORE -+<U00C4> <a-diaerisis>;<BAS>;<CAP>;IGNORE -+<U00C6> <a-diaerisis>;<REU>;<CAP>;IGNORE -+<U01FC> <a-diaerisis>;<U01FD>;<CAP>;IGNORE -+<U01E2> <a-diaerisis>;<MAC>;<CAP>;IGNORE -+<U00D6> <o-diaerisis>;<BAS>;<CAP>;IGNORE -+<U00D8> <o-diaerisis>;<U00D8>;<CAP>;IGNORE -+<U01FE> <o-diaerisis>;<U01FF>;<CAP>;IGNORE - <U00D5> <o-diaerisis>;<TIL>;<CAP>;IGNORE - --reorder-after <U016A> -+reorder-after <U016B> - <U0076> <v>;<U0056>;<BAS>;<MIN> --<U0056> <v>;<U0056>;<BAS>;<CAP> - <U1E7D> <v>;<U0056>;<TIL>;<MIN> --<U1E7C> <v>;<U0056>;<TIL>;<CAP> - <U0077> <w>;<U0057>;<BAS>;<MIN> --<U0057> <w>;<U0057>;<BAS>;<CAP> - <U1E83> <w>;<U0057>;<ACA>;<MIN> --<U1E82> <w>;<U0057>;<ACA>;<CAP> - <U1E81> <w>;<U0057>;<GRA>;<MIN> --<U1E80> <w>;<U0057>;<GRA>;<CAP> - <U0175> <w>;<U0057>;<CIR>;<MIN> --<U0174> <w>;<U0057>;<CIR>;<CAP> - <U1E85> <w>;<U0057>;<REU>;<MIN> --<U1E84> <w>;<U0057>;<REU>;<CAP> - <U1E87> <w>;<U0057>;<PCT>;<MIN> -+reorder-after <U016A> -+<U0056> <v>;<U0056>;<BAS>;<CAP> -+<U1E7C> <v>;<U0056>;<TIL>;<CAP> -+<U0057> <w>;<U0057>;<BAS>;<CAP> -+<U1E82> <w>;<U0057>;<ACA>;<CAP> -+<U1E80> <w>;<U0057>;<GRA>;<CAP> -+<U0174> <w>;<U0057>;<CIR>;<CAP> -+<U1E84> <w>;<U0057>;<REU>;<CAP> - <U1E86> <w>;<U0057>;<PCT>;<CAP> - - reorder-after <U00FF> - <U00FC> <y>;<DTT>;<MIN>;IGNORE -+reorder-after <U0178> - <U00DC> <y>;<DTT>;<CAP>;IGNORE - - % Present in iso14651_t1, but these definitions seem to have been - % removed from latest iso14651 tables. --reorder-after <U0162> -+reorder-after <U0163> - <U00FE> "<t><h>";"<LIG><LIG>";"<MIN><MIN>";IGNORE -+reorder-after <U0162> - <U00DE> "<t><h>";"<LIG><LIG>";"<CAP><CAP>";IGNORE - - reorder-after <U0064> - <U00F0> <d>;<PCL>;<MIN>;IGNORE --<U00D0> <d>;<PCL>;<CAP>;IGNORE - <U0111> <d>;<OBL>;<MIN>;IGNORE -+reorder-after <U0044> -+<U00D0> <d>;<PCL>;<CAP>;IGNORE - <U0110> <d>;<OBL>;<CAP>;IGNORE - - reorder-end diff --git a/src/patches/glibc/glibc-rh823909.patch b/src/patches/glibc/glibc-rh823909.patch deleted file mode 100644 index ed9c4c9..0000000 --- a/src/patches/glibc/glibc-rh823909.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff --git a/iconvdata/ibm930.c b/iconvdata/ibm930.c -index 25a9be0..6f758eb 100644 ---- a/iconvdata/ibm930.c -+++ b/iconvdata/ibm930.c -@@ -162,7 +162,8 @@ enum - while (ch > rp2->end) \ - ++rp2; \ - \ -- if (__builtin_expect (ch < rp2->start, 0) \ -+ if (__builtin_expect (rp2->start == 0xffff, 0) \ -+ || __builtin_expect (ch < rp2->start, 0) \ - || (res = __ibm930db_to_ucs4[ch + rp2->idx], \ - __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ - { \ -@@ -215,7 +216,8 @@ enum - while (ch > rp2->end) \ - ++rp2; \ - \ -- if (__builtin_expect (ch < rp2->start, 0) \ -+ if (__builtin_expect (rp2->start == 0xffff, 0) \ -+ || __builtin_expect (ch < rp2->start, 0) \ - || (cp = __ucs4_to_ibm930db[ch + rp2->idx], \ - __builtin_expect (cp[0], L'\1')== L'\0' && ch != '\0')) \ - { \ - diff --git a/src/patches/glibc/glibc-rh826149.patch b/src/patches/glibc/glibc-rh826149.patch deleted file mode 100644 index 805572b..0000000 --- a/src/patches/glibc/glibc-rh826149.patch +++ /dev/null @@ -1,80 +0,0 @@ -diff -Nrup a/posix/fnmatch.c b/posix/fnmatch.c ---- a/posix/fnmatch.c 2012-05-25 12:37:26.566678872 -0400 -+++ b/posix/fnmatch.c 2012-05-25 13:08:44.451972286 -0400 -@@ -333,6 +333,7 @@ fnmatch (pattern, string, flags) - # if HANDLE_MULTIBYTE - if (__builtin_expect (MB_CUR_MAX, 1) != 1) - { -+ const char *orig_pattern = pattern; - mbstate_t ps; - size_t n; - const char *p; -@@ -356,10 +357,9 @@ fnmatch (pattern, string, flags) - alloca_used); - n = mbsrtowcs (wpattern, &p, n + 1, &ps); - if (__builtin_expect (n == (size_t) -1, 0)) -- /* Something wrong. -- XXX Do we have to set `errno' to something which mbsrtows hasn't -- already done? */ -- return -1; -+ /* Something wrong: Fall back to single byte matching. */ -+ goto try_singlebyte; -+ - if (p) - { - memset (&ps, '\0', sizeof (ps)); -@@ -371,10 +371,8 @@ fnmatch (pattern, string, flags) - prepare_wpattern: - n = mbsrtowcs (NULL, &pattern, 0, &ps); - if (__builtin_expect (n == (size_t) -1, 0)) -- /* Something wrong. -- XXX Do we have to set `errno' to something which mbsrtows hasn't -- already done? */ -- return -1; -+ /* Something wrong: Fall back to single byte matching. */ -+ goto try_singlebyte; - if (__builtin_expect (n >= (size_t) -1 / sizeof (wchar_t), 0)) - { - __set_errno (ENOMEM); -@@ -401,14 +399,8 @@ fnmatch (pattern, string, flags) - alloca_used); - n = mbsrtowcs (wstring, &p, n + 1, &ps); - if (__builtin_expect (n == (size_t) -1, 0)) -- { -- /* Something wrong. -- XXX Do we have to set `errno' to something which -- mbsrtows hasn't already done? */ -- free_return: -- free (wpattern_malloc); -- return -1; -- } -+ /* Something wrong: Fall back to single byte matching. */ -+ goto free_and_try_singlebyte; - if (p) - { - memset (&ps, '\0', sizeof (ps)); -@@ -420,10 +412,8 @@ fnmatch (pattern, string, flags) - prepare_wstring: - n = mbsrtowcs (NULL, &string, 0, &ps); - if (__builtin_expect (n == (size_t) -1, 0)) -- /* Something wrong. -- XXX Do we have to set `errno' to something which mbsrtows hasn't -- already done? */ -- goto free_return; -+ /* Something wrong: Fall back to single byte matching. */ -+ goto free_and_try_singlebyte; - if (__builtin_expect (n >= (size_t) -1 / sizeof (wchar_t), 0)) - { - free (wpattern_malloc); -@@ -450,6 +440,11 @@ fnmatch (pattern, string, flags) - free (wpattern_malloc); - - return res; -+ -+ free_and_try_singlebyte: -+ free(wpattern_malloc); -+ try_singlebyte: -+ pattern = orig_pattern; - } - # endif /* mbstate_t and mbsrtowcs or _LIBC. */ - diff --git a/src/patches/glibc/glibc-rh827362.patch b/src/patches/glibc/glibc-rh827362.patch deleted file mode 100644 index 7e6d07e..0000000 --- a/src/patches/glibc/glibc-rh827362.patch +++ /dev/null @@ -1,250 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/libio/Makefile glibc-2.12-2-gc4ccff1.fseek/libio/Makefile ---- glibc-2.12-2-gc4ccff1/libio/Makefile 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fseek/libio/Makefile 2012-09-05 17:28:08.699360413 +0530 -@@ -58,7 +58,7 @@ tests = tst_swprintf tst_wprintf tst_sws - tst-memstream1 tst-memstream2 \ - tst-wmemstream1 tst-wmemstream2 \ - bug-memstream1 bug-wmemstream1 \ -- tst-setvbuf1 tst-popen1 tst-fgetwc bug-wsetpos -+ tst-setvbuf1 tst-popen1 tst-fgetwc bug-wsetpos tst-fseek - test-srcs = test-freopen - - all: # Make this the default target; it will be defined in Rules. -diff -pruN glibc-2.12-2-gc4ccff1/libio/tst-fseek.c glibc-2.12-2-gc4ccff1.fseek/libio/tst-fseek.c ---- glibc-2.12-2-gc4ccff1/libio/tst-fseek.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fseek/libio/tst-fseek.c 2012-09-05 17:27:33.606359692 +0530 -@@ -0,0 +1,153 @@ -+/* Verify that fseek/ftell combination works for wide chars. -+ -+ Copyright (C) 2012 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ -+#include <stdio.h> -+#include <stdlib.h> -+#include <locale.h> -+#include <errno.h> -+#include <wchar.h> -+#include <unistd.h> -+#include <string.h> -+ -+/* Defined in test-skeleton.c. */ -+static int create_temp_file (const char *base, char **filename); -+ -+ -+static int -+do_seek_end (FILE *fp) -+{ -+ long save; -+ -+ if (fp == NULL) -+ { -+ printf ("do_seek_end: fopen: %s\n", strerror (errno)); -+ return 1; -+ } -+ -+ if (fputws (L"abc\n", fp) == -1) -+ { -+ printf ("do_seek_end: fputws: %s\n", strerror (errno)); -+ return 1; -+ } -+ -+ save = ftell (fp); -+ rewind (fp); -+ -+ if (fseek (fp, 0, SEEK_END) == -1) -+ { -+ printf ("do_seek_end: fseek: %s\n", strerror (errno)); -+ return 1; -+ } -+ -+ if (save != ftell (fp)) -+ { -+ printf ("save = %ld, ftell = %ld\n", save, ftell (fp)); -+ return 1; -+ } -+ -+ return 0; -+} -+ -+int -+do_seek_set (FILE *fp) -+{ -+ long save; -+ -+ if (fputws (L"abc\n", fp) == -1) -+ { -+ printf ("seek_set: fputws: %s\n", strerror (errno)); -+ return 1; -+ } -+ -+ save = ftell (fp); -+ -+ if (fputws (L"xyz\n", fp) == -1) -+ { -+ printf ("seek_set: fputws: %s\n", strerror (errno)); -+ return 1; -+ } -+ -+ if (fseek (fp, save, SEEK_SET) == -1) -+ { -+ printf ("seek_set: fseek: %s\n", strerror (errno)); -+ return 1; -+ } -+ -+ if (save != ftell (fp)) -+ { -+ printf ("save = %ld, ftell = %ld\n", save, ftell (fp)); -+ return 1; -+ } -+ -+ return 0; -+} -+ -+static int -+do_test (void) -+{ -+ if (setlocale (LC_ALL, "en_US.utf8") == NULL) -+ { -+ printf ("Cannot set en_US.utf8 locale.\n"); -+ exit (1); -+ } -+ -+ int ret = 0; -+ char *filename; -+ int fd = create_temp_file ("tst-fseek.out", &filename); -+ -+ if (fd == -1) -+ return 1; -+ -+ FILE *fp = fdopen (fd, "w+"); -+ if (fp == NULL) -+ { -+ printf ("seek_set: fopen: %s\n", strerror (errno)); -+ close (fd); -+ return 1; -+ } -+ -+ if (do_seek_set (fp)) -+ { -+ printf ("SEEK_SET test failed\n"); -+ ret = 1; -+ } -+ -+ /* Reopen the file. */ -+ fclose (fp); -+ fp = fopen (filename, "w+"); -+ if (fp == NULL) -+ { -+ printf ("seek_end: fopen: %s\n", strerror (errno)); -+ return 1; -+ } -+ -+ if (do_seek_end (fp)) -+ { -+ printf ("SEEK_END test failed\n"); -+ ret = 1; -+ } -+ -+ fclose (fp); -+ -+ return ret; -+} -+ -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff -pruN glibc-2.12-2-gc4ccff1/libio/wfileops.c glibc-2.12-2-gc4ccff1.fseek/libio/wfileops.c ---- glibc-2.12-2-gc4ccff1/libio/wfileops.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fseek/libio/wfileops.c 2012-09-05 17:27:33.608359685 +0530 -@@ -547,6 +547,55 @@ _IO_wfile_sync (fp) - } - INTDEF(_IO_wfile_sync) - -+/* Adjust the internal buffer pointers to reflect the state in the external -+ buffer. The content between fp->_IO_read_base and fp->_IO_read_ptr is -+ assumed to be converted and available in the range -+ fp->_wide_data->_IO_read_base and fp->_wide_data->_IO_read_end. */ -+static inline int -+adjust_wide_data (_IO_FILE *fp, bool do_convert) -+{ -+ struct _IO_codecvt *cv = fp->_codecvt; -+ -+ int clen = (*cv->__codecvt_do_encoding) (cv); -+ -+ /* Take the easy way out for constant length encodings if we don't need to -+ convert. */ -+ if (!do_convert && clen > 0) -+ { -+ fp->_wide_data->_IO_read_end += ((fp->_IO_read_ptr - fp->_IO_read_base) -+ / clen); -+ goto done; -+ } -+ -+ enum __codecvt_result status; -+ const char *read_stop = (const char *) fp->_IO_read_base; -+ do -+ { -+ -+ fp->_wide_data->_IO_last_state = fp->_wide_data->_IO_state; -+ status = (*cv->__codecvt_do_in) (cv, &fp->_wide_data->_IO_state, -+ fp->_IO_read_base, fp->_IO_read_ptr, -+ &read_stop, -+ fp->_wide_data->_IO_read_base, -+ fp->_wide_data->_IO_buf_end, -+ &fp->_wide_data->_IO_read_end); -+ -+ /* Should we return EILSEQ? */ -+ if (__builtin_expect (status == __codecvt_error, 0)) -+ { -+ fp->_flags |= _IO_ERR_SEEN; -+ return -1; -+ } -+ } -+ while (__builtin_expect (status == __codecvt_partial, 0)); -+ -+done: -+ /* Now seek to the end of the read buffer. */ -+ fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_read_end; -+ -+ return 0; -+} -+ - _IO_off64_t - _IO_wfile_seekoff (fp, offset, dir, mode) - _IO_FILE *fp; -@@ -695,6 +744,10 @@ _IO_wfile_seekoff (fp, offset, dir, mode - fp->_wide_data->_IO_buf_base); - _IO_wsetp (fp, fp->_wide_data->_IO_buf_base, - fp->_wide_data->_IO_buf_base); -+ -+ if (adjust_wide_data (fp, false)) -+ goto dumb; -+ - _IO_mask_flags (fp, 0, _IO_EOF_SEEN); - goto resync; - } -@@ -735,6 +788,10 @@ _IO_wfile_seekoff (fp, offset, dir, mode - _IO_wsetg (fp, fp->_wide_data->_IO_buf_base, - fp->_wide_data->_IO_buf_base, fp->_wide_data->_IO_buf_base); - _IO_wsetp (fp, fp->_wide_data->_IO_buf_base, fp->_wide_data->_IO_buf_base); -+ -+ if (adjust_wide_data (fp, true)) -+ goto dumb; -+ - fp->_offset = result + count; - _IO_mask_flags (fp, 0, _IO_EOF_SEEN); - return offset; diff --git a/src/patches/glibc/glibc-rh830127.patch b/src/patches/glibc/glibc-rh830127.patch deleted file mode 100644 index 06dea73..0000000 --- a/src/patches/glibc/glibc-rh830127.patch +++ /dev/null @@ -1,403 +0,0 @@ -diff -Nrup a/stdio-common/bug22.c b/stdio-common/bug22.c ---- a/stdio-common/bug22.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/stdio-common/bug22.c 2012-08-03 13:56:40.887829210 -0600 -@@ -1,12 +1,22 @@ - /* BZ #5424 */ - #include <stdio.h> -+#include <errno.h> - -+/* INT_MAX + 1 */ - #define N 2147483648 - -+/* (INT_MAX / 2) + 2 */ -+#define N2 1073741825 -+ -+/* INT_MAX - 3 */ -+#define N3 2147483644 -+ - #define STRINGIFY(S) #S - #define MAKE_STR(S) STRINGIFY(S) - - #define SN MAKE_STR(N) -+#define SN2 MAKE_STR(N2) -+#define SN3 MAKE_STR(N3) - - static int - do_test (void) -@@ -20,13 +30,27 @@ do_test (void) - return 1; - } - -- ret = fprintf (fp, "%" SN "d%" SN "d", 1, 1); -+ ret = fprintf (fp, "%" SN "d", 1); -+ printf ("ret = %d\n", ret); -+ if (ret != -1 || errno != EOVERFLOW) -+ return 1; -+ -+ ret = fprintf (fp, "%." SN "d", 1); -+ printf ("ret = %d\n", ret); -+ if (ret != -1 || errno != EOVERFLOW) -+ return 1; -+ -+ ret = fprintf (fp, "%." SN3 "d", 1); -+ printf ("ret = %d\n", ret); -+ if (ret != -1 || errno != EOVERFLOW) -+ return 1; - -+ ret = fprintf (fp, "%" SN2 "d%" SN2 "d", 1, 1); - printf ("ret = %d\n", ret); - -- return ret != -1; -+ return ret != -1 || errno != EOVERFLOW; - } - --#define TIMEOUT 30 -+#define TIMEOUT 60 - #define TEST_FUNCTION do_test () - #include "../test-skeleton.c" -diff -Nrup a/stdio-common/printf-parse.h b/stdio-common/printf-parse.h ---- a/stdio-common/printf-parse.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/stdio-common/printf-parse.h 2012-08-03 13:57:31.932638761 -0600 -@@ -14,9 +14,8 @@ - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ - - #include <printf.h> - #include <stdint.h> -@@ -69,16 +68,27 @@ union printf_arg - #ifndef DONT_NEED_READ_INT - /* Read a simple integer from a string and update the string pointer. - It is assumed that the first character is a digit. */ --static unsigned int -+static int - read_int (const UCHAR_T * *pstr) - { -- unsigned int retval = **pstr - L_('0'); -+ int retval = **pstr - L_('0'); - - while (ISDIGIT (*++(*pstr))) -- { -- retval *= 10; -- retval += **pstr - L_('0'); -- } -+ if (retval >= 0) -+ { -+ if (INT_MAX / 10 < retval) -+ retval = -1; -+ else -+ { -+ int digit = **pstr - L_('0'); -+ -+ retval *= 10; -+ if (INT_MAX - digit < retval) -+ retval = -1; -+ else -+ retval += digit; -+ } -+ } - - return retval; - } -diff -Nrup a/stdio-common/printf-parsemb.c b/stdio-common/printf-parsemb.c ---- a/stdio-common/printf-parsemb.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/stdio-common/printf-parsemb.c 2012-08-03 13:58:44.683366361 -0600 -@@ -13,9 +13,8 @@ - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ - - #include <ctype.h> - #include <limits.h> -@@ -88,12 +87,15 @@ __parse_one_specmb (const UCHAR_T *forma - - n = read_int (&format); - -- if (n > 0 && *format == L_('$')) -+ if (n != 0 && *format == L_('$')) - /* Is positional parameter. */ - { - ++format; /* Skip the '$'. */ -- spec->data_arg = n - 1; -- *max_ref_arg = MAX (*max_ref_arg, n); -+ if (n != -1) -+ { -+ spec->data_arg = n - 1; -+ *max_ref_arg = MAX (*max_ref_arg, n); -+ } - } - else - /* Oops; that was actually the width and/or 0 padding flag. -@@ -161,10 +163,13 @@ __parse_one_specmb (const UCHAR_T *forma - /* The width argument might be found in a positional parameter. */ - n = read_int (&format); - -- if (n > 0 && *format == L_('$')) -+ if (n != 0 && *format == L_('$')) - { -- spec->width_arg = n - 1; -- *max_ref_arg = MAX (*max_ref_arg, n); -+ if (n != -1) -+ { -+ spec->width_arg = n - 1; -+ *max_ref_arg = MAX (*max_ref_arg, n); -+ } - ++format; /* Skip '$'. */ - } - } -@@ -178,9 +183,13 @@ __parse_one_specmb (const UCHAR_T *forma - } - } - else if (ISDIGIT (*format)) -- /* Constant width specification. */ -- spec->info.width = read_int (&format); -+ { -+ int n = read_int (&format); - -+ /* Constant width specification. */ -+ if (n != -1) -+ spec->info.width = n; -+ } - /* Get the precision. */ - spec->prec_arg = -1; - /* -1 means none given; 0 means explicit 0. */ -@@ -197,10 +206,13 @@ __parse_one_specmb (const UCHAR_T *forma - { - n = read_int (&format); - -- if (n > 0 && *format == L_('$')) -+ if (n != 0 && *format == L_('$')) - { -- spec->prec_arg = n - 1; -- *max_ref_arg = MAX (*max_ref_arg, n); -+ if (n != -1) -+ { -+ spec->prec_arg = n - 1; -+ *max_ref_arg = MAX (*max_ref_arg, n); -+ } - ++format; - } - } -@@ -214,7 +226,12 @@ __parse_one_specmb (const UCHAR_T *forma - } - } - else if (ISDIGIT (*format)) -- spec->info.prec = read_int (&format); -+ { -+ int n = read_int (&format); -+ -+ if (n != -1) -+ spec->info.prec = n; -+ } - else - /* "%.?" is treated like "%.0?". */ - spec->info.prec = 0; -@@ -295,9 +312,9 @@ __parse_one_specmb (const UCHAR_T *forma - /* We don't try to get the types for all arguments if the format - uses more than one. The normal case is covered though. If - the call returns -1 we continue with the normal specifiers. */ -- || (spec->ndata_args = (*__printf_arginfo_table[spec->info.spec]) -- (&spec->info, 1, &spec->data_arg_type, -- &spec->size)) < 0) -+ || (int) (spec->ndata_args = (*__printf_arginfo_table[spec->info.spec]) -+ (&spec->info, 1, &spec->data_arg_type, -+ &spec->size)) < 0) - { - /* Find the data argument types of a built-in spec. */ - spec->ndata_args = 1; -diff -Nrup a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c ---- a/stdio-common/vfprintf.c 2012-08-03 13:31:26.605168350 -0600 -+++ b/stdio-common/vfprintf.c 2012-08-03 14:09:26.836725512 -0600 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1991-2008, 2009 Free Software Foundation, Inc. -+/* Copyright (C) 1991-2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -12,9 +12,8 @@ - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ - - #include <ctype.h> - #include <limits.h> -@@ -67,10 +66,10 @@ - do { \ - unsigned int _val = val; \ - assert ((unsigned int) done < (unsigned int) INT_MAX); \ -- if (__builtin_expect ((unsigned int) INT_MAX - (unsigned int) done \ -- < _val, 0)) \ -+ if (__builtin_expect (INT_MAX - done < _val, 0)) \ - { \ - done = -1; \ -+ __set_errno (EOVERFLOW); \ - goto all_done; \ - } \ - done += _val; \ -@@ -141,12 +140,17 @@ - do \ - { \ - assert ((size_t) done <= (size_t) INT_MAX); \ -- if ((size_t) PUT (s, (String), (Len)) != (size_t) (Len) \ -- || (size_t) INT_MAX - (size_t) done < (size_t) (Len)) \ -+ if ((size_t) PUT (s, (String), (Len)) != (size_t) (Len)) \ - { \ - done = -1; \ - goto all_done; \ - } \ -+ if (__builtin_expect (INT_MAX - done < (Len), 0)) \ -+ { \ -+ done = -1; \ -+ __set_errno (EOVERFLOW); \ -+ goto all_done; \ -+ } \ - done += (Len); \ - } \ - while (0) -@@ -1435,10 +1439,21 @@ vfprintf (FILE *s, const CHAR_T *format, - const UCHAR_T *tmp; /* Temporary value. */ - - tmp = ++f; -- if (ISDIGIT (*tmp) && read_int (&tmp) && *tmp == L_('$')) -- /* The width comes from a positional parameter. */ -- goto do_positional; -+ if (ISDIGIT (*tmp)) -+ { -+ int pos = read_int (&tmp); - -+ if (pos == -1) -+ { -+ __set_errno (EOVERFLOW); -+ done = -1; -+ goto all_done; -+ } -+ -+ if (pos && *tmp == L_('$')) -+ /* The width comes from a positional parameter. */ -+ goto do_positional; -+ } - width = va_arg (ap, int); - - /* Negative width means left justified. */ -@@ -1449,9 +1464,9 @@ vfprintf (FILE *s, const CHAR_T *format, - left = 1; - } - -- if (__builtin_expect (width >= (size_t) -1 / sizeof (CHAR_T) - 32, 0)) -+ if (__builtin_expect (width >= INT_MAX / sizeof (CHAR_T) - 32, 0)) - { -- __set_errno (ERANGE); -+ __set_errno (EOVERFLOW); - done = -1; - goto all_done; - } -@@ -1481,9 +1496,10 @@ vfprintf (FILE *s, const CHAR_T *format, - LABEL (width): - width = read_int (&f); - -- if (__builtin_expect (width >= (size_t) -1 / sizeof (CHAR_T) - 32, 0)) -+ if (__builtin_expect (width == -1 -+ || width >= INT_MAX / sizeof (CHAR_T) - 32, 0)) - { -- __set_errno (ERANGE); -+ __set_errno (EOVERFLOW); - done = -1; - goto all_done; - } -@@ -1518,10 +1534,21 @@ vfprintf (FILE *s, const CHAR_T *format, - const UCHAR_T *tmp; /* Temporary value. */ - - tmp = ++f; -- if (ISDIGIT (*tmp) && read_int (&tmp) > 0 && *tmp == L_('$')) -- /* The precision comes from a positional parameter. */ -- goto do_positional; -+ if (ISDIGIT (*tmp)) -+ { -+ int pos = read_int (&tmp); -+ -+ if (pos == -1) -+ { -+ __set_errno (EOVERFLOW); -+ done = -1; -+ goto all_done; -+ } - -+ if (pos && *tmp == L_('$')) -+ /* The precision comes from a positional parameter. */ -+ goto do_positional; -+ } - prec = va_arg (ap, int); - - /* If the precision is negative the precision is omitted. */ -@@ -1529,15 +1556,26 @@ vfprintf (FILE *s, const CHAR_T *format, - prec = -1; - } - else if (ISDIGIT (*f)) -- prec = read_int (&f); -+ { -+ prec = read_int (&f); -+ -+ /* The precision was specified in this case as an extremely -+ large positive value. */ -+ if (prec == -1) -+ { -+ __set_errno (EOVERFLOW); -+ done = -1; -+ goto all_done; -+ } -+ } - else - prec = 0; - if (prec > width - && prec > sizeof (work_buffer) / sizeof (work_buffer[0]) - 32) - { -- if (__builtin_expect (prec >= (size_t) -1 / sizeof (CHAR_T) - 32, 0)) -+ if (__builtin_expect (prec >= INT_MAX / sizeof (CHAR_T) - 32, 0)) - { -- __set_errno (ERANGE); -+ __set_errno (EOVERFLOW); - done = -1; - goto all_done; - } -@@ -1722,13 +1760,13 @@ do_positional: - nargs = MAX (nargs, max_ref_arg); - /* Calculate total size needed to represent a single argument across - all three argument-related arrays. */ -- bytes_per_arg = sizeof (*args_value) + sizeof (*args_size) -- + sizeof (*args_type); -+ bytes_per_arg = (sizeof (*args_value) + sizeof (*args_size) -+ + sizeof (*args_type)); - - /* Check for potential integer overflow. */ -- if (__builtin_expect (nargs > SIZE_MAX / bytes_per_arg, 0)) -+ if (__builtin_expect (nargs > INT_MAX / bytes_per_arg, 0)) - { -- __set_errno (ERANGE); -+ __set_errno (EOVERFLOW); - done = -1; - goto all_done; - } -@@ -1746,6 +1784,8 @@ do_positional: - } - } - -+ /* Set up the remaining two arrays to each point past the end of the -+ prior array, since space for all three has been allocated now. */ - args_size = &args_value[nargs].pa_int; - args_type = &args_size[nargs]; - memset (args_type, s->_flags2 & _IO_FLAGS2_FORTIFY ? '\xff' : '\0', diff --git a/src/patches/glibc/glibc-rh832516.patch b/src/patches/glibc/glibc-rh832516.patch deleted file mode 100644 index 476af4b..0000000 --- a/src/patches/glibc/glibc-rh832516.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -Nrup a/locale/loadlocale.c b/locale/loadlocale.c ---- a/locale/loadlocale.c 2010-05-04 07:27:23.000000000 -0400 -+++ b/locale/loadlocale.c 2012-08-05 17:19:47.761384155 -0400 -@@ -170,7 +170,6 @@ _nl_load_locale (struct loaded_l10nfile - int save_err; - int alloc = ld_mapped; - -- file->decided = 1; - file->data = NULL; - - fd = open_not_cancel_2 (file->filename, O_RDONLY); -@@ -279,6 +278,7 @@ _nl_load_locale (struct loaded_l10nfile - newdata->alloc = alloc; - - file->data = newdata; -+ file->decided = 1; - } - - void diff --git a/src/patches/glibc/glibc-rh832694.patch b/src/patches/glibc/glibc-rh832694.patch deleted file mode 100644 index 249afb5..0000000 --- a/src/patches/glibc/glibc-rh832694.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/sysdeps/gnu/errlist.c b/sysdeps/gnu/errlist.c -index e3d2faf..5437ff8 100644 ---- a/sysdeps/gnu/errlist.c -+++ b/sysdeps/gnu/errlist.c -@@ -780,11 +780,12 @@ TRANS The user's disk quota was exceeded. */ - #endif - #ifdef ESTALE - /* --TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --TRANS system which is due to file system rearrangements on the server host. --TRANS Repairing this condition usually requires unmounting and remounting --TRANS the NFS file system on the local host. */ -- [ERR_REMAP (ESTALE)] = N_("Stale NFS file handle"), -+TRANS Stale file handle. This indicates an internal confusion in the -+TRANS file system which is due to file system rearrangements on the server host -+TRANS for NFS filesystems or corruption in other filesystems. -+TRANS Repairing this condition usually requires unmounting, possibly -+TRANS repairing and remounting the file system. */ -+ [ERR_REMAP (ESTALE)] = N_("Stale file handle"), - # if ESTALE > ERR_MAX - # undef ERR_MAX - # define ERR_MAX ESTALE diff --git a/src/patches/glibc/glibc-rh833717.patch b/src/patches/glibc/glibc-rh833717.patch deleted file mode 100644 index e44573c..0000000 --- a/src/patches/glibc/glibc-rh833717.patch +++ /dev/null @@ -1,45265 +0,0 @@ -diff -Nrup a/stdio-common/Makefile b/stdio-common/Makefile ---- a/stdio-common/Makefile 2012-05-23 14:54:54.670443298 -0600 -+++ b/stdio-common/Makefile 2012-05-22 13:47:51.000000000 -0600 -@@ -60,7 +60,7 @@ tests := tstscanf test_rdwr test-popen t - tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \ - tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \ - bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \ -- scanf16 scanf17 tst-setvbuf1 bug-vfprintf-nargs -+ scanf16 scanf17 tst-setvbuf1 bug-vfprintf-nargs bug23 bug23-2 bug23-3 - - test-srcs = tst-unbputc tst-printf - -diff -Nrup a/stdio-common/bug23-2.c b/stdio-common/bug23-2.c ---- a/stdio-common/bug23-2.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/stdio-common/bug23-2.c 2012-05-24 07:12:55.331644716 -0600 -@@ -0,0 +1,70 @@ -+#include <stdio.h> -+#include <string.h> -+#include <stdlib.h> -+ -+static const char expected[] = "\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; -+ -+static int -+do_test (void) -+{ -+ char *buf = malloc (strlen (expected) + 1); -+ snprintf (buf, strlen (expected) + 1, -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", -+ "a", "b", "c", "d", 5); -+ return strcmp (buf, expected) != 0; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff -Nrup a/stdio-common/bug23-3.c b/stdio-common/bug23-3.c ---- a/stdio-common/bug23-3.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/stdio-common/bug23-3.c 2012-05-24 07:13:26.948480695 -0600 -@@ -0,0 +1,45076 @@ -+#include <stdio.h> -+#include <string.h> -+#include <stdlib.h> -+ -+static const char expected[] = "\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; -+ -+ -+ -+int -+do_test (void) -+{ -+ char *buf = malloc (strlen (expected) + 1); -+ snprintf (buf, strlen (expected) + 1, -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", -+ "a", "b", "c", "d", 5); -+ return (strcmp (buf, expected) != 0); -+} -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -+ -diff -Nrup a/stdio-common/bug23.c b/stdio-common/bug23.c ---- a/stdio-common/bug23.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/stdio-common/bug23.c 2012-05-24 07:12:27.636788393 -0600 -@@ -0,0 +1,22 @@ -+#include <stdio.h> -+#include <string.h> -+#include <stdlib.h> -+ -+static const char expected[] = "\ -+\n\ -+a\n\ -+abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; -+ -+static int -+do_test (void) -+{ -+ char *buf = malloc (strlen (expected) + 1); -+ snprintf (buf, strlen (expected) + 1, -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", -+ "a", "b", "c", "d", 5); -+ return strcmp (buf, expected) != 0; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff -Nrup a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c ---- a/stdio-common/vfprintf.c 2012-05-23 14:54:54.689443199 -0600 -+++ b/stdio-common/vfprintf.c 2012-05-23 23:16:55.376155638 -0600 -@@ -238,6 +238,12 @@ vfprintf (FILE *s, const CHAR_T *format, - /* For the argument descriptions, which may be allocated on the heap. */ - void *args_malloced = NULL; - -+ /* For positional argument handling. */ -+ struct printf_spec *specs; -+ -+ /* Track if we malloced the SPECS array and thus must free it. */ -+ bool specs_malloced = false; -+ - /* This table maps a character into a number representing a - class. In each step there is a destination label for each - class. */ -@@ -1638,10 +1644,10 @@ do_positional: - /* Array with information about the needed arguments. This has to - be dynamically extensible. */ - size_t nspecs = 0; -- size_t nspecs_max = 32; /* A more or less arbitrary start value. */ -- struct printf_spec *specs -- = alloca (nspecs_max * sizeof (struct printf_spec)); -+ /* A more or less arbitrary start value. */ -+ size_t nspecs_size = 32 * sizeof (struct printf_spec); - -+ specs = alloca (nspecs_size); - /* The number of arguments the format string requests. This will - determine the size of the array needed to store the argument - attributes. */ -@@ -1678,14 +1684,30 @@ do_positional: - - for (f = lead_str_end; *f != L_('\0'); f = specs[nspecs++].next_fmt) - { -- if (nspecs >= nspecs_max) -+ if (nspecs * sizeof (*specs) >= nspecs_size) - { - /* Extend the array of format specifiers. */ - struct printf_spec *old = specs; -- specs = extend_alloca (specs, nspecs_max, 2 * nspecs_max); -+ if (__libc_use_alloca (2 * nspecs_size)) -+ specs = extend_alloca (specs, nspecs_size, 2 * nspecs_size); -+ else -+ { -+ nspecs_size *= 2; -+ specs = malloc (nspecs_size); -+ } -+ - - /* Copy the old array's elements to the new space. */ -- memmove (specs, old, nspecs * sizeof (struct printf_spec)); -+ memmove (specs, old, nspecs * sizeof (*specs)); -+ -+ /* If we had previously malloc'd space for SPECS, then -+ release it after the copy is complete. */ -+ if (specs_malloced) -+ free (old); -+ -+ /* Now set SPECS_MALLOCED if needed. */ -+ if (!__libc_use_alloca (nspecs_size)) -+ specs_malloced = true; - } - - /* Parse the format specifier. */ -@@ -1998,6 +2020,8 @@ do_positional: - } - - all_done: -+ if (specs_malloced) -+ free (specs); - free (args_malloced); - free (workstart); - /* Unlock the stream. */ diff --git a/src/patches/glibc/glibc-rh834386-2.patch b/src/patches/glibc/glibc-rh834386-2.patch deleted file mode 100644 index ad895c7..0000000 --- a/src/patches/glibc/glibc-rh834386-2.patch +++ /dev/null @@ -1,107 +0,0 @@ -2013-05-03 Carlos O'Donell <carlos at redhat.com> - - * intl/dcigettext.c (DCIGETTEXT): Skip translating if _nl_find_msg returns -1. - (_nl_find_msg): Return -1 if recursive call returned -1. If newmem is null - return -1. - * intl/loadmsgcat.c (_nl_load_domain): If _nl_find_msg returns -1 abort - loading the domain. - -diff -Nrup a/intl/dcigettext.c b/intl/dcigettext.c ---- a/intl/dcigettext.c 2010-05-04 07:27:23.000000000 -0400 -+++ b/intl/dcigettext.c 2013-08-01 00:11:54.616363264 -0400 -@@ -640,6 +640,11 @@ DCIGETTEXT (domainname, msgid1, msgid2, - retval = _nl_find_msg (domain->successor[cnt], binding, - msgid1, 1, &retlen); - -+ /* Resource problems are not fatal, instead we return no -+ translation. */ -+ if (__builtin_expect (retval == (char *) -1, 0)) -+ goto no_translation; -+ - if (retval != NULL) - { - domain = domain->successor[cnt]; -@@ -943,6 +948,11 @@ _nl_find_msg (domain_file, domainbinding - nullentry = - _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen); - -+ /* Resource problems are fatal. If we continue onwards we will -+ only attempt to calloc a new conv_tab and fail later. */ -+ if (__builtin_expect (nullentry == (char *) -1, 0)) -+ return (char *) -1; -+ - if (nullentry != NULL) - { - const char *charsetstr; -@@ -1156,7 +1166,7 @@ _nl_find_msg (domain_file, domainbinding - freemem_size); - # ifdef _LIBC - if (newmem != NULL) -- transmem_list = transmem_list->next; -+ transmem_list = newmem; - else - { - struct transmem_list *old = transmem_list; -@@ -1171,6 +1181,16 @@ _nl_find_msg (domain_file, domainbinding - malloc_count = 1; - freemem_size = INITIAL_BLOCK_SIZE; - newmem = (transmem_block_t *) malloc (freemem_size); -+# ifdef _LIBC -+ if (newmem != NULL) -+ { -+ /* Add the block to the list of blocks we have to free -+ at some point. */ -+ newmem->next = transmem_list; -+ transmem_list = newmem; -+ } -+ /* Fall through and return -1. */ -+# endif - } - if (__builtin_expect (newmem == NULL, 0)) - { -@@ -1181,11 +1201,6 @@ _nl_find_msg (domain_file, domainbinding - } - - # ifdef _LIBC -- /* Add the block to the list of blocks we have to free -- at some point. */ -- newmem->next = transmem_list; -- transmem_list = newmem; -- - freemem = (unsigned char *) newmem->data; - freemem_size -= offsetof (struct transmem_list, data); - # else -@@ -1402,7 +1417,7 @@ get_output_charset (domainbinding) - return _NL_CURRENT (LC_CTYPE, CODESET); - # else - # if HAVE_ICONV -- extern const char *locale_charset PARAMS ((void); -+ extern const char *locale_charset PARAMS ((void)); - return locale_charset (); - # endif - # endif -diff -Nrup a/intl/loadmsgcat.c b/intl/loadmsgcat.c ---- a/intl/loadmsgcat.c 2010-05-04 07:27:23.000000000 -0400 -+++ b/intl/loadmsgcat.c 2013-08-01 00:12:48.448237849 -0400 -@@ -1235,7 +1235,7 @@ _nl_load_domain (domain_file, domainbind - default: - /* This is an invalid revision. */ - invalid: -- /* This is an invalid .mo file. */ -+ /* This is an invalid .mo file or we ran out of resources. */ - free (domain->malloced); - #ifdef HAVE_MMAP - if (use_mmap) -@@ -1255,6 +1255,12 @@ _nl_load_domain (domain_file, domainbind - - /* Get the header entry and look for a plural specification. */ - nullentry = _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen); -+ if (__builtin_expect (nullentry == (char *) -1, 0)) -+ { -+ __libc_rwlock_fini (domain->conversions_lock); -+ goto invalid; -+ } -+ - EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals); - - out: diff --git a/src/patches/glibc/glibc-rh834386.patch b/src/patches/glibc/glibc-rh834386.patch deleted file mode 100644 index 61ddbe8..0000000 --- a/src/patches/glibc/glibc-rh834386.patch +++ /dev/null @@ -1,181 +0,0 @@ -# -# Red Hat BZ: -# https://bugzilla.redhat.com/show_bug.cgi?id=816647 -# -# ChangeLog -# -#2013-04-30 Patsy Franklin pfrankli@redhat.com -# -# * iconv/gconv_cache.c (find_module): Demangle init_fct before -# checking for NULL. Mangle __btowc_fct if init_fct is non-NULL. -# * iconv/gconv_db.c (free_derivation): Check that __shlib_handle -# is non-NULL before demangling the end_fct. Check for NULL -# end_fct after demangling. -# (__gconv_release_step): Demangle the end_fct before checking -# it for NULL. Remove assert on __shlibc_handle != NULL. -# (gen_steps): Don't check btowc_fct for NULL before mangling. -# Demangle init_fct before checking for NULL. -# (increment_counter): Likewise -# * gconv_dl.c (__gconv_find_shlib): Don't check init_fct or -# end_fct for NULL before mangling. -# * wcsmbs/btowc.c (__btowc): Demangle btowc_fct before checking -# for NULL. -# -diff -Nrup a/iconv/gconv_cache.c b/iconv/gconv_cache.c ---- a/iconv/gconv_cache.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/iconv/gconv_cache.c 2013-04-30 11:34:20.112389987 -0400 -@@ -207,17 +207,16 @@ find_module (const char *directory, cons - result->__data = NULL; - - /* Call the init function. */ -- if (result->__init_fct != NULL) -- { -- __gconv_init_fct init_fct = result->__init_fct; -+ __gconv_init_fct init_fct = result->__init_fct; - #ifdef PTR_DEMANGLE -- PTR_DEMANGLE (init_fct); -+ PTR_DEMANGLE (init_fct); - #endif -+ if (init_fct != NULL) -+ { - status = DL_CALL_FCT (init_fct, (result)); - - #ifdef PTR_MANGLE -- if (result->__btowc_fct != NULL) -- PTR_MANGLE (result->__btowc_fct); -+ PTR_MANGLE (result->__btowc_fct); - #endif - } - } -diff -Nrup a/iconv/gconv_db.c b/iconv/gconv_db.c ---- a/iconv/gconv_db.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/iconv/gconv_db.c 2013-04-30 11:32:42.700592914 -0400 -@@ -179,16 +179,15 @@ free_derivation (void *p) - size_t cnt; - - for (cnt = 0; cnt < deriv->nsteps; ++cnt) -- if (deriv->steps[cnt].__counter > 0 -- && deriv->steps[cnt].__end_fct != NULL) -+ if ((deriv->steps[cnt].__counter > 0) -+ && (deriv->steps[cnt].__shlib_handle != NULL)) - { -- assert (deriv->steps[cnt].__shlib_handle != NULL); -- - __gconv_end_fct end_fct = deriv->steps[cnt].__end_fct; - #ifdef PTR_DEMANGLE - PTR_DEMANGLE (end_fct); - #endif -- DL_CALL_FCT (end_fct, (&deriv->steps[cnt])); -+ if (end_fct != NULL) -+ DL_CALL_FCT (end_fct, (&deriv->steps[cnt])); - } - - /* Free the name strings. */ -@@ -212,16 +211,12 @@ __gconv_release_step (struct __gconv_ste - if (step->__shlib_handle != NULL && --step->__counter == 0) - { - /* Call the destructor. */ -- if (step->__end_fct != NULL) -- { -- assert (step->__shlib_handle != NULL); -- -- __gconv_end_fct end_fct = step->__end_fct; -+ __gconv_end_fct end_fct = step->__end_fct; - #ifdef PTR_DEMANGLE -- PTR_DEMANGLE (end_fct); -+ PTR_DEMANGLE (end_fct); - #endif -- DL_CALL_FCT (end_fct, (step)); -- } -+ if (end_fct != NULL) -+ DL_CALL_FCT (end_fct, (step)); - - #ifndef STATIC_GCONV - /* Release the loaded module. */ -@@ -293,13 +288,11 @@ gen_steps (struct derivation_step *best, - - /* Call the init function. */ - __gconv_init_fct init_fct = result[step_cnt].__init_fct; -- if (init_fct != NULL) -- { -- assert (result[step_cnt].__shlib_handle != NULL); -- - # ifdef PTR_DEMANGLE -- PTR_DEMANGLE (init_fct); -+ PTR_DEMANGLE (init_fct); - # endif -+ if (init_fct != NULL) -+ { - status = DL_CALL_FCT (init_fct, (&result[step_cnt])); - - if (__builtin_expect (status, __GCONV_OK) != __GCONV_OK) -@@ -312,8 +305,7 @@ gen_steps (struct derivation_step *best, - } - - # ifdef PTR_MANGLE -- if (result[step_cnt].__btowc_fct != NULL) -- PTR_MANGLE (result[step_cnt].__btowc_fct); -+ PTR_MANGLE (result[step_cnt].__btowc_fct); - # endif - } - } -@@ -393,16 +385,15 @@ increment_counter (struct __gconv_step * - - /* Call the init function. */ - __gconv_init_fct init_fct = step->__init_fct; -- if (init_fct != NULL) -- { - #ifdef PTR_DEMANGLE -- PTR_DEMANGLE (init_fct); -+ PTR_DEMANGLE (init_fct); - #endif -+ if (init_fct != NULL) -+ { - DL_CALL_FCT (init_fct, (step)); - - #ifdef PTR_MANGLE -- if (step->__btowc_fct != NULL) -- PTR_MANGLE (step->__btowc_fct); -+ PTR_MANGLE (step->__btowc_fct); - #endif - } - } -diff -Nrup a/iconv/gconv_dl.c b/iconv/gconv_dl.c ---- a/iconv/gconv_dl.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/iconv/gconv_dl.c 2013-04-30 11:32:42.701592922 -0400 -@@ -132,10 +132,8 @@ __gconv_find_shlib (const char *name) - - #ifdef PTR_MANGLE - PTR_MANGLE (found->fct); -- if (found->init_fct != NULL) -- PTR_MANGLE (found->init_fct); -- if (found->end_fct != NULL) -- PTR_MANGLE (found->end_fct); -+ PTR_MANGLE (found->init_fct); -+ PTR_MANGLE (found->end_fct); - #endif - - /* We have succeeded in loading the shared object. */ -diff -Nrup a/wcsmbs/btowc.c b/wcsmbs/btowc.c ---- a/wcsmbs/btowc.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/wcsmbs/btowc.c 2013-04-30 11:32:42.701592922 -0400 -@@ -47,15 +47,15 @@ __btowc (c) - /* Get the conversion functions. */ - fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE)); - __gconv_btowc_fct btowc_fct = fcts->towc->__btowc_fct; -+#ifdef PTR_DEMANGLE -+ if (fcts->towc->__shlib_handle != NULL) -+ PTR_DEMANGLE (btowc_fct); -+#endif - - if (__builtin_expect (fcts->towc_nsteps == 1, 1) - && __builtin_expect (btowc_fct != NULL, 1)) - { - /* Use the shortcut function. */ --#ifdef PTR_DEMANGLE -- if (fcts->towc->__shlib_handle != NULL) -- PTR_DEMANGLE (btowc_fct); --#endif - return DL_CALL_FCT (btowc_fct, (fcts->towc, (unsigned char) c)); - } - else diff --git a/src/patches/glibc/glibc-rh837695.patch b/src/patches/glibc/glibc-rh837695.patch deleted file mode 100644 index 03e1e02..0000000 --- a/src/patches/glibc/glibc-rh837695.patch +++ /dev/null @@ -1,54 +0,0 @@ -diff -rup a/nss/nsswitch.h b/nss/nsswitch.h ---- a/nss/nsswitch.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/nss/nsswitch.h 2012-07-05 11:28:15.316585117 -0600 -@@ -182,4 +182,8 @@ extern int __nss_hostname_digits_dots (c - int *h_errnop); - libc_hidden_proto (__nss_hostname_digits_dots) - -+/* Maximum number of aliases we allow. */ -+#define MAX_NR_ALIASES 48 -+#define MAX_NR_ADDRS 48 -+ - #endif /* nsswitch.h */ -Only in b/nss: nsswitch.h.orig -diff -rup a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c ---- a/resolv/nss_dns/dns-host.c 2012-07-05 11:27:39.298760961 -0600 -+++ b/resolv/nss_dns/dns-host.c 2012-07-05 11:28:15.317585112 -0600 -@@ -89,10 +89,6 @@ - - #define RESOLVSORT - --/* Maximum number of aliases we allow. */ --#define MAX_NR_ALIASES 48 --#define MAX_NR_ADDRS 48 -- - #if PACKETSZ > 65536 - # define MAXPACKET PACKETSZ - #else -Only in b/resolv/nss_dns: dns-host.c.orig -diff -rup a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c ---- a/sysdeps/posix/getaddrinfo.c 2012-07-05 11:27:39.284761028 -0600 -+++ b/sysdeps/posix/getaddrinfo.c 2012-07-05 14:15:39.785546125 -0600 -@@ -565,7 +565,10 @@ gaih_inet (const char *name, const struc - IPv6 scope ids. */ - if (req->ai_family == AF_INET) - { -- size_t tmpbuflen = 512; -+ /* Add room for struct host_data in resolv/nss_dns/dns-host.c */ -+ size_t tmpbuflen = 512 + (MAX_NR_ALIASES+MAX_NR_ADDRS+1)*sizeof(char*) -+ + 16 * sizeof(char); -+ - assert (tmpbuf == NULL); - tmpbuf = alloca_account (tmpbuflen, alloca_used); - int rc; -@@ -807,7 +810,7 @@ gaih_inet (const char *name, const struc - old_res_options = _res.options; - _res.options &= ~RES_USE_INET6; - -- size_t tmpbuflen = 1024; -+ size_t tmpbuflen = 1024 + sizeof(struct gaih_addrtuple); - malloc_tmpbuf = !__libc_use_alloca (alloca_used + tmpbuflen); - assert (tmpbuf == NULL); - if (!malloc_tmpbuf) -Only in b/sysdeps/posix: getaddrinfo.c.orig -Only in b/sysdeps/posix: getaddrinfo.c.rej diff --git a/src/patches/glibc/glibc-rh837918.patch b/src/patches/glibc/glibc-rh837918.patch deleted file mode 100644 index 924d83d..0000000 --- a/src/patches/glibc/glibc-rh837918.patch +++ /dev/null @@ -1,7183 +0,0 @@ -diff -Nrup a/math/libm-test.inc b/math/libm-test.inc ---- a/math/libm-test.inc 2010-05-04 05:27:23.000000000 -0600 -+++ b/math/libm-test.inc 2012-08-06 09:54:00.821929695 -0600 -@@ -2018,6 +2018,142 @@ cos_test (void) - - - static void -+cos_test_tonearest (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(cos) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (cos_tonearest); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TONEAREST)) -+ { -+ TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L); -+ TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L); -+ TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L); -+ TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L); -+ TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L); -+ TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L); -+ TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L); -+ TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L); -+ TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L); -+ TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (cos_tonearest); -+} -+ -+ -+static void -+cos_test_towardzero (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(cos) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (cos_towardzero); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TOWARDZERO)) -+ { -+ TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L); -+ TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L); -+ TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L); -+ TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L); -+ TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L); -+ TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L); -+ TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L); -+ TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L); -+ TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L); -+ TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (cos_towardzero); -+} -+ -+ -+static void -+cos_test_downward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(cos) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (cos_downward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_DOWNWARD)) -+ { -+ TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L); -+ TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L); -+ TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L); -+ TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L); -+ TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L); -+ TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L); -+ TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L); -+ TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L); -+ TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L); -+ TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (cos_downward); -+} -+ -+ -+static void -+cos_test_upward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(cos) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (cos_upward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_UPWARD)) -+ { -+ TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L); -+ TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L); -+ TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L); -+ TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L); -+ TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L); -+ TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L); -+ TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L); -+ TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L); -+ TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L); -+ TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (cos_upward); -+} -+ -+ -+static void - cosh_test (void) - { - errno = 0; -@@ -2043,6 +2179,114 @@ cosh_test (void) - - - static void -+cosh_test_tonearest (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(cosh) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (cosh_tonearest); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TONEAREST)) -+ { -+ TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L); -+ TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L); -+ TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (cosh_tonearest); -+} -+ -+ -+static void -+cosh_test_towardzero (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(cosh) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (cosh_towardzero); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TOWARDZERO)) -+ { -+ TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L); -+ TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L); -+ TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (cosh_towardzero); -+} -+ -+ -+static void -+cosh_test_downward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(cosh) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (cosh_downward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_DOWNWARD)) -+ { -+ TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L); -+ TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L); -+ TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (cosh_downward); -+} -+ -+ -+static void -+cosh_test_upward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(cosh) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (cosh_upward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_UPWARD)) -+ { -+ TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L); -+ TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L); -+ TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (cosh_upward); -+} -+ -+ -+static void - cpow_test (void) - { - errno = 0; -@@ -2527,6 +2771,114 @@ exp_test (void) - - - static void -+exp_test_tonearest (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(exp) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (exp_tonearest); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TONEAREST)) -+ { -+ TEST_f_f (exp, 1, M_El); -+ TEST_f_f (exp, 2, M_E2l); -+ TEST_f_f (exp, 3, M_E3l); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (exp_tonearest); -+} -+ -+ -+static void -+exp_test_towardzero (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(exp) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (exp_towardzero); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TOWARDZERO)) -+ { -+ TEST_f_f (exp, 1, M_El); -+ TEST_f_f (exp, 2, M_E2l); -+ TEST_f_f (exp, 3, M_E3l); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (exp_towardzero); -+} -+ -+ -+static void -+exp_test_downward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(exp) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (exp_downward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_DOWNWARD)) -+ { -+ TEST_f_f (exp, 1, M_El); -+ TEST_f_f (exp, 2, M_E2l); -+ TEST_f_f (exp, 3, M_E3l); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (exp_downward); -+} -+ -+ -+static void -+exp_test_upward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(exp) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (exp_upward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_UPWARD)) -+ { -+ TEST_f_f (exp, 1, M_El); -+ TEST_f_f (exp, 2, M_E2l); -+ TEST_f_f (exp, 3, M_E3l); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (exp_upward); -+} -+ -+ -+static void - exp10_test (void) - { - errno = 0; -@@ -4848,22 +5200,127 @@ pow_test (void) - END (pow); - } - -+ - static void --remainder_test (void) -+pow_test_tonearest (void) - { -+ int save_round_mode; - errno = 0; -- FUNC(remainder) (1.625, 1.0); -+ FUNC(pow) (0, 0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - -- START (remainder); -+ START (pow_tonearest); - -- TEST_ff_f (remainder, 1, 0, nan_value, INVALID_EXCEPTION); -- TEST_ff_f (remainder, 1, minus_zero, nan_value, INVALID_EXCEPTION); -- TEST_ff_f (remainder, plus_infty, 1, nan_value, INVALID_EXCEPTION); -- TEST_ff_f (remainder, minus_infty, 1, nan_value, INVALID_EXCEPTION); -- TEST_ff_f (remainder, nan_value, nan_value, nan_value); -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TONEAREST)) -+ { -+ TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L); -+ TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (pow_tonearest); -+} -+ -+ -+static void -+pow_test_towardzero (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(pow) (0, 0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (pow_towardzero); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TOWARDZERO)) -+ { -+ TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L); -+ TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (pow_towardzero); -+} -+ -+ -+static void -+pow_test_downward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(pow) (0, 0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (pow_downward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_DOWNWARD)) -+ { -+ TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L); -+ TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (pow_downward); -+} -+ -+ -+static void -+pow_test_upward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(pow) (0, 0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (pow_upward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_UPWARD)) -+ { -+ TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L); -+ TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (pow_upward); -+} -+ -+ -+static void -+remainder_test (void) -+{ -+ errno = 0; -+ FUNC(remainder) (1.625, 1.0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (remainder); -+ -+ TEST_ff_f (remainder, 1, 0, nan_value, INVALID_EXCEPTION); -+ TEST_ff_f (remainder, 1, minus_zero, nan_value, INVALID_EXCEPTION); -+ TEST_ff_f (remainder, plus_infty, 1, nan_value, INVALID_EXCEPTION); -+ TEST_ff_f (remainder, minus_infty, 1, nan_value, INVALID_EXCEPTION); -+ TEST_ff_f (remainder, nan_value, nan_value, nan_value); - - TEST_ff_f (remainder, 1.625, 1.0, -0.375); - TEST_ff_f (remainder, -1.625, 1.0, 0.375); -@@ -5545,6 +6002,7 @@ sin_test (void) - - #ifdef TEST_DOUBLE - TEST_f_f (sin, 0.80190127184058835, 0.71867942238767868); -+ TEST_f_f (sin, 2.522464e-1, 2.4957989804940911e-1); - #endif - - END (sin); -@@ -5553,6 +6011,142 @@ sin_test (void) - - - static void -+sin_test_tonearest (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(sin) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (sin_tonearest); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TONEAREST)) -+ { -+ TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L); -+ TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L); -+ TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L); -+ TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L); -+ TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L); -+ TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L); -+ TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L); -+ TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L); -+ TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L); -+ TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (sin_tonearest); -+} -+ -+ -+static void -+sin_test_towardzero (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(sin) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (sin_towardzero); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TOWARDZERO)) -+ { -+ TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L); -+ TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L); -+ TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L); -+ TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L); -+ TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L); -+ TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L); -+ TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L); -+ TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L); -+ TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L); -+ TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (sin_towardzero); -+} -+ -+ -+static void -+sin_test_downward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(sin) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (sin_downward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_DOWNWARD)) -+ { -+ TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L); -+ TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L); -+ TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L); -+ TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L); -+ TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L); -+ TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L); -+ TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L); -+ TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L); -+ TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L); -+ TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (sin_downward); -+} -+ -+ -+static void -+sin_test_upward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(sin) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (sin_upward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_UPWARD)) -+ { -+ TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L); -+ TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L); -+ TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L); -+ TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L); -+ TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L); -+ TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L); -+ TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L); -+ TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L); -+ TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L); -+ TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (sin_upward); -+} -+ -+ -+static void - sincos_test (void) - { - FLOAT sin_res, cos_res; -@@ -5610,6 +6204,115 @@ sinh_test (void) - END (sinh); - } - -+ -+static void -+sinh_test_tonearest (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(sinh) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (sinh_tonearest); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TONEAREST)) -+ { -+ TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L); -+ TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L); -+ TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (sinh_tonearest); -+} -+ -+ -+static void -+sinh_test_towardzero (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(sinh) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (sinh_towardzero); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TOWARDZERO)) -+ { -+ TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L); -+ TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L); -+ TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (sinh_towardzero); -+} -+ -+ -+static void -+sinh_test_downward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(sinh) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (sinh_downward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_DOWNWARD)) -+ { -+ TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L); -+ TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L); -+ TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (sinh_downward); -+} -+ -+ -+static void -+sinh_test_upward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(sinh) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (sinh_upward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_UPWARD)) -+ { -+ TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L); -+ TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L); -+ TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (sinh_upward); -+} -+ -+ - static void - sqrt_test (void) - { -@@ -5673,6 +6376,143 @@ tan_test (void) - END (tan); - } - -+ -+static void -+tan_test_tonearest (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(tan) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (tan_tonearest); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TONEAREST)) -+ { -+ TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L); -+ TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L); -+ TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L); -+ TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L); -+ TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L); -+ TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L); -+ TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L); -+ TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L); -+ TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L); -+ TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (tan_tonearest); -+} -+ -+ -+static void -+tan_test_towardzero (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(tan) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (tan_towardzero); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TOWARDZERO)) -+ { -+ TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L); -+ TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L); -+ TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L); -+ TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L); -+ TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L); -+ TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L); -+ TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L); -+ TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L); -+ TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L); -+ TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (tan_towardzero); -+} -+ -+ -+static void -+tan_test_downward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(tan) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (tan_downward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_DOWNWARD)) -+ { -+ TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L); -+ TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L); -+ TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L); -+ TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L); -+ TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L); -+ TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L); -+ TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L); -+ TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L); -+ TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L); -+ TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (tan_downward); -+} -+ -+ -+static void -+tan_test_upward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(tan) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (tan_upward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_UPWARD)) -+ { -+ TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L); -+ TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L); -+ TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L); -+ TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L); -+ TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L); -+ TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L); -+ TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L); -+ TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L); -+ TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L); -+ TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (tan_upward); -+} -+ -+ - static void - tanh_test (void) - { -@@ -6171,20 +7011,44 @@ main (int argc, char **argv) - atan_test (); - atan2_test (); - cos_test (); -+ cos_test_tonearest (); -+ cos_test_towardzero (); -+ cos_test_downward (); -+ cos_test_upward (); - sin_test (); -+ sin_test_tonearest (); -+ sin_test_towardzero (); -+ sin_test_downward (); -+ sin_test_upward (); - sincos_test (); - tan_test (); -+ tan_test_tonearest (); -+ tan_test_towardzero (); -+ tan_test_downward (); -+ tan_test_upward (); - - /* Hyperbolic functions: */ - acosh_test (); - asinh_test (); - atanh_test (); - cosh_test (); -+ cosh_test_tonearest (); -+ cosh_test_towardzero (); -+ cosh_test_downward (); -+ cosh_test_upward (); - sinh_test (); -+ sinh_test_tonearest (); -+ sinh_test_towardzero (); -+ sinh_test_downward (); -+ sinh_test_upward (); - tanh_test (); - - /* Exponential and logarithmic functions: */ - exp_test (); -+ exp_test_tonearest (); -+ exp_test_towardzero (); -+ exp_test_downward (); -+ exp_test_upward (); - exp10_test (); - exp2_test (); - expm1_test (); -@@ -6207,6 +7071,10 @@ main (int argc, char **argv) - fabs_test (); - hypot_test (); - pow_test (); -+ pow_test_tonearest (); -+ pow_test_towardzero (); -+ pow_test_downward (); -+ pow_test_upward (); - sqrt_test (); - - /* Error and gamma functions: */ -diff -Nrup a/math/math_private.h b/math/math_private.h ---- a/math/math_private.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/math/math_private.h 2012-08-06 09:54:00.821929695 -0600 -@@ -357,4 +357,41 @@ extern void __docos (double __x, double - #define math_force_eval(x) __asm __volatile ("" : : "m" (x)) - #endif - -+ -+/* The standards only specify one variant of the fenv.h interfaces. -+ But at least for some architectures we can be more efficient if we -+ know what operations are going to be performed. Therefore we -+ define additional interfaces. By default they refer to the normal -+ interfaces. */ -+#define libc_fegetround() fegetround () -+#define libc_fegetroundf() fegetround () -+#define libc_fegetroundl() fegetround () -+ -+#define libc_fesetround(r) (void) fesetround (r) -+#define libc_fesetroundf(r) (void) fesetround (r) -+#define libc_fesetroundl(r) (void) fesetround (r) -+ -+#define libc_feholdexcept(e) (void) feholdexcept (e) -+#define libc_feholdexceptf(e) (void) feholdexcept (e) -+#define libc_feholdexceptl(e) (void) feholdexcept (e) -+ -+#define libc_feholdexcept_setround(e, r) \ -+ do { feholdexcept (e); fesetround (r); } while (0) -+#define libc_feholdexcept_setroundf(e, r) \ -+ do { feholdexcept (e); fesetround (r); } while (0) -+#define libc_feholdexcept_setroundl(e, r) \ -+ do { feholdexcept (e); fesetround (r); } while (0) -+ -+#define libc_fetestexcept(e) fetestexcept (e) -+#define libc_fetestexceptf(e) fetestexcept (e) -+#define libc_fetestexceptl(e) fetestexcept (e) -+ -+#define libc_fesetenv(e) (void) fesetenv (e) -+#define libc_fesetenvf(e) (void) fesetenv (e) -+#define libc_fesetenvl(e) (void) fesetenv (e) -+ -+#define libc_feupdateenv(e) (void) feupdateenv (e) -+#define libc_feupdateenvf(e) (void) feupdateenv (e) -+#define libc_feupdateenvl(e) (void) feupdateenv (e) -+ - #endif /* _MATH_PRIVATE_H_ */ -diff -Nrup a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps ---- a/sysdeps/i386/fpu/libm-test-ulps 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/i386/fpu/libm-test-ulps 2012-08-06 11:29:16.370874961 -0600 -@@ -9,18 +9,12 @@ ldouble: 1 - Test "asin (-0.5) == -pi/6": - ildouble: 1 - ldouble: 1 --Test "asin (-1.0) == -pi/2": --ildouble: 1 --ldouble: 1 - Test "asin (0.5) == pi/6": - ildouble: 1 - ldouble: 1 - Test "asin (0.75) == 0.848062078981481008052944338998418080": - ildouble: 1 - ldouble: 1 --Test "asin (1.0) == pi/2": --ildouble: 1 --ldouble: 1 - - # atanh - Test "atanh (0.75) == 0.972955074527656652552676371721589865": -@@ -35,20 +29,6 @@ ildouble: 2 - ldouble: 2 - - # cacosh --Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": --double: 1 --float: 9 --idouble: 1 --ifloat: 9 --ildouble: 6 --ldouble: 6 --Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": --double: 1 --float: 4 --idouble: 1 --ifloat: 4 --ildouble: 1 --ldouble: 1 - Test "Real part of: cacosh (0.75 + 1.25 i) == 1.13239363160530819522266333696834467 + 1.11752014915610270578240049553777969 i": - ildouble: 1 - ldouble: 1 -@@ -124,8 +104,6 @@ ldouble: 1 - Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i": - float: 1 - ifloat: 1 --ildouble: 1 --ldouble: 1 - Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": - double: 1 - idouble: 1 -@@ -149,9 +127,7 @@ float: 1 - idouble: 1 - ifloat: 1 - Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - - # cexp -@@ -186,8 +162,6 @@ ifloat: 1 - Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i": - double: 1 - idouble: 1 --ildouble: 1 --ldouble: 1 - Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i": - double: 1 - float: 1 -@@ -262,27 +236,175 @@ ifloat: 1 - # cos - Test "cos (M_PI_6l * 2.0) == 0.5": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - Test "cos (M_PI_6l * 4.0) == -0.5": - double: 2 - float: 1 - idouble: 2 - ifloat: 1 -+ -+# cos_downward -+Test "cos_downward (1) == 0.5403023058681397174009366074429766037323": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (10) == -0.8390715290764524522588639478240648345199": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "cos_downward (3) == -0.9899924966004454572715727947312613023937": -+double: 1 -+idouble: 1 -+Test "cos_downward (4) == -0.6536436208636119146391681830977503814241": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (5) == 0.2836621854632262644666391715135573083344": -+float: 1 -+ifloat: 1 -+Test "cos_downward (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (8) == -0.1455000338086135258688413818311946826093": -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (9) == -0.9111302618846769883682947111811653112463": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# cos_tonearest -+Test "cos_tonearest (8) == -0.1455000338086135258688413818311946826093": -+ildouble: 1 -+ldouble: 1 -+Test "cos_tonearest (9) == -0.9111302618846769883682947111811653112463": -+ildouble: 1 -+ldouble: 1 -+ -+# cos_towardzero -+Test "cos_towardzero (1) == 0.5403023058681397174009366074429766037323": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (10) == -0.8390715290764524522588639478240648345199": - ildouble: 1 - ldouble: 1 --Test "cos (pi/2) == 0": -+Test "cos_towardzero (2) == -0.4161468365471423869975682295007621897660": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -+Test "cos_towardzero (3) == -0.9899924966004454572715727947312613023937": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (4) == -0.6536436208636119146391681830977503814241": -+double: 1 -+idouble: 1 -+Test "cos_towardzero (5) == 0.2836621854632262644666391715135573083344": -+float: 1 -+ifloat: 1 -+Test "cos_towardzero (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (8) == -0.1455000338086135258688413818311946826093": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 - --# cosh --Test "cosh (0.75) == 1.29468328467684468784170818539018176": -+# cos_upward -+Test "cos_upward (1) == 0.5403023058681397174009366074429766037323": -+float: 1 -+ifloat: 1 -+Test "cos_upward (10) == -0.8390715290764524522588639478240648345199": -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (2) == -0.4161468365471423869975682295007621897660": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (3) == -0.9899924966004454572715727947312613023937": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (4) == -0.6536436208636119146391681830977503814241": -+double: 1 -+idouble: 1 -+Test "cos_upward (5) == 0.2836621854632262644666391715135573083344": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (6) == 0.9601702866503660205456522979229244054519": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 - ildouble: 1 -+ldouble: 1 -+Test "cos_upward (7) == 0.7539022543433046381411975217191820122183": -+double: 1 -+idouble: 1 -+Test "cos_upward (8) == -0.1455000338086135258688413818311946826093": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ -+# cosh_downward -+Test "cosh_downward (22) == 1792456423.065795780980053377632656584997": -+double: 1 -+float: 1 -+ldouble: 2 -+Test "cosh_downward (23) == 4872401723.124451300068625740569997090344": -+double: 1 -+float: 1 -+ldouble: 1 -+Test "cosh_downward (24) == 13244561064.92173614708845674912733665919": -+float: 1 -+ldouble: 1 -+ -+# cosh_tonearest -+Test "cosh_tonearest (22) == 1792456423.065795780980053377632656584997": -+ldouble: 1 -+ -+# cosh_towardzero -+Test "cosh_towardzero (22) == 1792456423.065795780980053377632656584997": -+double: 1 -+float: 1 -+ldouble: 2 -+Test "cosh_towardzero (23) == 4872401723.124451300068625740569997090344": -+double: 1 -+float: 1 -+ldouble: 1 -+Test "cosh_towardzero (24) == 13244561064.92173614708845674912733665919": -+float: 1 -+ldouble: 1 -+ -+# cosh_upward -+Test "cosh_upward (23) == 4872401723.124451300068625740569997090344": -+ldouble: 1 -+Test "cosh_upward (24) == 13244561064.92173614708845674912733665919": -+double: 1 - - # cpow - Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": -@@ -353,12 +475,8 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ildouble: 2 --ldouble: 2 - Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -370,40 +488,36 @@ ifloat: 1 - Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": - double: 1 - idouble: 1 --ildouble: 439 --ldouble: 439 -+ildouble: 1 -+ldouble: 1 - Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": - float: 1 - ifloat: 1 --ildouble: 2 --ldouble: 2 -+ildouble: 1 -+ldouble: 1 - Test "Real part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": - ildouble: 1 - ldouble: 1 - Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 3 - ldouble: 3 - - # ctanh - Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": --ildouble: 5 --ldouble: 5 -+ildouble: 3 -+ldouble: 3 - Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": - float: 1 - ifloat: 1 --ildouble: 25 --ldouble: 25 -+ildouble: 1 -+ldouble: 1 - Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i": - float: 1 - ifloat: 1 - Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - Test "Imaginary part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i": - double: 1 -@@ -419,9 +533,6 @@ double: 1 - idouble: 1 - - # erfc --Test "erfc (0.75) == 0.288844366346484868401062165408589223": --float: 1 --ifloat: 1 - Test "erfc (1.25) == 0.0770998717435417698634765188027188596": - ildouble: 1 - ldouble: 1 -@@ -434,14 +545,6 @@ idouble: 1 - ildouble: 1 - ldouble: 1 - --# exp --Test "exp (0.75) == 2.11700001661267466854536981983709561": --ildouble: 1 --Test "exp (1000.0) == 0.197007111401704699388887935224332313e435": --ildouble: 754 --Test "exp (50.0) == 5184705528587072464087.45332293348538": --ildouble: 16 -- - # exp10 - Test "exp10 (-1) == 0.1": - ildouble: 1 -@@ -453,6 +556,51 @@ Test "exp10 (3) == 1000": - ildouble: 8 - ldouble: 8 - -+# exp_downward -+Test "exp_downward (1) == e": -+ildouble: 1 -+ldouble: 1 -+Test "exp_downward (2) == e^2": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "exp_downward (3) == e^3": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# exp_towardzero -+Test "exp_towardzero (1) == e": -+ildouble: 1 -+ldouble: 1 -+Test "exp_towardzero (2) == e^2": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "exp_towardzero (3) == e^3": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# exp_upward -+Test "exp_upward (1) == e": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ - # expm1 - Test "expm1 (1) == M_El - 1.0": - ildouble: 1 -@@ -485,26 +633,24 @@ float: 1 - # j0 - Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "j0 (10.0) == -0.245935764451348335197760862485328754": --double: 3 -+double: 1 - float: 1 --idouble: 3 -+idouble: 1 - ifloat: 1 - Test "j0 (2.0) == 0.223890779141235668051827454649948626": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "j0 (8.0) == 0.171650807137553906090869407851972001": -@@ -512,13 +658,8 @@ float: 1 - ifloat: 1 - - # j1 --Test "j1 (0.75) == 0.349243602174862192523281016426251335": --double: 1 --idouble: 1 - Test "j1 (10.0) == 0.0434727461688614366697487680258592883": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -526,9 +667,7 @@ Test "j1 (2.0) == 0.57672480775687338720 - double: 1 - idouble: 1 - Test "j1 (8.0) == 0.234636346853914624381276651590454612": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -536,38 +675,31 @@ ldouble: 1 - # jn - Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "jn (0, 10.0) == -0.245935764451348335197760862485328754": --double: 3 -+double: 1 - float: 1 --idouble: 3 -+idouble: 1 - ifloat: 1 - Test "jn (0, 2.0) == 0.223890779141235668051827454649948626": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "jn (0, 8.0) == 0.171650807137553906090869407851972001": - float: 1 - ifloat: 1 --Test "jn (1, 0.75) == 0.349243602174862192523281016426251335": --double: 1 --idouble: 1 - Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -575,9 +707,7 @@ Test "jn (1, 2.0) == 0.57672480775687338 - double: 1 - idouble: 1 - Test "jn (1, 8.0) == 0.234636346853914624381276651590454612": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -589,9 +719,7 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10": - float: 1 -@@ -606,38 +734,32 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "jn (10, 10.0) == 0.207486106633358857697278723518753428": --double: 5 --float: 2 --idouble: 5 --ifloat: 2 -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6": --double: 2 --idouble: 2 - ildouble: 1 - ldouble: 1 - Test "jn (3, -1.0) == -0.0195633539826684059189053216217515083": - ildouble: 1 - ldouble: 1 - Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - Test "jn (3, 1.0) == 0.0195633539826684059189053216217515083": - ildouble: 1 - ldouble: 1 - Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563": --double: 5 --float: 2 --idouble: 5 --ifloat: 2 -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "jn (3, 2.0) == 0.128943249474402051098793332969239835": --double: 1 --idouble: 1 - ildouble: 1 - ldouble: 1 - -@@ -648,9 +770,7 @@ idouble: 1 - ildouble: 1 - ldouble: 1 - Test "lgamma (0.7) == 0.260867246531666514385732417016759578": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1": - double: 1 -@@ -660,11 +780,6 @@ ifloat: 2 - ildouble: 1 - ldouble: 1 - --# log --Test "log (e) == 1": --float: 1 --ifloat: 1 -- - # log10 - Test "log10 (0.75) == -0.124938736608299953132449886193870744": - ildouble: 1 -@@ -675,20 +790,179 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - --# sincos --Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": -+# pow_downward -+Test "pow_downward (1.0625, 1.125) == 1.070582293028761362162622578677070098674": - double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "pow_downward (1.5, 1.03125) == 1.519127098714743184071644334163037684948": - float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# pow_towardzero -+Test "pow_towardzero (1.0625, 1.125) == 1.070582293028761362162622578677070098674": -+double: 1 - idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "pow_towardzero (1.5, 1.03125) == 1.519127098714743184071644334163037684948": -+float: 1 - ifloat: 1 --Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": -+ildouble: 1 -+ldouble: 1 -+ -+# pow_upward -+Test "pow_upward (1.0625, 1.125) == 1.070582293028761362162622578677070098674": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "pow_upward (1.5, 1.03125) == 1.519127098714743184071644334163037684948": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# sin_downward -+Test "sin_downward (1) == 0.8414709848078965066525023216302989996226": -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (10) == -0.5440211108893698134047476618513772816836": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (2) == 0.9092974268256816953960198659117448427023": -+double: 1 -+idouble: 1 -+Test "sin_downward (3) == 0.1411200080598672221007448028081102798469": -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (4) == -0.7568024953079282513726390945118290941359": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (5) == -0.9589242746631384688931544061559939733525": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (6) == -0.2794154981989258728115554466118947596280": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 -+Test "sin_downward (7) == 0.6569865987187890903969990915936351779369": - ildouble: 1 - ldouble: 1 --Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res": -+Test "sin_downward (8) == 0.9893582466233817778081235982452886721164": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (9) == 0.4121184852417565697562725663524351793439": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# sin_tonearest -+Test "sin_tonearest (10) == -0.5440211108893698134047476618513772816836": -+ildouble: 1 -+ldouble: 1 -+Test "sin_tonearest (4) == -0.7568024953079282513726390945118290941359": -+ildouble: 1 -+ldouble: 1 -+Test "sin_tonearest (9) == 0.4121184852417565697562725663524351793439": -+ildouble: 1 -+ldouble: 1 -+ -+# sin_towardzero -+Test "sin_towardzero (1) == 0.8414709848078965066525023216302989996226": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (10) == -0.5440211108893698134047476618513772816836": -+float: 1 -+ifloat: 1 -+Test "sin_towardzero (2) == 0.9092974268256816953960198659117448427023": -+double: 1 -+idouble: 1 -+Test "sin_towardzero (3) == 0.1411200080598672221007448028081102798469": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (4) == -0.7568024953079282513726390945118290941359": -+float: 1 -+ifloat: 1 -+Test "sin_towardzero (5) == -0.9589242746631384688931544061559939733525": -+float: 1 -+ifloat: 1 -+Test "sin_towardzero (6) == -0.2794154981989258728115554466118947596280": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (7) == 0.6569865987187890903969990915936351779369": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (8) == 0.9893582466233817778081235982452886721164": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (9) == 0.4121184852417565697562725663524351793439": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# sin_upward -+Test "sin_upward (1) == 0.8414709848078965066525023216302989996226": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "sin_upward (10) == -0.5440211108893698134047476618513772816836": -+float: 1 -+ifloat: 1 -+Test "sin_upward (2) == 0.9092974268256816953960198659117448427023": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (3) == 0.1411200080598672221007448028081102798469": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "sin_upward (4) == -0.7568024953079282513726390945118290941359": -+float: 1 -+ifloat: 1 -+Test "sin_upward (5) == -0.9589242746631384688931544061559939733525": -+float: 1 -+ifloat: 1 -+Test "sin_upward (6) == -0.2794154981989258728115554466118947596280": -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (7) == 0.6569865987187890903969990915936351779369": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "sin_upward (8) == 0.9893582466233817778081235982452886721164": -+float: 1 -+ifloat: 1 -+ -+# sincos -+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": -+double: 1 -+idouble: 1 -+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": - double: 1 - float: 1 - idouble: 1 -@@ -698,66 +972,237 @@ ldouble: 1 - - # sinh - Test "sinh (0.75) == 0.822316731935829980703661634446913849": --double: 1 - ildouble: 1 - --# tan --Test "tan (pi/4) == 1": -+# sinh_downward -+Test "sinh_downward (22) == 1792456423.065795780701106568345764104225": - double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ldouble: 4 -+Test "sinh_downward (23) == 4872401723.124451299966006944252978187305": -+double: 1 -+float: 1 - idouble: 1 -+ifloat: 1 -+Test "sinh_downward (24) == 13244561064.92173614705070540368454568168": -+float: 1 -+ifloat: 1 -+ldouble: 5 - --# tgamma --Test "tgamma (-0.5) == -2 sqrt (pi)": --double: 2 -+# sinh_tonearest -+Test "sinh_tonearest (22) == 1792456423.065795780701106568345764104225": -+ldouble: 3 -+Test "sinh_tonearest (23) == 4872401723.124451299966006944252978187305": -+ldouble: 1 -+Test "sinh_tonearest (24) == 13244561064.92173614705070540368454568168": -+ldouble: 6 -+ -+# sinh_towardzero -+Test "sinh_towardzero (22) == 1792456423.065795780701106568345764104225": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ldouble: 4 -+Test "sinh_towardzero (23) == 4872401723.124451299966006944252978187305": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "sinh_towardzero (24) == 13244561064.92173614705070540368454568168": -+float: 1 -+ifloat: 1 -+ldouble: 5 -+ -+# sinh_upward -+Test "sinh_upward (22) == 1792456423.065795780701106568345764104225": -+ldouble: 16 -+Test "sinh_upward (23) == 4872401723.124451299966006944252978187305": -+ldouble: 27 -+Test "sinh_upward (24) == 13244561064.92173614705070540368454568168": -+double: 1 -+idouble: 1 -+ldouble: 7 -+ -+# tan_downward -+Test "tan_downward (1) == 1.5574077246549022305069748074583601730873": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "tan_downward (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+Test "tan_downward (2) == -2.1850398632615189916433061023136825434320": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "tan_downward (3) == -0.1425465430742778052956354105339134932261": -+double: 1 -+idouble: 1 -+Test "tan_downward (4) == 1.1578212823495775831373424182673239231198": - float: 1 --idouble: 2 - ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "tgamma (0.5) == sqrt (pi)": -+Test "tan_downward (5) == -3.3805150062465856369827058794473439087096": -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (6) == -0.2910061913847491570536995888681755428312": -+double: 1 - float: 1 -+idouble: 1 - ifloat: 1 --Test "tgamma (0.7) == 1.29805533264755778568117117915281162": -+Test "tan_downward (7) == 0.8714479827243187364564508896003135663222": -+double: 1 -+idouble: 1 -+Test "tan_downward (8) == -6.7997114552203786999252627596086333648814": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (9) == -0.4523156594418098405903708757987855343087": -+float: 1 -+ifloat: 1 -+ -+# tan_tonearest -+Test "tan_tonearest (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_tonearest (8) == -6.7997114552203786999252627596086333648814": -+ildouble: 1 -+ldouble: 1 -+Test "tan_tonearest (9) == -0.4523156594418098405903708757987855343087": -+ildouble: 1 -+ldouble: 1 -+ -+# tan_towardzero -+Test "tan_towardzero (1) == 1.5574077246549022305069748074583601730873": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 --Test "tgamma (4) == 6": -+Test "tan_towardzero (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+Test "tan_towardzero (2) == -2.1850398632615189916433061023136825434320": -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (3) == -0.1425465430742778052956354105339134932261": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (4) == 1.1578212823495775831373424182673239231198": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (5) == -3.3805150062465856369827058794473439087096": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "tan_towardzero (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (7) == 0.8714479827243187364564508896003135663222": -+double: 1 -+idouble: 1 -+Test "tan_towardzero (8) == -6.7997114552203786999252627596086333648814": -+double: 1 -+idouble: 1 -+ildouble: 2 -+ldouble: 2 -+Test "tan_towardzero (9) == -0.4523156594418098405903708757987855343087": -+double: 1 -+idouble: 1 - ildouble: 1 - ldouble: 1 - --# y0 --Test "y0 (0.125) == -1.38968062514384052915582277745018693": -+# tan_upward -+Test "tan_upward (1) == 1.5574077246549022305069748074583601730873": - ildouble: 1 - ldouble: 1 --Test "y0 (0.75) == -0.137172769385772397522814379396581855": -+Test "tan_upward (10) == 0.6483608274590866712591249330098086768169": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (2) == -2.1850398632615189916433061023136825434320": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (3) == -0.1425465430742778052956354105339134932261": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (4) == 1.1578212823495775831373424182673239231198": -+double: 1 -+idouble: 1 -+Test "tan_upward (5) == -3.3805150062465856369827058794473439087096": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 --Test "y0 (1.0) == 0.0882569642156769579829267660235151628": -+Test "tan_upward (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (7) == 0.8714479827243187364564508896003135663222": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (8) == -6.7997114552203786999252627596086333648814": -+double: 1 -+idouble: 1 -+ildouble: 2 -+ldouble: 2 -+Test "tan_upward (9) == -0.4523156594418098405903708757987855343087": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# tgamma -+Test "tgamma (-0.5) == -2 sqrt (pi)": - double: 2 - float: 1 - idouble: 2 - ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "y0 (1.5) == 0.382448923797758843955068554978089862": -+Test "tgamma (0.5) == sqrt (pi)": -+float: 1 -+ifloat: 1 -+Test "tgamma (0.7) == 1.29805533264755778568117117915281162": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 --Test "y0 (10.0) == 0.0556711672835993914244598774101900481": -+ -+# y0 -+Test "y0 (0.125) == -1.38968062514384052915582277745018693": -+ildouble: 1 -+ldouble: 1 -+Test "y0 (0.75) == -0.137172769385772397522814379396581855": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 -+Test "y0 (1.0) == 0.0882569642156769579829267660235151628": -+ildouble: 1 -+ldouble: 1 -+Test "y0 (10.0) == 0.0556711672835993914244598774101900481": -+float: 1 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "y0 (8.0) == 0.223521489387566220527323400498620359": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -766,9 +1211,6 @@ ldouble: 1 - Test "y1 (0.125) == -5.19993611253477499595928744876579921": - ildouble: 1 - ldouble: 1 --Test "y1 (1.0) == -0.781212821300288716547150000047964821": --double: 1 --idouble: 1 - Test "y1 (10.0) == 0.249015424206953883923283474663222803": - double: 2 - float: 2 -@@ -782,9 +1224,7 @@ ifloat: 2 - ildouble: 1 - ldouble: 1 - Test "y1 (8.0) == -0.158060461731247494255555266187483550": --double: 1 - float: 2 --idouble: 1 - ifloat: 2 - ildouble: 1 - ldouble: 1 -@@ -799,37 +1239,21 @@ float: 1 - idouble: 1 - ifloat: 1 - Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628": --double: 2 --float: 1 --idouble: 2 --ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "yn (0, 1.5) == 0.382448923797758843955068554978089862": --double: 1 --float: 1 --idouble: 1 --ifloat: 1 - Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "yn (0, 8.0) == 0.223521489387566220527323400498620359": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "yn (1, 0.125) == -5.19993611253477499595928744876579921": - ildouble: 1 - ldouble: 1 --Test "yn (1, 1.0) == -0.781212821300288716547150000047964821": --double: 1 --idouble: 1 - Test "yn (1, 10.0) == 0.249015424206953883923283474663222803": - double: 2 - float: 2 -@@ -843,17 +1267,13 @@ ifloat: 2 - ildouble: 1 - ldouble: 1 - Test "yn (1, 8.0) == -0.158060461731247494255555266187483550": --double: 1 - float: 2 --idouble: 1 - ifloat: 2 - ildouble: 1 - ldouble: 1 - Test "yn (10, 0.125) == -127057845771019398.252538486899753195": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "yn (10, 0.75) == -2133501638.90573424452445412893839236": -@@ -862,28 +1282,22 @@ ifloat: 1 - ildouble: 4 - ldouble: 4 - Test "yn (10, 1.0) == -121618014.278689189288130426667971145": --double: 1 - float: 2 --idouble: 1 - ifloat: 2 - Test "yn (10, 10.0) == -0.359814152183402722051986577343560609": - double: 1 --float: 3 -+float: 1 - idouble: 1 --ifloat: 3 -+ifloat: 1 - Test "yn (10, 2.0) == -129184.542208039282635913145923304214": --double: 2 - float: 3 --idouble: 2 - ifloat: 3 - Test "yn (3, 0.125) == -2612.69757350066712600220955744091741": - ildouble: 1 - ldouble: 1 - Test "yn (3, 0.75) == -12.9877176234475433186319774484809207": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "yn (3, 10.0) == -0.251362657183837329779204747654240998": -@@ -892,15 +1306,13 @@ float: 1 - idouble: 1 - ifloat: 1 - Test "yn (3, 2.0) == -1.12778377684042778608158395773179238": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - - # Maximal error of functions: - Function: "acos": --ildouble: 622 --ldouble: 622 -+ildouble: 1 -+ldouble: 1 - - Function: "asin": - ildouble: 1 -@@ -917,18 +1329,6 @@ ildouble: 2 - ldouble: 2 - - Function: Real part of "cacosh": --double: 1 --float: 9 --idouble: 1 --ifloat: 9 --ildouble: 6 --ldouble: 6 -- --Function: Imaginary part of "cacosh": --double: 1 --float: 4 --idouble: 1 --ifloat: 4 - ildouble: 1 - ldouble: 1 - -@@ -1033,8 +1433,6 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ildouble: 1 --ldouble: 1 - - Function: "cos": - double: 2 -@@ -1044,16 +1442,58 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - --Function: "cosh": -+Function: "cos_downward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cos_tonearest": - ildouble: 1 -+ldouble: 1 -+ -+Function: "cos_towardzero": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cos_upward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cosh_downward": -+double: 1 -+float: 1 -+ldouble: 2 -+ -+Function: "cosh_tonearest": -+ldouble: 1 -+ -+Function: "cosh_towardzero": -+double: 1 -+float: 1 -+ldouble: 2 -+ -+Function: "cosh_upward": -+double: 1 -+ldouble: 1 - - Function: Real part of "cpow": - double: 1 - float: 4 - idouble: 1 - ifloat: 4 --ildouble: 763 --ldouble: 763 -+ildouble: 6 -+ldouble: 6 - - Function: Imaginary part of "cpow": - double: 2 -@@ -1086,38 +1526,32 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ildouble: 2 --ldouble: 2 - - Function: Real part of "ctan": - double: 1 - idouble: 1 --ildouble: 439 --ldouble: 439 -+ildouble: 1 -+ldouble: 1 - - Function: Imaginary part of "ctan": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 3 - ldouble: 3 - - Function: Real part of "ctanh": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 --ildouble: 5 --ldouble: 5 -+ildouble: 3 -+ldouble: 3 - - Function: Imaginary part of "ctanh": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ildouble: 25 --ldouble: 25 -+ildouble: 1 -+ldouble: 1 - - Function: "erf": - double: 1 -@@ -1125,19 +1559,36 @@ idouble: 1 - - Function: "erfc": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - ildouble: 1 - ldouble: 1 - --Function: "exp": --ildouble: 754 -- - Function: "exp10": - ildouble: 8 - ldouble: 8 - -+Function: "exp_downward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "exp_towardzero": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "exp_upward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ - Function: "expm1": - ildouble: 1 - -@@ -1151,10 +1602,10 @@ Function: "hypot": - float: 1 - - Function: "j0": --double: 3 --float: 2 --idouble: 3 --ifloat: 2 -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - -@@ -1167,10 +1618,10 @@ ildouble: 1 - ldouble: 1 - - Function: "jn": --double: 5 --float: 2 --idouble: 5 --ifloat: 2 -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 - ildouble: 2 - ldouble: 2 - -@@ -1192,6 +1643,58 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - -+Function: "pow_downward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "pow_towardzero": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "pow_upward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_downward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_tonearest": -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_towardzero": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_upward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ - Function: "sincos": - double: 1 - float: 1 -@@ -1201,13 +1704,62 @@ ildouble: 1 - ldouble: 1 - - Function: "sinh": --double: 1 - ildouble: 1 - -+Function: "sinh_downward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ldouble: 5 -+ -+Function: "sinh_tonearest": -+ldouble: 6 -+ -+Function: "sinh_towardzero": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ldouble: 5 -+ -+Function: "sinh_upward": -+double: 1 -+idouble: 1 -+ldouble: 27 -+ - Function: "tan": - double: 1 - idouble: 1 - -+Function: "tan_downward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "tan_tonearest": -+ildouble: 1 -+ldouble: 1 -+ -+Function: "tan_towardzero": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "tan_upward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ - Function: "tgamma": - double: 2 - float: 1 -@@ -1217,9 +1769,9 @@ ildouble: 1 - ldouble: 1 - - Function: "y0": --double: 2 -+double: 1 - float: 1 --idouble: 2 -+idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -diff -Nrup a/sysdeps/ieee754/dbl-64/e_exp.c b/sysdeps/ieee754/dbl-64/e_exp.c ---- a/sysdeps/ieee754/dbl-64/e_exp.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/ieee754/dbl-64/e_exp.c 2012-08-06 09:54:00.823929687 -0600 -@@ -1,7 +1,7 @@ - /* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. -- * Copyright (C) 2001 Free Software Foundation -+ * Copyright (C) 2001-2012 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by -@@ -39,6 +39,7 @@ - #include "MathLib.h" - #include "uexp.tbl" - #include "math_private.h" -+#include <fenv.h> - - double __slowexp(double); - -@@ -53,6 +54,10 @@ double __ieee754_exp(double x) { - int4 k; - #endif - int4 i,j,m,n,ex; -+ fenv_t env; -+ double retval; -+ -+ libc_feholdexcept_setround (&env, FE_TONEAREST); - - junk1.x = x; - m = junk1.i[HIGH_HALF]; -@@ -85,18 +90,19 @@ double __ieee754_exp(double x) { - rem=(bet + bet*eps)+al*eps; - res = al + rem; - cor = (al - res) + rem; -- if (res == (res+cor*err_0)) return res*binexp.x; -- else return __slowexp(x); /*if error is over bound */ -+ if (res == (res+cor*err_0)) { retval = res*binexp.x; goto ret; } -+ else { retval = __slowexp(x); goto ret; } /*if error is over bound */ - } - -- if (n <= smallint) return 1.0; -+ if (n <= smallint) { retval = 1.0; goto ret; } - - if (n >= badint) { -- if (n > infint) return(x+x); /* x is NaN */ -- if (n < infint) return ( (x>0) ? (hhuge*hhuge) : (tiny*tiny) ); -+ if (n > infint) { retval = x+x; goto ret; } /* x is NaN */ -+ if (n < infint) { retval = (x>0) ? (hhuge*hhuge) : (tiny*tiny); goto ret; } - /* x is finite, cause either overflow or underflow */ -- if (junk1.i[LOW_HALF] != 0) return (x+x); /* x is NaN */ -- return ((x>0)?inf.x:zero ); /* |x| = inf; return either inf or 0 */ -+ if (junk1.i[LOW_HALF] != 0) { retval = x+x; goto ret; } /* x is NaN */ -+ retval = (x>0)?inf.x:zero; /* |x| = inf; return either inf or 0 */ -+ goto ret; - } - - y = x*log2e.x + three51.x; -@@ -121,8 +127,8 @@ double __ieee754_exp(double x) { - if (res < 1.0) {res+=res; cor+=cor; ex-=1;} - if (ex >=-1022) { - binexp.i[HIGH_HALF] = (1023+ex)<<20; -- if (res == (res+cor*err_0)) return res*binexp.x; -- else return __slowexp(x); /*if error is over bound */ -+ if (res == (res+cor*err_0)) { retval = res*binexp.x; goto ret; } -+ else { retval = __slowexp(x); goto ret; } /*if error is over bound */ - } - ex = -(1022+ex); - binexp.i[HIGH_HALF] = (1023-ex)<<20; -@@ -135,15 +141,19 @@ double __ieee754_exp(double x) { - cor = (t-res)+y; - if (res == (res + eps*cor)) - { binexp.i[HIGH_HALF] = 0x00100000; -- return (res-1.0)*binexp.x; -+ retval = (res-1.0)*binexp.x; -+ goto ret; - } -- else return __slowexp(x); /* if error is over bound */ -+ else { retval = __slowexp(x); goto ret; } /* if error is over bound */ - } - else { - binexp.i[HIGH_HALF] =(junk1.i[LOW_HALF]+767)<<20; -- if (res == (res+cor*err_0)) return res*binexp.x*t256.x; -- else return __slowexp(x); -+ if (res == (res+cor*err_0)) { retval = res*binexp.x*t256.x; goto ret; } -+ else { retval = __slowexp(x); goto ret; } - } -+ ret: -+ libc_feupdateenv (&env); -+ return retval; - } - - /************************************************************************/ -diff -Nrup a/sysdeps/ieee754/dbl-64/e_exp2.c b/sysdeps/ieee754/dbl-64/e_exp2.c ---- a/sysdeps/ieee754/dbl-64/e_exp2.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/ieee754/dbl-64/e_exp2.c 2012-08-06 09:54:00.824929683 -0600 -@@ -24,9 +24,6 @@ - 17 (1), March 1991, pp. 26-45. - It has been slightly modified to compute 2^x instead of e^x. - */ --#ifndef _GNU_SOURCE --#define _GNU_SOURCE --#endif - #include <stdlib.h> - #include <float.h> - #include <ieee754.h> -@@ -37,13 +34,8 @@ - - #include "t_exp2.h" - --/* XXX I know the assembler generates a warning about incorrect section -- attributes. But without the attribute here the compiler places the -- constants in the .data section. Ideally the constant is placed in -- .rodata.cst8 so that it can be merged, but gcc sucks, it ICEs when -- we try to force this section on it. --drepper */ --static const volatile double TWO1023 = 8.988465674311579539e+307; --static const volatile double TWOM1000 = 9.3326361850321887899e-302; -+static const double TWO1023 = 8.988465674311579539e+307; -+static const double TWOM1000 = 9.3326361850321887899e-302; - - double - __ieee754_exp2 (double x) -@@ -60,11 +52,7 @@ __ieee754_exp2 (double x) - union ieee754_double ex2_u, scale_u; - fenv_t oldenv; - -- feholdexcept (&oldenv); --#ifdef FE_TONEAREST -- /* If we don't have this, it's too bad. */ -- fesetround (FE_TONEAREST); --#endif -+ libc_feholdexcept_setround (&oldenv, FE_TONEAREST); - - /* 1. Argument reduction. - Choose integers ex, -256 <= t < 256, and some real -@@ -108,9 +96,10 @@ __ieee754_exp2 (double x) - * x + .055504110254308625) - * x + .240226506959100583) - * x + .69314718055994495) * ex2_u.d; -+ math_opt_barrier (x22); - - /* 5. Return (2^x2-1) * 2^(t/512+e+ex) + 2^(t/512+e+ex). */ -- fesetenv (&oldenv); -+ libc_fesetenv (&oldenv); - - result = x22 * x + ex2_u.d; - -diff -Nrup a/sysdeps/ieee754/dbl-64/e_pow.c b/sysdeps/ieee754/dbl-64/e_pow.c ---- a/sysdeps/ieee754/dbl-64/e_pow.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/ieee754/dbl-64/e_pow.c 2012-08-06 09:54:00.824929683 -0600 -@@ -42,6 +42,7 @@ - #include "MathLib.h" - #include "upow.tbl" - #include "math_private.h" -+#include <fenv.h> - - - double __exp1(double x, double xx, double error); -@@ -79,6 +80,11 @@ double __ieee754_pow(double x, double y) - (u.i[HIGH_HALF]==0 && u.i[LOW_HALF]!=0)) && - /* 2^-1023< x<= 2^-1023 * 0x1.0000ffffffff */ - (v.i[HIGH_HALF]&0x7fffffff) < 0x4ff00000) { /* if y<-1 or y>1 */ -+ fenv_t env; -+ double retval; -+ -+ libc_feholdexcept_setround (&env, FE_TONEAREST); -+ - z = log1(x,&aa,&error); /* x^y =e^(y log (X)) */ - t = y*134217729.0; - y1 = t - (t-y); -@@ -92,7 +98,10 @@ double __ieee754_pow(double x, double y) - a2 = (a-a1)+aa; - error = error*ABS(y); - t = __exp1(a1,a2,1.9e16*error); /* return -10 or 0 if wasn't computed exactly */ -- return (t>0)?t:power1(x,y); -+ retval = (t>0)?t:power1(x,y); -+ -+ libc_feupdateenv (&env); -+ return retval; - } - - if (x == 0) { -diff -Nrup a/sysdeps/ieee754/dbl-64/s_sin.c b/sysdeps/ieee754/dbl-64/s_sin.c ---- a/sysdeps/ieee754/dbl-64/s_sin.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/ieee754/dbl-64/s_sin.c 2012-08-06 09:54:00.827929671 -0600 -@@ -55,6 +55,7 @@ - #include "MathLib.h" - #include "sincos.tbl" - #include "math_private.h" -+#include <fenv.h> - - static const double - sn3 = -1.66666666666664880952546298448555E-01, -@@ -97,12 +98,16 @@ double __sin(double x){ - #if 0 - int4 nn; - #endif -+ fenv_t env; -+ double retval = 0; -+ -+ libc_feholdexcept_setround (&env, FE_TONEAREST); - - u.x = x; - m = u.i[HIGH_HALF]; - k = 0x7fffffff&m; /* no sign */ - if (k < 0x3e500000) /* if x->0 =>sin(x)=x */ -- return x; -+ { retval = x; goto ret; } - /*---------------------------- 2^-26 < |x|< 0.25 ----------------------*/ - else if (k < 0x3fd00000){ - xx = x*x; -@@ -110,7 +115,8 @@ double __sin(double x){ - t = ((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + s1.x)*(xx*x); - res = x+t; - cor = (x-res)+t; -- return (res == res + 1.07*cor)? res : slow(x); -+ retval = (res == res + 1.07*cor)? res : slow(x); -+ goto ret; - } /* else if (k < 0x3fd00000) */ - /*---------------------------- 0.25<|x|< 0.855469---------------------- */ - else if (k < 0x3feb6000) { -@@ -127,7 +133,8 @@ double __sin(double x){ - cor=(ssn+s*ccs-sn*c)+cs*s; - res=sn+cor; - cor=(sn-res)+cor; -- return (res==res+1.025*cor)? res : slow1(x); -+ retval = (res==res+1.096*cor)? res : slow1(x); -+ goto ret; - } /* else if (k < 0x3feb6000) */ - - /*----------------------- 0.855469 <|x|<2.426265 ----------------------*/ -@@ -153,7 +160,8 @@ double __sin(double x){ - cor=(ccs-s*ssn-cs*c)-sn*s; - res=cs+cor; - cor=(cs-res)+cor; -- return (res==res+1.020*cor)? ((m>0)?res:-res) : slow2(x); -+ retval = (res==res+1.020*cor)? ((m>0)?res:-res) : slow2(x); -+ goto ret; - } /* else if (k < 0x400368fd) */ - - /*-------------------------- 2.426265<|x|< 105414350 ----------------------*/ -@@ -179,7 +187,8 @@ double __sin(double x){ - res = a+t; - cor = (a-res)+t; - cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps; -- return (res == res + cor)? res : sloww(a,da,x); -+ retval = (res == res + cor)? res : sloww(a,da,x); -+ goto ret; - } - else { - if (a>0) -@@ -200,7 +209,8 @@ double __sin(double x){ - res=sn+cor; - cor=(sn-res)+cor; - cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps; -- return (res==res+cor)? ((m)?res:-res) : sloww1(a,da,x); -+ retval = (res==res+cor)? ((m)?res:-res) : sloww1(a,da,x); -+ goto ret; - } - break; - -@@ -222,7 +232,8 @@ double __sin(double x){ - res=cs+cor; - cor=(cs-res)+cor; - cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps; -- return (res==res+cor)? ((n&2)?-res:res) : sloww2(a,da,x,n); -+ retval = (res==res+cor)? ((n&2)?-res:res) : sloww2(a,da,x,n); -+ goto ret; - - break; - -@@ -258,7 +269,8 @@ double __sin(double x){ - res = a+t; - cor = (a-res)+t; - cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps; -- return (res == res + cor)? res : bsloww(a,da,x,n); -+ retval = (res == res + cor)? res : bsloww(a,da,x,n); -+ goto ret; - } - else { - if (a>0) {m=1;t=a;db=da;} -@@ -277,7 +289,8 @@ double __sin(double x){ - res=sn+cor; - cor=(sn-res)+cor; - cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps; -- return (res==res+cor)? ((m)?res:-res) : bsloww1(a,da,x,n); -+ retval = (res==res+cor)? ((m)?res:-res) : bsloww1(a,da,x,n); -+ goto ret; - } - break; - -@@ -299,7 +312,8 @@ double __sin(double x){ - res=cs+cor; - cor=(cs-res)+cor; - cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps; -- return (res==res+cor)? ((n&2)?-res:res) : bsloww2(a,da,x,n); -+ retval = (res==res+cor)? ((n&2)?-res:res) : bsloww2(a,da,x,n); -+ goto ret; - - break; - -@@ -313,17 +327,20 @@ double __sin(double x){ - n = __branred(x,&a,&da); - switch (n) { - case 0: -- if (a*a < 0.01588) return bsloww(a,da,x,n); -- else return bsloww1(a,da,x,n); -+ if (a*a < 0.01588) retval = bsloww(a,da,x,n); -+ else retval = bsloww1(a,da,x,n); -+ goto ret; - break; - case 2: -- if (a*a < 0.01588) return bsloww(-a,-da,x,n); -- else return bsloww1(-a,-da,x,n); -+ if (a*a < 0.01588) retval = bsloww(-a,-da,x,n); -+ else retval = bsloww1(-a,-da,x,n); -+ goto ret; - break; - - case 1: - case 3: -- return bsloww2(a,da,x,n); -+ retval = bsloww2(a,da,x,n); -+ goto ret; - break; - } - -@@ -333,9 +350,13 @@ double __sin(double x){ - else { - if (k == 0x7ff00000 && u.i[LOW_HALF] == 0) - __set_errno (EDOM); -- return x / x; -+ retval = x / x; -+ goto ret; - } -- return 0; /* unreachable */ -+ -+ ret: -+ libc_feupdateenv (&env); -+ return retval; - } - - -@@ -350,11 +371,16 @@ double __cos(double x) - mynumber u,v; - int4 k,m,n; - -+ fenv_t env; -+ double retval = 0; -+ -+ libc_feholdexcept_setround (&env, FE_TONEAREST); -+ - u.x = x; - m = u.i[HIGH_HALF]; - k = 0x7fffffff&m; - -- if (k < 0x3e400000 ) return 1.0; /* |x|<2^-27 => cos(x)=1 */ -+ if (k < 0x3e400000 ) { retval = 1.0; goto ret; } /* |x|<2^-27 => cos(x)=1 */ - - else if (k < 0x3feb6000 ) {/* 2^-27 < |x| < 0.855469 */ - y=ABS(x); -@@ -371,7 +397,8 @@ double __cos(double x) - cor=(ccs-s*ssn-cs*c)-sn*s; - res=cs+cor; - cor=(cs-res)+cor; -- return (res==res+1.020*cor)? res : cslow2(x); -+ retval = (res==res+1.020*cor)? res : cslow2(x); -+ goto ret; - - } /* else if (k < 0x3feb6000) */ - -@@ -385,7 +412,8 @@ double __cos(double x) - res = a+t; - cor = (a-res)+t; - cor = (cor>0)? 1.02*cor+1.0e-31 : 1.02*cor -1.0e-31; -- return (res == res + cor)? res : csloww(a,da,x); -+ retval = (res == res + cor)? res : csloww(a,da,x); -+ goto ret; - } - else { - if (a>0) {m=1;t=a;db=da;} -@@ -404,7 +432,8 @@ double __cos(double x) - res=sn+cor; - cor=(sn-res)+cor; - cor = (cor>0)? 1.035*cor+1.0e-31 : 1.035*cor-1.0e-31; -- return (res==res+cor)? ((m)?res:-res) : csloww1(a,da,x); -+ retval = (res==res+cor)? ((m)?res:-res) : csloww1(a,da,x); -+ goto ret; - } - - } /* else if (k < 0x400368fd) */ -@@ -431,7 +460,8 @@ double __cos(double x) - res = a+t; - cor = (a-res)+t; - cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps; -- return (res == res + cor)? res : csloww(a,da,x); -+ retval = (res == res + cor)? res : csloww(a,da,x); -+ goto ret; - } - else { - if (a>0) {m=1;t=a;db=da;} -@@ -450,7 +480,8 @@ double __cos(double x) - res=sn+cor; - cor=(sn-res)+cor; - cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps; -- return (res==res+cor)? ((m)?res:-res) : csloww1(a,da,x); -+ retval = (res==res+cor)? ((m)?res:-res) : csloww1(a,da,x); -+ goto ret; - } - break; - -@@ -471,7 +502,8 @@ double __cos(double x) - res=cs+cor; - cor=(cs-res)+cor; - cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps; -- return (res==res+cor)? ((n)?-res:res) : csloww2(a,da,x,n); -+ retval = (res==res+cor)? ((n)?-res:res) : csloww2(a,da,x,n); -+ goto ret; - - break; - -@@ -506,7 +538,8 @@ double __cos(double x) - res = a+t; - cor = (a-res)+t; - cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps; -- return (res == res + cor)? res : bsloww(a,da,x,n); -+ retval = (res == res + cor)? res : bsloww(a,da,x,n); -+ goto ret; - } - else { - if (a>0) {m=1;t=a;db=da;} -@@ -525,7 +558,8 @@ double __cos(double x) - res=sn+cor; - cor=(sn-res)+cor; - cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps; -- return (res==res+cor)? ((m)?res:-res) : bsloww1(a,da,x,n); -+ retval = (res==res+cor)? ((m)?res:-res) : bsloww1(a,da,x,n); -+ goto ret; - } - break; - -@@ -546,7 +580,8 @@ double __cos(double x) - res=cs+cor; - cor=(cs-res)+cor; - cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps; -- return (res==res+cor)? ((n)?-res:res) : bsloww2(a,da,x,n); -+ retval = (res==res+cor)? ((n)?-res:res) : bsloww2(a,da,x,n); -+ goto ret; - break; - - } -@@ -558,17 +593,20 @@ double __cos(double x) - n = __branred(x,&a,&da); - switch (n) { - case 1: -- if (a*a < 0.01588) return bsloww(-a,-da,x,n); -- else return bsloww1(-a,-da,x,n); -+ if (a*a < 0.01588) retval = bsloww(-a,-da,x,n); -+ else retval = bsloww1(-a,-da,x,n); -+ goto ret; - break; - case 3: -- if (a*a < 0.01588) return bsloww(a,da,x,n); -- else return bsloww1(a,da,x,n); -+ if (a*a < 0.01588) retval = bsloww(a,da,x,n); -+ else retval = bsloww1(a,da,x,n); -+ goto ret; - break; - - case 0: - case 2: -- return bsloww2(a,da,x,n); -+ retval = bsloww2(a,da,x,n); -+ goto ret; - break; - } - -@@ -580,10 +618,13 @@ double __cos(double x) - else { - if (k == 0x7ff00000 && u.i[LOW_HALF] == 0) - __set_errno (EDOM); -- return x / x; /* |x| > 2^1024 */ -+ retval = x / x; /* |x| > 2^1024 */ -+ goto ret; - } -- return 0; - -+ ret: -+ libc_feupdateenv (&env); -+ return retval; - } - - /************************************************************************/ -diff -Nrup a/sysdeps/ieee754/dbl-64/s_tan.c b/sysdeps/ieee754/dbl-64/s_tan.c ---- a/sysdeps/ieee754/dbl-64/s_tan.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/ieee754/dbl-64/s_tan.c 2012-08-06 09:54:00.828929666 -0600 -@@ -40,6 +40,8 @@ - #include "mpa.h" - #include "MathLib.h" - #include "math.h" -+#include "math_private.h" -+#include <fenv.h> - - static double tanMp(double); - void __mptan(double, mp_no *, int); -@@ -58,21 +60,27 @@ double tan(double x) { - mp_no mpy; - #endif - -+ fenv_t env; -+ double retval; -+ - int __branred(double, double *, double *); - int __mpranred(double, mp_no *, int); - -+ libc_feholdexcept_setround (&env, FE_TONEAREST); -+ - /* x=+-INF, x=NaN */ - num.d = x; ux = num.i[HIGH_HALF]; - if ((ux&0x7ff00000)==0x7ff00000) { - if ((ux&0x7fffffff)==0x7ff00000) - __set_errno (EDOM); -- return x-x; -+ retval = x-x; -+ goto ret; - } - - w=(x<ZERO) ? -x : x; - - /* (I) The case abs(x) <= 1.259e-8 */ -- if (w<=g1.d) return x; -+ if (w<=g1.d) { retval = x; goto ret; } - - /* (II) The case 1.259e-8 < abs(x) <= 0.0608 */ - if (w<=g2.d) { -@@ -80,7 +88,7 @@ double tan(double x) { - /* First stage */ - x2 = x*x; - t2 = x*x2*(d3.d+x2*(d5.d+x2*(d7.d+x2*(d9.d+x2*d11.d)))); -- if ((y=x+(t2-u1.d*t2)) == x+(t2+u1.d*t2)) return y; -+ if ((y=x+(t2-u1.d*t2)) == x+(t2+u1.d*t2)) { retval = y; goto ret; } - - /* Second stage */ - c1 = x2*(a15.d+x2*(a17.d+x2*(a19.d+x2*(a21.d+x2*(a23.d+x2*(a25.d+ -@@ -100,8 +108,9 @@ double tan(double x) { - MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8) - MUL2(x ,zero.d,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8) - ADD2(x ,zero.d,c2,cc2,c1,cc1,t1,t2) -- if ((y=c1+(cc1-u2.d*c1)) == c1+(cc1+u2.d*c1)) return y; -- return tanMp(x); -+ if ((y=c1+(cc1-u2.d*c1)) == c1+(cc1+u2.d*c1)) { retval = y; goto ret; } -+ retval = tanMp(x); -+ goto ret; - } - - /* (III) The case 0.0608 < abs(x) <= 0.787 */ -@@ -112,10 +121,10 @@ double tan(double x) { - z = w-xfg[i][0].d; z2 = z*z; s = (x<ZERO) ? MONE : ONE; - pz = z+z*z2*(e0.d+z2*e1.d); - fi = xfg[i][1].d; gi = xfg[i][2].d; t2 = pz*(gi+fi)/(gi-pz); -- if ((y=fi+(t2-fi*u3.d))==fi+(t2+fi*u3.d)) return (s*y); -+ if ((y=fi+(t2-fi*u3.d))==fi+(t2+fi*u3.d)) { retval = (s*y); goto ret; } - t3 = (t2<ZERO) ? -t2 : t2; - t4 = fi*ua3.d+t3*ub3.d; -- if ((y=fi+(t2-t4))==fi+(t2+t4)) return (s*y); -+ if ((y=fi+(t2-t4))==fi+(t2+t4)) { retval = (s*y); goto ret; } - - /* Second stage */ - ffi = xfg[i][3].d; -@@ -133,8 +142,9 @@ double tan(double x) { - SUB2(one.d,zero.d,c3,cc3,c1,cc1,t1,t2) - DIV2(c2,cc2,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) - -- if ((y=c3+(cc3-u4.d*c3))==c3+(cc3+u4.d*c3)) return (s*y); -- return tanMp(x); -+ if ((y=c3+(cc3-u4.d*c3))==c3+(cc3+u4.d*c3)) { retval = (s*y); goto ret; } -+ retval = tanMp(x); -+ goto ret; - } - - /* (---) The case 0.787 < abs(x) <= 25 */ -@@ -152,7 +162,7 @@ double tan(double x) { - else {ya= a; yya= da; sy= ONE;} - - /* (IV),(V) The case 0.787 < abs(x) <= 25, abs(y) <= 1e-7 */ -- if (ya<=gy1.d) return tanMp(x); -+ if (ya<=gy1.d) { retval = tanMp(x); goto ret; } - - /* (VI) The case 0.787 < abs(x) <= 25, 1e-7 < abs(y) <= 0.0608 */ - if (ya<=gy2.d) { -@@ -162,10 +172,10 @@ double tan(double x) { - /* First stage -cot */ - EADD(a,t2,b,db) - DIV2(one.d,zero.d,b,db,c,dc,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) -- if ((y=c+(dc-u6.d*c))==c+(dc+u6.d*c)) return (-y); } -+ if ((y=c+(dc-u6.d*c))==c+(dc+u6.d*c)) { retval = (-y); goto ret; } } - else { - /* First stage tan */ -- if ((y=a+(t2-u5.d*a))==a+(t2+u5.d*a)) return y; } -+ if ((y=a+(t2-u5.d*a))==a+(t2+u5.d*a)) { retval = y; goto ret; } } - /* Second stage */ - /* Range reduction by algorithm ii */ - t = (x*hpinv.d + toint.d); -@@ -203,11 +213,12 @@ double tan(double x) { - if (n) { - /* Second stage -cot */ - DIV2(one.d,zero.d,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) -- if ((y=c2+(cc2-u8.d*c2)) == c2+(cc2+u8.d*c2)) return (-y); } -+ if ((y=c2+(cc2-u8.d*c2)) == c2+(cc2+u8.d*c2)) { retval = (-y); goto ret; } } - else { - /* Second stage tan */ -- if ((y=c1+(cc1-u7.d*c1)) == c1+(cc1+u7.d*c1)) return y; } -- return tanMp(x); -+ if ((y=c1+(cc1-u7.d*c1)) == c1+(cc1+u7.d*c1)) { retval = y; goto ret; } } -+ retval = tanMp(x); -+ goto ret; - } - - /* (VII) The case 0.787 < abs(x) <= 25, 0.0608 < abs(y) <= 0.787 */ -@@ -221,17 +232,17 @@ double tan(double x) { - if (n) { - /* -cot */ - t2 = pz*(fi+gi)/(fi+pz); -- if ((y=gi-(t2-gi*u10.d))==gi-(t2+gi*u10.d)) return (-sy*y); -+ if ((y=gi-(t2-gi*u10.d))==gi-(t2+gi*u10.d)) { retval = (-sy*y); goto ret; } - t3 = (t2<ZERO) ? -t2 : t2; - t4 = gi*ua10.d+t3*ub10.d; -- if ((y=gi-(t2-t4))==gi-(t2+t4)) return (-sy*y); } -+ if ((y=gi-(t2-t4))==gi-(t2+t4)) { retval = (-sy*y); goto ret; } } - else { - /* tan */ - t2 = pz*(gi+fi)/(gi-pz); -- if ((y=fi+(t2-fi*u9.d))==fi+(t2+fi*u9.d)) return (sy*y); -+ if ((y=fi+(t2-fi*u9.d))==fi+(t2+fi*u9.d)) { retval = (sy*y); goto ret; } - t3 = (t2<ZERO) ? -t2 : t2; - t4 = fi*ua9.d+t3*ub9.d; -- if ((y=fi+(t2-t4))==fi+(t2+t4)) return (sy*y); } -+ if ((y=fi+(t2-t4))==fi+(t2+t4)) { retval = (sy*y); goto ret; } } - - /* Second stage */ - ffi = xfg[i][3].d; -@@ -252,13 +263,14 @@ double tan(double x) { - if (n) { - /* -cot */ - DIV2(c1,cc1,c2,cc2,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) -- if ((y=c3+(cc3-u12.d*c3))==c3+(cc3+u12.d*c3)) return (-sy*y); } -+ if ((y=c3+(cc3-u12.d*c3))==c3+(cc3+u12.d*c3)) { retval = (-sy*y); goto ret; } } - else { - /* tan */ - DIV2(c2,cc2,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) -- if ((y=c3+(cc3-u11.d*c3))==c3+(cc3+u11.d*c3)) return (sy*y); } -+ if ((y=c3+(cc3-u11.d*c3))==c3+(cc3+u11.d*c3)) { retval = (sy*y); goto ret; } } - -- return tanMp(x); -+ retval = tanMp(x); -+ goto ret; - } - - /* (---) The case 25 < abs(x) <= 1e8 */ -@@ -280,7 +292,7 @@ double tan(double x) { - else {ya= a; yya= da; sy= ONE;} - - /* (+++) The case 25 < abs(x) <= 1e8, abs(y) <= 1e-7 */ -- if (ya<=gy1.d) return tanMp(x); -+ if (ya<=gy1.d) { retval = tanMp(x); goto ret; } - - /* (VIII) The case 25 < abs(x) <= 1e8, 1e-7 < abs(y) <= 0.0608 */ - if (ya<=gy2.d) { -@@ -290,10 +302,10 @@ double tan(double x) { - /* First stage -cot */ - EADD(a,t2,b,db) - DIV2(one.d,zero.d,b,db,c,dc,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) -- if ((y=c+(dc-u14.d*c))==c+(dc+u14.d*c)) return (-y); } -+ if ((y=c+(dc-u14.d*c))==c+(dc+u14.d*c)) { retval = (-y); goto ret; } } - else { - /* First stage tan */ -- if ((y=a+(t2-u13.d*a))==a+(t2+u13.d*a)) return y; } -+ if ((y=a+(t2-u13.d*a))==a+(t2+u13.d*a)) { retval = y; goto ret; } } - - /* Second stage */ - MUL2(a,da,a,da,x2,xx2,t1,t2,t3,t4,t5,t6,t7,t8) -@@ -317,11 +329,12 @@ double tan(double x) { - if (n) { - /* Second stage -cot */ - DIV2(one.d,zero.d,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) -- if ((y=c2+(cc2-u16.d*c2)) == c2+(cc2+u16.d*c2)) return (-y); } -+ if ((y=c2+(cc2-u16.d*c2)) == c2+(cc2+u16.d*c2)) { retval = (-y); goto ret; } } - else { - /* Second stage tan */ -- if ((y=c1+(cc1-u15.d*c1)) == c1+(cc1+u15.d*c1)) return (y); } -- return tanMp(x); -+ if ((y=c1+(cc1-u15.d*c1)) == c1+(cc1+u15.d*c1)) { retval = (y); goto ret; } } -+ retval = tanMp(x); -+ goto ret; - } - - /* (IX) The case 25 < abs(x) <= 1e8, 0.0608 < abs(y) <= 0.787 */ -@@ -334,17 +347,17 @@ double tan(double x) { - if (n) { - /* -cot */ - t2 = pz*(fi+gi)/(fi+pz); -- if ((y=gi-(t2-gi*u18.d))==gi-(t2+gi*u18.d)) return (-sy*y); -+ if ((y=gi-(t2-gi*u18.d))==gi-(t2+gi*u18.d)) { retval = (-sy*y); goto ret; } - t3 = (t2<ZERO) ? -t2 : t2; - t4 = gi*ua18.d+t3*ub18.d; -- if ((y=gi-(t2-t4))==gi-(t2+t4)) return (-sy*y); } -+ if ((y=gi-(t2-t4))==gi-(t2+t4)) { retval = (-sy*y); goto ret; } } - else { - /* tan */ - t2 = pz*(gi+fi)/(gi-pz); -- if ((y=fi+(t2-fi*u17.d))==fi+(t2+fi*u17.d)) return (sy*y); -+ if ((y=fi+(t2-fi*u17.d))==fi+(t2+fi*u17.d)) { retval = (sy*y); goto ret; } - t3 = (t2<ZERO) ? -t2 : t2; - t4 = fi*ua17.d+t3*ub17.d; -- if ((y=fi+(t2-t4))==fi+(t2+t4)) return (sy*y); } -+ if ((y=fi+(t2-t4))==fi+(t2+t4)) { retval = (sy*y); goto ret; } } - - /* Second stage */ - ffi = xfg[i][3].d; -@@ -365,12 +378,13 @@ double tan(double x) { - if (n) { - /* -cot */ - DIV2(c1,cc1,c2,cc2,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) -- if ((y=c3+(cc3-u20.d*c3))==c3+(cc3+u20.d*c3)) return (-sy*y); } -+ if ((y=c3+(cc3-u20.d*c3))==c3+(cc3+u20.d*c3)) { retval = (-sy*y); goto ret; } } - else { - /* tan */ - DIV2(c2,cc2,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) -- if ((y=c3+(cc3-u19.d*c3))==c3+(cc3+u19.d*c3)) return (sy*y); } -- return tanMp(x); -+ if ((y=c3+(cc3-u19.d*c3))==c3+(cc3+u19.d*c3)) { retval = (sy*y); goto ret; } } -+ retval = tanMp(x); -+ goto ret; - } - - /* (---) The case 1e8 < abs(x) < 2**1024 */ -@@ -381,7 +395,7 @@ double tan(double x) { - else {ya= a; yya= da; sy= ONE;} - - /* (+++) The case 1e8 < abs(x) < 2**1024, abs(y) <= 1e-7 */ -- if (ya<=gy1.d) return tanMp(x); -+ if (ya<=gy1.d) { retval = tanMp(x); goto ret; } - - /* (X) The case 1e8 < abs(x) < 2**1024, 1e-7 < abs(y) <= 0.0608 */ - if (ya<=gy2.d) { -@@ -391,10 +405,10 @@ double tan(double x) { - /* First stage -cot */ - EADD(a,t2,b,db) - DIV2(one.d,zero.d,b,db,c,dc,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) -- if ((y=c+(dc-u22.d*c))==c+(dc+u22.d*c)) return (-y); } -+ if ((y=c+(dc-u22.d*c))==c+(dc+u22.d*c)) { retval = (-y); goto ret; } } - else { - /* First stage tan */ -- if ((y=a+(t2-u21.d*a))==a+(t2+u21.d*a)) return y; } -+ if ((y=a+(t2-u21.d*a))==a+(t2+u21.d*a)) { retval = y; goto ret; } } - - /* Second stage */ - /* Reduction by algorithm iv */ -@@ -423,11 +437,12 @@ double tan(double x) { - if (n) { - /* Second stage -cot */ - DIV2(one.d,zero.d,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) -- if ((y=c2+(cc2-u24.d*c2)) == c2+(cc2+u24.d*c2)) return (-y); } -+ if ((y=c2+(cc2-u24.d*c2)) == c2+(cc2+u24.d*c2)) { retval = (-y); goto ret; } } - else { - /* Second stage tan */ -- if ((y=c1+(cc1-u23.d*c1)) == c1+(cc1+u23.d*c1)) return y; } -- return tanMp(x); -+ if ((y=c1+(cc1-u23.d*c1)) == c1+(cc1+u23.d*c1)) { retval = y; goto ret; } } -+ retval = tanMp(x); -+ goto ret; - } - - /* (XI) The case 1e8 < abs(x) < 2**1024, 0.0608 < abs(y) <= 0.787 */ -@@ -440,17 +455,17 @@ double tan(double x) { - if (n) { - /* -cot */ - t2 = pz*(fi+gi)/(fi+pz); -- if ((y=gi-(t2-gi*u26.d))==gi-(t2+gi*u26.d)) return (-sy*y); -+ if ((y=gi-(t2-gi*u26.d))==gi-(t2+gi*u26.d)) { retval = (-sy*y); goto ret; } - t3 = (t2<ZERO) ? -t2 : t2; - t4 = gi*ua26.d+t3*ub26.d; -- if ((y=gi-(t2-t4))==gi-(t2+t4)) return (-sy*y); } -+ if ((y=gi-(t2-t4))==gi-(t2+t4)) { retval = (-sy*y); goto ret; } } - else { - /* tan */ - t2 = pz*(gi+fi)/(gi-pz); -- if ((y=fi+(t2-fi*u25.d))==fi+(t2+fi*u25.d)) return (sy*y); -+ if ((y=fi+(t2-fi*u25.d))==fi+(t2+fi*u25.d)) { retval = (sy*y); goto ret; } - t3 = (t2<ZERO) ? -t2 : t2; - t4 = fi*ua25.d+t3*ub25.d; -- if ((y=fi+(t2-t4))==fi+(t2+t4)) return (sy*y); } -+ if ((y=fi+(t2-t4))==fi+(t2+t4)) { retval = (sy*y); goto ret; } } - - /* Second stage */ - ffi = xfg[i][3].d; -@@ -471,15 +486,19 @@ double tan(double x) { - if (n) { - /* -cot */ - DIV2(c1,cc1,c2,cc2,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) -- if ((y=c3+(cc3-u28.d*c3))==c3+(cc3+u28.d*c3)) return (-sy*y); } -+ if ((y=c3+(cc3-u28.d*c3))==c3+(cc3+u28.d*c3)) { retval = (-sy*y); goto ret; } } - else { - /* tan */ - DIV2(c2,cc2,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) -- if ((y=c3+(cc3-u27.d*c3))==c3+(cc3+u27.d*c3)) return (sy*y); } -- return tanMp(x); -+ if ((y=c3+(cc3-u27.d*c3))==c3+(cc3+u27.d*c3)) { retval = (sy*y); goto ret; } } -+ retval = tanMp(x); -+ goto ret; -+ -+ ret: -+ libc_feupdateenv (&env); -+ return retval; - } - -- - /* multiple precision stage */ - /* Convert x to multi precision number,compute tan(x) by mptan() routine */ - /* and converts result back to double */ -diff -Nrup a/sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c ---- a/sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c 2012-08-06 09:54:00.828929666 -0600 -@@ -24,22 +24,14 @@ - #include "math.h" - #include "math_private.h" - --#ifdef __STDC__ - static const double --#else --static double --#endif - TWO52[2]={ - 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */ - -4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */ - }; - --#ifdef __STDC__ -- double __nearbyint(double x) --#else -- double __nearbyint(x) -- double x; --#endif -+double -+__nearbyint(double x) - { - fenv_t env; - int64_t i0,sx; -@@ -47,20 +39,19 @@ TWO52[2]={ - EXTRACT_WORDS64(i0,x); - sx = (i0>>63)&1; - j0 = ((i0>>52)&0x7ff)-0x3ff; -- if(j0<52) { -+ if(__builtin_expect(j0<52, 1)) { - if(j0<0) { - if((i0&UINT64_C(0x7fffffffffffffff))==0) return x; - uint64_t i = i0 & UINT64_C(0xfffffffffffff); - i0 &= UINT64_C(0xfffe000000000000); - i0 |= (((i|-i) >> 12) & UINT64_C(0x8000000000000)); - INSERT_WORDS64(x,i0); -- feholdexcept (&env); -+ libc_feholdexcept (&env); - double w = TWO52[sx]+x; - double t = w-TWO52[sx]; -- fesetenv (&env); -- EXTRACT_WORDS64(i0,t); -- INSERT_WORDS64(t,(i0&UINT64_C(0x7fffffffffffffff))|(sx<<63)); -- return t; -+ math_opt_barrier(t); -+ libc_fesetenv (&env); -+ return copysign(t, x); - } else { - uint64_t i = UINT64_C(0x000fffffffffffff)>>j0; - if((i0&i)==0) return x; /* x is integral */ -@@ -73,10 +64,11 @@ TWO52[2]={ - else return x; /* x is integral */ - } - INSERT_WORDS64(x,i0); -- feholdexcept (&env); -+ libc_feholdexcept (&env); - double w = TWO52[sx]+x; - double t = w-TWO52[sx]; -- fesetenv (&env); -+ math_opt_barrier (t); -+ libc_fesetenv (&env); - return t; - } - weak_alias (__nearbyint, nearbyint) -diff -Nrup a/sysdeps/ieee754/flt-32/e_exp2f.c b/sysdeps/ieee754/flt-32/e_exp2f.c ---- a/sysdeps/ieee754/flt-32/e_exp2f.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/ieee754/flt-32/e_exp2f.c 2012-08-06 09:54:00.829929661 -0600 -@@ -56,11 +56,7 @@ __ieee754_exp2f (float x) - union ieee754_float ex2_u, scale_u; - fenv_t oldenv; - -- feholdexcept (&oldenv); --#ifdef FE_TONEAREST -- /* If we don't have this, it's too bad. */ -- fesetround (FE_TONEAREST); --#endif -+ libc_feholdexcept_setroundf (&oldenv, FE_TONEAREST); - - /* 1. Argument reduction. - Choose integers ex, -128 <= t < 128, and some real -@@ -103,7 +99,7 @@ __ieee754_exp2f (float x) - x22 = (.24022656679f * x + .69314736128f) * ex2_u.f; - - /* 5. Return (2^x2-1) * 2^(t/512+e+ex) + 2^(t/512+e+ex). */ -- fesetenv (&oldenv); -+ libc_fesetenv (&oldenv); - - result = x22 * x + ex2_u.f; - -diff -Nrup a/sysdeps/ieee754/flt-32/e_expf.c b/sysdeps/ieee754/flt-32/e_expf.c ---- a/sysdeps/ieee754/flt-32/e_expf.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/ieee754/flt-32/e_expf.c 2012-08-06 09:54:00.829929661 -0600 -@@ -47,9 +47,6 @@ - to perform an 'accurate table method' expf, because of the range reduction - overhead (compare exp2f). - */ --#ifndef _GNU_SOURCE --#define _GNU_SOURCE --#endif - #include <float.h> - #include <ieee754.h> - #include <math.h> -@@ -60,8 +57,8 @@ - extern const float __exp_deltatable[178]; - extern const double __exp_atable[355] /* __attribute__((mode(DF))) */; - --static const volatile float TWOM100 = 7.88860905e-31; --static const volatile float TWO127 = 1.7014118346e+38; -+static const float TWOM100 = 7.88860905e-31; -+static const float TWO127 = 1.7014118346e+38; - - float - __ieee754_expf (float x) -@@ -86,10 +83,7 @@ __ieee754_expf (float x) - union ieee754_double ex2_u; - fenv_t oldenv; - -- feholdexcept (&oldenv); --#ifdef FE_TONEAREST -- fesetround (FE_TONEAREST); --#endif -+ libc_feholdexcept_setroundf (&oldenv, FE_TONEAREST); - - /* Calculate n. */ - n = x * M_1_LN2 + THREEp22; -@@ -119,7 +113,7 @@ __ieee754_expf (float x) - x22 = (0.5000000496709180453 * dx + 1.0000001192102037084) * dx + delta; - - /* Return result. */ -- fesetenv (&oldenv); -+ libc_fesetenvf (&oldenv); - - result = x22 * ex2_u.d + ex2_u.d; - return (float) result; -diff -Nrup a/sysdeps/ieee754/flt-32/s_nearbyintf.c b/sysdeps/ieee754/flt-32/s_nearbyintf.c ---- a/sysdeps/ieee754/flt-32/s_nearbyintf.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/ieee754/flt-32/s_nearbyintf.c 2012-08-06 09:54:00.891929402 -0600 -@@ -19,22 +19,14 @@ - #include "math.h" - #include "math_private.h" - --#ifdef __STDC__ - static const float --#else --static float --#endif - TWO23[2]={ - 8.3886080000e+06, /* 0x4b000000 */ - -8.3886080000e+06, /* 0xcb000000 */ - }; - --#ifdef __STDC__ -- float __nearbyintf(float x) --#else -- float __nearbyintf(x) -- float x; --#endif -+float -+__nearbyintf(float x) - { - fenv_t env; - int32_t i0,j0,sx; -@@ -50,13 +42,13 @@ TWO23[2]={ - i0 &= 0xfff00000; - i0 |= ((i1|-i1)>>9)&0x400000; - SET_FLOAT_WORD(x,i0); -- feholdexcept (&env); -- w = TWO23[sx]+x; -- t = w-TWO23[sx]; -- fesetenv (&env); -+ libc_feholdexceptf (&env); -+ w = TWO23[sx]+x; -+ t = w-TWO23[sx]; -+ libc_fesetenvf (&env); - GET_FLOAT_WORD(i0,t); - SET_FLOAT_WORD(t,(i0&0x7fffffff)|(sx<<31)); -- return t; -+ return t; - } else { - i = (0x007fffff)>>j0; - if((i0&i)==0) return x; /* x is integral */ -@@ -64,14 +56,14 @@ TWO23[2]={ - if((i0&i)!=0) i0 = (i0&(~i))|((0x100000)>>j0); - } - } else { -- if(j0==0x80) return x+x; /* inf or NaN */ -+ if(__builtin_expect(j0==0x80, 0)) return x+x; /* inf or NaN */ - else return x; /* x is integral */ - } - SET_FLOAT_WORD(x,i0); -- feholdexcept (&env); -+ libc_feholdexceptf (&env); - w = TWO23[sx]+x; - t = w-TWO23[sx]; -- fesetenv (&env); -+ libc_fesetenvf (&env); - return t; - } - weak_alias (__nearbyintf, nearbyintf) -diff -Nrup a/sysdeps/powerpc/fpu/libm-test-ulps b/sysdeps/powerpc/fpu/libm-test-ulps ---- a/sysdeps/powerpc/fpu/libm-test-ulps 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/powerpc/fpu/libm-test-ulps 2012-08-06 10:03:24.424569052 -0600 -@@ -37,16 +37,9 @@ ildouble: 1 - ldouble: 1 - - # cacosh --Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": --double: 1 --float: 7 --idouble: 1 --ifloat: 7 - Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": --double: 1 --float: 3 --idouble: 1 --ifloat: 3 -+float: 1 -+ifloat: 1 - - # casin - Test "Real part of: casin (-2 - 3 i) == -0.57065278432109940071028387968566963 - 1.9833870299165354323470769028940395 i": -@@ -84,8 +77,6 @@ ifloat: 1 - - # catan - Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": --float: 3 --ifloat: 3 - ildouble: 1 - ldouble: 1 - Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": -@@ -93,23 +84,14 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i": --float: 4 --ifloat: 4 - - # catanh - Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": - double: 4 - idouble: 4 --Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": --float: 4 --ifloat: 4 - Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": - double: 1 - idouble: 1 --Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": --float: 6 --ifloat: 6 - - # cbrt - Test "cbrt (-27.0) == -3.0": -@@ -167,8 +149,6 @@ ldouble: 1 - - # clog - Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i": --float: 3 --ifloat: 3 - ildouble: 1 - ldouble: 1 - Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i": -@@ -197,9 +177,7 @@ ildouble: 1 - ldouble: 1 - Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i": - double: 1 --float: 5 - idouble: 1 --ifloat: 5 - ildouble: 1 - ldouble: 1 - Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i": -@@ -298,23 +276,165 @@ ldouble: 1 - # cos - Test "cos (M_PI_6l * 2.0) == 0.5": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - Test "cos (M_PI_6l * 4.0) == -0.5": - double: 2 - float: 1 - idouble: 2 - ifloat: 1 --Test "cos (pi/2) == 0": --double: 1 -+ -+# cos_downward -+Test "cos_downward (1) == 0.5403023058681397174009366074429766037323": -+float: 1 -+ifloat: 1 -+ildouble: 4 -+ldouble: 4 -+Test "cos_downward (10) == -0.8390715290764524522588639478240648345199": -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (2) == -0.4161468365471423869975682295007621897660": -+float: 1 -+ifloat: 1 -+Test "cos_downward (3) == -0.9899924966004454572715727947312613023937": -+float: 1 -+ifloat: 1 -+Test "cos_downward (4) == -0.6536436208636119146391681830977503814241": -+float: 1 -+ifloat: 1 -+Test "cos_downward (5) == 0.2836621854632262644666391715135573083344": -+float: 1 -+ifloat: 1 -+Test "cos_downward (6) == 0.9601702866503660205456522979229244054519": -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+Test "cos_downward (8) == -0.1455000338086135258688413818311946826093": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "cos_downward (9) == -0.9111302618846769883682947111811653112463": -+ildouble: 1 -+ldouble: 1 -+ -+# cos_tonearest -+Test "cos_tonearest (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ -+# cos_towardzero -+Test "cos_towardzero (1) == 0.5403023058681397174009366074429766037323": -+ildouble: 2 -+ldouble: 2 -+Test "cos_towardzero (10) == -0.8390715290764524522588639478240648345199": -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (2) == -0.4161468365471423869975682295007621897660": -+float: 1 -+ifloat: 1 -+Test "cos_towardzero (3) == -0.9899924966004454572715727947312613023937": -+float: 1 -+ifloat: 1 -+Test "cos_towardzero (4) == -0.6536436208636119146391681830977503814241": -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (5) == 0.2836621854632262644666391715135573083344": -+float: 1 -+ifloat: 1 -+Test "cos_towardzero (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+Test "cos_towardzero (8) == -0.1455000338086135258688413818311946826093": - float: 1 --idouble: 1 - ifloat: 1 --Test "cos (16.0) == -0.9576594803233846418996372326511034717803" - ildouble: 2 - ldouble: 2 - -+# cos_upward -+Test "cos_upward (1) == 0.5403023058681397174009366074429766037323": -+ildouble: 2 -+ldouble: 2 -+Test "cos_upward (10) == -0.8390715290764524522588639478240648345199": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (4) == -0.6536436208636119146391681830977503814241": -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (5) == 0.2836621854632262644666391715135573083344": -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (6) == 0.9601702866503660205456522979229244054519": -+float: 1 -+ifloat: 1 -+Test "cos_upward (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (9) == -0.9111302618846769883682947111811653112463": -+float: 2 -+ifloat: 2 -+ -+# cosh_downward -+Test "cosh_downward (22) == 1792456423.065795780980053377632656584997": -+float: 1 -+ifloat: 1 -+ildouble: 5269156250720 -+ldouble: 5269156250720 -+Test "cosh_downward (23) == 4872401723.124451300068625740569997090344": -+float: 1 -+ifloat: 1 -+ildouble: 484603564240 -+ldouble: 484603564240 -+Test "cosh_downward (24) == 13244561064.92173614708845674912733665919": -+float: 1 -+ifloat: 1 -+ildouble: 89137844202 -+ldouble: 89137844202 -+ -+# cosh_tonearest -+Test "cosh_tonearest (22) == 1792456423.065795780980053377632656584997": -+ildouble: 5269156250719 -+ldouble: 5269156250719 -+Test "cosh_tonearest (23) == 4872401723.124451300068625740569997090344": -+ildouble: 484603564240 -+ldouble: 484603564240 -+Test "cosh_tonearest (24) == 13244561064.92173614708845674912733665919": -+ildouble: 89137844202 -+ldouble: 89137844202 -+ -+# cosh_towardzero -+Test "cosh_towardzero (22) == 1792456423.065795780980053377632656584997": -+float: 1 -+ifloat: 1 -+ildouble: 5269156250720 -+ldouble: 5269156250720 -+Test "cosh_towardzero (23) == 4872401723.124451300068625740569997090344": -+float: 1 -+ifloat: 1 -+ildouble: 484603564240 -+ldouble: 484603564240 -+Test "cosh_towardzero (24) == 13244561064.92173614708845674912733665919": -+float: 1 -+ifloat: 1 -+ildouble: 89137844202 -+ldouble: 89137844202 -+ -+# cosh_upward -+Test "cosh_upward (22) == 1792456423.065795780980053377632656584997": -+ildouble: 5269156250719 -+ldouble: 5269156250719 -+Test "cosh_upward (23) == 4872401723.124451300068625740569997090344": -+ildouble: 484603564240 -+ldouble: 484603564240 -+Test "cosh_upward (24) == 13244561064.92173614708845674912733665919": -+ildouble: 89137844200 -+ldouble: 89137844200 -+ - # cpow - Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": - float: 1 -@@ -386,12 +506,6 @@ float: 1 - ifloat: 1 - - # ctan --Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": --double: 1 --idouble: 1 --Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": --ildouble: 1 --ldouble: 1 - Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": - double: 1 - idouble: 1 -@@ -463,6 +577,33 @@ Test "exp2 (10) == 1024": - ildouble: 2 - ldouble: 2 - -+# exp_downward -+Test "exp_downward (2) == e^2": -+float: 1 -+ifloat: 1 -+Test "exp_downward (3) == e^3": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# exp_towardzero -+Test "exp_towardzero (2) == e^2": -+float: 1 -+ifloat: 1 -+Test "exp_towardzero (3) == e^3": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# exp_upward -+Test "exp_upward (1) == e": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ - # expm1 - Test "expm1 (0.75) == 1.11700001661267466854536981983709561": - double: 1 -@@ -505,40 +646,27 @@ ifloat: 1 - # j0 - Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 --ildouble: 1 --ldouble: 1 -+ifloat: 1 - Test "j0 (10.0) == -0.245935764451348335197760862485328754": --double: 3 -+double: 2 - float: 1 --idouble: 3 -+idouble: 2 - ifloat: 1 --ildouble: 1 --ldouble: 1 --Test "j0 (2.0) == 0.223890779141235668051827454649948626": --float: 2 --ifloat: 2 - Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 --ildouble: 1 --ldouble: 1 -+ifloat: 1 - Test "j0 (8.0) == 0.171650807137553906090869407851972001": - float: 1 - ifloat: 1 --ildouble: 1 --ldouble: 1 - - # j1 - Test "j1 (10.0) == 0.0434727461688614366697487680258592883": - float: 2 - ifloat: 2 --ildouble: 1 --ldouble: 1 - Test "j1 (2.0) == 0.576724807756873387202448242269137087": - double: 1 - idouble: 1 -@@ -551,38 +679,25 @@ ldouble: 1 - # jn - Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 --ildouble: 1 --ldouble: 1 -+ifloat: 1 - Test "jn (0, 10.0) == -0.245935764451348335197760862485328754": --double: 3 -+double: 2 - float: 1 --idouble: 3 -+idouble: 2 - ifloat: 1 --ildouble: 1 --ldouble: 1 --Test "jn (0, 2.0) == 0.223890779141235668051827454649948626": --float: 2 --ifloat: 2 - Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 --ildouble: 1 --ldouble: 1 -+ifloat: 1 - Test "jn (0, 8.0) == 0.171650807137553906090869407851972001": - float: 1 - ifloat: 1 --ildouble: 1 --ldouble: 1 - Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883": - float: 2 - ifloat: 2 --ildouble: 1 --ldouble: 1 - Test "jn (1, 2.0) == 0.576724807756873387202448242269137087": - double: 1 - idouble: 1 -@@ -615,11 +730,8 @@ ifloat: 1 - ildouble: 4 - ldouble: 4 - Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6": --float: 4 --ifloat: 4 --Test "jn (3, -1.0) == -0.0195633539826684059189053216217515083": --ildouble: 1 --ldouble: 1 -+float: 3 -+ifloat: 3 - Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4": - double: 1 - float: 1 -@@ -628,21 +740,18 @@ ifloat: 1 - Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2": - double: 1 - idouble: 1 --Test "jn (3, 1.0) == 0.0195633539826684059189053216217515083": --ildouble: 1 --ldouble: 1 - Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563": - double: 3 --float: 2 -+float: 1 - idouble: 3 --ifloat: 2 -+ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "jn (3, 2.0) == 0.128943249474402051098793332969239835": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - ildouble: 2 - ldouble: 2 - -@@ -675,115 +784,350 @@ Test "log1p (-0.25) == -0.28768207245178 - float: 1 - ifloat: 1 - --# log2 --Test "log2 (e) == M_LOG2El": -+# pow_downward -+Test "pow_downward (1.0625, 1.125) == 1.070582293028761362162622578677070098674": - ildouble: 1 - ldouble: 1 -- --# sin --Test "sin (16.0) == -0.2879033166650652947844562482186175296207" --ildouble: 2 --ldouble: 2 -- --# sincos --Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": --double: 1 --float: 1 --idouble: 1 --ifloat: 1 --Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": --double: 1 -+Test "pow_downward (1.5, 1.03125) == 1.519127098714743184071644334163037684948": - float: 1 --idouble: 1 - ifloat: 1 --Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res": --double: 1 -+ -+# pow_towardzero -+Test "pow_towardzero (1.0625, 1.125) == 1.070582293028761362162622578677070098674": -+ildouble: 1 -+ldouble: 1 -+Test "pow_towardzero (1.5, 1.03125) == 1.519127098714743184071644334163037684948": - float: 1 --idouble: 1 - ifloat: 1 --Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": -+ -+# pow_upward -+Test "pow_upward (1.0625, 1.125) == 1.070582293028761362162622578677070098674": - float: 1 - ifloat: 1 -- --# sinh --Test "sinh (0.75) == 0.822316731935829980703661634446913849": -+Test "pow_upward (1.5, 1.03125) == 1.519127098714743184071644334163037684948": - ildouble: 1 - ldouble: 1 - --# tan --Test "tan (pi/4) == 1": --double: 1 --idouble: 1 -+# sin_downward -+Test "sin_downward (1) == 0.8414709848078965066525023216302989996226": -+ildouble: 4 -+ldouble: 4 -+Test "sin_downward (10) == -0.5440211108893698134047476618513772816836": -+float: 1 -+ifloat: 1 -+Test "sin_downward (2) == 0.9092974268256816953960198659117448427023": - ildouble: 1 - ldouble: 1 -- --# tanh --Test "tanh (-0.75) == -0.635148952387287319214434357312496495": -+Test "sin_downward (3) == 0.1411200080598672221007448028081102798469": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "sin_downward (4) == -0.7568024953079282513726390945118290941359": - ildouble: 1 - ldouble: 1 --Test "tanh (0.75) == 0.635148952387287319214434357312496495": -+Test "sin_downward (5) == -0.9589242746631384688931544061559939733525": -+float: 1 -+ifloat: 1 -+Test "sin_downward (6) == -0.2794154981989258728115554466118947596280": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "sin_downward (8) == 0.9893582466233817778081235982452886721164": - ildouble: 1 - ldouble: 1 - --# tgamma --Test "tgamma (-0.5) == -2 sqrt (pi)": --double: 1 -+# sin_tonearest -+Test "sin_tonearest (1) == 0.8414709848078965066525023216302989996226": - float: 1 --idouble: 1 - ifloat: 1 --Test "tgamma (0.5) == sqrt (pi)": -+ -+# sin_towardzero -+Test "sin_towardzero (1) == 0.8414709848078965066525023216302989996226": - float: 1 - ifloat: 1 --Test "tgamma (0.7) == 1.29805533264755778568117117915281162": --double: 1 -+ildouble: 2 -+ldouble: 2 -+Test "sin_towardzero (10) == -0.5440211108893698134047476618513772816836": - float: 1 --idouble: 1 - ifloat: 1 -- --# y0 --Test "y0 (0.125) == -1.38968062514384052915582277745018693": -+Test "sin_towardzero (2) == 0.9092974268256816953960198659117448427023": - ildouble: 1 - ldouble: 1 --Test "y0 (0.75) == -0.137172769385772397522814379396581855": -+Test "sin_towardzero (3) == 0.1411200080598672221007448028081102798469": - ildouble: 1 - ldouble: 1 --Test "y0 (1.0) == 0.0882569642156769579829267660235151628": --double: 2 -+Test "sin_towardzero (4) == -0.7568024953079282513726390945118290941359": -+float: 1 -+ifloat: 1 -+Test "sin_towardzero (5) == -0.9589242746631384688931544061559939733525": - float: 1 --idouble: 2 - ifloat: 1 -+Test "sin_towardzero (8) == 0.9893582466233817778081235982452886721164": - ildouble: 1 - ldouble: 1 --Test "y0 (1.5) == 0.382448923797758843955068554978089862": --double: 2 -+Test "sin_towardzero (9) == 0.4121184852417565697562725663524351793439": - float: 1 --idouble: 2 - ifloat: 1 --Test "y0 (10.0) == 0.0556711672835993914244598774101900481": -+ildouble: 1 -+ldouble: 1 -+ -+# sin_upward -+Test "sin_upward (1) == 0.8414709848078965066525023216302989996226": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "sin_upward (2) == 0.9092974268256816953960198659117448427023": -+float: 2 -+ifloat: 2 -+Test "sin_upward (3) == 0.1411200080598672221007448028081102798469": -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (4) == -0.7568024953079282513726390945118290941359": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (6) == -0.2794154981989258728115554466118947596280": -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (9) == 0.4121184852417565697562725663524351793439": -+float: 1 -+ifloat: 1 -+ -+# sincos -+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": -+double: 1 -+idouble: 1 -+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 -+Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": -+float: 1 -+ifloat: 1 -+ -+# sinh -+Test "sinh (0.75) == 0.822316731935829980703661634446913849": - ildouble: 1 - ldouble: 1 --Test "y0 (2.0) == 0.510375672649745119596606592727157873": -+ -+# sinh_downward -+Test "sinh_downward (22) == 1792456423.065795780701106568345764104225": -+float: 1 -+ifloat: 1 -+ildouble: 5269156250718 -+ldouble: 5269156250718 -+Test "sinh_downward (23) == 4872401723.124451299966006944252978187305": -+float: 1 -+ifloat: 1 -+ildouble: 484603564240 -+ldouble: 484603564240 -+Test "sinh_downward (24) == 13244561064.92173614705070540368454568168": -+float: 1 -+ifloat: 1 -+ildouble: 89137844201 -+ldouble: 89137844201 -+ -+# sinh_tonearest -+Test "sinh_tonearest (22) == 1792456423.065795780701106568345764104225": -+ildouble: 5269156250719 -+ldouble: 5269156250719 -+Test "sinh_tonearest (23) == 4872401723.124451299966006944252978187305": -+ildouble: 484603564241 -+ldouble: 484603564241 -+Test "sinh_tonearest (24) == 13244561064.92173614705070540368454568168": -+ildouble: 89137844201 -+ldouble: 89137844201 -+ -+# sinh_towardzero -+Test "sinh_towardzero (22) == 1792456423.065795780701106568345764104225": -+float: 1 -+ifloat: 1 -+ildouble: 5269156250718 -+ldouble: 5269156250718 -+Test "sinh_towardzero (23) == 4872401723.124451299966006944252978187305": -+float: 1 -+ifloat: 1 -+ildouble: 484603564240 -+ldouble: 484603564240 -+Test "sinh_towardzero (24) == 13244561064.92173614705070540368454568168": -+float: 1 -+ifloat: 1 -+ildouble: 89137844201 -+ldouble: 89137844201 -+ -+# sinh_upward -+Test "sinh_upward (22) == 1792456423.065795780701106568345764104225": -+ildouble: 5269156250719 -+ldouble: 5269156250719 -+Test "sinh_upward (23) == 4872401723.124451299966006944252978187305": -+ildouble: 484603564241 -+ldouble: 484603564241 -+Test "sinh_upward (24) == 13244561064.92173614705070540368454568168": -+ildouble: 89137844202 -+ldouble: 89137844202 -+ -+# tan -+Test "tan (pi/4) == 1": -+ildouble: 1 -+ldouble: 1 -+ -+# tan_downward -+Test "tan_downward (1) == 1.5574077246549022305069748074583601730873": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "tan_downward (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "tan_downward (2) == -2.1850398632615189916433061023136825434320": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (6) == -0.2910061913847491570536995888681755428312": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (8) == -6.7997114552203786999252627596086333648814": -+float: 1 -+ifloat: 1 -+Test "tan_downward (9) == -0.4523156594418098405903708757987855343087": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# tan_tonearest -+Test "tan_tonearest (10) == 0.6483608274590866712591249330098086768169": -+ildouble: 1 -+ldouble: 1 -+Test "tan_tonearest (4) == 1.1578212823495775831373424182673239231198": -+ildouble: 1 -+ldouble: 1 -+Test "tan_tonearest (7) == 0.8714479827243187364564508896003135663222": -+ildouble: 1 -+ldouble: 1 -+ -+# tan_towardzero -+Test "tan_towardzero (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "tan_towardzero (3) == -0.1425465430742778052956354105339134932261": -+float: 1 -+ifloat: 1 -+ildouble: 3 -+ldouble: 3 -+Test "tan_towardzero (4) == 1.1578212823495775831373424182673239231198": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (5) == -3.3805150062465856369827058794473439087096": -+float: 1 -+ifloat: 1 -+Test "tan_towardzero (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (7) == 0.8714479827243187364564508896003135663222": -+ildouble: 2 -+ldouble: 2 -+Test "tan_towardzero (9) == -0.4523156594418098405903708757987855343087": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# tan_upward -+Test "tan_upward (10) == 0.6483608274590866712591249330098086768169": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (3) == -0.1425465430742778052956354105339134932261": -+float: 1 -+ifloat: 1 -+ildouble: 3 -+ldouble: 3 -+Test "tan_upward (5) == -3.3805150062465856369827058794473439087096": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (7) == 0.8714479827243187364564508896003135663222": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (9) == -0.4523156594418098405903708757987855343087": -+ildouble: 1 -+ldouble: 1 -+ -+# tanh -+Test "tanh (-0.75) == -0.635148952387287319214434357312496495": -+ildouble: 1 -+ldouble: 1 -+Test "tanh (0.75) == 0.635148952387287319214434357312496495": -+ildouble: 1 -+ldouble: 1 -+ -+# tgamma -+Test "tgamma (-0.5) == -2 sqrt (pi)": - double: 1 -+float: 1 - idouble: 1 --Test "y0 (8.0) == 0.223521489387566220527323400498620359": -+ifloat: 1 -+Test "tgamma (0.5) == sqrt (pi)": -+float: 1 -+ifloat: 1 -+Test "tgamma (0.7) == 1.29805533264755778568117117915281162": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 -+ -+# y0 -+Test "y0 (0.125) == -1.38968062514384052915582277745018693": - ildouble: 1 - ldouble: 1 -- --# y1 --Test "y1 (0.125) == -5.19993611253477499595928744876579921": -+Test "y0 (1.0) == 0.0882569642156769579829267660235151628": -+double: 2 -+float: 1 -+idouble: 2 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "y0 (1.5) == 0.382448923797758843955068554978089862": -+double: 2 -+float: 1 -+idouble: 2 -+ifloat: 1 -+Test "y0 (10.0) == 0.0556711672835993914244598774101900481": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "y0 (2.0) == 0.510375672649745119596606592727157873": - double: 1 - idouble: 1 --Test "y1 (1.5) == -0.412308626973911295952829820633445323": -+Test "y0 (8.0) == 0.223521489387566220527323400498620359": -+double: 1 - float: 1 -+idouble: 1 - ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# y1 - Test "y1 (10.0) == 0.249015424206953883923283474663222803": - double: 3 - float: 1 -@@ -794,30 +1138,27 @@ ldouble: 2 - Test "y1 (2.0) == -0.107032431540937546888370772277476637": - double: 1 - float: 1 --idouble: 2 --ifloat: 2 -+idouble: 1 -+ifloat: 1 - Test "y1 (8.0) == -0.158060461731247494255555266187483550": - double: 1 - float: 2 - idouble: 1 - ifloat: 2 --ildouble: 2 --ldouble: 2 -+ildouble: 1 -+ldouble: 1 - - # yn - Test "yn (0, 0.125) == -1.38968062514384052915582277745018693": - ildouble: 1 - ldouble: 1 --Test "yn (0, 0.75) == -0.137172769385772397522814379396581855": --ildouble: 1 --ldouble: 1 - Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628": - double: 2 - float: 1 - idouble: 2 - ifloat: 1 --ildouble: 2 --ldouble: 2 -+ildouble: 1 -+ldouble: 1 - Test "yn (0, 1.5) == 0.382448923797758843955068554978089862": - double: 2 - float: 1 -@@ -828,8 +1169,6 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ildouble: 2 --ldouble: 2 - Test "yn (0, 2.0) == 0.510375672649745119596606592727157873": - double: 1 - idouble: 1 -@@ -838,14 +1177,8 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ildouble: 2 --ldouble: 2 --Test "yn (1, 0.125) == -5.19993611253477499595928744876579921": --double: 1 --idouble: 1 --Test "yn (1, 1.5) == -0.412308626973911295952829820633445323": --float: 2 --ifloat: 2 -+ildouble: 1 -+ldouble: 1 - Test "yn (1, 10.0) == 0.249015424206953883923283474663222803": - double: 3 - float: 1 -@@ -863,14 +1196,8 @@ double: 1 - float: 2 - idouble: 1 - ifloat: 2 --ildouble: 2 --ldouble: 2 --Test "yn (3, 0.125) == -2612.69757350066712600220955744091741": --double: 1 --idouble: 1 --Test "yn (10, 0.125) == -127057845771019398.252538486899753195": --double: 1 --idouble: 1 -+ildouble: 1 -+ldouble: 1 - Test "yn (10, 0.75) == -2133501638.90573424452445412893839236": - double: 1 - float: 2 -@@ -881,21 +1208,14 @@ float: 2 - ifloat: 2 - Test "yn (10, 10.0) == -0.359814152183402722051986577343560609": - double: 2 --float: 2 - idouble: 2 --ifloat: 2 --ildouble: 2 --ldouble: 2 - Test "yn (10, 2.0) == -129184.542208039282635913145923304214": - double: 3 - float: 1 - idouble: 3 - ifloat: 1 --ildouble: 2 --ldouble: 2 --Test "yn (3, 0.125) == -2612.69757350066712600220955744091741": --double: 1 --idouble: 1 -+ildouble: 1 -+ldouble: 1 - Test "yn (3, 0.75) == -12.9877176234475433186319774484809207": - float: 1 - ifloat: 1 -@@ -904,8 +1224,8 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ildouble: 2 --ldouble: 2 -+ildouble: 1 -+ldouble: 1 - Test "yn (3, 2.0) == -1.12778377684042778608158395773179238": - double: 1 - idouble: 1 -@@ -950,18 +1270,12 @@ ildouble: 1 - ldouble: 1 - - Function: Real part of "cacosh": --double: 1 --float: 7 --idouble: 1 --ifloat: 7 - ildouble: 1 - ldouble: 1 - - Function: Imaginary part of "cacosh": --double: 1 --float: 3 --idouble: 1 --ifloat: 3 -+float: 1 -+ifloat: 1 - - Function: Real part of "casin": - double: 1 -@@ -992,8 +1306,6 @@ ildouble: 1 - ldouble: 1 - - Function: Real part of "catan": --float: 4 --ifloat: 4 - ildouble: 1 - ldouble: 1 - -@@ -1009,10 +1321,6 @@ Function: Real part of "catanh": - double: 4 - idouble: 4 - --Function: Imaginary part of "catanh": --float: 6 --ifloat: 6 -- - Function: "cbrt": - double: 1 - idouble: 1 -@@ -1066,8 +1374,6 @@ ildouble: 2 - ldouble: 2 - - Function: Imaginary part of "clog": --float: 3 --ifloat: 3 - ildouble: 1 - ldouble: 1 - -@@ -1079,9 +1385,9 @@ ldouble: 3 - - Function: Imaginary part of "clog10": - double: 1 --float: 5 -+float: 1 - idouble: 1 --ifloat: 5 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - -@@ -1093,10 +1399,54 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - -+Function: "cos_downward": -+float: 1 -+ifloat: 1 -+ildouble: 4 -+ldouble: 4 -+ -+Function: "cos_tonearest": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cos_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "cos_upward": -+float: 2 -+ifloat: 2 -+ildouble: 2 -+ldouble: 2 -+ - Function: "cosh": - ildouble: 1 - ldouble: 1 - -+Function: "cosh_downward": -+float: 1 -+ifloat: 1 -+ildouble: 5269156250720 -+ldouble: 5269156250720 -+ -+Function: "cosh_tonearest": -+ildouble: 5269156250719 -+ldouble: 5269156250719 -+ -+Function: "cosh_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 5269156250720 -+ldouble: 5269156250720 -+ -+Function: "cosh_upward": -+ildouble: 5269156250719 -+ldouble: 5269156250719 -+ - Function: Real part of "cpow": - double: 2 - float: 5 -@@ -1113,10 +1463,6 @@ ifloat: 2 - ildouble: 2 - ldouble: 2 - --Function: Imaginary part of "cproj": --ildouble: 1 --ldouble: 1 -- - Function: Real part of "csin": - ildouble: 1 - ldouble: 1 -@@ -1146,8 +1492,6 @@ ildouble: 1 - ldouble: 1 - - Function: Real part of "ctan": --double: 1 --idouble: 1 - ildouble: 1 - ldouble: 1 - -@@ -1201,6 +1545,28 @@ Function: "exp2": - ildouble: 2 - ldouble: 2 - -+Function: "exp_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "exp_tonearest": -+ildouble: 1 -+ldouble: 1 -+ -+Function: "exp_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "exp_upward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ - Function: "expm1": - double: 1 - float: 1 -@@ -1218,10 +1584,10 @@ ildouble: 1 - ldouble: 1 - - Function: "j0": --double: 3 --float: 2 --idouble: 3 --ifloat: 2 -+double: 2 -+float: 1 -+idouble: 2 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - -@@ -1235,9 +1601,9 @@ ldouble: 1 - - Function: "jn": - double: 3 --float: 4 -+float: 3 - idouble: 3 --ifloat: 4 -+ifloat: 3 - ildouble: 4 - ldouble: 4 - -@@ -1264,8 +1630,6 @@ ldouble: 1 - Function: "log1p": - float: 1 - ifloat: 1 --ildouble: 1 --ldouble: 1 - - Function: "log2": - ildouble: 1 -@@ -1275,10 +1639,52 @@ Function: "pow": - ildouble: 1 - ldouble: 1 - -+Function: "pow_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "pow_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "pow_upward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ - Function: "sin": - ildouble: 1 - ldouble: 1 - -+Function: "sin_downward": -+float: 1 -+ifloat: 1 -+ildouble: 4 -+ldouble: 4 -+ -+Function: "sin_tonearest": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "sin_upward": -+float: 2 -+ifloat: 2 -+ildouble: 2 -+ldouble: 2 -+ - Function: "sincos": - double: 1 - float: 1 -@@ -1291,12 +1697,54 @@ Function: "sinh": - ildouble: 1 - ldouble: 1 - -+Function: "sinh_downward": -+float: 1 -+ifloat: 1 -+ildouble: 5269156250718 -+ldouble: 5269156250718 -+ -+Function: "sinh_tonearest": -+ildouble: 5269156250719 -+ldouble: 5269156250719 -+ -+Function: "sinh_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 5269156250718 -+ldouble: 5269156250718 -+ -+Function: "sinh_upward": -+ildouble: 5269156250719 -+ldouble: 5269156250719 -+ - Function: "tan": - double: 1 - idouble: 1 - ildouble: 1 - ldouble: 1 - -+Function: "tan_downward": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "tan_tonearest": -+ildouble: 1 -+ldouble: 1 -+ -+Function: "tan_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 3 -+ldouble: 3 -+ -+Function: "tan_upward": -+float: 1 -+ifloat: 1 -+ildouble: 3 -+ldouble: 3 -+ - Function: "tanh": - ildouble: 1 - ldouble: 1 -diff -Nrup a/sysdeps/s390/fpu/libm-test-ulps b/sysdeps/s390/fpu/libm-test-ulps ---- a/sysdeps/s390/fpu/libm-test-ulps 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/s390/fpu/libm-test-ulps 2012-08-06 09:54:38.324772546 -0600 -@@ -31,16 +31,9 @@ ildouble: 1 - ldouble: 1 - - # cacosh --Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": --double: 1 --float: 7 --idouble: 1 --ifloat: 7 - Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": --double: 1 --float: 3 --idouble: 1 --ifloat: 3 -+float: 1 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - -@@ -83,17 +76,11 @@ ildouble: 1 - ldouble: 1 - - # catan --Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": --float: 3 --ifloat: 3 - Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 --Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i": --float: 4 --ifloat: 4 - Test "Imaginary part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i": - ildouble: 1 - ldouble: 1 -@@ -102,17 +89,12 @@ ldouble: 1 - Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": - double: 4 - idouble: 4 --Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": --float: 4 --ifloat: 4 - Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": - double: 1 - idouble: 1 - ildouble: 1 - ldouble: 1 - Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": --float: 6 --ifloat: 6 - ildouble: 1 - ldouble: 1 - -@@ -185,9 +167,6 @@ ildouble: 1 - ldouble: 1 - - # clog --Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i": --float: 3 --ifloat: 3 - Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i": - float: 1 - ifloat: 1 -@@ -210,9 +189,7 @@ ildouble: 1 - ldouble: 1 - Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i": - double: 1 --float: 5 - idouble: 1 --ifloat: 5 - ildouble: 1 - ldouble: 1 - Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i": -@@ -288,9 +265,7 @@ ifloat: 1 - # cos - Test "cos (M_PI_6l * 2.0) == 0.5": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "cos (M_PI_6l * 4.0) == -0.5": -@@ -300,11 +275,159 @@ idouble: 2 - ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "cos (pi/2) == 0": --double: 1 -+ -+# cos_downward -+Test "cos_downward (1) == 0.5403023058681397174009366074429766037323": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (10) == -0.8390715290764524522588639478240648345199": -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (2) == -0.4161468365471423869975682295007621897660": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (3) == -0.9899924966004454572715727947312613023937": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (4) == -0.6536436208636119146391681830977503814241": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (5) == 0.2836621854632262644666391715135573083344": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (6) == 0.9601702866503660205456522979229244054519": -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (8) == -0.1455000338086135258688413818311946826093": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+# cos_tonearest -+Test "cos_tonearest (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ -+# cos_towardzero -+Test "cos_towardzero (1) == 0.5403023058681397174009366074429766037323": -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (10) == -0.8390715290764524522588639478240648345199": -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (2) == -0.4161468365471423869975682295007621897660": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (3) == -0.9899924966004454572715727947312613023937": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (4) == -0.6536436208636119146391681830977503814241": -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (5) == 0.2836621854632262644666391715135573083344": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (6) == 0.9601702866503660205456522979229244054519": -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (8) == -0.1455000338086135258688413818311946826093": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+# cos_upward -+Test "cos_upward (10) == -0.8390715290764524522588639478240648345199": -+float: 1 -+ifloat: 1 -+Test "cos_upward (6) == 0.9601702866503660205456522979229244054519": -+float: 1 -+ifloat: 1 -+Test "cos_upward (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+Test "cos_upward (9) == -0.9111302618846769883682947111811653112463": -+float: 2 -+ifloat: 2 -+ildouble: 1 -+ldouble: 1 -+ -+# cosh_downward -+Test "cosh_downward (22) == 1792456423.065795780980053377632656584997": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cosh_downward (23) == 4872401723.124451300068625740569997090344": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cosh_downward (24) == 13244561064.92173614708845674912733665919": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# cosh_tonearest -+Test "cosh_tonearest (22) == 1792456423.065795780980053377632656584997": -+ildouble: 1 -+ldouble: 1 -+ -+# cosh_towardzero -+Test "cosh_towardzero (22) == 1792456423.065795780980053377632656584997": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cosh_towardzero (23) == 4872401723.124451300068625740569997090344": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cosh_towardzero (24) == 13244561064.92173614708845674912733665919": - float: 1 --idouble: 1 - ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# cosh_upward -+Test "cosh_upward (22) == 1792456423.065795780980053377632656584997": -+ildouble: 1 -+ldouble: 1 -+Test "cosh_upward (23) == 4872401723.124451300068625740569997090344": -+ildouble: 1 -+ldouble: 1 -+Test "cosh_upward (24) == 13244561064.92173614708845674912733665919": -+ildouble: 1 -+ldouble: 1 - - # cpow - Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": -@@ -393,8 +516,6 @@ ldouble: 1 - - # ctan - Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": --double: 1 --idouble: 1 - ildouble: 1 - ldouble: 1 - Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": -@@ -467,6 +588,37 @@ Test "exp2 (10) == 1024": - ildouble: 2 - ldouble: 2 - -+# exp_downward -+Test "exp_downward (2) == e^2": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "exp_downward (3) == e^3": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# exp_towardzero -+Test "exp_towardzero (2) == e^2": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "exp_towardzero (3) == e^3": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# exp_upward -+Test "exp_upward (1) == e": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ - # expm1 - Test "expm1 (0.75) == 1.11700001661267466854536981983709561": - double: 1 -@@ -513,29 +665,27 @@ ifloat: 1 - # j0 - Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - Test "j0 (0.75) == 0.864242275166648623555731103820923211": - float: 1 - ifloat: 1 - Test "j0 (10.0) == -0.245935764451348335197760862485328754": --double: 3 -+double: 2 - float: 1 --idouble: 3 -+idouble: 2 - ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "j0 (2.0) == 0.223890779141235668051827454649948626": --float: 2 --ifloat: 2 - ildouble: 2 - ldouble: 2 - Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - Test "j0 (8.0) == 0.171650807137553906090869407851972001": - float: 1 - ifloat: 1 -@@ -569,29 +719,27 @@ ldouble: 4 - # jn - Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - Test "jn (0, 0.75) == 0.864242275166648623555731103820923211": - float: 1 - ifloat: 1 - Test "jn (0, 10.0) == -0.245935764451348335197760862485328754": --double: 3 -+double: 2 - float: 1 --idouble: 3 -+idouble: 2 - ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "jn (0, 2.0) == 0.223890779141235668051827454649948626": --float: 2 --ifloat: 2 - ildouble: 2 - ldouble: 2 - Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - Test "jn (0, 8.0) == 0.171650807137553906090869407851972001": - float: 1 - ifloat: 1 -@@ -640,15 +788,13 @@ Test "jn (10, 1.0) == 0.2630615123687453 - ildouble: 1 - ldouble: 1 - Test "jn (10, 10.0) == 0.207486106633358857697278723518753428": --double: 4 --float: 3 --idouble: 4 --ifloat: 3 -+float: 1 -+ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6": --float: 4 --ifloat: 4 -+float: 3 -+ifloat: 3 - Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4": - double: 1 - float: 1 -@@ -661,16 +807,16 @@ idouble: 1 - ifloat: 1 - Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563": - double: 3 --float: 2 -+float: 1 - idouble: 3 --ifloat: 2 -+ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "jn (3, 2.0) == 0.128943249474402051098793332969239835": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - - # lgamma - Test "lgamma (-0.5) == log(2*sqrt(pi))": -@@ -713,71 +859,315 @@ Test "log2 (0.75) == -.41503749927884381 - ildouble: 1 - ldouble: 1 - --# sincos --Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": --double: 1 -+# pow_downward -+Test "pow_downward (1.5, 1.03125) == 1.519127098714743184071644334163037684948": - float: 1 --idouble: 1 - ifloat: 1 --ildouble: 1 --ldouble: 1 --Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": --double: 1 -+ -+# pow_towardzero -+Test "pow_towardzero (1.5, 1.03125) == 1.519127098714743184071644334163037684948": -+float: 1 -+ifloat: 1 -+ -+# pow_upward -+Test "pow_upward (1.0625, 1.125) == 1.070582293028761362162622578677070098674": - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res": --double: 1 -+ -+# sin_downward -+Test "sin_downward (1) == 0.8414709848078965066525023216302989996226": -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (10) == -0.5440211108893698134047476618513772816836": - float: 1 --idouble: 1 - ifloat: 1 --Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": -+Test "sin_downward (2) == 0.9092974268256816953960198659117448427023": -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (3) == 0.1411200080598672221007448028081102798469": - float: 1 - ifloat: 1 -- --# sqrt --Test "sqrt (2) == M_SQRT2l": - ildouble: 1 - ldouble: 1 -- --# tan --Test "tan (pi/4) == 1": --double: 1 --idouble: 1 -- --# tanh --Test "tanh (-0.75) == -0.635148952387287319214434357312496495": -+Test "sin_downward (4) == -0.7568024953079282513726390945118290941359": - ildouble: 1 - ldouble: 1 --Test "tanh (-1.0) == -0.7615941559557648881194582826047935904": -+Test "sin_downward (5) == -0.9589242746631384688931544061559939733525": -+float: 1 -+ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "tanh (0.75) == 0.635148952387287319214434357312496495": -+Test "sin_downward (6) == -0.2794154981989258728115554466118947596280": -+float: 1 -+ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "tanh (1.0) == 0.7615941559557648881194582826047935904": -+Test "sin_downward (8) == 0.9893582466233817778081235982452886721164": - ildouble: 1 - ldouble: 1 - --# tgamma --Test "tgamma (-0.5) == -2 sqrt (pi)": --double: 1 -+# sin_tonearest -+Test "sin_tonearest (1) == 0.8414709848078965066525023216302989996226": - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "tgamma (0.5) == sqrt (pi)": -+Test "sin_tonearest (3) == 0.1411200080598672221007448028081102798469": -+ildouble: 1 -+ldouble: 1 -+Test "sin_tonearest (6) == -0.2794154981989258728115554466118947596280": -+ildouble: 1 -+ldouble: 1 -+Test "sin_tonearest (9) == 0.4121184852417565697562725663524351793439": -+ildouble: 1 -+ldouble: 1 -+ -+# sin_towardzero -+Test "sin_towardzero (1) == 0.8414709848078965066525023216302989996226": - float: 1 - ifloat: 1 --Test "tgamma (0.7) == 1.29805533264755778568117117915281162": --double: 1 -+Test "sin_towardzero (10) == -0.5440211108893698134047476618513772816836": - float: 1 --idouble: 1 - ifloat: 1 --Test "tgamma (4) == 6": -+Test "sin_towardzero (2) == 0.9092974268256816953960198659117448427023": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (3) == 0.1411200080598672221007448028081102798469": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (4) == -0.7568024953079282513726390945118290941359": -+float: 1 -+ifloat: 1 -+Test "sin_towardzero (5) == -0.9589242746631384688931544061559939733525": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (6) == -0.2794154981989258728115554466118947596280": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (8) == 0.9893582466233817778081235982452886721164": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (9) == 0.4121184852417565697562725663524351793439": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+# sin_upward -+Test "sin_upward (1) == 0.8414709848078965066525023216302989996226": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (10) == -0.5440211108893698134047476618513772816836": -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (2) == 0.9092974268256816953960198659117448427023": -+float: 2 -+ifloat: 2 -+Test "sin_upward (3) == 0.1411200080598672221007448028081102798469": -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (4) == -0.7568024953079282513726390945118290941359": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (7) == 0.6569865987187890903969990915936351779369": -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (9) == 0.4121184852417565697562725663524351793439": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# sincos -+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": -+float: 1 -+ifloat: 1 -+ -+# sinh_downward -+Test "sinh_downward (22) == 1792456423.065795780701106568345764104225": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sinh_downward (23) == 4872401723.124451299966006944252978187305": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "sinh_downward (24) == 13244561064.92173614705070540368454568168": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# sinh_towardzero -+Test "sinh_towardzero (22) == 1792456423.065795780701106568345764104225": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sinh_towardzero (23) == 4872401723.124451299966006944252978187305": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "sinh_towardzero (24) == 13244561064.92173614705070540368454568168": -+float: 1 -+ifloat: 1 -+ -+# sinh_upward -+Test "sinh_upward (22) == 1792456423.065795780701106568345764104225": -+ildouble: 1 -+ldouble: 1 -+Test "sinh_upward (23) == 4872401723.124451299966006944252978187305": -+ildouble: 1 -+ldouble: 1 -+Test "sinh_upward (24) == 13244561064.92173614705070540368454568168": -+ildouble: 1 -+ldouble: 1 -+ -+# sqrt -+Test "sqrt (2) == M_SQRT2l": -+ildouble: 1 -+ldouble: 1 -+ -+# tan_downward -+Test "tan_downward (1) == 1.5574077246549022305069748074583601730873": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+Test "tan_downward (2) == -2.1850398632615189916433061023136825434320": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (6) == -0.2910061913847491570536995888681755428312": -+float: 1 -+ifloat: 1 -+Test "tan_downward (8) == -6.7997114552203786999252627596086333648814": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (9) == -0.4523156594418098405903708757987855343087": -+float: 1 -+ifloat: 1 -+ -+# tan_towardzero -+Test "tan_towardzero (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+Test "tan_towardzero (3) == -0.1425465430742778052956354105339134932261": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (4) == 1.1578212823495775831373424182673239231198": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (5) == -3.3805150062465856369827058794473439087096": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (9) == -0.4523156594418098405903708757987855343087": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# tan_upward -+Test "tan_upward (1) == 1.5574077246549022305069748074583601730873": -+float: 1 -+ifloat: 1 -+Test "tan_upward (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (2) == -2.1850398632615189916433061023136825434320": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (3) == -0.1425465430742778052956354105339134932261": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (4) == 1.1578212823495775831373424182673239231198": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (5) == -3.3805150062465856369827058794473439087096": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (9) == -0.4523156594418098405903708757987855343087": -+ildouble: 1 -+ldouble: 1 -+ -+# tanh -+Test "tanh (-0.75) == -0.635148952387287319214434357312496495": -+ildouble: 1 -+ldouble: 1 -+Test "tanh (-1.0) == -0.7615941559557648881194582826047935904": -+ildouble: 1 -+ldouble: 1 -+Test "tanh (0.75) == 0.635148952387287319214434357312496495": -+ildouble: 1 -+ldouble: 1 -+Test "tanh (1.0) == 0.7615941559557648881194582826047935904": -+ildouble: 1 -+ldouble: 1 -+ -+# tgamma -+Test "tgamma (-0.5) == -2 sqrt (pi)": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tgamma (0.5) == sqrt (pi)": -+float: 1 -+ifloat: 1 -+Test "tgamma (0.7) == 1.29805533264755778568117117915281162": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "tgamma (4) == 6": - ildouble: 1 - ldouble: 1 - -@@ -917,17 +1307,13 @@ ifloat: 2 - ildouble: 5 - ldouble: 5 - Test "yn (10, 1.0) == -121618014.278689189288130426667971145": --double: 1 - float: 2 --idouble: 1 - ifloat: 2 - ildouble: 1 - ldouble: 1 - Test "yn (10, 10.0) == -0.359814152183402722051986577343560609": - double: 2 --float: 2 - idouble: 2 --ifloat: 2 - ildouble: 2 - ldouble: 2 - Test "yn (10, 2.0) == -129184.542208039282635913145923304214": -@@ -941,9 +1327,7 @@ Test "yn (3, 0.125) == -2612.69757350066 - double: 1 - idouble: 1 - Test "yn (3, 0.75) == -12.9877176234475433186319774484809207": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 2 - ldouble: 2 -@@ -973,17 +1357,9 @@ Function: Imaginary part of "cacos": - ildouble: 1 - ldouble: 1 - --Function: Real part of "cacosh": --double: 1 --float: 7 --idouble: 1 --ifloat: 7 -- - Function: Imaginary part of "cacosh": --double: 1 --float: 3 --idouble: 1 --ifloat: 3 -+float: 1 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - -@@ -1013,10 +1389,6 @@ ifloat: 6 - ildouble: 2 - ldouble: 2 - --Function: Real part of "catan": --float: 4 --ifloat: 4 -- - Function: Imaginary part of "catan": - double: 1 - float: 1 -@@ -1032,8 +1404,6 @@ ildouble: 1 - ldouble: 1 - - Function: Imaginary part of "catanh": --float: 6 --ifloat: 6 - ildouble: 1 - ldouble: 1 - -@@ -1089,10 +1459,6 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - --Function: Imaginary part of "clog": --float: 3 --ifloat: 3 -- - Function: Real part of "clog10": - float: 1 - ifloat: 1 -@@ -1101,9 +1467,9 @@ ldouble: 1 - - Function: Imaginary part of "clog10": - double: 1 --float: 5 -+float: 1 - idouble: 1 --ifloat: 5 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - -@@ -1115,6 +1481,48 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - -+Function: "cos_downward": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "cos_tonearest": -+float: 1 -+ifloat: 1 -+ -+Function: "cos_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "cos_upward": -+float: 2 -+ifloat: 2 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cosh_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cosh_tonearest": -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cosh_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cosh_upward": -+ildouble: 1 -+ldouble: 1 -+ - Function: Real part of "cpow": - double: 2 - float: 4 -@@ -1162,8 +1570,6 @@ ildouble: 1 - ldouble: 1 - - Function: Real part of "ctan": --double: 1 --idouble: 1 - ildouble: 1 - ldouble: 1 - -@@ -1211,6 +1617,24 @@ Function: "exp2": - ildouble: 2 - ldouble: 2 - -+Function: "exp_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "exp_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "exp_upward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ - Function: "expm1": - double: 1 - float: 1 -@@ -1228,10 +1652,10 @@ float: 1 - ifloat: 1 - - Function: "j0": --double: 3 --float: 2 --idouble: 3 --ifloat: 2 -+double: 2 -+float: 1 -+idouble: 2 -+ifloat: 1 - ildouble: 2 - ldouble: 2 - -@@ -1244,10 +1668,10 @@ ildouble: 4 - ldouble: 4 - - Function: "jn": --double: 4 --float: 4 --idouble: 4 --ifloat: 4 -+double: 3 -+float: 3 -+idouble: 3 -+ifloat: 3 - ildouble: 4 - ldouble: 4 - -@@ -1277,6 +1701,44 @@ Function: "log2": - ildouble: 1 - ldouble: 1 - -+Function: "pow_downward": -+float: 1 -+ifloat: 1 -+ -+Function: "pow_towardzero": -+float: 1 -+ifloat: 1 -+ -+Function: "pow_upward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_tonearest": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "sin_upward": -+float: 2 -+ifloat: 2 -+ildouble: 1 -+ldouble: 1 -+ - Function: "sincos": - double: 1 - float: 1 -@@ -1285,6 +1747,22 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - -+Function: "sinh_downward": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "sinh_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "sinh_upward": -+ildouble: 1 -+ldouble: 1 -+ - Function: "sqrt": - ildouble: 1 - ldouble: 1 -@@ -1293,6 +1771,24 @@ Function: "tan": - double: 1 - idouble: 1 - -+Function: "tan_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "tan_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "tan_upward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ - Function: "tanh": - ildouble: 1 - ldouble: 1 -diff -Nrup a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps ---- a/sysdeps/x86_64/fpu/libm-test-ulps 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/x86_64/fpu/libm-test-ulps 2012-08-06 11:02:14.602759422 -0600 -@@ -42,26 +42,13 @@ ldouble: 1 - - # cacos - Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i": --float: 1 --ifloat: 1 - ildouble: 2 - ldouble: 2 - - # cacosh --Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": --double: 1 --float: 7 --idouble: 1 --ifloat: 7 --ildouble: 6 --ldouble: 6 - Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": --double: 1 --float: 3 --idouble: 1 --ifloat: 3 --ildouble: 1 --ldouble: 1 -+float: 1 -+ifloat: 1 - Test "Real part of: cacosh (0.75 + 1.25 i) == 1.13239363160530819522266333696834467 + 1.11752014915610270578240049553777969 i": - ildouble: 1 - ldouble: 1 -@@ -75,8 +62,6 @@ ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": --float: 1 --ifloat: 1 - ildouble: 2 - ldouble: 2 - -@@ -103,21 +88,15 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ldouble: 1 - ildouble: 1 -+ldouble: 1 - - # catan --Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": --float: 3 --ifloat: 3 - Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 --Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i": --float: 4 --ifloat: 4 - - # catanh - Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": -@@ -125,15 +104,9 @@ double: 4 - idouble: 4 - ildouble: 1 - ldouble: 1 --Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": --float: 4 --ifloat: 4 - Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": - double: 1 - idouble: 1 --Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": --float: 6 --ifloat: 6 - - # cbrt - Test "cbrt (-0.001) == -0.1": -@@ -152,14 +125,9 @@ ildouble: 1 - ldouble: 1 - - # ccos --Test "Real part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i": --double: 1 --idouble: 1 - Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i": - float: 1 - ifloat: 1 --ildouble: 1 --ldouble: 1 - Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": - double: 1 - float: 1 -@@ -168,19 +136,17 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": --ildouble: 1 --ldouble: 1 - float: 1 - ifloat: 1 -+ildouble: 1 -+ldouble: 1 - - # ccosh - Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i": - float: 1 - ifloat: 1 - Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -205,9 +171,6 @@ ildouble: 1 - ldouble: 1 - - # clog --Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i": --float: 3 --ifloat: 3 - Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i": - float: 1 - ifloat: 1 -@@ -227,11 +190,7 @@ idouble: 1 - ifloat: 1 - Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i": - double: 1 --float: 5 - idouble: 1 --ifloat: 5 --ildouble: 1 --ldouble: 1 - Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i": - double: 1 - float: 1 -@@ -276,9 +235,7 @@ float: 1 - idouble: 1 - ifloat: 1 - Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -306,33 +263,164 @@ ifloat: 1 - # cos - Test "cos (M_PI_6l * 2.0) == 0.5": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - Test "cos (M_PI_6l * 4.0) == -0.5": - double: 2 - float: 1 - idouble: 2 - ifloat: 1 -+ -+# cos_downward -+Test "cos_downward (1) == 0.5403023058681397174009366074429766037323": -+float: 1 -+ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "cos (pi/2) == 0": --double: 1 -+Test "cos_downward (2) == -0.4161468365471423869975682295007621897660": -+float: 1 -+ifloat: 1 -+Test "cos_downward (3) == -0.9899924966004454572715727947312613023937": -+float: 1 -+ifloat: 1 -+Test "cos_downward (4) == -0.6536436208636119146391681830977503814241": - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "cos (0.80190127184058835) == 0.69534156199418473": --double: 1 --idouble: 1 -+Test "cos_downward (5) == 0.2836621854632262644666391715135573083344": -+float: 1 -+ifloat: 1 -+Test "cos_downward (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (8) == -0.1455000338086135258688413818311946826093": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (9) == -0.9111302618846769883682947111811653112463": -+ildouble: 1 -+ldouble: 1 -+ -+# cos_tonearest -+Test "cos_tonearest (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+Test "cos_tonearest (8) == -0.1455000338086135258688413818311946826093": -+ildouble: 1 -+ldouble: 1 -+Test "cos_tonearest (9) == -0.9111302618846769883682947111811653112463": -+ildouble: 1 -+ldouble: 1 -+ -+# cos_towardzero -+Test "cos_towardzero (1) == 0.5403023058681397174009366074429766037323": -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (10) == -0.8390715290764524522588639478240648345199": -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (2) == -0.4161468365471423869975682295007621897660": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (3) == -0.9899924966004454572715727947312613023937": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (5) == 0.2836621854632262644666391715135573083344": -+float: 1 -+ifloat: 1 -+Test "cos_towardzero (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (8) == -0.1455000338086135258688413818311946826093": -+float: 1 -+ifloat: 1 -+ -+# cos_upward -+Test "cos_upward (10) == -0.8390715290764524522588639478240648345199": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (2) == -0.4161468365471423869975682295007621897660": -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (3) == -0.9899924966004454572715727947312613023937": -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (5) == 0.2836621854632262644666391715135573083344": -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (6) == 0.9601702866503660205456522979229244054519": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+Test "cos_upward (9) == -0.9111302618846769883682947111811653112463": -+float: 2 -+ifloat: 2 -+ -+# cosh_downward -+Test "cosh_downward (22) == 1792456423.065795780980053377632656584997": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "cosh_downward (23) == 4872401723.124451300068625740569997090344": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cosh_downward (24) == 13244561064.92173614708845674912733665919": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# cosh_tonearest -+Test "cosh_tonearest (22) == 1792456423.065795780980053377632656584997": -+ildouble: 1 -+ldouble: 1 -+ -+# cosh_towardzero -+Test "cosh_towardzero (22) == 1792456423.065795780980053377632656584997": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "cosh_towardzero (23) == 4872401723.124451300068625740569997090344": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cosh_towardzero (24) == 13244561064.92173614708845674912733665919": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# cosh_upward -+Test "cosh_upward (23) == 4872401723.124451300068625740569997090344": -+ildouble: 1 -+ldouble: 1 - - # cpow - Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": - float: 1 - ifloat: 1 --ldouble: 1 - ildouble: 1 -+ldouble: 1 - Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": - float: 1 - ifloat: 1 -@@ -363,9 +451,9 @@ ildouble: 1 - ldouble: 1 - Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": - double: 1 --float: 5 -+float: 4 - idouble: 1 --ifloat: 5 -+ifloat: 4 - Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": - float: 2 - ifloat: 2 -@@ -383,22 +471,11 @@ ldouble: 1 - Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i": - ildouble: 1 - ldouble: 1 --Test "Imaginary part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i": --float: 1 --ifloat: 1 --Test "Imaginary part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i": --double: 1 --idouble: 1 - - # csinh --Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i": --double: 1 --idouble: 1 - Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i": - double: 1 - idouble: 1 --ildouble: 2 --ldouble: 2 - Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i": - float: 1 - ifloat: 1 -@@ -418,37 +495,31 @@ ifloat: 1 - - # ctan - Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": --double: 1 --idouble: 1 --ildouble: 439 --ldouble: 439 -+ildouble: 1 -+ldouble: 1 - Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": --float: 1 --ifloat: 1 --ildouble: 2 --ldouble: 2 -+ildouble: 1 -+ldouble: 1 - Test "Real part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": - ildouble: 1 - ldouble: 1 - Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - ildouble: 3 - ldouble: 3 - - # ctanh - Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": --float: 2 --ifloat: 2 --ildouble: 5 --ldouble: 5 - double: 1 -+float: 2 - idouble: 1 -+ifloat: 2 -+ildouble: 3 -+ldouble: 3 - Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": --ildouble: 25 --ldouble: 25 -+ildouble: 1 -+ldouble: 1 - Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i": - float: 1 - ifloat: 1 -@@ -456,10 +527,10 @@ Test "Real part of: ctanh (0.75 + 1.25 i - double: 1 - idouble: 1 - Test "Imaginary part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i": --ildouble: 1 --ldouble: 1 - double: 1 - idouble: 1 -+ildouble: 1 -+ldouble: 1 - - # erf - Test "erf (1.25) == 0.922900128256458230136523481197281140": -@@ -481,26 +552,61 @@ ldouble: 1 - - # exp10 - Test "exp10 (-1) == 0.1": --ildouble: 1 --ldouble: 1 --float: 1 --ifloat: 1 - double: 2 --idouble: 2 --Test "exp10 (0.75) == 5.62341325190349080394951039776481231": --ildouble: 2 --ldouble: 2 - float: 1 -+idouble: 2 - ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "exp10 (0.75) == 5.62341325190349080394951039776481231": - double: 1 -+float: 1 - idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 - Test "exp10 (3) == 1000": --ildouble: 8 --ldouble: 8 --float: 2 --ifloat: 2 - double: 6 -+float: 2 - idouble: 6 -+ifloat: 2 -+ildouble: 3 -+ldouble: 3 -+ -+# exp_downward -+Test "exp_downward (1) == e": -+ildouble: 1 -+ldouble: 1 -+Test "exp_downward (2) == e^2": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "exp_downward (3) == e^3": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# exp_towardzero -+Test "exp_towardzero (1) == e": -+ildouble: 1 -+ldouble: 1 -+Test "exp_towardzero (2) == e^2": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "exp_towardzero (3) == e^3": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# exp_upward -+Test "exp_upward (1) == e": -+float: 1 -+ifloat: 1 - - # expm1 - Test "expm1 (0.75) == 1.11700001661267466854536981983709561": -@@ -570,9 +676,7 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "j0 (8.0) == 0.171650807137553906090869407851972001": --double: 2 - float: 1 --idouble: 2 - ifloat: 1 - - # j1 -@@ -617,9 +721,7 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "jn (0, 8.0) == 0.171650807137553906090869407851972001": --double: 2 - float: 1 --idouble: 2 - ifloat: 1 - Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883": - float: 2 -@@ -714,12 +816,12 @@ ldouble: 1 - - # log10 - Test "log10 (0.75) == -0.124938736608299953132449886193870744": --ildouble: 1 --ldouble: 1 --float: 2 --ifloat: 2 - double: 1 -+float: 2 - idouble: 1 -+ifloat: 2 -+ildouble: 1 -+ldouble: 1 - Test "log10 (e) == log10(e)": - float: 1 - ifloat: 1 -@@ -731,37 +833,309 @@ Test "log1p (-0.25) == -0.28768207245178 - float: 1 - ifloat: 1 - --# sincos --Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": --double: 1 --float: 1 --idouble: 1 --ifloat: 1 --Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": --double: 1 --float: 1 --idouble: 1 --ifloat: 1 -+# pow_downward -+Test "pow_downward (1.0625, 1.125) == 1.070582293028761362162622578677070098674": - ildouble: 1 - ldouble: 1 --Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res": --double: 1 -+Test "pow_downward (1.5, 1.03125) == 1.519127098714743184071644334163037684948": - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": -+ -+# pow_towardzero -+Test "pow_towardzero (1.0625, 1.125) == 1.070582293028761362162622578677070098674": -+ildouble: 1 -+ldouble: 1 -+Test "pow_towardzero (1.5, 1.03125) == 1.519127098714743184071644334163037684948": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# pow_upward -+Test "pow_upward (1.0625, 1.125) == 1.070582293028761362162622578677070098674": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "pow_upward (1.5, 1.03125) == 1.519127098714743184071644334163037684948": -+ildouble: 1 -+ldouble: 1 -+ -+# sin_downward -+Test "sin_downward (1) == 0.8414709848078965066525023216302989996226": -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (10) == -0.5440211108893698134047476618513772816836": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (3) == 0.1411200080598672221007448028081102798469": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (4) == -0.7568024953079282513726390945118290941359": -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (5) == -0.9589242746631384688931544061559939733525": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (6) == -0.2794154981989258728115554466118947596280": -+float: 1 -+ifloat: 1 -+Test "sin_downward (7) == 0.6569865987187890903969990915936351779369": -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (8) == 0.9893582466233817778081235982452886721164": -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (9) == 0.4121184852417565697562725663524351793439": -+ildouble: 1 -+ldouble: 1 -+ -+# sin_tonearest -+Test "sin_tonearest (1) == 0.8414709848078965066525023216302989996226": -+float: 1 -+ifloat: 1 -+Test "sin_tonearest (10) == -0.5440211108893698134047476618513772816836": -+ildouble: 1 -+ldouble: 1 -+Test "sin_tonearest (4) == -0.7568024953079282513726390945118290941359": -+ildouble: 1 -+ldouble: 1 -+Test "sin_tonearest (9) == 0.4121184852417565697562725663524351793439": -+ildouble: 1 -+ldouble: 1 -+ -+# sin_towardzero -+Test "sin_towardzero (1) == 0.8414709848078965066525023216302989996226": - float: 1 - ifloat: 1 --Test "sincos (0.80190127184058835, &sin_res, &cos_res) puts 0.69534156199418473 in cos_res": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (10) == -0.5440211108893698134047476618513772816836": -+float: 1 -+ifloat: 1 -+Test "sin_towardzero (3) == 0.1411200080598672221007448028081102798469": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (4) == -0.7568024953079282513726390945118290941359": -+float: 1 -+ifloat: 1 -+Test "sin_towardzero (5) == -0.9589242746631384688931544061559939733525": -+float: 1 -+ifloat: 1 -+Test "sin_towardzero (6) == -0.2794154981989258728115554466118947596280": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (7) == 0.6569865987187890903969990915936351779369": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (8) == 0.9893582466233817778081235982452886721164": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (9) == 0.4121184852417565697562725663524351793439": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# sin_upward -+Test "sin_upward (1) == 0.8414709848078965066525023216302989996226": -+float: 1 -+ifloat: 1 -+Test "sin_upward (2) == 0.9092974268256816953960198659117448427023": -+float: 2 -+ifloat: 2 -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (4) == -0.7568024953079282513726390945118290941359": -+float: 1 -+ifloat: 1 -+Test "sin_upward (6) == -0.2794154981989258728115554466118947596280": -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (9) == 0.4121184852417565697562725663524351793439": -+float: 1 -+ifloat: 1 -+ -+# sincos -+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": - double: 1 - idouble: 1 -- --# tan --Test "tan (pi/4) == 1": -+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": - double: 1 -+float: 1 - idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": -+float: 1 -+ifloat: 1 -+ -+# sinh_downward -+Test "sinh_downward (22) == 1792456423.065795780701106568345764104225": -+float: 1 -+ifloat: 1 -+ildouble: 4 -+ldouble: 4 -+Test "sinh_downward (23) == 4872401723.124451299966006944252978187305": -+float: 1 -+ifloat: 1 -+Test "sinh_downward (24) == 13244561064.92173614705070540368454568168": -+float: 1 -+ifloat: 1 -+ildouble: 5 -+ldouble: 5 -+ -+# sinh_tonearest -+Test "sinh_tonearest (22) == 1792456423.065795780701106568345764104225": -+ildouble: 3 -+ldouble: 3 -+Test "sinh_tonearest (23) == 4872401723.124451299966006944252978187305": -+ildouble: 1 -+ldouble: 1 -+Test "sinh_tonearest (24) == 13244561064.92173614705070540368454568168": -+ildouble: 6 -+ldouble: 6 -+ -+# sinh_towardzero -+Test "sinh_towardzero (22) == 1792456423.065795780701106568345764104225": -+float: 1 -+ifloat: 1 -+ildouble: 4 -+ldouble: 4 -+Test "sinh_towardzero (23) == 4872401723.124451299966006944252978187305": -+float: 1 -+ifloat: 1 -+Test "sinh_towardzero (24) == 13244561064.92173614705070540368454568168": -+float: 1 -+ifloat: 1 -+ildouble: 5 -+ldouble: 5 -+ -+# sinh_upward -+Test "sinh_upward (22) == 1792456423.065795780701106568345764104225": -+ildouble: 16 -+ldouble: 16 -+Test "sinh_upward (23) == 4872401723.124451299966006944252978187305": -+ildouble: 27 -+ldouble: 27 -+Test "sinh_upward (24) == 13244561064.92173614705070540368454568168": -+ildouble: 7 -+ldouble: 7 -+ -+# tan_downward -+Test "tan_downward (1) == 1.5574077246549022305069748074583601730873": -+float: 1 -+ifloat: 1 -+Test "tan_downward (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+Test "tan_downward (2) == -2.1850398632615189916433061023136825434320": -+float: 1 -+ifloat: 1 -+Test "tan_downward (4) == 1.1578212823495775831373424182673239231198": -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (5) == -3.3805150062465856369827058794473439087096": -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (6) == -0.2910061913847491570536995888681755428312": -+float: 1 -+ifloat: 1 -+Test "tan_downward (8) == -6.7997114552203786999252627596086333648814": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (9) == -0.4523156594418098405903708757987855343087": -+float: 1 -+ifloat: 1 -+ -+# tan_tonearest -+Test "tan_tonearest (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_tonearest (8) == -6.7997114552203786999252627596086333648814": -+ildouble: 1 -+ldouble: 1 -+Test "tan_tonearest (9) == -0.4523156594418098405903708757987855343087": -+ildouble: 1 -+ldouble: 1 -+ -+# tan_towardzero -+Test "tan_towardzero (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+Test "tan_towardzero (2) == -2.1850398632615189916433061023136825434320": -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (3) == -0.1425465430742778052956354105339134932261": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (4) == 1.1578212823495775831373424182673239231198": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (5) == -3.3805150062465856369827058794473439087096": -+float: 1 -+ifloat: 1 -+Test "tan_towardzero (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (8) == -6.7997114552203786999252627596086333648814": -+ildouble: 2 -+ldouble: 2 -+Test "tan_towardzero (9) == -0.4523156594418098405903708757987855343087": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# tan_upward -+Test "tan_upward (1) == 1.5574077246549022305069748074583601730873": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (2) == -2.1850398632615189916433061023136825434320": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (3) == -0.1425465430742778052956354105339134932261": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (5) == -3.3805150062465856369827058794473439087096": -+float: 1 -+ifloat: 1 -+Test "tan_upward (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (7) == 0.8714479827243187364564508896003135663222": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (8) == -6.7997114552203786999252627596086333648814": -+ildouble: 2 -+ldouble: 2 -+Test "tan_upward (9) == -0.4523156594418098405903708757987855343087": -+ildouble: 1 -+ldouble: 1 - - # tgamma - Test "tgamma (-0.5) == -2 sqrt (pi)": -@@ -779,9 +1153,6 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --Test "tgamma (4) == 6": --ildouble: 1 --ldouble: 1 - - # y0 - Test "y0 (0.125) == -1.38968062514384052915582277745018693": -@@ -960,27 +1331,17 @@ ildouble: 1 - ldouble: 1 - - Function: Imaginary part of "cacos": --float: 1 --ifloat: 1 - ildouble: 2 - ldouble: 2 - - Function: Real part of "cacosh": --double: 1 --float: 7 --idouble: 1 --ifloat: 7 --ildouble: 6 --ldouble: 6 -- --Function: Imaginary part of "cacosh": --double: 1 --float: 3 --idouble: 1 --ifloat: 3 - ildouble: 1 - ldouble: 1 - -+Function: Imaginary part of "cacosh": -+float: 1 -+ifloat: 1 -+ - Function: Real part of "casin": - double: 1 - float: 1 -@@ -990,8 +1351,6 @@ ildouble: 2 - ldouble: 2 - - Function: Imaginary part of "casin": --float: 1 --ifloat: 1 - ildouble: 2 - ldouble: 2 - -@@ -1011,10 +1370,6 @@ ifloat: 6 - ildouble: 5 - ldouble: 5 - --Function: Real part of "catan": --float: 4 --ifloat: 4 -- - Function: Imaginary part of "catan": - double: 1 - float: 1 -@@ -1027,10 +1382,6 @@ idouble: 4 - ildouble: 1 - ldouble: 1 - --Function: Imaginary part of "catanh": --float: 6 --ifloat: 6 -- - Function: "cbrt": - double: 1 - idouble: 1 -@@ -1058,9 +1409,7 @@ idouble: 1 - ifloat: 1 - - Function: Imaginary part of "ccosh": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -1081,25 +1430,17 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - --Function: Imaginary part of "clog": --float: 3 --ifloat: 3 -- - Function: Real part of "clog10": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 - - Function: Imaginary part of "clog10": - double: 1 --float: 5 -+float: 1 - idouble: 1 --ifloat: 5 --ildouble: 1 --ldouble: 1 -+ifloat: 1 - - Function: "cos": - double: 2 -@@ -1109,11 +1450,55 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - -+Function: "cos_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cos_tonearest": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cos_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cos_upward": -+float: 2 -+ifloat: 2 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cosh_downward": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "cosh_tonearest": -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cosh_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "cosh_upward": -+ildouble: 1 -+ldouble: 1 -+ - Function: Real part of "cpow": - double: 2 --float: 5 -+float: 4 - idouble: 2 --ifloat: 5 -+ifloat: 4 - ildouble: 5 - ldouble: 5 - -@@ -1129,16 +1514,8 @@ Function: Real part of "csin": - ildouble: 1 - ldouble: 1 - --Function: Imaginary part of "csin": --double: 1 --float: 1 --idouble: 1 --ifloat: 1 -- - Function: Real part of "csinh": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -1148,24 +1525,18 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ildouble: 2 --ldouble: 2 - - Function: Real part of "csqrt": - float: 1 - ifloat: 1 - - Function: Real part of "ctan": --double: 1 --idouble: 1 --ildouble: 439 --ldouble: 439 -+ildouble: 1 -+ldouble: 1 - - Function: Imaginary part of "ctan": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - ildouble: 3 - ldouble: 3 - -@@ -1174,16 +1545,16 @@ double: 1 - float: 2 - idouble: 1 - ifloat: 2 --ildouble: 5 --ldouble: 5 -+ildouble: 3 -+ldouble: 3 - - Function: Imaginary part of "ctanh": --float: 1 --ifloat: 1 --ildouble: 25 --ldouble: 25 - double: 1 -+float: 1 - idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 - - Function: "erf": - double: 1 -@@ -1196,12 +1567,28 @@ ildouble: 1 - ldouble: 1 - - Function: "exp10": --ildouble: 8 --ldouble: 8 --float: 2 --ifloat: 2 - double: 6 -+float: 2 - idouble: 6 -+ifloat: 2 -+ildouble: 3 -+ldouble: 3 -+ -+Function: "exp_downward": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "exp_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "exp_upward": -+float: 1 -+ifloat: 1 - - Function: "expm1": - double: 1 -@@ -1250,17 +1637,59 @@ ildouble: 1 - ldouble: 1 - - Function: "log10": -+double: 1 - float: 2 -+idouble: 1 - ifloat: 2 - ildouble: 1 - ldouble: 1 --double: 1 --idouble: 1 - - Function: "log1p": - float: 1 - ifloat: 1 - -+Function: "pow_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "pow_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "pow_upward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_tonearest": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_upward": -+float: 2 -+ifloat: 2 -+ildouble: 1 -+ldouble: 1 -+ - Function: "sincos": - double: 1 - float: 1 -@@ -1269,10 +1698,52 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - -+Function: "sinh_downward": -+float: 1 -+ifloat: 1 -+ildouble: 5 -+ldouble: 5 -+ -+Function: "sinh_tonearest": -+ildouble: 6 -+ldouble: 6 -+ -+Function: "sinh_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 5 -+ldouble: 5 -+ -+Function: "sinh_upward": -+ildouble: 27 -+ldouble: 27 -+ - Function: "tan": - double: 1 - idouble: 1 - -+Function: "tan_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "tan_tonearest": -+ildouble: 1 -+ldouble: 1 -+ -+Function: "tan_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "tan_upward": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ - Function: "tgamma": - double: 1 - float: 1 -diff -Nrup a/sysdeps/x86_64/fpu/math_private.h b/sysdeps/x86_64/fpu/math_private.h ---- a/sysdeps/x86_64/fpu/math_private.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/x86_64/fpu/math_private.h 2012-08-06 09:54:00.893929393 -0600 -@@ -56,3 +56,82 @@ do { \ - } while (0) - - #endif -+ -+ -+/* Specialized variants of the <fenv.h> interfaces which only handle -+ either the FPU or the SSE unit. */ -+#undef libc_fegetround -+#define libc_fegetround() \ -+ ({ \ -+ unsigned int mxcsr; \ -+ asm volatile ("stmxcsr %0" : "=m" (*&mxcsr)); \ -+ (mxcsr & 0x6000) >> 3; \ -+ }) -+#undef libc_fegetroundf -+#define libc_fegetroundf() libc_fegetround () -+// #define libc_fegetroundl() fegetround () -+ -+#undef libc_fesetround -+#define libc_fesetround(r) \ -+ do { \ -+ unsigned int mxcsr; \ -+ asm ("stmxcsr %0" : "=m" (*&mxcsr)); \ -+ mxcsr = (mxcsr & ~0x6000) | ((r) << 3); \ -+ asm volatile ("ldmxcsr %0" : : "m" (*&mxcsr)); \ -+ } while (0) -+#undef libc_fesetroundf -+#define libc_fesetroundf(r) libc_fesetround (r) -+// #define libc_fesetroundl(r) (void) fesetround (r) -+ -+#undef libc_feholdexcept -+#define libc_feholdexcept(e) \ -+ do { \ -+ unsigned int mxcsr; \ -+ asm ("stmxcsr %0" : "=m" (*&mxcsr)); \ -+ (e)->__mxcsr = mxcsr; \ -+ mxcsr = (mxcsr | 0x1f80) & ~0x3f; \ -+ asm volatile ("ldmxcsr %0" : : "m" (*&mxcsr)); \ -+ } while (0) -+#undef libc_feholdexceptf -+#define libc_feholdexceptf(e) libc_feholdexcept (e) -+// #define libc_feholdexceptl(e) (void) feholdexcept (e) -+ -+#undef libc_feholdexcept_setround -+#define libc_feholdexcept_setround(e, r) \ -+ do { \ -+ unsigned int mxcsr; \ -+ asm ("stmxcsr %0" : "=m" (*&mxcsr)); \ -+ (e)->__mxcsr = mxcsr; \ -+ mxcsr = ((mxcsr | 0x1f80) & ~0x603f) | ((r) << 3); \ -+ asm volatile ("ldmxcsr %0" : : "m" (*&mxcsr)); \ -+ } while (0) -+#undef libc_feholdexcept_setroundf -+#define libc_feholdexcept_setroundf(e, r) libc_feholdexcept_setround (e, r) -+// #define libc_feholdexcept_setroundl(e, r) ... -+ -+#undef libc_fetestexcept -+#define libc_fetestexcept(e) \ -+ ({ unsigned int mxcsr; asm volatile ("stmxcsr %0" : "=m" (*&mxcsr)); \ -+ mxcsr & (e) & FE_ALL_EXCEPT; }) -+#undef libc_fetestexceptf -+#define libc_fetestexceptf(e) libc_fetestexcept (e) -+// #define libc_fetestexceptl(e) fetestexcept (e) -+ -+#undef libc_fesetenv -+#define libc_fesetenv(e) \ -+ asm volatile ("ldmxcsr %0" : : "m" ((e)->__mxcsr)) -+#undef libc_fesetenvf -+#define libc_fesetenvf(e) libc_fesetenv (e) -+// #define libc_fesetenvl(e) (void) fesetenv (e) -+ -+#undef libc_feupdateenv -+#define libc_feupdateenv(e) \ -+ do { \ -+ unsigned int mxcsr; \ -+ asm volatile ("stmxcsr %0" : "=m" (*&mxcsr)); \ -+ asm volatile ("ldmxcsr %0" : : "m" ((e)->__mxcsr)); \ -+ feraiseexcept (mxcsr & FE_ALL_EXCEPT); \ -+ } while (0) -+#undef libc_feupdateenvf -+#define libc_feupdateenvf(e) libc_feupdateenv (e) -+// #define libc_feupdateenvl(e) (void) feupdateenv (e) diff --git a/src/patches/glibc/glibc-rh841787.patch b/src/patches/glibc/glibc-rh841787.patch deleted file mode 100644 index 3cec783..0000000 --- a/src/patches/glibc/glibc-rh841787.patch +++ /dev/null @@ -1,42 +0,0 @@ -diff -rup a/resolv/res_init.c b/resolv/res_init.c ---- a/resolv/res_init.c 2012-07-26 15:10:45.655638776 -0600 -+++ b/resolv/res_init.c 2012-07-26 15:11:27.731423002 -0600 -@@ -314,9 +314,9 @@ __res_vinit(res_state statp, int preinit - cp++; - if ((*cp != '\0') && (*cp != '\n') - && __inet_aton(cp, &a)) { -- statp->nsaddr_list[nservall].sin_addr = a; -- statp->nsaddr_list[nservall].sin_family = AF_INET; -- statp->nsaddr_list[nservall].sin_port = -+ statp->nsaddr_list[nserv].sin_addr = a; -+ statp->nsaddr_list[nserv].sin_family = AF_INET; -+ statp->nsaddr_list[nserv].sin_port = - htons(NAMESERVER_PORT); - nserv++; - #ifdef _LIBC -diff -rup a/resolv/res_send.c b/resolv/res_send.c ---- a/resolv/res_send.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/resolv/res_send.c 2012-07-26 15:34:58.398261659 -0600 -@@ -421,10 +421,10 @@ __libc_res_nsend(res_state statp, const - EXT(statp).nsmap[n] = MAXNS; - } - } -- n = statp->nscount; -- if (statp->nscount > EXT(statp).nscount) -+ n = statp->nscount - EXT(statp).nscount6; -+ if (n > EXT(statp).nscount) - for (n = EXT(statp).nscount, ns = 0; -- n < statp->nscount; n++) { -+ n < statp->nscount - EXT(statp).nscount6; n++) { - while (ns < MAXNS - && EXT(statp).nsmap[ns] != MAXNS) - ns++; -@@ -441,7 +441,7 @@ __libc_res_nsend(res_state statp, const - malloc(sizeof (struct sockaddr_in6)); - if (EXT(statp).nsaddrs[n] != NULL) { - memset (mempcpy(EXT(statp).nsaddrs[n], -- &statp->nsaddr_list[n], -+ &statp->nsaddr_list[ns], - sizeof (struct sockaddr_in)), - '\0', - sizeof (struct sockaddr_in6) diff --git a/src/patches/glibc/glibc-rh843673.patch b/src/patches/glibc/glibc-rh843673.patch deleted file mode 100644 index a2ff262..0000000 --- a/src/patches/glibc/glibc-rh843673.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff -Brup a/stdlib/msort.c b/stdlib/msort.c ---- a/stdlib/msort.c 2010-05-04 07:27:23.000000000 -0400 -+++ b/stdlib/msort.c 2012-08-07 13:30:14.131765346 -0400 -@@ -25,6 +25,8 @@ - #include <unistd.h> - #include <memcopy.h> - #include <errno.h> -+#include <atomic.h> -+ - - struct msort_param - { -@@ -182,7 +184,7 @@ qsort_r (void *b, size_t n, size_t s, __ - static long int phys_pages; - static int pagesize; - -- if (phys_pages == 0) -+ if (pagesize == 0) - { - phys_pages = __sysconf (_SC_PHYS_PAGES); - -@@ -197,6 +199,9 @@ qsort_r (void *b, size_t n, size_t s, __ - a quarter of the physical memory. */ - phys_pages /= 4; - -+ /* Make sure phys_pages is written to memory. */ -+ atomic_write_barrier (); -+ - pagesize = __sysconf (_SC_PAGESIZE); - } - diff --git a/src/patches/glibc/glibc-rh845218.patch b/src/patches/glibc/glibc-rh845218.patch deleted file mode 100644 index 47f909c..0000000 --- a/src/patches/glibc/glibc-rh845218.patch +++ /dev/null @@ -1,218 +0,0 @@ -commit 16b293a7a6f65d8ff348a603d19e8fd4372fa3a9 -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Wed Apr 30 11:48:43 2014 +0530 - - Do not fail if one of the two responses to AF_UNSPEC fails (BZ #14308) - - [Fixes BZ #14308, #12994, #13651] - - AF_UNSPEC results in sending two queries in parallel, one for the A - record and the other for the AAAA record. If one of these is a - referral, then the query fails, which is wrong. It should return at - least the one successful response. - - The fix has two parts. The first part makes the referral fall back to - the SERVFAIL path, which results in using the successful response. - There is a bug in that path however, due to which the second part is - necessary. The bug here is that if the first response is a failure - and the second succeeds, __libc_res_nsearch does not detect that and - assumes a failure. The case where the first response is a success and - the second fails, works correctly. - - This condition is produced by buggy routers, so here's a crude - interposable library that can simulate such a condition. The library - overrides the recvfrom syscall and modifies the header of the packet - received to reproduce this scenario. It has two key variables: - mod_packet and first_error. - - The mod_packet variable when set to 0, results in odd packets being - modified to be a referral. When set to 1, even packets are modified - to be a referral. - - The first_error causes the first response to be a failure so that a - domain-appended search is performed to test the second part of the - __libc_nsearch fix. - - The driver for this fix is a simple getaddrinfo program that does an - AF_UNSPEC query. I have omitted this since it should be easy to - implement. - - I have tested this on x86_64. - - The interceptor library source: - - /* Override recvfrom and modify the header of the first DNS response to make it - a referral and reproduce bz #845218. We have to resort to this ugly hack - because we cannot make bind return the buggy response of a referral for the - AAAA record and an authoritative response for the A record. */ - #define _GNU_SOURCE - #include <sys/types.h> - #include <sys/socket.h> - #include <netinet/in.h> - #include <arpa/inet.h> - #include <stdio.h> - #include <stdbool.h> - #include <endian.h> - #include <dlfcn.h> - #include <stdlib.h> - - /* Lifted from resolv/arpa/nameser_compat.h. */ - typedef struct { - unsigned id :16; /*%< query identification number */ - #if BYTE_ORDER == BIG_ENDIAN - /* fields in third byte */ - unsigned qr: 1; /*%< response flag */ - unsigned opcode: 4; /*%< purpose of message */ - unsigned aa: 1; /*%< authoritive answer */ - unsigned tc: 1; /*%< truncated message */ - unsigned rd: 1; /*%< recursion desired */ - /* fields - * in - * fourth - * byte - * */ - unsigned ra: 1; /*%< recursion available */ - unsigned unused :1; /*%< unused bits (MBZ as of 4.9.3a3) */ - unsigned ad: 1; /*%< authentic data from named */ - unsigned cd: 1; /*%< checking disabled by resolver */ - unsigned rcode :4; /*%< response code */ - #endif - #if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN - /* fields - * in - * third - * byte - * */ - unsigned rd :1; /*%< recursion desired */ - unsigned tc :1; /*%< truncated message */ - unsigned aa :1; /*%< authoritive answer */ - unsigned opcode :4; /*%< purpose of message */ - unsigned qr :1; /*%< response flag */ - /* fields - * in - * fourth - * byte - * */ - unsigned rcode :4; /*%< response code */ - unsigned cd: 1; /*%< checking disabled by resolver */ - unsigned ad: 1; /*%< authentic data from named */ - unsigned unused :1; /*%< unused bits (MBZ as of 4.9.3a3) */ - unsigned ra :1; /*%< recursion available */ - #endif - /* remaining - * bytes - * */ - unsigned qdcount :16; /*%< number of question entries */ - unsigned ancount :16; /*%< number of answer entries */ - unsigned nscount :16; /*%< number of authority entries */ - unsigned arcount :16; /*%< number of resource entries */ - } HEADER; - - static int done = 0; - - /* Packets to modify. 0 for the odd packets and 1 for even packets. */ - static const int mod_packet = 0; - - /* Set to true if the first request should result in an error, resulting in a - search query. */ - static bool first_error = true; - - static ssize_t (*real_recvfrom) (int sockfd, void *buf, size_t len, int flags, - struct sockaddr *src_addr, socklen_t *addrlen); - - void - __attribute__ ((constructor)) - init (void) - { - real_recvfrom = dlsym (RTLD_NEXT, "recvfrom"); - - if (real_recvfrom == NULL) - { - printf ("Failed to get reference to recvfrom: %s\n", dlerror ()); - printf ("Cannot simulate test\n"); - abort (); - } - } - - /* Modify the second packet that we receive to set the header in a manner as to - reproduce BZ #845218. */ - static void - mod_buf (HEADER *h, int port) - { - if (done % 2 == mod_packet || (first_error && done == 1)) - { - printf ("(Modifying header)"); - - if (first_error && done == 1) - h->rcode = 3; - else - h->rcode = 0; /* NOERROR == 0. */ - h->ancount = 0; - h->aa = 0; - h->ra = 0; - h->arcount = 0; - } - done++; - } - - ssize_t - recvfrom (int sockfd, void *buf, size_t len, int flags, - struct sockaddr *src_addr, socklen_t *addrlen) - { - ssize_t ret = real_recvfrom (sockfd, buf, len, flags, src_addr, addrlen); - int port = htons (((struct sockaddr_in *) src_addr)->sin_port); - struct in_addr addr = ((struct sockaddr_in *) src_addr)->sin_addr; - const char *host = inet_ntoa (addr); - printf ("\n*** From %s:%d: ", host, port); - - mod_buf (buf, port); - - printf ("returned %zd\n", ret); - return ret; - } - -diff --git a/resolv/res_query.c b/resolv/res_query.c -index a9db837..4e6612c 100644 ---- a/resolv/res_query.c -+++ b/resolv/res_query.c -@@ -382,7 +382,9 @@ __libc_res_nsearch(res_state statp, - ret = __libc_res_nquerydomain(statp, name, NULL, class, type, - answer, anslen, answerp, - answerp2, nanswerp2, resplen2); -- if (ret > 0 || trailing_dot) -+ if (ret > 0 || trailing_dot -+ /* If the second response is valid then we use that. */ -+ || (ret == 0 && answerp2 != NULL && resplen2 > 0)) - return (ret); - saved_herrno = h_errno; - tried_as_is++; -@@ -422,7 +424,8 @@ __libc_res_nsearch(res_state statp, - answer, anslen, answerp, - answerp2, nanswerp2, - resplen2); -- if (ret > 0) -+ if (ret > 0 || (ret == 0 && answerp2 != NULL -+ && resplen2 > 0)) - return (ret); - - if (answerp && *answerp != answer) { -diff --git a/resolv/res_send.c b/resolv/res_send.c -index 60743df..3273d55 100644 ---- a/resolv/res_send.c -+++ b/resolv/res_send.c -@@ -1351,6 +1351,7 @@ send_dg(res_state statp, - (*thisresplenp > *thisanssizp) - ? *thisanssizp : *thisresplenp); - -+ next_ns: - if (recvresp1 || (buf2 != NULL && recvresp2)) { - *resplen2 = 0; - return resplen; -@@ -1368,7 +1369,6 @@ send_dg(res_state statp, - goto wait; - } - -- next_ns: - __res_iclose(statp, false); - /* don't retry if called from dig */ - if (!statp->pfcode) diff --git a/src/patches/glibc/glibc-rh846342.patch b/src/patches/glibc/glibc-rh846342.patch deleted file mode 100644 index 8cfca05..0000000 --- a/src/patches/glibc/glibc-rh846342.patch +++ /dev/null @@ -1,48 +0,0 @@ -This is a workaround for broken code which issues memcpy requests with -overlapping arguments. With this patch installed, if the file -/etc/sysconfig/32bit_ssse3_memcpy_via_32bit_ssse3_memmove exists then a -32bit memcpy call which normally would be handled by the SSSE3 memcpy -implementation would instead be handled by the 32bit SSSE3 memmove -implementation which is more tolerant of overlaps. - -diff -Nrup a/sysdeps/i386/i686/multiarch/memcpy.S b/sysdeps/i386/i686/multiarch/memcpy.S ---- a/sysdeps/i386/i686/multiarch/memcpy.S 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/i386/i686/multiarch/memcpy.S 2012-11-20 14:19:52.890780415 -0700 -@@ -21,6 +21,10 @@ - #include <sysdep.h> - #include <init-arch.h> - -+ .section .rodata -+L(magicfile): -+ .ascii "/etc/sysconfig/32bit_ssse3_memcpy_via_32bit_ssse3_memmove" -+ - /* Define multiple versions only for the definition in lib and for - DSO. In static binaries we need memcpy before the initialization - happened. */ -@@ -48,6 +52,26 @@ ENTRY(memcpy) - 1: leal __memcpy_ia32@GOTOFF(%ebx), %eax - testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx) - jz 2f -+ -+ /* This is an inlined access (magicfile, 0) syscall. -+ -+ Note that it clobbers %ebx, so we have to save/restore -+ it around the syscall. */ -+ mov %ebx, %edx -+ leal L(magicfile)@GOTOFF(%ebx), %ebx -+ xor %ecx, %ecx -+ movl $33, %eax -+ int $0x80 -+ mov %edx, %ebx -+ -+ /* If the file did not exist, then %eax will be -1..-4095 and we -+ do nothing special. */ -+ cmpl $-4095, %eax -+ jae 4f -+ -+ leal __memmove_ssse3@GOTOFF(%ebx), %eax -+ jmp 2f -+4: - leal __memcpy_ssse3@GOTOFF(%ebx), %eax - testl $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx) - jz 2f diff --git a/src/patches/glibc/glibc-rh847932.patch b/src/patches/glibc/glibc-rh847932.patch deleted file mode 100644 index 33ea851..0000000 --- a/src/patches/glibc/glibc-rh847932.patch +++ /dev/null @@ -1,364 +0,0 @@ -diff -Nrup a/stdlib/Makefile b/stdlib/Makefile ---- a/stdlib/Makefile 2010-05-04 05:27:23.000000000 -0600 -+++ b/stdlib/Makefile 2012-08-15 09:25:37.812443006 -0600 -@@ -71,7 +71,7 @@ tests := tst-strtol tst-strtod testmb t - tst-atof1 tst-atof2 tst-strtod2 tst-strtod3 tst-rand48-2 \ - tst-makecontext tst-strtod4 tst-strtod5 tst-qsort2 \ - tst-makecontext2 tst-strtod6 tst-unsetenv1 \ -- tst-makecontext3 -+ tst-makecontext3 tst-strtod-overflow - - include ../Makeconfig - -diff -Nrup a/stdlib/strtod_l.c b/stdlib/strtod_l.c ---- a/stdlib/strtod_l.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/stdlib/strtod_l.c 2012-08-15 09:34:29.550281346 -0600 -@@ -62,6 +62,7 @@ extern unsigned long long int ____strtou - #include <math.h> - #include <stdlib.h> - #include <string.h> -+#include <stdint.h> - - /* The gmp headers need some configuration frobs. */ - #define HAVE_ALLOCA 1 -@@ -176,19 +177,19 @@ extern const mp_limb_t _tens_in_limb[MAX - /* Return a floating point number of the needed type according to the given - multi-precision number after possible rounding. */ - static FLOAT --round_and_return (mp_limb_t *retval, int exponent, int negative, -+round_and_return (mp_limb_t *retval, intmax_t exponent, int negative, - mp_limb_t round_limb, mp_size_t round_bit, int more_bits) - { - if (exponent < MIN_EXP - 1) - { -- mp_size_t shift = MIN_EXP - 1 - exponent; -- -- if (shift > MANT_DIG) -+ if (exponent < MIN_EXP - 1 - MANT_DIG) - { - __set_errno (EDOM); - return 0.0; - } - -+ mp_size_t shift = MIN_EXP - 1 - exponent; -+ - more_bits |= (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0; - if (shift == MANT_DIG) - /* This is a special case to handle the very seldom case where -@@ -235,6 +236,9 @@ round_and_return (mp_limb_t *retval, int - __set_errno (ERANGE); - } - -+ if (exponent > MAX_EXP) -+ goto overflow; -+ - if ((round_limb & (((mp_limb_t) 1) << round_bit)) != 0 - && (more_bits || (retval[0] & 1) != 0 - || (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0)) -@@ -260,6 +264,7 @@ round_and_return (mp_limb_t *retval, int - } - - if (exponent > MAX_EXP) -+ overflow: - return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL; - - return MPN2FLOAT (retval, exponent, negative); -@@ -273,7 +278,7 @@ round_and_return (mp_limb_t *retval, int - factor for the resulting number (see code) multiply by it. */ - static const STRING_TYPE * - str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize, -- int *exponent -+ intmax_t *exponent - #ifndef USE_WIDE_CHAR - , const char *decimal, size_t decimal_len, const char *thousands - #endif -@@ -337,7 +342,7 @@ str_to_mpn (const STRING_TYPE *str, int - } - while (--digcnt > 0); - -- if (*exponent > 0 && cnt + *exponent <= MAX_DIG_PER_LIMB) -+ if (*exponent > 0 && *exponent <= MAX_DIG_PER_LIMB - cnt) - { - low *= _tens_in_limb[*exponent]; - start = _tens_in_limb[cnt + *exponent]; -@@ -415,7 +420,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group - { - int negative; /* The sign of the number. */ - MPN_VAR (num); /* MP representation of the number. */ -- int exponent; /* Exponent of the number. */ -+ intmax_t exponent; /* Exponent of the number. */ - - /* Numbers starting `0X' or `0x' have to be processed with base 16. */ - int base = 10; -@@ -437,7 +442,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group - /* Points at the character following the integer and fractional digits. */ - const STRING_TYPE *expp; - /* Total number of digit and number of digits in integer part. */ -- int dig_no, int_no, lead_zero; -+ size_t dig_no, int_no, lead_zero; - /* Contains the last character read. */ - CHAR_TYPE c; - -@@ -769,7 +774,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group - are all or any is really a fractional digit will be decided - later. */ - int_no = dig_no; -- lead_zero = int_no == 0 ? -1 : 0; -+ lead_zero = int_no == 0 ? (size_t) -1 : 0; - - /* Read the fractional digits. A special case are the 'american - style' numbers like `16.' i.e. with decimal point but without -@@ -791,12 +796,13 @@ ____STRTOF_INTERNAL (nptr, endptr, group - (base == 16 && ({ CHAR_TYPE lo = TOLOWER (c); - lo >= L_('a') && lo <= L_('f'); }))) - { -- if (c != L_('0') && lead_zero == -1) -+ if (c != L_('0') && lead_zero == (size_t) -1) - lead_zero = dig_no - int_no; - ++dig_no; - c = *++cp; - } - } -+ assert (dig_no <= (uintmax_t) INTMAX_MAX); - - /* Remember start of exponent (if any). */ - expp = cp; -@@ -819,24 +825,80 @@ ____STRTOF_INTERNAL (nptr, endptr, group - - if (c >= L_('0') && c <= L_('9')) - { -- int exp_limit; -+ intmax_t exp_limit; - - /* Get the exponent limit. */ - if (base == 16) -- exp_limit = (exp_negative ? -- -MIN_EXP + MANT_DIG + 4 * int_no : -- MAX_EXP - 4 * int_no + 4 * lead_zero + 3); -+ { -+ if (exp_negative) -+ { -+ assert (int_no <= (uintmax_t) (INTMAX_MAX -+ + MIN_EXP - MANT_DIG) / 4); -+ exp_limit = -MIN_EXP + MANT_DIG + 4 * (intmax_t) int_no; -+ } -+ else -+ { -+ if (int_no) -+ { -+ assert (lead_zero == 0 -+ && int_no <= (uintmax_t) INTMAX_MAX / 4); -+ exp_limit = MAX_EXP - 4 * (intmax_t) int_no + 3; -+ } -+ else if (lead_zero == (size_t) -1) -+ { -+ /* The number is zero and this limit is -+ arbitrary. */ -+ exp_limit = MAX_EXP + 3; -+ } -+ else -+ { -+ assert (lead_zero -+ <= (uintmax_t) (INTMAX_MAX - MAX_EXP - 3) / 4); -+ exp_limit = (MAX_EXP -+ + 4 * (intmax_t) lead_zero -+ + 3); -+ } -+ } -+ } - else -- exp_limit = (exp_negative ? -- -MIN_10_EXP + MANT_DIG + int_no : -- MAX_10_EXP - int_no + lead_zero + 1); -+ { -+ if (exp_negative) -+ { -+ assert (int_no -+ <= (uintmax_t) (INTMAX_MAX + MIN_10_EXP - MANT_DIG)); -+ exp_limit = -MIN_10_EXP + MANT_DIG + (intmax_t) int_no; -+ } -+ else -+ { -+ if (int_no) -+ { -+ assert (lead_zero == 0 -+ && int_no <= (uintmax_t) INTMAX_MAX); -+ exp_limit = MAX_10_EXP - (intmax_t) int_no + 1; -+ } -+ else if (lead_zero == (size_t) -1) -+ { -+ /* The number is zero and this limit is -+ arbitrary. */ -+ exp_limit = MAX_10_EXP + 1; -+ } -+ else -+ { -+ assert (lead_zero -+ <= (uintmax_t) (INTMAX_MAX - MAX_10_EXP - 1)); -+ exp_limit = MAX_10_EXP + (intmax_t) lead_zero + 1; -+ } -+ } -+ } -+ -+ if (exp_limit < 0) -+ exp_limit = 0; - - do - { -- exponent *= 10; -- exponent += c - L_('0'); -- -- if (__builtin_expect (exponent > exp_limit, 0)) -+ if (__builtin_expect ((exponent > exp_limit / 10 -+ || (exponent == exp_limit / 10 -+ && c - L_('0') > exp_limit % 10)), 0)) - /* The exponent is too large/small to represent a valid - number. */ - { -@@ -845,7 +907,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group - /* We have to take care for special situation: a joker - might have written "0.0e100000" which is in fact - zero. */ -- if (lead_zero == -1) -+ if (lead_zero == (size_t) -1) - result = negative ? -0.0 : 0.0; - else - { -@@ -864,6 +926,9 @@ ____STRTOF_INTERNAL (nptr, endptr, group - /* NOTREACHED */ - } - -+ exponent *= 10; -+ exponent += c - L_('0'); -+ - c = *++cp; - } - while (c >= L_('0') && c <= L_('9')); -@@ -932,7 +997,14 @@ ____STRTOF_INTERNAL (nptr, endptr, group - } - #endif - startp += lead_zero + decimal_len; -- exponent -= base == 16 ? 4 * lead_zero : lead_zero; -+ assert (lead_zero <= (base == 16 -+ ? (uintmax_t) INTMAX_MAX / 4 -+ : (uintmax_t) INTMAX_MAX)); -+ assert (lead_zero <= (base == 16 -+ ? ((uintmax_t) exponent -+ - (uintmax_t) INTMAX_MIN) / 4 -+ : ((uintmax_t) exponent - (uintmax_t) INTMAX_MIN))); -+ exponent -= base == 16 ? 4 * (intmax_t) lead_zero : (intmax_t) lead_zero; - dig_no -= lead_zero; - } - -@@ -974,7 +1046,10 @@ ____STRTOF_INTERNAL (nptr, endptr, group - } - - /* Adjust the exponent for the bits we are shifting in. */ -- exponent += bits - 1 + (int_no - 1) * 4; -+ assert (int_no <= (uintmax_t) (exponent < 0 -+ ? (INTMAX_MAX - bits + 1) / 4 -+ : (INTMAX_MAX - exponent - bits + 1) / 4)); -+ exponent += bits - 1 + ((intmax_t) int_no - 1) * 4; - - while (--dig_no > 0 && idx >= 0) - { -@@ -1014,13 +1089,15 @@ ____STRTOF_INTERNAL (nptr, endptr, group - really integer digits or belong to the fractional part; i.e. we normalize - 123e-2 to 1.23. */ - { -- register int incr = (exponent < 0 ? MAX (-int_no, exponent) -- : MIN (dig_no - int_no, exponent)); -+ register intmax_t incr = (exponent < 0 -+ ? MAX (-(intmax_t) int_no, exponent) -+ : MIN ((intmax_t) dig_no - (intmax_t) int_no, -+ exponent)); - int_no += incr; - exponent -= incr; - } - -- if (__builtin_expect (int_no + exponent > MAX_10_EXP + 1, 0)) -+ if (__builtin_expect (exponent > MAX_10_EXP + 1 - (intmax_t) int_no, 0)) - { - __set_errno (ERANGE); - return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL; -@@ -1205,7 +1282,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group - digits we should have enough bits for the result. The remaining - decimal digits give us the information that more bits are following. - This can be used while rounding. (Two added as a safety margin.) */ -- if (dig_no - int_no > (MANT_DIG - bits + 2) / 3 + 2) -+ if ((intmax_t) dig_no > (intmax_t) int_no + (MANT_DIG - bits + 2) / 3 + 2) - { - dig_no = int_no + (MANT_DIG - bits + 2) / 3 + 2; - more_bits = 1; -@@ -1213,7 +1290,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group - else - more_bits = 0; - -- neg_exp = dig_no - int_no - exponent; -+ neg_exp = (intmax_t) dig_no - (intmax_t) int_no - exponent; - - /* Construct the denominator. */ - densize = 0; -@@ -1491,7 +1568,9 @@ ____STRTOF_INTERNAL (nptr, endptr, group - register int i; - (void) __mpn_lshift (&retval[used - / BITS_PER_MP_LIMB], -- retval, RETURN_LIMB_SIZE, -+ retval, -+ (RETURN_LIMB_SIZE -+ - used / BITS_PER_MP_LIMB), - used % BITS_PER_MP_LIMB); - for (i = used / BITS_PER_MP_LIMB - 1; i >= 0; --i) - retval[i] = 0; -diff -Nrup a/stdlib/tst-strtod-overflow.c b/stdlib/tst-strtod-overflow.c ---- a/stdlib/tst-strtod-overflow.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/stdlib/tst-strtod-overflow.c 2012-08-15 09:25:01.098592764 -0600 -@@ -0,0 +1,48 @@ -+/* Test for integer/buffer overflow in strtod. -+ Copyright (C) 2012 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ -+#include <stdio.h> -+#include <stdlib.h> -+#include <string.h> -+ -+#define EXPONENT "e-2147483649" -+#define SIZE 214748364 -+ -+static int -+do_test (void) -+{ -+ char *p = malloc (1 + SIZE + sizeof (EXPONENT)); -+ if (p == NULL) -+ { -+ puts ("malloc failed, cannot test for overflow"); -+ return 0; -+ } -+ p[0] = '1'; -+ memset (p + 1, '0', SIZE); -+ memcpy (p + 1 + SIZE, EXPONENT, sizeof (EXPONENT)); -+ double d = strtod (p, NULL); -+ if (d != 0) -+ { -+ printf ("strtod returned wrong value: %a\n", d); -+ return 1; -+ } -+ return 0; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" diff --git a/src/patches/glibc/glibc-rh848082.patch b/src/patches/glibc/glibc-rh848082.patch deleted file mode 100644 index dfb96bf..0000000 --- a/src/patches/glibc/glibc-rh848082.patch +++ /dev/null @@ -1,88 +0,0 @@ -commit 4f031072a5055abd83717820b59efdaa463d5853 -Author: Ulrich Drepper drepper@gmail.com -Date: Sat May 28 16:59:30 2011 -0400 - - Handle failure of _nl_explode_name in all cases - - 2011-05-28 Ulrich Drepper drepper@gmail.com - - * locale/findlocale.c (_nl_find_locale): Return right away if - _nl_explode_name failed. - * locale/programs/locarchive.c (add_locale_to_archive): Likewise. - -diff --git a/locale/findlocale.c b/locale/findlocale.c -index 6b88c96..2fec9a7 100644 ---- a/locale/findlocale.c -+++ b/locale/findlocale.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 1996-2001, 2002, 2003, 2006, 2010 Free Software Foundation, Inc. -+/* Copyright (C) 1996-2003, 2006, 2010, 2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper drepper@cygnus.com, 1996. - -@@ -140,6 +140,9 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len, - */ - mask = _nl_explode_name (loc_name, &language, &modifier, &territory, - &codeset, &normalized_codeset); -+ if (mask == -1) -+ /* Memory allocate problem. */ -+ return NULL; - - /* If exactly this locale was already asked for we have an entry with - the complete name. */ -diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c -index 85ba77d..e95bcf1 100644 ---- a/locale/programs/locarchive.c -+++ b/locale/programs/locarchive.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc. -+/* Copyright (C) 2002,2003,2005,2007,2009,2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper drepper@redhat.com, 2002. - -@@ -1079,6 +1079,8 @@ add_locale_to_archive (ah, name, data, replace) - int mask = _nl_explode_name (strdupa (name), - &language, &modifier, &territory, - &codeset, &normalized_codeset); -+ if (mask == -1) -+ return -1; - - if (mask & XPG_NORM_CODESET) - /* This name contains a codeset in unnormalized form. -@@ -1128,6 +1130,7 @@ add_locale_to_archive (ah, name, data, replace) - - /* Now read the locale.alias files looking for lines whose - right hand side matches our name after normalization. */ -+ int result = 0; - if (alias_file != NULL) - { - FILE *fp; -@@ -1207,6 +1210,11 @@ add_locale_to_archive (ah, name, data, replace) - &rhs_territory, - &rhs_codeset, - &rhs_normalized_codeset); -+ if (rhs_mask == 1) -+ { -+ result = -1; -+ goto out; -+ } - if (!strcmp (language, rhs_language) - && ((rhs_mask & XPG_CODESET) - /* He has a codeset, it must match normalized. */ -@@ -1240,6 +1248,7 @@ add_locale_to_archive (ah, name, data, replace) - } - } - -+ out: - fclose (fp); - } - -@@ -1248,7 +1257,7 @@ add_locale_to_archive (ah, name, data, replace) - if (mask & XPG_NORM_CODESET) - free ((char *) normalized_codeset); - -- return 0; -+ return result; - } - - diff --git a/src/patches/glibc/glibc-rh848748.patch b/src/patches/glibc/glibc-rh848748.patch deleted file mode 100644 index b75a368..0000000 --- a/src/patches/glibc/glibc-rh848748.patch +++ /dev/null @@ -1,70 +0,0 @@ -2013-04-30 Patsy Franklin pfrankli@redhat.com - - * nis/yp_xdr.c: Defined XDRMAXNAME and XDRMAXRECORD. - (xdr_domainname): Use XDRMAXNAME as maxsize. - (xdr_mapname): Use XDRMAXNAME as maxsize. - (xdr_peername): Use XDRMAXNAME as maxsize. - (xdr_keydat): Use XDRMAXRECORD as maxsize. - (xdr_valdat): Use XDRMAXRECORD as maxsize. - -diff -Nrup a/nis/yp_xdr.c b/nis/yp_xdr.c ---- a/nis/yp_xdr.c 2012-06-30 15:12:34.000000000 -0400 -+++ b/nis/yp_xdr.c 2013-04-30 05:36:02.492835503 -0400 -@@ -32,6 +32,14 @@ - #include <rpcsvc/yp.h> - #include <rpcsvc/ypclnt.h> - -+/* The specification suggests 1024 as a maximum length of all fields, -+ but current linux systems usually don't use any limits. So, to stay -+ as much compatible as possible with recent linux systems we choose -+ limits large enough to avoid problems. */ -+ -+#define XDRMAXNAME 1024 -+#define XDRMAXRECORD 16 * 1024 * 1024 -+ - bool_t - xdr_ypstat (XDR *xdrs, ypstat *objp) - { -@@ -49,21 +57,21 @@ libnsl_hidden_def (xdr_ypxfrstat) - bool_t - xdr_domainname (XDR *xdrs, domainname *objp) - { -- return xdr_string (xdrs, objp, ~0); -+ return xdr_string (xdrs, objp, XDRMAXNAME); - } - libnsl_hidden_def (xdr_domainname) - - bool_t - xdr_mapname (XDR *xdrs, mapname *objp) - { -- return xdr_string (xdrs, objp, ~0); -+ return xdr_string (xdrs, objp, XDRMAXNAME); - } - libnsl_hidden_def (xdr_mapname) - - bool_t - xdr_peername (XDR *xdrs, peername *objp) - { -- return xdr_string (xdrs, objp, ~0); -+ return xdr_string (xdrs, objp, XDRMAXNAME); - } - libnsl_hidden_def (xdr_peername) - -@@ -71,7 +79,7 @@ bool_t - xdr_keydat (XDR *xdrs, keydat *objp) - { - return xdr_bytes (xdrs, (char **) &objp->keydat_val, -- (u_int *) &objp->keydat_len, ~0); -+ (u_int *) &objp->keydat_len, XDRMAXRECORD); - } - libnsl_hidden_def (xdr_keydat) - -@@ -79,7 +87,7 @@ bool_t - xdr_valdat (XDR *xdrs, valdat *objp) - { - return xdr_bytes (xdrs, (char **) &objp->valdat_val, -- (u_int *) &objp->valdat_len, ~0); -+ (u_int *) &objp->valdat_len, XDRMAXRECORD); - } - libnsl_hidden_def (xdr_valdat) - diff --git a/src/patches/glibc/glibc-rh849203.patch b/src/patches/glibc/glibc-rh849203.patch deleted file mode 100644 index ea50593..0000000 --- a/src/patches/glibc/glibc-rh849203.patch +++ /dev/null @@ -1,195 +0,0 @@ -diff -Nrup a/intl/Makefile b/intl/Makefile ---- a/intl/Makefile 2010-05-04 05:27:23.000000000 -0600 -+++ b/intl/Makefile 2012-08-17 14:40:00.457226629 -0600 -@@ -74,6 +74,16 @@ ifneq (no,$(PERL)) - tests: $(objpfx)mtrace-tst-gettext - endif - endif -+ -+# Multiple tests use this data. Create it once to avoid racing and -+# spurious test failures. -+codeset_mo = $(objpfx)domaindir/de_DE/LC_MESSAGES/codeset.mo -+ -+$(codeset_mo): -+ $(make-target-directory) -+ msgfmt -o $@T tstcodeset.po -+ mv -f $@T $@ -+ - $(objpfx)mtrace-tst-gettext: $(objpfx)tst-gettext.out - $(common-objpfx)malloc/mtrace $(objpfx)tst-gettext.mtrace > $@ - $(objpfx)tst-gettext.out: tst-gettext.sh $(objpfx)tst-gettext -@@ -83,16 +93,14 @@ $(objpfx)tst-translit.out: tst-translit. - $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/ - $(objpfx)tst-gettext2.out: tst-gettext2.sh $(objpfx)tst-gettext2 - $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/ --$(objpfx)tst-codeset.out: tst-codeset.sh $(objpfx)tst-codeset -- $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/ --$(objpfx)tst-gettext3.out: tst-gettext3.sh $(objpfx)tst-gettext3 -- $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/ - $(objpfx)tst-gettext4.out: tst-gettext4.sh $(objpfx)tst-gettext4 - $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/ --$(objpfx)tst-gettext5.out: tst-gettext5.sh $(objpfx)tst-gettext5 -- $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/ - $(objpfx)tst-gettext6.out: tst-gettext6.sh $(objpfx)tst-gettext6 - $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/ -+ -+$(objpfx)tst-codeset.out: $(codeset_mo) -+$(objpfx)tst-gettext3.out: $(codeset_mo) -+$(objpfx)tst-gettext5.out: $(codeset_mo) - endif - endif - -@@ -109,6 +117,11 @@ CFLAGS-tst-gettext4.c = -DOBJPFX="$(obj - CFLAGS-tst-gettext5.c = -DOBJPFX="$(objpfx)" - CFLAGS-tst-gettext6.c = -DOBJPFX="$(objpfx)" - -+LOCPATH-ENV = LOCPATH=$(common-objpfx)localedata -+tst-codeset-ENV = $(LOCPATH-ENV) -+tst-gettext3-ENV = $(LOCPATH-ENV) -+tst-gettext5-ENV = $(LOCPATH-ENV) -+ - ifeq ($(have-thread-library),yes) - ifeq (yes,$(build-shared)) - $(addprefix $(objpfx),$(multithread-test-srcs)): $(shared-thread-library) -diff -Nrup a/intl/tst-codeset.sh b/intl/tst-codeset.sh ---- a/intl/tst-codeset.sh 2010-05-04 05:27:23.000000000 -0600 -+++ b/intl/tst-codeset.sh 1969-12-31 17:00:00.000000000 -0700 -@@ -1,43 +0,0 @@ --#! /bin/sh --# Test of bind_textdomain_codeset. --# Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc. --# This file is part of the GNU C Library. --# -- --# The GNU C Library is free software; you can redistribute it and/or --# modify it under the terms of the GNU Lesser General Public --# License as published by the Free Software Foundation; either --# version 2.1 of the License, or (at your option) any later version. -- --# The GNU C Library is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --# Lesser General Public License for more details. -- --# You should have received a copy of the GNU Lesser General Public --# License along with the GNU C Library; if not, write to the Free --# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA --# 02111-1307 USA. -- --common_objpfx=$1 --objpfx=$2 -- --LC_ALL=C --export LC_ALL -- --# Generate the test data. --msgfmt -o ${objpfx}codeset.mo.$$ tstcodeset.po || exit --# Create the domain directories. --mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES --# Populate them. --mv -f ${objpfx}codeset.mo.$$ ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo -- --GCONV_PATH=${common_objpfx}iconvdata --export GCONV_PATH --LOCPATH=${common_objpfx}localedata --export LOCPATH -- --${common_objpfx}elf/ld.so --library-path $common_objpfx \ --${objpfx}tst-codeset > ${objpfx}tst-codeset.out -- --exit $? -diff -Nrup a/intl/tst-gettext3.sh b/intl/tst-gettext3.sh ---- a/intl/tst-gettext3.sh 2010-05-04 05:27:23.000000000 -0600 -+++ b/intl/tst-gettext3.sh 1969-12-31 17:00:00.000000000 -0700 -@@ -1,44 +0,0 @@ --#! /bin/sh --# Test that the gettext() results come out in the correct encoding for --# locales that differ only in their encoding. --# Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc. --# This file is part of the GNU C Library. --# -- --# The GNU C Library is free software; you can redistribute it and/or --# modify it under the terms of the GNU Lesser General Public --# License as published by the Free Software Foundation; either --# version 2.1 of the License, or (at your option) any later version. -- --# The GNU C Library is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --# Lesser General Public License for more details. -- --# You should have received a copy of the GNU Lesser General Public --# License along with the GNU C Library; if not, write to the Free --# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA --# 02111-1307 USA. -- --common_objpfx=$1 --objpfx=$2 -- --LC_ALL=C --export LC_ALL -- --# Generate the test data. --msgfmt -o ${objpfx}codeset.mo.$$ tstcodeset.po || exit --# Create the domain directories. --mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES --# Populate them. --mv -f ${objpfx}codeset.mo.$$ ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo -- --GCONV_PATH=${common_objpfx}iconvdata --export GCONV_PATH --LOCPATH=${common_objpfx}localedata --export LOCPATH -- --${common_objpfx}elf/ld.so --library-path $common_objpfx \ --${objpfx}tst-gettext3 > ${objpfx}tst-gettext3.out -- --exit $? -diff -Nrup a/intl/tst-gettext5.sh b/intl/tst-gettext5.sh ---- a/intl/tst-gettext5.sh 2010-05-04 05:27:23.000000000 -0600 -+++ b/intl/tst-gettext5.sh 1969-12-31 17:00:00.000000000 -0700 -@@ -1,43 +0,0 @@ --#! /bin/sh --# Test that gettext() in multithreaded applications works correctly if --# different threads operate in different locales referring to the same --# catalog file but with different encodings. --# Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc. --# This file is part of the GNU C Library. --# -- --# The GNU C Library is free software; you can redistribute it and/or --# modify it under the terms of the GNU Lesser General Public --# License as published by the Free Software Foundation; either --# version 2.1 of the License, or (at your option) any later version. -- --# The GNU C Library is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --# Lesser General Public License for more details. -- --# You should have received a copy of the GNU Lesser General Public --# License along with the GNU C Library; if not, write to the Free --# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA --# 02111-1307 USA. -- --common_objpfx=$1 --run_program_prefix=$2 --objpfx=$3 -- --LC_ALL=C --export LC_ALL -- --# Create the domain directories. --mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES --# Populate them. --msgfmt -o ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo tstcodeset.po -- --GCONV_PATH=${common_objpfx}iconvdata --export GCONV_PATH --LOCPATH=${common_objpfx}localedata --export LOCPATH -- --${run_program_prefix} ${objpfx}tst-gettext5 > ${objpfx}tst-gettext5.out -- --exit $? diff --git a/src/patches/glibc/glibc-rh849651.patch b/src/patches/glibc/glibc-rh849651.patch deleted file mode 100644 index 97a5144..0000000 --- a/src/patches/glibc/glibc-rh849651.patch +++ /dev/null @@ -1,343 +0,0 @@ -diff -Nrup a/sysdeps/x86_64/fpu/e_expf.S b/sysdeps/x86_64/fpu/e_expf.S ---- a/sysdeps/x86_64/fpu/e_expf.S 1969-12-31 17:00:00.000000000 -0700 -+++ b/sysdeps/x86_64/fpu/e_expf.S 2012-08-20 09:47:15.551971545 -0600 -@@ -0,0 +1,339 @@ -+/* Optimized __ieee754_expf function. -+ Copyright (C) 2012 Free Software Foundation, Inc. -+ Contributed by Intel Corporation. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ -+#include <sysdep.h> -+ -+/* Short algorithm description: -+ * -+ * Let K = 64 (table size). -+ * e^x = 2^(x/log(2)) = 2^n * T[j] * (1 + P(y)) -+ * where -+ * x = m*log(2)/K + y, y in [0.0..log(2)/K] -+ * m = n*K + j, m,n,j - signed integer, j in [0..K-1] -+ * values of 2^(j/K) are tabulated as T[j]. -+ * -+ * P(y) is a minimax polynomial approximation of expf(x)-1 -+ * on small interval [0.0..log(2)/K]. -+ * -+ * P(y) = P3*y*y*y*y + P2*y*y*y + P1*y*y + P0*y, calculated as -+ * z = y*y; P(y) = (P3*z + P1)*z + (P2*z + P0)*y -+ * -+ * Special cases: -+ * expf(NaN) = NaN -+ * expf(+INF) = +INF -+ * expf(-INF) = 0 -+ * expf(x) = 1 for subnormals -+ * for finite argument, only expf(0)=1 is exact -+ * expf(x) overflows if x>88.7228317260742190 -+ * expf(x) underflows if x<-103.972076416015620 -+ */ -+ -+ .text -+ENTRY(__ieee754_expf) -+ /* Input: single precision x in %xmm0 */ -+ cvtss2sd %xmm0, %xmm1 /* Convert x to double precision */ -+ movd %xmm0, %ecx /* Copy x */ -+ movsd L(DP_KLN2)(%rip), %xmm2 /* DP K/log(2) */ -+ movsd L(DP_P2)(%rip), %xmm3 /* DP P2 */ -+ movl %ecx, %eax /* x */ -+ mulsd %xmm1, %xmm2 /* DP x*K/log(2) */ -+ andl $0x7fffffff, %ecx /* |x| */ -+ lea L(DP_T)(%rip), %rsi /* address of table T[j] */ -+ cmpl $0x42ad496b, %ecx /* |x|<125*log(2) ? */ -+ movsd L(DP_P3)(%rip), %xmm4 /* DP P3 */ -+ addsd L(DP_RS)(%rip), %xmm2 /* DP x*K/log(2)+RS */ -+ jae L(special_paths) -+ -+ /* Here if |x|<125*log(2) */ -+ cmpl $0x31800000, %ecx /* |x|<2^(-28) ? */ -+ jb L(small_arg) -+ -+ /* Main path: here if 2^(-28)<=|x|<125*log(2) */ -+ cvtsd2ss %xmm2, %xmm2 /* SP x*K/log(2)+RS */ -+ movd %xmm2, %eax /* bits of n*K+j with trash */ -+ subss L(SP_RS)(%rip), %xmm2 /* SP t=round(x*K/log(2)) */ -+ movl %eax, %edx /* n*K+j with trash */ -+ cvtss2sd %xmm2, %xmm2 /* DP t */ -+ andl $0x3f, %eax /* bits of j */ -+ mulsd L(DP_NLN2K)(%rip), %xmm2/* DP -t*log(2)/K */ -+ andl $0xffffffc0, %edx /* bits of n */ -+#ifdef __AVX__ -+ vaddsd %xmm1, %xmm2, %xmm0 /* DP y=x-t*log(2)/K */ -+ vmulsd %xmm0, %xmm0, %xmm2 /* DP z=y*y */ -+#else -+ addsd %xmm1, %xmm2 /* DP y=x-t*log(2)/K */ -+ movaps %xmm2, %xmm0 /* DP y */ -+ mulsd %xmm2, %xmm2 /* DP z=y*y */ -+#endif -+ mulsd %xmm2, %xmm4 /* DP P3*z */ -+ addl $0x1fc0, %edx /* bits of n + SP exponent bias */ -+ mulsd %xmm2, %xmm3 /* DP P2*z */ -+ shll $17, %edx /* SP 2^n */ -+ addsd L(DP_P1)(%rip), %xmm4 /* DP P3*z+P1 */ -+ addsd L(DP_P0)(%rip), %xmm3 /* DP P2*z+P0 */ -+ movd %edx, %xmm1 /* SP 2^n */ -+ mulsd %xmm2, %xmm4 /* DP (P3*z+P1)*z */ -+ mulsd %xmm3, %xmm0 /* DP (P2*z+P0)*y */ -+ addsd %xmm4, %xmm0 /* DP P(y) */ -+ mulsd (%rsi,%rax,8), %xmm0 /* DP P(y)*T[j] */ -+ addsd (%rsi,%rax,8), %xmm0 /* DP T[j]*(P(y)+1) */ -+ cvtsd2ss %xmm0, %xmm0 /* SP T[j]*(P(y)+1) */ -+ mulss %xmm1, %xmm0 /* SP result=2^n*(T[j]*(P(y)+1)) */ -+ ret -+ -+ .p2align 4 -+L(small_arg): -+ /* Here if 0<=|x|<2^(-28) */ -+ addss L(SP_ONE)(%rip), %xmm0 /* 1.0 + x */ -+ /* Return 1.0 with inexact raised, except for x==0 */ -+ ret -+ -+ .p2align 4 -+L(special_paths): -+ /* Here if 125*log(2)<=|x| */ -+ shrl $31, %eax /* Get sign bit of x, and depending on it: */ -+ lea L(SP_RANGE)(%rip), %rdx /* load over/underflow bound */ -+ cmpl (%rdx,%rax,4), %ecx /* |x|<under/overflow bound ? */ -+ jbe L(near_under_or_overflow) -+ -+ /* Here if |x|>under/overflow bound */ -+ cmpl $0x7f800000, %ecx /* |x| is finite ? */ -+ jae L(arg_inf_or_nan) -+ -+ /* Here if |x|>under/overflow bound, and x is finite */ -+ testq %rax, %rax /* sign of x nonzero ? */ -+ je L(res_overflow) -+ -+ /* Here if -inf<x<underflow bound (x<0) */ -+ movss L(SP_SMALL)(%rip), %xmm0/* load small value 2^(-100) */ -+ mulss %xmm0, %xmm0 /* Return underflowed result (zero or subnormal) */ -+ ret -+ -+ .p2align 4 -+L(res_overflow): -+ /* Here if overflow bound<x<inf (x>0) */ -+ movss L(SP_LARGE)(%rip), %xmm0/* load large value 2^100 */ -+ mulss %xmm0, %xmm0 /* Return overflowed result (Inf or max normal) */ -+ ret -+ -+ .p2align 4 -+L(arg_inf_or_nan): -+ /* Here if |x| is Inf or NAN */ -+ jne L(arg_nan) /* |x| is Inf ? */ -+ -+ /* Here if |x| is Inf */ -+ lea L(SP_INF_0)(%rip), %rdx /* depending on sign of x: */ -+ movss (%rdx,%rax,4), %xmm0 /* return zero or Inf */ -+ ret -+ -+ .p2align 4 -+L(arg_nan): -+ /* Here if |x| is NaN */ -+ addss %xmm0, %xmm0 /* Return x+x (raise invalid) */ -+ ret -+ -+ .p2align 4 -+L(near_under_or_overflow): -+ /* Here if 125*log(2)<=|x|<under/overflow bound */ -+ cvtsd2ss %xmm2, %xmm2 /* SP x*K/log(2)+RS */ -+ movd %xmm2, %eax /* bits of n*K+j with trash */ -+ subss L(SP_RS)(%rip), %xmm2 /* SP t=round(x*K/log(2)) */ -+ movl %eax, %edx /* n*K+j with trash */ -+ cvtss2sd %xmm2, %xmm2 /* DP t */ -+ andl $0x3f, %eax /* bits of j */ -+ mulsd L(DP_NLN2K)(%rip), %xmm2/* DP -t*log(2)/K */ -+ andl $0xffffffc0, %edx /* bits of n */ -+#ifdef __AVX__ -+ vaddsd %xmm1, %xmm2, %xmm0 /* DP y=x-t*log(2)/K */ -+ vmulsd %xmm0, %xmm0, %xmm2 /* DP z=y*y */ -+#else -+ addsd %xmm1, %xmm2 /* DP y=x-t*log(2)/K */ -+ movaps %xmm2, %xmm0 /* DP y */ -+ mulsd %xmm2, %xmm2 /* DP z=y*y */ -+#endif -+ mulsd %xmm2, %xmm4 /* DP P3*z */ -+ addl $0xffc0, %edx /* bits of n + DP exponent bias */ -+ mulsd %xmm2, %xmm3 /* DP P2*z */ -+ shlq $46, %rdx /* DP 2^n */ -+ addsd L(DP_P1)(%rip), %xmm4 /* DP P3*z+P1 */ -+ addsd L(DP_P0)(%rip), %xmm3 /* DP P2*z+P0 */ -+ movd %rdx, %xmm1 /* DP 2^n */ -+ mulsd %xmm2, %xmm4 /* DP (P3*z+P1)*z */ -+ mulsd %xmm3, %xmm0 /* DP (P2*z+P0)*y */ -+ addsd %xmm4, %xmm0 /* DP P(y) */ -+ mulsd (%rsi,%rax,8), %xmm0 /* DP P(y)*T[j] */ -+ addsd (%rsi,%rax,8), %xmm0 /* DP T[j]*(P(y)+1) */ -+ mulsd %xmm1, %xmm0 /* DP result=2^n*(T[j]*(P(y)+1)) */ -+ cvtsd2ss %xmm0, %xmm0 /* convert result to single precision */ -+ ret -+END(__ieee754_expf) -+ -+ .section .rodata, "a" -+ .p2align 3 -+L(DP_T): /* table of double precision values 2^(j/K) for j=[0..K-1] */ -+ .long 0x00000000, 0x3ff00000 -+ .long 0x3e778061, 0x3ff02c9a -+ .long 0xd3158574, 0x3ff059b0 -+ .long 0x18759bc8, 0x3ff08745 -+ .long 0x6cf9890f, 0x3ff0b558 -+ .long 0x32d3d1a2, 0x3ff0e3ec -+ .long 0xd0125b51, 0x3ff11301 -+ .long 0xaea92de0, 0x3ff1429a -+ .long 0x3c7d517b, 0x3ff172b8 -+ .long 0xeb6fcb75, 0x3ff1a35b -+ .long 0x3168b9aa, 0x3ff1d487 -+ .long 0x88628cd6, 0x3ff2063b -+ .long 0x6e756238, 0x3ff2387a -+ .long 0x65e27cdd, 0x3ff26b45 -+ .long 0xf51fdee1, 0x3ff29e9d -+ .long 0xa6e4030b, 0x3ff2d285 -+ .long 0x0a31b715, 0x3ff306fe -+ .long 0xb26416ff, 0x3ff33c08 -+ .long 0x373aa9cb, 0x3ff371a7 -+ .long 0x34e59ff7, 0x3ff3a7db -+ .long 0x4c123422, 0x3ff3dea6 -+ .long 0x21f72e2a, 0x3ff4160a -+ .long 0x6061892d, 0x3ff44e08 -+ .long 0xb5c13cd0, 0x3ff486a2 -+ .long 0xd5362a27, 0x3ff4bfda -+ .long 0x769d2ca7, 0x3ff4f9b2 -+ .long 0x569d4f82, 0x3ff5342b -+ .long 0x36b527da, 0x3ff56f47 -+ .long 0xdd485429, 0x3ff5ab07 -+ .long 0x15ad2148, 0x3ff5e76f -+ .long 0xb03a5585, 0x3ff6247e -+ .long 0x82552225, 0x3ff66238 -+ .long 0x667f3bcd, 0x3ff6a09e -+ .long 0x3c651a2f, 0x3ff6dfb2 -+ .long 0xe8ec5f74, 0x3ff71f75 -+ .long 0x564267c9, 0x3ff75feb -+ .long 0x73eb0187, 0x3ff7a114 -+ .long 0x36cf4e62, 0x3ff7e2f3 -+ .long 0x994cce13, 0x3ff82589 -+ .long 0x9b4492ed, 0x3ff868d9 -+ .long 0x422aa0db, 0x3ff8ace5 -+ .long 0x99157736, 0x3ff8f1ae -+ .long 0xb0cdc5e5, 0x3ff93737 -+ .long 0x9fde4e50, 0x3ff97d82 -+ .long 0x82a3f090, 0x3ff9c491 -+ .long 0x7b5de565, 0x3ffa0c66 -+ .long 0xb23e255d, 0x3ffa5503 -+ .long 0x5579fdbf, 0x3ffa9e6b -+ .long 0x995ad3ad, 0x3ffae89f -+ .long 0xb84f15fb, 0x3ffb33a2 -+ .long 0xf2fb5e47, 0x3ffb7f76 -+ .long 0x904bc1d2, 0x3ffbcc1e -+ .long 0xdd85529c, 0x3ffc199b -+ .long 0x2e57d14b, 0x3ffc67f1 -+ .long 0xdcef9069, 0x3ffcb720 -+ .long 0x4a07897c, 0x3ffd072d -+ .long 0xdcfba487, 0x3ffd5818 -+ .long 0x03db3285, 0x3ffda9e6 -+ .long 0x337b9b5f, 0x3ffdfc97 -+ .long 0xe78b3ff6, 0x3ffe502e -+ .long 0xa2a490da, 0x3ffea4af -+ .long 0xee615a27, 0x3ffefa1b -+ .long 0x5b6e4540, 0x3fff5076 -+ .long 0x819e90d8, 0x3fffa7c1 -+ .type L(DP_T), @object -+ ASM_SIZE_DIRECTIVE(L(DP_T)) -+ -+ .section .rodata.cst8,"aM",@progbits,8 -+ .p2align 3 -+L(DP_KLN2): /* double precision K/log(2) */ -+ .long 0x652b82fe, 0x40571547 -+ .type L(DP_KLN2), @object -+ ASM_SIZE_DIRECTIVE(L(DP_KLN2)) -+ -+ .p2align 3 -+L(DP_NLN2K): /* double precision -log(2)/K */ -+ .long 0xfefa39ef, 0xbf862e42 -+ .type L(DP_NLN2K), @object -+ ASM_SIZE_DIRECTIVE(L(DP_NLN2K)) -+ -+ .p2align 3 -+L(DP_RS): /* double precision 2^23+2^22 */ -+ .long 0x00000000, 0x41680000 -+ .type L(DP_RS), @object -+ ASM_SIZE_DIRECTIVE(L(DP_RS)) -+ -+ .p2align 3 -+L(DP_P3): /* double precision polynomial coefficient P3 */ -+ .long 0xeb78fa85, 0x3fa56420 -+ .type L(DP_P3), @object -+ ASM_SIZE_DIRECTIVE(L(DP_P3)) -+ -+ .p2align 3 -+L(DP_P1): /* double precision polynomial coefficient P1 */ -+ .long 0x008d6118, 0x3fe00000 -+ .type L(DP_P1), @object -+ ASM_SIZE_DIRECTIVE(L(DP_P1)) -+ -+ .p2align 3 -+L(DP_P2): /* double precision polynomial coefficient P2 */ -+ .long 0xda752d4f, 0x3fc55550 -+ .type L(DP_P2), @object -+ ASM_SIZE_DIRECTIVE(L(DP_P2)) -+ -+ .p2align 3 -+L(DP_P0): /* double precision polynomial coefficient P0 */ -+ .long 0xffffe7c6, 0x3fefffff -+ .type L(DP_P0), @object -+ ASM_SIZE_DIRECTIVE(L(DP_P0)) -+ -+ .p2align 2 -+L(SP_RANGE): /* single precision overflow/underflow bounds */ -+ .long 0x42b17217 /* if x>this bound, then result overflows */ -+ .long 0x42cff1b4 /* if x<this bound, then result underflows */ -+ .type L(SP_RANGE), @object -+ ASM_SIZE_DIRECTIVE(L(SP_RANGE)) -+ -+ .p2align 2 -+L(SP_INF_0): -+ .long 0x7f800000 /* single precision Inf */ -+ .long 0 /* single precision zero */ -+ .type L(SP_INF_0), @object -+ ASM_SIZE_DIRECTIVE(L(SP_INF_0)) -+ -+ .section .rodata.cst4,"aM",@progbits,4 -+ .p2align 2 -+L(SP_RS): /* single precision 2^23+2^22 */ -+ .long 0x4b400000 -+ .type L(SP_RS), @object -+ ASM_SIZE_DIRECTIVE(L(SP_RS)) -+ -+ .p2align 2 -+L(SP_SMALL): /* single precision small value 2^(-100) */ -+ .long 0x0d800000 -+ .type L(SP_SMALL), @object -+ ASM_SIZE_DIRECTIVE(L(SP_SMALL)) -+ -+ .p2align 2 -+L(SP_LARGE): /* single precision large value 2^100 */ -+ .long 0x71800000 -+ .type L(SP_LARGE), @object -+ ASM_SIZE_DIRECTIVE(L(SP_LARGE)) -+ -+ .p2align 2 -+L(SP_ONE): /* single precision 1.0 */ -+ .long 0x3f800000 -+ .type L(SP_ONE), @object -+ ASM_SIZE_DIRECTIVE(L(SP_ONE)) -+ -+strong_alias (__ieee754_expf, __expf_finite) diff --git a/src/patches/glibc/glibc-rh851470.patch b/src/patches/glibc/glibc-rh851470.patch deleted file mode 100644 index 94915da..0000000 --- a/src/patches/glibc/glibc-rh851470.patch +++ /dev/null @@ -1,52 +0,0 @@ -commit 050af9c4e86eeecd484ed44b7765e750523276eb -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Wed Aug 29 10:03:39 2012 +0530 - - Don't make ttyname* fail if proc filesystem is not available - - The ttyname and ttyname_r functions on Linux now fall back to - searching for the tty file descriptor in /dev/pts or /dev if /proc is - not available. This allows creation of chroots without the procfs - mounted on /proc. - - Fixes BZ #14516. - - 2012-08-29 Siddhesh Poyarekar siddhesh@redhat.com - - [BZ #14516] - * sysdeps/unix/sysv/linux/ttyname.c (ttyname): Don't return - failure if reading from procfs failed. - * sysdeps/unix/sysv/linux/ttyname_r.c (ttyname_r): Likewise. - -diff -rup a/sysdeps/unix/sysv/linux/ttyname.c b/sysdeps/unix/sysv/linux/ttyname.c ---- a/sysdeps/unix/sysv/linux/ttyname.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/ttyname.c 2012-08-27 10:53:29.326671475 -0600 -@@ -146,12 +146,6 @@ ttyname (int fd) - } - - ssize_t len = __readlink (procname, ttyname_buf, buflen); -- if (__builtin_expect (len == -1 && errno == ENOENT, 0)) -- { -- __set_errno (EBADF); -- return NULL; -- } -- - if (__builtin_expect (len != -1 - #ifndef __ASSUME_PROC_SELF_FD_SYMLINK - /* This is for Linux 2.0. */ -diff -rup a/sysdeps/unix/sysv/linux/ttyname_r.c b/sysdeps/unix/sysv/linux/ttyname_r.c ---- a/sysdeps/unix/sysv/linux/ttyname_r.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/ttyname_r.c 2012-08-27 10:54:05.406528501 -0600 -@@ -126,12 +126,6 @@ __ttyname_r (int fd, char *buf, size_t b - *_fitoa_word (fd, __stpcpy (procname, "/proc/self/fd/"), 10, 0) = '\0'; - - ssize_t ret = __readlink (procname, buf, buflen - 1); -- if (__builtin_expect (ret == -1 && errno == ENOENT, 0)) -- { -- __set_errno (EBADF); -- return EBADF; -- } -- - if (__builtin_expect (ret == -1 && errno == ENAMETOOLONG, 0)) - { - __set_errno (ERANGE); diff --git a/src/patches/glibc/glibc-rh852445.patch b/src/patches/glibc/glibc-rh852445.patch deleted file mode 100644 index 3c4e13f..0000000 --- a/src/patches/glibc/glibc-rh852445.patch +++ /dev/null @@ -1,105 +0,0 @@ -From libc-alpha-return-31329-listarch-libc-alpha=sources dot redhat dot com at sourceware dot org Wed Jul 11 11:36:39 2012 -Return-Path: <libc-alpha-return-31329-listarch-libc-alpha=sources dot redhat dot com at sourceware dot org> -Delivered-To: listarch-libc-alpha at sources dot redhat dot com -Received: (qmail 15677 invoked by alias); 11 Jul 2012 11:36:39 -0000 -Received: (qmail 15654 invoked by uid 22791); 11 Jul 2012 11:36:37 -0000 -X-SWARE-Spam-Status: No, hits=-4.3 required=5.0 - tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KHOP_RCVD_TRUST,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE -X-Spam-Check-By: sourceware.org -Date: Wed, 11 Jul 2012 21:06:06 +0930 -From: Alan Modra <amodra at gmail dot com> -To: libc-alpha at sourceware dot org -Cc: rsa at linux dot vnet dot ibm dot com -Subject: powerpc pthread_once bug fix -Message-ID: 20120711113606.GM3117@bubble.grove.modra.org -MIME-Version: 1.0 -Content-Type: text/plain; charset=us-ascii -Content-Disposition: inline -User-Agent: Mutt/1.5.21 (2010-09-15) -Mailing-List: contact libc-alpha-help at sourceware dot org; run by ezmlm -Precedence: bulk -List-Id: <libc-alpha.sourceware.org> -List-Subscribe: <mailto:libc-alpha-subscribe at sourceware dot org> -List-Archive: http://sourceware.org/ml/libc-alpha/ -List-Post: <mailto:libc-alpha at sourceware dot org> -List-Help: <mailto:libc-alpha-help at sourceware dot org>, <http://sourceware dot org/ml/#faqs> -Sender: libc-alpha-owner at sourceware dot org -Delivered-To: mailing list libc-alpha at sourceware dot org - -This fixes some bugs in the powerpc pthread_once code. Ref -gcc.gnu.org/bugzilla/show_bug.cgi?id=52839#c10 - -Release barriers are needed to ensure any memory written by -init_routine is seen by other threads before *once_control changes. -In the case of clear_once_control we need to flush any partially -written state. - -2012-06-28 Alan Modra amodra@gmail.com - - * sysdeps/unix/sysv/linux/powerpc/pthread_once.c (__pthread_once): - Add release barrier before setting once_control to say - initialisation is done. Add hints on lwarx. Use macro in - place of isync. - (clear_once_control): Add release barrier. - -[ This was slightly edited -- the constraint for operand 0 in the last asm was changed - from "=&r" to "=&b" as using r0 in that context results in a load immediate 1 into - the target rather than incrementing the target. ] - -diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c b/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c -index 4e3d7bd..bb1ebf2 100644 ---- a/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c -+++ b/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c -@@ -28,6 +28,7 @@ clear_once_control (void *arg) - { - pthread_once_t *once_control = (pthread_once_t *) arg; - -+ __asm __volatile (__lll_rel_instr); - *once_control = 0; - lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE); - } -@@ -47,15 +48,15 @@ __pthread_once (pthread_once_t *once_control, void (*init_routine) (void)) - oldval = *once_control; - if ((oldval & 2) == 0) - *once_control = newval; -- Do this atomically. -+ Do this atomically with an acquire barrier. - */ - newval = __fork_generation | 1; -- __asm __volatile ("1: lwarx %0,0,%3\n" -+ __asm __volatile ("1: lwarx %0,0,%3" MUTEX_HINT_ACQ "\n" - " andi. %1,%0,2\n" - " bne 2f\n" - " stwcx. %4,0,%3\n" - " bne 1b\n" -- "2: isync" -+ "2: " __lll_acq_instr - : "=&r" (oldval), "=&r" (tmp), "=m" (*once_control) - : "r" (once_control), "r" (newval), "m" (*once_control) - : "cr0"); -@@ -87,8 +88,18 @@ __pthread_once (pthread_once_t *once_control, void (*init_routine) (void)) - pthread_cleanup_pop (0); - - -- /* Add one to *once_control to take the bottom 2 bits from 01 to 10. */ -- atomic_increment (once_control); -+ /* Add one to *once_control to take the bottom 2 bits from 01 to 10. -+ A release barrier is needed to ensure memory written by init_routine -+ is seen in other threads before *once_control changes. */ -+ int tmp; -+ __asm __volatile (__lll_rel_instr "\n" -+ "1: lwarx %0,0,%2" MUTEX_HINT_REL "\n" -+ " addi %0,%0,1\n" -+ " stwcx. %0,0,%2\n" -+ " bne- 1b" -+ : "=&b" (tmp), "=m" (*once_control) -+ : "r" (once_control), "m" (*once_control) -+ : "cr0"); - - /* Wake up all other threads. */ - lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE); - --- -Alan Modra -Australia Development Lab, IBM - diff --git a/src/patches/glibc/glibc-rh859965.patch b/src/patches/glibc/glibc-rh859965.patch deleted file mode 100644 index 8fcbcd4..0000000 --- a/src/patches/glibc/glibc-rh859965.patch +++ /dev/null @@ -1,854 +0,0 @@ -# -# Based on the following patch: -# -# Upstream bug: https://sourceware.org/bugzilla/show_bug.cgi?id=14906 -# URL: https://sourceware.org/ml/libc-alpha/2015-02/msg00504.html -# -# 2015-02-17 Carlos O'Donell carlos@redhat.com -# -# [BZ #14906] -# * nscd/cache.c (prune_cache): Use TRACED_FILE. Compare and update -# traced file mtime. Use consistent log message. -# * nscd/connections.c [HAVE_INOTIFY] (install_watches): New function. -# (register_traced_file): Call install_watches. Always set mtime. -# (invalidate_cache): Iterate over all trace files. Call install_watches. -# (inotify_check_files): Don't inline. Handle watching parent -# directories and configuration file movement in and out. -# (handle_inotify_events): New function. -# (main_loop_poll): Call handle_inotify_events. -# (main_loop_epoll): Likewise. -# * nscd/nscd.h: Define TRACED_FILE, TRACED_DIR, and PATH_MAX. -# (struct traced_file): Use array of inotify fds. Add parent directory, -# and basename. -# (struct database_dyn): Remove unused file_mtime. -# (init_traced_file): New inline function. -# (define_traced_file): New macro. -# * nss/nss_db/db-init.c: Use define_traced_file. -# (_nss_db_init): Use init_traced_file. -# * nss/nss_files/files-init.c: Use define_traced_file. -# (_nss_files_init): Use init_traced_file. -# -diff -urN glibc-2.12-2-gc4ccff1.orig/misc/sys/cdefs.h glibc-2.12-2-gc4ccff1.mod1/misc/sys/cdefs.h ---- glibc-2.12-2-gc4ccff1.orig/misc/sys/cdefs.h 2015-02-18 04:42:12.115187116 -0500 -+++ glibc-2.12-2-gc4ccff1.mod1/misc/sys/cdefs.h 2015-02-18 04:02:03.635159090 -0500 -@@ -362,6 +362,14 @@ - # endif - #endif - -+#if __GNUC__ >= 3 -+# define __glibc_unlikely(cond) __builtin_expect ((cond), 0) -+# define __glibc_likely(cond) __builtin_expect ((cond), 1) -+#else -+# define __glibc_unlikely(cond) (cond) -+# define __glibc_likely(cond) (cond) -+#endif -+ - #include <bits/wordsize.h> - - #if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH -diff -urN glibc-2.12-2-gc4ccff1.orig/nscd/cache.c glibc-2.12-2-gc4ccff1.mod1/nscd/cache.c ---- glibc-2.12-2-gc4ccff1.orig/nscd/cache.c 2015-02-18 04:42:12.329180362 -0500 -+++ glibc-2.12-2-gc4ccff1.mod1/nscd/cache.c 2015-02-18 04:02:03.635159090 -0500 -@@ -266,29 +266,52 @@ - - /* If we check for the modification of the underlying file we invalidate - the entries also in this case. */ -- if (table->inotify_descr < 0 && table->check_file && now != LONG_MAX) -+ if (table->check_file && now != LONG_MAX) - { -- struct stat64 st; -+ struct traced_file *runp = table->traced_files; - -- if (stat64 (table->filename, &st) < 0) -+ while (runp != NULL) - { -- char buf[128]; -- /* We cannot stat() the file, disable file checking if the -- file does not exist. */ -- dbg_log (_("cannot stat() file `%s': %s"), -- table->filename, strerror_r (errno, buf, sizeof (buf))); -- if (errno == ENOENT) -- table->check_file = 0; -- } -- else -- { -- if (st.st_mtime != table->file_mtime) -+#ifdef HAVE_INOTIFY -+ if (runp->inotify_descr[TRACED_FILE] == -1) -+#endif - { -- /* The file changed. Invalidate all entries. */ -- now = LONG_MAX; -- table->file_mtime = st.st_mtime; -+ struct stat64 st; -+ -+ if (stat64 (runp->fname, &st) < 0) -+ { -+ /* Print a diagnostic that the traced file was missing. -+ We must not disable tracing since the file might return -+ shortly and we want to reload it at the next pruning. -+ Disabling tracing here would go against the configuration -+ as specified by the user via check-files. */ -+ char buf[128]; -+ dbg_log (_("checking for monitored file `%s': %s"), -+ runp->fname, strerror_r (errno, buf, sizeof (buf))); -+ } -+ else -+ { -+ /* This must be `!=` to catch cases where users turn the -+ clocks back and we still want to detect any time difference -+ in mtime. */ -+ if (st.st_mtime != runp->mtime) -+ { -+ dbg_log (_("monitored file `%s` changed (mtime)"), -+ runp->fname); -+ /* The file changed. Invalidate all entries. */ -+ now = LONG_MAX; -+ runp->mtime = st.st_mtime; -+#ifdef HAVE_INOTIFY -+ /* Attempt to install a watch on the file. */ -+ install_watches (runp); -+#endif -+ } -+ } - } -+ -+ runp = runp->next; - } -+ - } - - /* We run through the table and find values which are not valid anymore. -diff -urN glibc-2.12-2-gc4ccff1.orig/nscd/connections.c glibc-2.12-2-gc4ccff1.mod1/nscd/connections.c ---- glibc-2.12-2-gc4ccff1.orig/nscd/connections.c 2015-02-18 04:42:12.333180236 -0500 -+++ glibc-2.12-2-gc4ccff1.mod1/nscd/connections.c 2015-02-18 04:40:51.674726008 -0500 -@@ -74,6 +74,25 @@ - static void begin_drop_privileges (void); - static void finish_drop_privileges (void); - -+/* Define the traced files. */ -+#define PWD_FILENAME "/etc/passwd" -+define_traced_file (pwd, PWD_FILENAME); -+ -+#define GRP_FILENAME "/etc/group" -+define_traced_file (grp, GRP_FILENAME); -+ -+#define HST_FILENAME "/etc/hosts" -+define_traced_file (hst, HST_FILENAME); -+ -+#define RESOLV_FILENAME "/etc/resolv.conf" -+define_traced_file (resolv, RESOLV_FILENAME); -+ -+#define SERV_FILENAME "/etc/services" -+define_traced_file (serv, SERV_FILENAME); -+ -+#define NETGR_FILENAME "/etc/netgroup" -+define_traced_file (netgr, NETGR_FILENAME); -+ - /* Map request type to a string. */ - const char *const serv2str[LASTREQ] = - { -@@ -115,8 +134,6 @@ - .shared = 0, - .max_db_size = DEFAULT_MAX_DB_SIZE, - .suggested_module = DEFAULT_SUGGESTED_MODULE, -- .reset_res = 0, -- .filename = "/etc/passwd", - .db_filename = _PATH_NSCD_PASSWD_DB, - .disabled_iov = &pwd_iov_disabled, - .postimeout = 3600, -@@ -136,8 +153,6 @@ - .shared = 0, - .max_db_size = DEFAULT_MAX_DB_SIZE, - .suggested_module = DEFAULT_SUGGESTED_MODULE, -- .reset_res = 0, -- .filename = "/etc/group", - .db_filename = _PATH_NSCD_GROUP_DB, - .disabled_iov = &grp_iov_disabled, - .postimeout = 3600, -@@ -157,8 +172,6 @@ - .shared = 0, - .max_db_size = DEFAULT_MAX_DB_SIZE, - .suggested_module = DEFAULT_SUGGESTED_MODULE, -- .reset_res = 1, -- .filename = "/etc/hosts", - .db_filename = _PATH_NSCD_HOSTS_DB, - .disabled_iov = &hst_iov_disabled, - .postimeout = 3600, -@@ -178,8 +191,6 @@ - .shared = 0, - .max_db_size = DEFAULT_MAX_DB_SIZE, - .suggested_module = DEFAULT_SUGGESTED_MODULE, -- .reset_res = 0, -- .filename = "/etc/services", - .db_filename = _PATH_NSCD_SERVICES_DB, - .disabled_iov = &serv_iov_disabled, - .postimeout = 28800, -@@ -199,8 +210,6 @@ - .shared = 0, - .max_db_size = DEFAULT_MAX_DB_SIZE, - .suggested_module = DEFAULT_SUGGESTED_MODULE, -- .reset_res = 0, -- .filename = "/etc/netgroup", - .db_filename = _PATH_NSCD_NETGROUP_DB, - .disabled_iov = &netgroup_iov_disabled, - .postimeout = 28800, -@@ -863,41 +872,26 @@ - dbs[cnt].shared = 0; - assert (dbs[cnt].ro_fd == -1); - } -+ } - -- dbs[cnt].inotify_descr = -1; -- if (dbs[cnt].check_file) -- { --#ifdef HAVE_INOTIFY -- if (inotify_fd < 0 -- || (dbs[cnt].inotify_descr -- = inotify_add_watch (inotify_fd, dbs[cnt].filename, -- IN_DELETE_SELF | IN_MODIFY)) < 0) -- /* We cannot notice changes in the main thread. */ --#endif -- { -- /* We need the modification date of the file. */ -- struct stat64 st; -+ /* Initialize and register the traced files. */ -+ init_traced_file (&pwd_traced_file.file, PWD_FILENAME, 0); -+ register_traced_file (pwddb, &pwd_traced_file.file); - -- if (stat64 (dbs[cnt].filename, &st) < 0) -- { -- /* We cannot stat() the file, disable file checking. */ -- dbg_log (_("cannot stat() file `%s': %s"), -- dbs[cnt].filename, strerror (errno)); -- dbs[cnt].check_file = 0; -- } -- else -- dbs[cnt].file_mtime = st.st_mtime; -- } -- } -+ init_traced_file (&grp_traced_file.file, GRP_FILENAME, 0); -+ register_traced_file (grpdb, &grp_traced_file.file); - --#ifdef HAVE_INOTIFY -- if (cnt == hstdb && inotify_fd >= -1) -- /* We also monitor the resolver configuration file. */ -- resolv_conf_descr = inotify_add_watch (inotify_fd, -- _PATH_RESCONF, -- IN_DELETE_SELF | IN_MODIFY); --#endif -- } -+ init_traced_file (&hst_traced_file.file, HST_FILENAME, 0); -+ register_traced_file (hstdb, &hst_traced_file.file); -+ -+ init_traced_file (&resolv_traced_file.file, RESOLV_FILENAME, 1); -+ register_traced_file (hstdb, &resolv_traced_file.file); -+ -+ init_traced_file (&serv_traced_file.file, SERV_FILENAME, 0); -+ register_traced_file (servdb, &serv_traced_file.file); -+ -+ init_traced_file (&netgr_traced_file.file, NETGR_FILENAME, 0); -+ register_traced_file (netgrdb, &netgr_traced_file.file); - - /* Create the socket. */ - #ifndef __ASSUME_SOCK_CLOEXEC -@@ -968,6 +962,92 @@ - finish_drop_privileges (); - } - -+#ifdef HAVE_INOTIFY -+#define TRACED_FILE_MASK (IN_DELETE_SELF | IN_CLOSE_WRITE | IN_MOVE_SELF) -+#define TRACED_DIR_MASK (IN_DELETE_SELF | IN_CREATE | IN_MOVED_TO | IN_MOVE_SELF) -+void -+install_watches (struct traced_file *finfo) -+{ -+ /* If we have inotify support use it exclusively with no fallback -+ to stat. This is a design decision to make the implementation -+ sipmler. Either we use fstat for the file name or we use inotify -+ for both the file and parent directory. */ -+ if (finfo->inotify_descr[TRACED_FILE] < 0) -+ finfo->inotify_descr[TRACED_FILE] = inotify_add_watch (inotify_fd, -+ finfo->fname, -+ TRACED_FILE_MASK); -+ if (finfo->inotify_descr[TRACED_FILE] < 0) -+ { -+ dbg_log (_("disabled inotify-based monitoring for file `%s': %s"), -+ finfo->fname, strerror (errno)); -+ return; -+ } -+ dbg_log (_("monitoring file `%s` (%d)"), -+ finfo->fname, finfo->inotify_descr[TRACED_FILE]); -+ /* Additionally listen for IN_CREATE events in the files parent -+ directory. We do this because the file to be watched might be -+ deleted and then added back again. When it is added back again -+ we must re-add the watch. We must also cover IN_MOVED_TO to -+ detect a file being moved into the directory. */ -+ if (finfo->inotify_descr[TRACED_DIR] < 0) -+ finfo->inotify_descr[TRACED_DIR] = inotify_add_watch (inotify_fd, -+ finfo->dname, -+ TRACED_DIR_MASK); -+ if (finfo->inotify_descr[TRACED_DIR] < 0) -+ { -+ dbg_log (_("disabled inotify-based monitoring for directory `%s': %s"), -+ finfo->fname, strerror (errno)); -+ return; -+ } -+ dbg_log (_("monitoring directory `%s` (%d)"), -+ finfo->dname, finfo->inotify_descr[TRACED_DIR]); -+} -+#endif -+ -+/* Register the file in FINFO as a traced file for the database DBS[DBIX]. -+ -+ We support registering multiple files per database. Each call to -+ register_traced_file adds to the list of registered files. -+ -+ When we prune the database, either through timeout or a request to -+ invalidate, we will check to see if any of the registered files has changed. -+ When we accept new connections to handle a cache request we will also -+ check to see if any of the registered files has changed. -+ -+ If we have inotify support then we install an inotify fd to notify us of -+ file deletion or modification, both of which will require we invalidate -+ the cache for the database. Without inotify support we stat the file and -+ store st_mtime to determine if the file has been modified. */ -+void -+register_traced_file (size_t dbidx, struct traced_file *finfo) -+{ -+ /* If the database is disabled or file checking is disabled -+ then ignore the registration. */ -+ if (! dbs[dbidx].enabled || ! dbs[dbidx].check_file) -+ return; -+ -+ if (__glibc_unlikely (debug_level > 0)) -+ dbg_log (_("monitoring file %s for database %s"), -+ finfo->fname, dbnames[dbidx]); -+ -+#ifdef HAVE_INOTIFY -+ install_watches (finfo); -+#endif -+ struct stat64 st; -+ if (stat64 (finfo->fname, &st) < 0) -+ { -+ /* We cannot stat() the file, disable file checking. */ -+ dbg_log (_("disabled monitoring for file `%s': %s"), -+ finfo->fname, strerror (errno)); -+ finfo->mtime = 0; -+ } -+ else -+ finfo->mtime = st.st_mtime; -+ -+ /* Queue up the file name. */ -+ finfo->next = dbs[dbidx].traced_files; -+ dbs[dbidx].traced_files = finfo; -+} - - /* Close the connections. */ - void -@@ -986,9 +1066,25 @@ - for (number = pwddb; number < lastdb; ++number) - if (strcmp (key, dbnames[number]) == 0) - { -- if (dbs[number].reset_res) -- res_init (); -- -+ struct traced_file *runp = dbs[number].traced_files; -+ while (runp != NULL) -+ { -+ /* Make sure we reload from file when checking mtime. */ -+ runp->mtime = 0; -+#ifdef HAVE_INOTIFY -+ /* During an invalidation we try to reload the traced -+ file watches. This allows the user to re-sync if -+ inotify events were lost. Similar to what we do during -+ pruning. */ -+ install_watches (runp); -+#endif -+ if (runp->call_res_init) -+ { -+ res_init (); -+ break; -+ } -+ runp = runp->next; -+ } - break; - } - -@@ -1817,6 +1913,231 @@ - /* Array for times a connection was accepted. */ - static time_t *starttime; - -+#ifdef HAVE_INOTIFY -+/* Inotify event for changed file. */ -+union __inev -+{ -+ struct inotify_event i; -+# ifndef PATH_MAX -+# define PATH_MAX 1024 -+# endif -+ char buf[sizeof (struct inotify_event) + PATH_MAX]; -+}; -+ -+/* Returns 0 if the file is there and matches the last mtime -+ on record, otherwise -1. */ -+int -+check_file (struct traced_file *finfo) -+{ -+ struct stat64 st; -+ if (stat64 (finfo->fname, &st) < 0) -+ return -1; -+ return 0; -+} -+ -+/* Process the inotify event in INEV. If the event matches any of the files -+ registered with a database then mark that database as requiring its cache -+ to be cleared. We indicate the cache needs clearing by setting -+ TO_CLEAR[DBCNT] to true for the matching database. */ -+static void -+inotify_check_files (bool *to_clear, union __inev *inev) -+{ -+ /* Check which of the files changed. */ -+ for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) -+ { -+ struct traced_file *finfo = dbs[dbcnt].traced_files; -+ -+ while (finfo != NULL) -+ { -+ /* The configuration file was moved or deleted. -+ We stop watching it at that point, and reinitialize. */ -+ if (finfo->inotify_descr[TRACED_FILE] == inev->i.wd -+ && ((inev->i.mask & IN_MOVE_SELF) -+ || (inev->i.mask & IN_DELETE_SELF) -+ || (inev->i.mask & IN_IGNORED))) -+ { -+ int ret; -+ bool moved = (inev->i.mask & IN_MOVE_SELF) != 0; -+ -+ if (check_file (finfo) == 0) -+ { -+ dbg_log (_("ignored out of order inotify event for `%s`"), -+ finfo->fname); -+ return; -+ } -+ -+ dbg_log (_("monitored file `%s` was %s, removing watch"), -+ finfo->fname, moved ? "moved" : "deleted"); -+ /* File was moved out, remove the watch. Watches are -+ automatically removed when the file is deleted. */ -+ if (moved) -+ { -+ ret = inotify_rm_watch (inotify_fd, inev->i.wd); -+ if (ret < 0) -+ dbg_log (_("failed to remove file watch `%s`: %s"), -+ finfo->fname, strerror (errno)); -+ } -+ finfo->inotify_descr[TRACED_FILE] = -1; -+ to_clear[dbcnt] = true; -+ if (finfo->call_res_init) -+ res_init (); -+ return; -+ } -+ /* The configuration file was open for writing and has just closed. -+ We reset the cache and reinitialize. */ -+ if (finfo->inotify_descr[TRACED_FILE] == inev->i.wd -+ && inev->i.mask & IN_CLOSE_WRITE) -+ { -+ /* Mark cache as needing to be cleared and reinitialize. */ -+ dbg_log (_("monitored file `%s` was written to"), finfo->fname); -+ to_clear[dbcnt] = true; -+ if (finfo->call_res_init) -+ res_init (); -+ return; -+ } -+ /* The parent directory was moved or deleted. There is no coming -+ back from this. We do not track the parent of the parent, and -+ once this happens we trigger one last invalidation. You must -+ restart nscd to track subsequent changes. We track this to -+ do one last robust re-initialization and then we're done. */ -+ if (finfo->inotify_descr[TRACED_DIR] == inev->i.wd -+ && ((inev->i.mask & IN_DELETE_SELF) -+ || (inev->i.mask & IN_MOVE_SELF) -+ || (inev->i.mask & IN_IGNORED))) -+ { -+ bool moved = (inev->i.mask & IN_MOVE_SELF) != 0; -+ /* The directory watch may have already been removed -+ but we don't know so we just remove it again and -+ ignore the error. Then we remove the file watch. -+ Note: watches are automatically removed for deleted -+ files. */ -+ if (moved) -+ inotify_rm_watch (inotify_fd, inev->i.wd); -+ if (finfo->inotify_descr[TRACED_FILE] != -1) -+ { -+ dbg_log (_("monitored parent directory `%s` was %s, removing watch on `%s`"), -+ finfo->dname, moved ? "moved" : "deleted", finfo->fname); -+ if (inotify_rm_watch (inotify_fd, finfo->inotify_descr[TRACED_FILE]) < 0) -+ dbg_log (_("failed to remove file watch `%s`: %s"), -+ finfo->dname, strerror (errno)); -+ } -+ finfo->inotify_descr[TRACED_FILE] = -1; -+ finfo->inotify_descr[TRACED_DIR] = -1; -+ to_clear[dbcnt] = true; -+ if (finfo->call_res_init) -+ res_init (); -+ /* Continue to the next entry since this might be the -+ parent directory for multiple registered files and -+ we want to remove watches for all registered files. */ -+ continue; -+ } -+ /* The parent directory had a create or moved to event. */ -+ if (finfo->inotify_descr[TRACED_DIR] == inev->i.wd -+ && ((inev->i.mask & IN_MOVED_TO) -+ || (inev->i.mask & IN_CREATE)) -+ && strcmp (inev->i.name, finfo->sfname) == 0) -+ { -+ /* We detected a directory change. We look for the creation -+ of the file we are tracking or the move of the same file -+ into the directory. */ -+ int ret; -+ dbg_log (_("monitored file `%s` was %s, adding watch"), -+ finfo->fname, -+ inev->i.mask & IN_CREATE ? "created" : "moved into place"); -+ /* File was moved in or created. Regenerate the watch. */ -+ if (finfo->inotify_descr[TRACED_FILE] != -1) -+ inotify_rm_watch (inotify_fd, -+ finfo->inotify_descr[TRACED_FILE]); -+ -+ ret = inotify_add_watch (inotify_fd, -+ finfo->fname, -+ TRACED_FILE_MASK); -+ if (ret < 0) -+ dbg_log (_("failed to add file watch `%s`: %s"), -+ finfo->fname, strerror (errno)); -+ -+ finfo->inotify_descr[TRACED_FILE] = ret; -+ -+ /* The file is new or moved so mark cache as needing to -+ be cleared and reinitialize. */ -+ to_clear[dbcnt] = true; -+ if (finfo->call_res_init) -+ res_init (); -+ -+ /* Done re-adding the watch. Don't return, we may still -+ have other files in this same directory, same watch -+ descriptor, and need to process them. */ -+ } -+ /* Other events are ignored, and we move on to the next file. */ -+ finfo = finfo->next; -+ } -+ } -+} -+ -+/* If an entry in the array of booleans TO_CLEAR is TRUE then clear the cache -+ for the associated database, otherwise do nothing. The TO_CLEAR array must -+ have LASTDB entries. */ -+static inline void -+clear_db_cache (bool *to_clear) -+{ -+ for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) -+ if (to_clear[dbcnt]) -+ { -+ pthread_mutex_lock (&dbs[dbcnt].prune_lock); -+ dbs[dbcnt].clear_cache = 1; -+ pthread_mutex_unlock (&dbs[dbcnt].prune_lock); -+ pthread_cond_signal (&dbs[dbcnt].prune_cond); -+ } -+} -+ -+int -+handle_inotify_events (void) -+{ -+ bool to_clear[lastdb] = { false, }; -+ union __inev inev; -+ -+ /* Read all inotify events for files registered via -+ register_traced_file(). */ -+ while (1) -+ { -+ /* Potentially read multiple events into buf. */ -+ ssize_t nb = TEMP_FAILURE_RETRY (read (inotify_fd, -+ &inev.buf, -+ sizeof (inev))); -+ if (nb < (ssize_t) sizeof (struct inotify_event)) -+ { -+ /* Not even 1 event. */ -+ if (__glibc_unlikely (nb == -1 && errno != EAGAIN)) -+ return -1; -+ /* Done reading events that are ready. */ -+ break; -+ } -+ /* Process all events. The normal inotify interface delivers -+ complete events on a read and never a partial event. */ -+ char *eptr = &inev.buf[0]; -+ ssize_t count; -+ while (1) -+ { -+ /* Check which of the files changed. */ -+ inotify_check_files (to_clear, &inev); -+ count = sizeof (struct inotify_event) + inev.i.len; -+ eptr += count; -+ nb -= count; -+ if (nb >= (ssize_t) sizeof (struct inotify_event)) -+ memcpy (&inev, eptr, nb); -+ else -+ break; -+ } -+ continue; -+ } -+ /* Actually perform the cache clearing. */ -+ clear_db_cache (to_clear); -+ return 0; -+} -+ -+ -+#endif -+ - - static void - __attribute__ ((__noreturn__)) -@@ -1910,66 +2231,21 @@ - { - if (conns[1].revents != 0) - { -- bool to_clear[lastdb] = { false, }; -- union -- { --# ifndef PATH_MAX --# define PATH_MAX 1024 --# endif -- struct inotify_event i; -- char buf[sizeof (struct inotify_event) + PATH_MAX]; -- } inev; -+ int ret; -+ ret = handle_inotify_events (); - -- while (1) -+ if (ret == -1) - { -- ssize_t nb = TEMP_FAILURE_RETRY (read (inotify_fd, &inev, -- sizeof (inev))); -- if (nb < (ssize_t) sizeof (struct inotify_event)) -- { -- if (__builtin_expect (nb == -1 && errno != EAGAIN, -- 0)) -- { -- /* Something went wrong when reading the inotify -- data. Better disable inotify. */ -- dbg_log (_("\ --disabled inotify after read error %d"), -- errno); -- conns[1].fd = -1; -- firstfree = 1; -- if (nused == 2) -- nused = 1; -- close (inotify_fd); -- inotify_fd = -1; -- } -- break; -- } -- -- /* Check which of the files changed. */ -- for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) -- if (inev.i.wd == dbs[dbcnt].inotify_descr) -- { -- to_clear[dbcnt] = true; -- goto next; -- } -- -- if (inev.i.wd == resolv_conf_descr) -- { -- res_init (); -- to_clear[hstdb] = true; -- } -- next:; -+ /* Something went wrong when reading the inotify -+ data. Better disable inotify. */ -+ dbg_log (_("disabled inotify-based monitoring after read error %d"), errno); -+ conns[1].fd = -1; -+ firstfree = 1; -+ if (nused == 2) -+ nused = 1; -+ close (inotify_fd); -+ inotify_fd = -1; - } -- -- /* Actually perform the cache clearing. */ -- for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) -- if (to_clear[dbcnt]) -- { -- pthread_mutex_lock (&dbs[dbcnt].prune_lock); -- dbs[dbcnt].clear_cache = 1; -- pthread_mutex_unlock (&dbs[dbcnt].prune_lock); -- pthread_cond_signal (&dbs[dbcnt].prune_cond); -- } -- - --n; - } - -@@ -2112,58 +2388,18 @@ - # ifdef HAVE_INOTIFY - else if (revs[cnt].data.fd == inotify_fd) - { -- bool to_clear[lastdb] = { false, }; -- union -- { -- struct inotify_event i; -- char buf[sizeof (struct inotify_event) + PATH_MAX]; -- } inev; -- -- while (1) -+ int ret; -+ ret = handle_inotify_events (); -+ if (ret == -1) - { -- ssize_t nb = TEMP_FAILURE_RETRY (read (inotify_fd, &inev, -- sizeof (inev))); -- if (nb < (ssize_t) sizeof (struct inotify_event)) -- { -- if (__builtin_expect (nb == -1 && errno != EAGAIN, 0)) -- { -- /* Something went wrong when reading the inotify -- data. Better disable inotify. */ -- dbg_log (_("disabled inotify after read error %d"), -- errno); -- (void) epoll_ctl (efd, EPOLL_CTL_DEL, inotify_fd, -- NULL); -- close (inotify_fd); -- inotify_fd = -1; -- } -- break; -- } -- -- /* Check which of the files changed. */ -- for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) -- if (inev.i.wd == dbs[dbcnt].inotify_descr) -- { -- to_clear[dbcnt] = true; -- goto next; -- } -- -- if (inev.i.wd == resolv_conf_descr) -- { -- res_init (); -- to_clear[hstdb] = true; -- } -- next:; -+ /* Something went wrong when reading the inotify -+ data. Better disable inotify. */ -+ dbg_log (_("disabled inotify-based monitoring after read error %d"), errno); -+ (void) epoll_ctl (efd, EPOLL_CTL_DEL, inotify_fd, NULL); -+ close (inotify_fd); -+ inotify_fd = -1; -+ break; - } -- -- /* Actually perform the cache clearing. */ -- for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) -- if (to_clear[dbcnt]) -- { -- pthread_mutex_lock (&dbs[dbcnt].prune_lock); -- dbs[dbcnt].clear_cache = 1; -- pthread_mutex_unlock (&dbs[dbcnt].prune_lock); -- pthread_cond_signal (&dbs[dbcnt].prune_cond); -- } - } - # endif - else -diff -urN glibc-2.12-2-gc4ccff1.orig/nscd/nscd.h glibc-2.12-2-gc4ccff1.mod1/nscd/nscd.h ---- glibc-2.12-2-gc4ccff1.orig/nscd/nscd.h 2015-02-18 04:42:12.329180362 -0500 -+++ glibc-2.12-2-gc4ccff1.mod1/nscd/nscd.h 2015-02-18 04:02:03.636159059 -0500 -@@ -62,6 +62,67 @@ - 80% of the thread stack size. */ - #define MAX_STACK_USE ((8 * NSCD_THREAD_STACKSIZE) / 10) - -+/* Records the file registered per database that when changed -+ or modified requires invalidating the database. */ -+struct traced_file -+{ -+ /* Tracks the last modified time of the traced file. */ -+ time_t mtime; -+ /* Support multiple registered files per database. */ -+ struct traced_file *next; -+ int call_res_init; -+ /* Requires Inotify support to do anything useful. */ -+#define TRACED_FILE 0 -+#define TRACED_DIR 1 -+ int inotify_descr[2]; -+# ifndef PATH_MAX -+# define PATH_MAX 1024 -+# endif -+ /* The parent directory is used to scan for creation/deletion. */ -+ char dname[PATH_MAX]; -+ /* Just the name of the file with no directory component. */ -+ char *sfname; -+ /* The full-path name of the registered file. */ -+ char fname[]; -+}; -+ -+/* Initialize a `struct traced_file`. As input we need the name -+ of the file, and if invalidation requires calling res_init. -+ If CRINIT is 1 then res_init will be called after invalidation -+ or if the traced file is changed in any way, otherwise it will -+ not. */ -+static inline void -+init_traced_file(struct traced_file *file, const char *fname, int crinit) -+{ -+ char *dname; -+ file->mtime = 0; -+ file->inotify_descr[TRACED_FILE] = -1; -+ file->inotify_descr[TRACED_DIR] = -1; -+ strcpy (file->fname, fname); -+ /* Compute the parent directory name and store a copy. The copy makes -+ it much faster to add/remove watches while nscd is running instead -+ of computing this over and over again in a temp buffer. */ -+ file->dname[0] = '\0'; -+ dname = strrchr (fname, '/'); -+ if (dname != NULL) -+ { -+ size_t len = (size_t)(dname - fname); -+ if (len > sizeof (file->dname)) -+ abort (); -+ strncpy (file->dname, file->fname, len); -+ file->dname[len] = '\0'; -+ } -+ /* The basename is the name just after the last forward slash. */ -+ file->sfname = &dname[1]; -+ file->call_res_init = crinit; -+} -+ -+#define define_traced_file(id, filename) \ -+static union \ -+{ \ -+ struct traced_file file; \ -+ char buf[sizeof (struct traced_file) + sizeof (filename)]; \ -+} id##_traced_file; - - /* Structure describing dynamic part of one database. */ - struct database_dyn -@@ -74,15 +135,12 @@ - - int enabled; - int check_file; -- int inotify_descr; - int clear_cache; - int persistent; - int shared; - int propagate; -- int reset_res; -- const char filename[16]; -+ struct traced_file *traced_files; - const char *db_filename; -- time_t file_mtime; - size_t suggested_module; - size_t max_db_size; - -@@ -199,6 +257,10 @@ - - /* connections.c */ - extern void nscd_init (void); -+extern void register_traced_file (size_t dbidx, struct traced_file *finfo); -+#ifdef HAVE_INOTIFY -+extern void install_watches (struct traced_file *finfo); -+#endif - extern void close_sockets (void); - extern void start_threads (void) __attribute__ ((__noreturn__)); diff --git a/src/patches/glibc/glibc-rh861167.patch b/src/patches/glibc/glibc-rh861167.patch deleted file mode 100644 index d7e982f..0000000 --- a/src/patches/glibc/glibc-rh861167.patch +++ /dev/null @@ -1,86 +0,0 @@ -commit be08eda54c7cf833ccfa4b8d1f1b1d668c26af66 -Author: Andreas Jaeger aj@suse.de -Date: Wed May 23 09:27:39 2012 +0200 - - Update from Linux 3.4 - -[ Partial, unrelated bits not included. ] - -2012-05-23 Andreas Jaeger aj@suse.de - - * sysdeps/unix/sysv/linux/powerpc/bits/mman.h - (MADV_DONTDUMP,MADV_DODUMP): New macros from Linux 3.4. - macro. - * sysdeps/unix/sysv/linux/s390/bits/mman.h - (MADV_DONTDUMP,MADV_DODUMP): Likewise. - * sysdeps/unix/sysv/linux/i386/bits/mman.h - (MADV_DONTDUMP,MADV_DODUMP): Likewise. - * sysdeps/unix/sysv/linux/x86_64/bits/mman.h - (MADV_DONTDUMP,MADV_DODUMP): Likewise. - -diff -Nrup a/sysdeps/unix/sysv/linux/i386/bits/mman.h b/sysdeps/unix/sysv/linux/i386/bits/mman.h ---- a/sysdeps/unix/sysv/linux/i386/bits/mman.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/i386/bits/mman.h 2012-09-27 11:44:26.985150148 -0600 -@@ -1,5 +1,5 @@ - /* Definitions for POSIX memory map interface. Linux/i386 version. -- Copyright (C) 1997,2000,2003,2005,2006,2009 Free Software Foundation, Inc. -+ Copyright (C) 1997-2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -94,6 +94,9 @@ - # define MADV_DOFORK 11 /* Do inherit across fork. */ - # define MADV_MERGEABLE 12 /* KSM may merge identical pages. */ - # define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages. */ -+# define MADV_DONTDUMP 16 /* Explicity exclude from the core dump, -+ overrides the coredump filter bits. */ -+# define MADV_DODUMP 17 /* Clear the MADV_DONTDUMP flag. */ - # define MADV_HWPOISON 100 /* Poison a page for testing. */ - #endif - -diff -Nrup a/sysdeps/unix/sysv/linux/powerpc/bits/mman.h b/sysdeps/unix/sysv/linux/powerpc/bits/mman.h ---- a/sysdeps/unix/sysv/linux/powerpc/bits/mman.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/powerpc/bits/mman.h 2012-09-27 11:43:37.161351259 -0600 -@@ -96,6 +96,9 @@ - # define MADV_DOFORK 11 /* Do inherit across fork. */ - # define MADV_MERGEABLE 12 /* KSM may merge identical pages. */ - # define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages. */ -+# define MADV_DONTDUMP 16 /* Explicity exclude from the core dump, -+ overrides the coredump filter bits. */ -+# define MADV_DODUMP 17 /* Clear the MADV_DONTDUMP flag. */ - # define MADV_HWPOISON 100 /* Poison a page for testing. */ - #endif - -diff -Nrup a/sysdeps/unix/sysv/linux/s390/bits/mman.h b/sysdeps/unix/sysv/linux/s390/bits/mman.h ---- a/sysdeps/unix/sysv/linux/s390/bits/mman.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/s390/bits/mman.h 2012-09-27 11:44:49.745059646 -0600 -@@ -94,6 +94,9 @@ - # define MADV_DOFORK 11 /* Do inherit across fork. */ - # define MADV_MERGEABLE 12 /* KSM may merge identical pages. */ - # define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages. */ -+# define MADV_DONTDUMP 16 /* Explicity exclude from the core dump, -+ overrides the coredump filter bits. */ -+# define MADV_DODUMP 17 /* Clear the MADV_DONTDUMP flag. */ - # define MADV_HWPOISON 100 /* Poison a page for testing. */ - #endif - -diff -Nrup a/sysdeps/unix/sysv/linux/x86_64/bits/mman.h b/sysdeps/unix/sysv/linux/x86_64/bits/mman.h ---- a/sysdeps/unix/sysv/linux/x86_64/bits/mman.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/x86_64/bits/mman.h 2012-09-27 11:42:08.314725733 -0600 -@@ -1,5 +1,5 @@ - /* Definitions for POSIX memory map interface. Linux/x86_64 version. -- Copyright (C) 2001, 2003, 2005, 2006, 2009 Free Software Foundation, Inc. -+ Copyright (C) 2001-2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -95,6 +95,9 @@ - # define MADV_DOFORK 11 /* Do inherit across fork. */ - # define MADV_MERGEABLE 12 /* KSM may merge identical pages. */ - # define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages. */ -+# define MADV_DONTDUMP 16 /* Explicity exclude from the core dump, -+ overrides the coredump filter bits. */ -+# define MADV_DODUMP 17 /* Clear the MADV_DONTDUMP flag. */ - # define MADV_HWPOISON 100 /* Poison a page for testing. */ - #endif - diff --git a/src/patches/glibc/glibc-rh862094.patch b/src/patches/glibc/glibc-rh862094.patch deleted file mode 100644 index 6e7fe0a..0000000 --- a/src/patches/glibc/glibc-rh862094.patch +++ /dev/null @@ -1,68 +0,0 @@ -From bc5fb0374c3ce6eca92f44d13a55b066e707c4a0 Mon Sep 17 00:00:00 2001 -From: Andreas Schwab schwab@redhat.com -Date: Wed, 15 Sep 2010 07:20:57 -0700 -Subject: [PATCH] Don't try to free rpath strings allocated during startup - ---- - ChangeLog | 10 ++++++++++ - elf/dl-load.c | 3 --- - elf/dl-support.c | 3 +++ - elf/rtld.c | 4 ++++ - 4 files changed, 17 insertions(+), 3 deletions(-) - - 2010-09-13 Andreas Schwab schwab@redhat.com - Ulrich Drepper drepper@redhat.com - - * elf/rtld.c (dl_main): Set GLRO(dl_init_all_dirs) just before - re-relocationg ld.so. - * elf/dl-support.c (_dl_non_dynamic_init): And here after the - _dl_init_paths call. - * elf/dl-load.c (_dl_init_paths). Don't set GLRO(dl_init_all_dirs) - here anymore. - -diff --git a/elf/dl-load.c b/elf/dl-load.c -index 0adddf5..a7162eb 100644 ---- a/elf/dl-load.c -+++ b/elf/dl-load.c -@@ -787,9 +787,6 @@ _dl_init_paths (const char *llp) - } - else - env_path_list.dirs = (void *) -1; -- -- /* Remember the last search directory added at startup. */ -- GLRO(dl_init_all_dirs) = GL(dl_all_dirs); - } - - -diff --git a/elf/dl-support.c b/elf/dl-support.c -index f94d2c4..5897b32 100644 ---- a/elf/dl-support.c -+++ b/elf/dl-support.c -@@ -264,6 +264,9 @@ _dl_non_dynamic_init (void) - objects. */ - _dl_init_paths (getenv ("LD_LIBRARY_PATH")); - -+ /* Remember the last search directory added at startup. */ -+ _dl_init_all_dirs = GL(dl_all_dirs); -+ - _dl_lazy = *(getenv ("LD_BIND_NOW") ?: "") == '\0'; - - _dl_bind_not = *(getenv ("LD_BIND_NOT") ?: "") != '\0'; -diff --git a/elf/rtld.c b/elf/rtld.c -index 90f3ff1..5ecc4fe 100644 ---- a/elf/rtld.c -+++ b/elf/rtld.c -@@ -2291,6 +2291,10 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", - lossage); - } - -+ /* Remember the last search directory added at startup, now that -+ malloc will no longer be the one from dl-minimal.c. */ -+ GLRO(dl_init_all_dirs) = GL(dl_all_dirs); -+ - if (! prelinked && rtld_multiple_ref) - { - /* There was an explicit ref to the dynamic linker as a shared lib. --- -1.7.1 - diff --git a/src/patches/glibc/glibc-rh863384.patch b/src/patches/glibc/glibc-rh863384.patch deleted file mode 100644 index 7644a4e..0000000 --- a/src/patches/glibc/glibc-rh863384.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c glibc-2.12-2-gc4ccff1.fixed/sysdeps/posix/getaddrinfo.c ---- glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c 2013-07-23 15:23:42.011941780 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/sysdeps/posix/getaddrinfo.c 2013-07-23 15:24:54.032938976 +0530 -@@ -562,8 +562,8 @@ gaih_inet (const char *name, const struc - - /* If we do not have to look for IPv6 addresses, use - the simple, old functions, which do not support -- IPv6 scope ids. */ -- if (req->ai_family == AF_INET) -+ IPv6 scope ids, nor retrieving the canonical name. */ -+ if (req->ai_family == AF_INET && (req->ai_flags & AI_CANONNAME) == 0) - { - /* Add room for struct host_data in resolv/nss_dns/dns-host.c */ - size_t tmpbuflen = 512 + (MAX_NR_ALIASES+MAX_NR_ADDRS+1)*sizeof(char*) diff --git a/src/patches/glibc/glibc-rh863453.patch b/src/patches/glibc/glibc-rh863453.patch deleted file mode 100644 index 96fb769..0000000 --- a/src/patches/glibc/glibc-rh863453.patch +++ /dev/null @@ -1,81 +0,0 @@ ---- glibc-2.12-2-gc4ccff1/nscd/grpcache.c.lrgrpissue 2002-03-19 01:06:04.905969517 +0530 -+++ glibc-2.12-2-gc4ccff1/nscd/grpcache.c 2002-03-19 01:09:46.495970850 +0530 -@@ -207,10 +207,11 @@ cache_addgr (struct database_dyn *db, in - change. Allocate memory on the cache since it is likely - discarded anyway. If it turns out to be necessary to have a - new record we can still allocate real memory. */ -- bool dataset_in_stack_or_freed = false; -+ bool dataset_temporary = false; -+ bool dataset_malloced = false; - dataset = NULL; - -- if (he == NULL || ! __libc_use_alloca (alloca_used + total + n)) -+ if (he == NULL) - dataset = (struct dataset *) mempool_alloc (db, total + n, 1); - - if (dataset == NULL) -@@ -218,10 +219,16 @@ cache_addgr (struct database_dyn *db, in - /* We cannot permanently add the result in the moment. But - we can provide the result as is. Store the data in some - temporary memory. */ -- dataset = (struct dataset *) alloca_account (total + n, alloca_used); -- -+ if (! __libc_use_alloca (alloca_used + total + n)) -+ { -+ /* XXX What to do if malloc fails? */ -+ dataset = (struct dataset *) malloc (total + n); -+ dataset_malloced = true; -+ } -+ else -+ dataset = (struct dataset *) alloca_account (total + n, alloca_used); - /* We cannot add this record to the permanent database. */ -- dataset_in_stack_or_freed = true; -+ dataset_temporary = true; - } - - dataset->head.allocsize = total + n; -@@ -276,13 +283,10 @@ cache_addgr (struct database_dyn *db, in - dh->timeout = dataset->head.timeout; - ++dh->nreloads; - -- /* If the new record was not allocated on the stack, then it must -- be freed. Note that it can no longer be used. */ -- if (! dataset_in_stack_or_freed) -- { -- free (dataset); -- dataset_in_stack_or_freed = true; -- } -+ /* If the new record was allocated via malloc, then we -+ must free it here. */ -+ if (dataset_malloced) -+ free (dataset); - } - else - { -@@ -298,7 +302,7 @@ cache_addgr (struct database_dyn *db, in - key_copy = (char *) newp + (key_copy - (char *) dataset); - - dataset = memcpy (newp, dataset, total + n); -- dataset_in_stack_or_freed = false; -+ dataset_temporary = false; - } - - /* Mark the old record as obsolete. */ -@@ -313,7 +317,7 @@ cache_addgr (struct database_dyn *db, in - assert (fd != -1); - - #ifdef HAVE_SENDFILE -- if (__builtin_expect (db->mmap_used, 1) && !dataset_in_stack_or_freed) -+ if (__builtin_expect (db->mmap_used, 1) && ! dataset_temporary) - { - assert (db->wr_fd != -1); - assert ((char *) &dataset->resp > (char *) db->data); -@@ -340,7 +344,7 @@ cache_addgr (struct database_dyn *db, in - - /* Add the record to the database. But only if it has not been - stored on the stack. */ -- if (! dataset_in_stack_or_freed) -+ if (! dataset_temporary) - { - /* If necessary, we also propagate the data to disk. */ - if (db->persistent) diff --git a/src/patches/glibc/glibc-rh864322.patch b/src/patches/glibc/glibc-rh864322.patch deleted file mode 100644 index 565a146..0000000 --- a/src/patches/glibc/glibc-rh864322.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -rup a/sysdeps/generic/netinet/ip.h b/sysdeps/generic/netinet/ip.h ---- a/sysdeps/generic/netinet/ip.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/generic/netinet/ip.h 2012-10-11 09:22:12.620160387 -0600 -@@ -194,7 +194,7 @@ struct ip_timestamp - */ - - #define IPTOS_CLASS_MASK 0xe0 --#define IPTOS_CLASS(class) ((tos) & IPTOS_CLASS_MASK) -+#define IPTOS_CLASS(class) ((class) & IPTOS_CLASS_MASK) - #define IPTOS_CLASS_CS0 0x00 - #define IPTOS_CLASS_CS1 0x20 - #define IPTOS_CLASS_CS2 0x40 diff --git a/src/patches/glibc/glibc-rh867679.patch b/src/patches/glibc/glibc-rh867679.patch deleted file mode 100644 index 3e823c8..0000000 --- a/src/patches/glibc/glibc-rh867679.patch +++ /dev/null @@ -1,139 +0,0 @@ -commit 9fab36eb583c0e585e83a01253299afed9ea9a11 -Author: Siddhesh Poyarekar siddhesh@redhat.com -Date: Tue Sep 25 14:10:29 2012 +0530 - - Shrink heap on linux when overcommit_memory == 2 - - Using madvise with MADV_DONTNEED to release memory back to the kernel - is not sufficient to change the commit charge accounted against the - process on Linux. It is OK however, when overcommit is enabled or is - heuristic. However, when overcommit is restricted to a percentage of - memory setting the contents of /proc/sys/vm/overcommit_memory as 2, it - makes a difference since memory requests will fail. Hence, we do what - we do with secure exec binaries, which is to call mmap on the region - to be dropped with MAP_FIXED. This internally unmaps the pages in - question and reduces the amount of memory accounted against the - process. - -diff --git a/malloc/arena.c b/malloc/arena.c -index f24e76c..b209e3b 100644 ---- a/malloc/arena.c -+++ b/malloc/arena.c -@@ -19,6 +19,9 @@ - - #include <stdbool.h> - -+/* Get the implementation for check_may_shrink_heap. */ -+#include <malloc-sysdep.h> -+ - /* Compile-time constants. */ - - #define HEAP_MIN_SIZE (32*1024) -@@ -621,10 +624,10 @@ shrink_heap(heap_info *h, long diff) - new_size = (long)h->size - diff; - if(new_size < (long)sizeof(*h)) - return -1; -- /* Try to re-map the extra heap space freshly to save memory, and -- make it inaccessible. */ - #ifdef _LIBC -- if (__builtin_expect (__libc_enable_secure, 0)) -+ /* Try to re-map the extra heap space freshly to save memory, and make it -+ inaccessible. See malloc-sysdep.h to know when this is true. */ -+ if (__builtin_expect (check_may_shrink_heap (), 0)) - #else - if (1) - #endif -diff --git a/sysdeps/generic/malloc-sysdep.h b/sysdeps/generic/malloc-sysdep.h -new file mode 100644 -index 0000000..bbc48c0 ---- /dev/null -+++ b/sysdeps/generic/malloc-sysdep.h -@@ -0,0 +1,25 @@ -+/* System-specific malloc support functions. Generic version. -+ Copyright (C) 2012 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ -+/* Force an unmap when the heap shrinks in a secure exec. This ensures that -+ the old data pages immediately cease to be accessible. */ -+static inline bool -+check_may_shrink_heap (void) -+{ -+ return __libc_enable_secure; -+} -diff --git a/sysdeps/unix/sysv/linux/malloc-sysdep.h b/sysdeps/unix/sysv/linux/malloc-sysdep.h -new file mode 100644 -index 0000000..f926aea ---- /dev/null -+++ b/sysdeps/unix/sysv/linux/malloc-sysdep.h -@@ -0,0 +1,57 @@ -+/* System-specific malloc support functions. Linux version. -+ Copyright (C) 2012 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ -+#include <fcntl.h> -+#include <not-cancel.h> -+ -+/* The Linux kernel overcommits address space by default and if there is not -+ enough memory available, it uses various parameters to decide the process to -+ kill. It is however possible to disable or curb this overcommit behavior -+ by setting the proc sysctl vm.overcommit_memory to the value '2' and with -+ that, a process is only allowed to use the maximum of a pre-determined -+ fraction of the total address space. In such a case, we want to make sure -+ that we are judicious with our heap usage as well, and explicitly give away -+ the freed top of the heap to reduce our commit charge. See the proc(5) man -+ page to know more about overcommit behavior. -+ -+ Other than that, we also force an unmap in a secure exec. */ -+static inline bool -+check_may_shrink_heap (void) -+{ -+ static int may_shrink_heap = -1; -+ -+ if (__builtin_expect (may_shrink_heap >= 0, 1)) -+ return may_shrink_heap; -+ -+ may_shrink_heap = __libc_enable_secure; -+ -+ if (__builtin_expect (may_shrink_heap == 0, 1)) -+ { -+ int fd = open_not_cancel_2 ("/proc/sys/vm/overcommit_memory", -+ O_RDONLY | O_CLOEXEC); -+ if (fd >= 0) -+ { -+ char val; -+ ssize_t n = read_not_cancel (fd, &val, 1); -+ may_shrink_heap = n > 0 && val == '2'; -+ close_not_cancel_no_status (fd); -+ } -+ } -+ -+ return may_shrink_heap; -+} diff --git a/src/patches/glibc/glibc-rh868808.patch b/src/patches/glibc/glibc-rh868808.patch deleted file mode 100644 index 27a10b2..0000000 --- a/src/patches/glibc/glibc-rh868808.patch +++ /dev/null @@ -1,99 +0,0 @@ -From d6f67f7d833b4e2039f832355fb0edd65522c9f4 Mon Sep 17 00:00:00 2001 -From: Ulrich Drepper drepper@gmail.com -Date: Sat, 14 May 2011 10:46:17 -0400 -Subject: [PATCH] Handle recursive calls in backtrace better - ---- - ChangeLog | 7 +++++++ - NEWS | 12 ++++++------ - sysdeps/ia64/backtrace.c | 27 +++++++++++++++++++++++---- - 3 files changed, 36 insertions(+), 10 deletions(-) - - 2011-05-14 Ulrich Drepper drepper@gmail.com - - [BZ #12432] - * sysdeps/ia64/backtrace.c (struct trace_reg): Add cfa element. - (dummy_getcfa): New function. - (init): Get _Unwind_GetCFA address, use dummy if not found. - (backtrace_helper): In recursion check, also check whether CFA changes. - (__backtrace): Completely initialize arg. - -diff --git a/sysdeps/ia64/backtrace.c b/sysdeps/ia64/backtrace.c -index 5cefb86..d4ff291 100644 ---- a/sysdeps/ia64/backtrace.c -+++ b/sysdeps/ia64/backtrace.c -@@ -1,5 +1,5 @@ - /* Return backtrace of current program state. -- Copyright (C) 2003, 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -+ Copyright (C) 2003-2005, 2007, 2009, 2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek jakub@redhat.com, 2003. - -@@ -27,14 +27,26 @@ - struct trace_arg - { - void **array; -- int cnt, size; -+ _Unwind_Word cfa; -+ int cnt; -+ int size; - }; - - #ifdef SHARED - static _Unwind_Reason_Code (*unwind_backtrace) (_Unwind_Trace_Fn, void *); - static _Unwind_Ptr (*unwind_getip) (struct _Unwind_Context *); -+static _Unwind_Word (*unwind_getcfa) (struct _Unwind_Context *); - static void *libgcc_handle; - -+ -+/* Dummy version in case libgcc_s does not contain the real code. */ -+static _Unwind_Word -+dummy_getcfa (struct _Unwind_Context *ctx __attribute__ ((unused))) -+{ -+ return 0; -+} -+ -+ - static void - init (void) - { -@@ -47,10 +59,13 @@ init (void) - unwind_getip = __libc_dlsym (libgcc_handle, "_Unwind_GetIP"); - if (unwind_getip == NULL) - unwind_backtrace = NULL; -+ unwind_getcfa = (__libc_dlsym (libgcc_handle, "_Unwind_GetCFA") -+ ?: dummy_getcfa); - } - #else - # define unwind_backtrace _Unwind_Backtrace - # define unwind_getip _Unwind_GetIP -+# define unwind_getcfa _Unwind_GetCFA - #endif - - static _Unwind_Reason_Code -@@ -65,8 +80,12 @@ backtrace_helper (struct _Unwind_Context *ctx, void *a) - arg->array[arg->cnt] = (void *) unwind_getip (ctx); - - /* Check whether we make any progress. */ -- if (arg->cnt > 0 && arg->array[arg->cnt - 1] == arg->array[arg->cnt]) -+ _Unwind_Word cfa = unwind_getcfa (ctx); -+ -+ if (arg->cnt > 0 && arg->array[arg->cnt - 1] == arg->array[arg->cnt] -+ && cfa == arg->cfa) - return _URC_END_OF_STACK; -+ arg->cfa = cfa; - } - if (++arg->cnt == arg->size) - return _URC_END_OF_STACK; -@@ -78,7 +97,7 @@ __backtrace (array, size) - void **array; - int size; - { -- struct trace_arg arg = { .array = array, .size = size, .cnt = -1 }; -+ struct trace_arg arg = { .array = array, .cfa = 0, .size = size, .cnt = -1 }; - #ifdef SHARED - __libc_once_define (static, once); - --- -1.7.1 - diff --git a/src/patches/glibc/glibc-rh886968.patch b/src/patches/glibc/glibc-rh886968.patch deleted file mode 100644 index 4872a91..0000000 --- a/src/patches/glibc/glibc-rh886968.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff -Nrup a/elf/dl-load.c b/elf/dl-load.c ---- a/elf/dl-load.c 2013-01-10 08:57:20.098898830 -0500 -+++ b/elf/dl-load.c 2013-01-10 12:04:48.155962895 -0500 -@@ -819,7 +819,7 @@ lose (int code, int fd, const char *name - { - r->r_state = RT_CONSISTENT; - _dl_debug_state (); -- LIBC_PROBE (rtld_map_complete, 2, nsid, r); -+ LIBC_PROBE (rtld_map_complete, 3, nsid, r, NULL); - } - - _dl_signal_error (code, name, NULL, msg); -diff -Nrup a/elf/dl-open.c b/elf/dl-open.c ---- a/elf/dl-open.c 2013-01-10 08:57:19.917897417 -0500 -+++ b/elf/dl-open.c 2013-01-10 12:06:04.644775710 -0500 -@@ -298,7 +298,7 @@ dl_open_worker (void *a) - struct r_debug *r = _dl_debug_initialize (0, args->nsid); - r->r_state = RT_CONSISTENT; - _dl_debug_state (); -- LIBC_PROBE (rtld_map_complete, 2, args->nsid, r); -+ LIBC_PROBE (rtld_map_complete, 3, args->nsid, r, new); - - /* Only do lazy relocation if `LD_BIND_NOW' is not set. */ - int reloc_mode = mode & __RTLD_AUDIT; -@@ -472,7 +472,7 @@ TLS generation counter wrapped! Please - - /* Notify the debugger all new objects have been relocated. */ - if (relocation_in_progress) -- LIBC_PROBE (rtld_reloc_complete, 2, args->nsid, r); -+ LIBC_PROBE (rtld_reloc_complete, 3, args->nsid, r, new); - - /* Run the initializer functions of new objects. */ - _dl_init (new, args->argc, args->argv, args->env); diff --git a/src/patches/glibc/glibc-rh905575.patch b/src/patches/glibc/glibc-rh905575.patch deleted file mode 100644 index 70baa89..0000000 --- a/src/patches/glibc/glibc-rh905575.patch +++ /dev/null @@ -1,72 +0,0 @@ -diff -rup a/sysdeps/ieee754/dbl-64/slowexp.c b/sysdeps/ieee754/dbl-64/slowexp.c ---- a/sysdeps/ieee754/dbl-64/slowexp.c 2012-01-01 05:16:32.000000000 -0700 -+++ b/sysdeps/ieee754/dbl-64/slowexp.c 2012-03-13 11:57:51.225330782 -0600 -@@ -31,6 +31,8 @@ - #include "mpa.h" - #include "math_private.h" - -+#include <stap-probe.h> -+ - void __mpexp(mp_no *x, mp_no *y, int p); - - /*Converting from double precision to Multi-precision and calculating e^x */ -@@ -61,12 +63,21 @@ __slowexp(double x) { - __sub(&mpy,&mpcor,&mpz,p); - __mp_dbl(&mpw, &w, p); - __mp_dbl(&mpz, &z, p); -- if (w == z) return w; -+ if (w == z) { -+ /* Track how often we get to the slow exp code plus -+ its input/output values. */ -+ LIBC_PROBE (slowexp_p6, 2, &x, &w); -+ return w; -+ } - else { /* if calculating is not exactly */ - p = 32; - __dbl_mp(x,&mpx,p); - __mpexp(&mpx, &mpy, p); - __mp_dbl(&mpy, &res, p); -+ -+ /* Track how often we get to the uber-slow exp code plus -+ its input/output values. */ -+ LIBC_PROBE (slowexp_p32, 2, &x, &res); - return res; - } - } -diff -rup a/sysdeps/ieee754/dbl-64/slowpow.c b/sysdeps/ieee754/dbl-64/slowpow.c ---- a/sysdeps/ieee754/dbl-64/slowpow.c 2012-01-01 05:16:32.000000000 -0700 -+++ b/sysdeps/ieee754/dbl-64/slowpow.c 2012-03-13 11:57:59.865284437 -0600 -@@ -35,6 +35,8 @@ - #include "mpa.h" - #include "math_private.h" - -+#include <stap-probe.h> -+ - void __mpexp(mp_no *x, mp_no *y, int p); - void __mplog(mp_no *x, mp_no *y, int p); - double ulog(double); -@@ -66,7 +68,12 @@ __slowpow(double x, double y, double z) - __mp_dbl(&mpr, &res, p); - __sub(&mpp,&eps,&mpr1,p); /* pp -eps =r1 */ - __mp_dbl(&mpr1, &res1, p); /* converting into double precision */ -- if (res == res1) return res; -+ if (res == res1) { -+ /* Track how often we get to the slow pow code plus -+ its input/output values. */ -+ LIBC_PROBE (slowpow_p10, 4, &x, &y, &z, &res); -+ return res; -+ } - - p = 32; /* if we get here result wasn't calculated exactly, continue */ - __dbl_mp(x,&mpx,p); /* for more exact calculation */ -@@ -76,5 +83,10 @@ __slowpow(double x, double y, double z) - __mul(&mpy,&mpz,&mpw,p); /* y*z =w */ - __mpexp(&mpw, &mpp, p); /* e^w=pp */ - __mp_dbl(&mpp, &res, p); /* converting into double precision */ -+ -+ /* Track how often we get to the uber-slow pow code plus -+ its input/output values. */ -+ LIBC_PROBE (slowpow_p32, 4, &x, &y, &z, &res); -+ - return res; - } diff --git a/src/patches/glibc/glibc-rh905874.patch b/src/patches/glibc/glibc-rh905874.patch deleted file mode 100644 index 1d9ea10..0000000 --- a/src/patches/glibc/glibc-rh905874.patch +++ /dev/null @@ -1,174 +0,0 @@ -# -# Backported from upstream. -# -# - Add en_US.UTF-8 as pre-requisite for regression test: -# -# commit 62c4a69dc2aea24776cbf0e951d41709a7408cc6 -# Author: Joseph Myers joseph@codesourcery.com -# Date: Thu Nov 1 00:22:04 2012 +0000 -# -# Build en_US.UTF-8 locale for testing. -# -# - Fix buffer overrun: -# -# commit a445af0bc722d620afed7683cd320c0e4c7c6059 -# Author: Andreas Schwab schwab@suse.de -# Date: Tue Jan 29 14:45:15 2013 +0100 -# -# Fix buffer overrun in regexp matcher -# -# ChangeLog/ -# 2013-02-12 Andreas Schwab schwab@suse.de -# -# [BZ #15078] -# * posix/regexec.c (extend_buffers): Add parameter min_len. -# (check_matching): Pass minimum needed length. -# (clean_state_log_if_needed): Likewise. -# (get_subexp): Likewise. -# * posix/Makefile (tests): Add bug-regex34. -# (bug-regex34-ENV): Define. -# * posix/bug-regex34.c: New file. -# -diff -urN glibc-2.12-2-gc4ccff1.orig/localedata/Makefile glibc-2.12-2-gc4ccff1/localedata/Makefile ---- glibc-2.12-2-gc4ccff1.orig/localedata/Makefile 2013-07-24 20:40:37.364888120 -0400 -+++ glibc-2.12-2-gc4ccff1/localedata/Makefile 2013-07-24 20:59:54.713289753 -0400 -@@ -133,7 +133,7 @@ - ifeq (no,$(cross-compiling)) - # We have to generate locales - LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ANSI_X3.4-1968 \ -- en_US.ISO-8859-1 ja_JP.EUC-JP da_DK.ISO-8859-1 \ -+ en_US.ISO-8859-1 en_US.UTF-8 ja_JP.EUC-JP da_DK.ISO-8859-1 \ - hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 ja_JP.SJIS fr_FR.ISO-8859-1 \ - vi_VN.TCVN5712-1 nb_NO.ISO-8859-1 nn_NO.ISO-8859-1 \ - tr_TR.UTF-8 cs_CZ.UTF-8 zh_TW.EUC-TW fa_IR.UTF-8 fr_FR.UTF-8 \ -diff -urN glibc-2.12-2-gc4ccff1.orig/posix/bug-regex34.c glibc-2.12-2-gc4ccff1/posix/bug-regex34.c ---- glibc-2.12-2-gc4ccff1.orig/posix/bug-regex34.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1/posix/bug-regex34.c 2013-07-24 20:59:54.713289753 -0400 -@@ -0,0 +1,46 @@ -+/* Test re_search with multi-byte characters in UTF-8. -+ Copyright (C) 2013 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ -+#define _GNU_SOURCE 1 -+#include <stdio.h> -+#include <string.h> -+#include <locale.h> -+#include <regex.h> -+ -+static int -+do_test (void) -+{ -+ struct re_pattern_buffer r; -+ /* áá»áœááºá¯ááºx */ -+ const char *s = "\xe1\x80\x80\xe1\x80\xbb\xe1\x80\xbd\xe1\x80\x94\xe1\x80\xba\xe1\x80\xaf\xe1\x80\x95\xe1\x80\xbax"; -+ -+ if (setlocale (LC_ALL, "en_US.UTF-8") == NULL) -+ { -+ puts ("setlocale failed"); -+ return 1; -+ } -+ memset (&r, 0, sizeof (r)); -+ -+ re_compile_pattern ("[^x]x", 5, &r); -+ /* This was triggering a buffer overflow. */ -+ re_search (&r, s, strlen (s), 0, strlen (s), 0); -+ return 0; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff -urN glibc-2.12-2-gc4ccff1.orig/posix/Makefile glibc-2.12-2-gc4ccff1/posix/Makefile ---- glibc-2.12-2-gc4ccff1.orig/posix/Makefile 2013-07-24 20:40:37.399888098 -0400 -+++ glibc-2.12-2-gc4ccff1/posix/Makefile 2013-07-24 21:00:43.267265979 -0400 -@@ -94,7 +94,7 @@ - tst-rfc3484-3 \ - tst-getaddrinfo3 tst-fnmatch2 tst-cpucount tst-cpuset \ - bug-getopt1 bug-getopt2 bug-getopt3 bug-getopt4 \ -- bug-getopt5 -+ bug-getopt5 bug-regex34 - xtests := bug-ga2 - ifeq (yes,$(build-shared)) - test-srcs := globtest -@@ -199,6 +199,7 @@ - bug-regex25-ENV = LOCPATH=$(common-objpfx)localedata - bug-regex26-ENV = LOCPATH=$(common-objpfx)localedata - bug-regex30-ENV = LOCPATH=$(common-objpfx)localedata -+bug-regex34-ENV = LOCPATH=$(common-objpfx)localedata - tst-rxspencer-ARGS = --utf8 rxspencer/tests - tst-rxspencer-ENV = LOCPATH=$(common-objpfx)localedata - tst-pcre-ARGS = PCRE.tests -diff -urN glibc-2.12-2-gc4ccff1.orig/posix/regexec.c glibc-2.12-2-gc4ccff1/posix/regexec.c ---- glibc-2.12-2-gc4ccff1.orig/posix/regexec.c 2013-07-24 20:40:37.396888100 -0400 -+++ glibc-2.12-2-gc4ccff1/posix/regexec.c 2013-07-24 21:02:53.005156187 -0400 -@@ -198,7 +198,7 @@ - static int check_node_accept (const re_match_context_t *mctx, - const re_token_t *node, int idx) - internal_function; --static reg_errcode_t extend_buffers (re_match_context_t *mctx) -+static reg_errcode_t extend_buffers (re_match_context_t *mctx, int min_len) - internal_function; - - /* Entry point for POSIX code. */ -@@ -1160,7 +1160,7 @@ - || (BE (next_char_idx >= mctx->input.valid_len, 0) - && mctx->input.valid_len < mctx->input.len)) - { -- err = extend_buffers (mctx); -+ err = extend_buffers (mctx, next_char_idx + 1); - if (BE (err != REG_NOERROR, 0)) - { - assert (err == REG_ESPACE); -@@ -1737,7 +1737,7 @@ - && mctx->input.valid_len < mctx->input.len)) - { - reg_errcode_t err; -- err = extend_buffers (mctx); -+ err = extend_buffers (mctx, next_state_log_idx + 1); - if (BE (err != REG_NOERROR, 0)) - return err; - } -@@ -2791,7 +2791,7 @@ - if (bkref_str_off >= mctx->input.len) - break; - -- err = extend_buffers (mctx); -+ err = extend_buffers (mctx, bkref_str_off + 1); - if (BE (err != REG_NOERROR, 0)) - return err; - -@@ -4099,7 +4099,7 @@ - - static reg_errcode_t - internal_function __attribute_warn_unused_result__ --extend_buffers (re_match_context_t *mctx) -+extend_buffers (re_match_context_t *mctx, int min_len) - { - reg_errcode_t ret; - re_string_t *pstr = &mctx->input; -@@ -4108,8 +4108,10 @@ - if (BE (INT_MAX / 2 / sizeof (re_dfastate_t *) <= pstr->bufs_len, 0)) - return REG_ESPACE; - -- /* Double the lengthes of the buffers. */ -- ret = re_string_realloc_buffers (pstr, pstr->bufs_len * 2); -+ /* Double the lengthes of the buffers, but allocate at least MIN_LEN. */ -+ ret = re_string_realloc_buffers (pstr, -+ MAX (min_len, -+ MIN (pstr->len, pstr->bufs_len * 2))); - if (BE (ret != REG_NOERROR, 0)) - return ret; - diff --git a/src/patches/glibc/glibc-rh905941.patch b/src/patches/glibc/glibc-rh905941.patch deleted file mode 100644 index d5d50f2..0000000 --- a/src/patches/glibc/glibc-rh905941.patch +++ /dev/null @@ -1,146 +0,0 @@ -diff -pruN a/nptl/sysdeps/pthread/unwind-forcedunwind.c b/nptl/sysdeps/pthread/unwind-forcedunwind.c ---- a/nptl/sysdeps/pthread/unwind-forcedunwind.c 2010-05-04 16:57:23.000000000 +0530 -+++ b/nptl/sysdeps/pthread/unwind-forcedunwind.c 2014-06-02 23:00:02.901013275 +0530 -@@ -45,8 +45,10 @@ pthread_cancel_init (void) - - if (__builtin_expect (libgcc_s_handle != NULL, 1)) - { -- /* Force gcc to reload all values. */ -- asm volatile ("" ::: "memory"); -+ /* Order reads so as to prevent speculation of loads -+ of libgcc_s_{resume,personality,forcedunwind,getcfa} -+ to points prior to the write barrier. */ -+ atomic_read_barrier (); - return; - } - -@@ -72,9 +74,14 @@ pthread_cancel_init (void) - libgcc_s_forcedunwind = forcedunwind; - PTR_MANGLE (getcfa); - libgcc_s_getcfa = getcfa; -- /* Make sure libgcc_s_handle is written last. Otherwise, -- pthread_cancel_init might return early even when the pointer the -- caller is interested in is not initialized yet. */ -+ /* At the point at which any thread writes the handle -+ to libgcc_s_handle, the initialization is complete. -+ The writing of libgcc_s_handle is atomic. All other -+ threads reading libgcc_s_handle do so atomically. Any -+ thread that does not execute this function must issue -+ a read barrier to ensure that all of the above has -+ actually completed and that the values of the -+ function pointers are correct. */ - atomic_write_barrier (); - libgcc_s_handle = handle; - } -@@ -91,11 +98,19 @@ __unwind_freeres (void) - } - } - --void --_Unwind_Resume (struct _Unwind_Exception *exc) -+static __always_inline void -+_maybe_pthread_cancel_init (void) - { - if (__builtin_expect (libgcc_s_handle == NULL, 0)) - pthread_cancel_init (); -+ else -+ atomic_read_barrier (); -+} -+ -+void -+_Unwind_Resume (struct _Unwind_Exception *exc) -+{ -+ _maybe_pthread_cancel_init (); - - void (*resume) (struct _Unwind_Exception *exc) = libgcc_s_resume; - PTR_DEMANGLE (resume); -@@ -108,8 +123,7 @@ __gcc_personality_v0 (int version, _Unwi - struct _Unwind_Exception *ue_header, - struct _Unwind_Context *context) - { -- if (__builtin_expect (libgcc_s_handle == NULL, 0)) -- pthread_cancel_init (); -+ _maybe_pthread_cancel_init (); - - _Unwind_Reason_Code (*personality) - (int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *, -@@ -122,8 +136,7 @@ _Unwind_Reason_Code - _Unwind_ForcedUnwind (struct _Unwind_Exception *exc, _Unwind_Stop_Fn stop, - void *stop_argument) - { -- if (__builtin_expect (libgcc_s_handle == NULL, 0)) -- pthread_cancel_init (); -+ _maybe_pthread_cancel_init (); - - _Unwind_Reason_Code (*forcedunwind) - (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *) -@@ -135,8 +148,7 @@ _Unwind_ForcedUnwind (struct _Unwind_Exc - _Unwind_Word - _Unwind_GetCFA (struct _Unwind_Context *context) - { -- if (__builtin_expect (libgcc_s_handle == NULL, 0)) -- pthread_cancel_init (); -+ _maybe_pthread_cancel_init (); - - _Unwind_Word (*getcfa) (struct _Unwind_Context *) = libgcc_s_getcfa; - PTR_DEMANGLE (getcfa); -diff -pruN a/sysdeps/gnu/unwind-resume.c b/sysdeps/gnu/unwind-resume.c ---- a/sysdeps/gnu/unwind-resume.c 2010-05-04 16:57:23.000000000 +0530 -+++ b/sysdeps/gnu/unwind-resume.c 2014-06-02 23:02:26.812007078 +0530 -@@ -20,8 +20,11 @@ - #include <dlfcn.h> - #include <stdio.h> - #include <unwind.h> -+#include <pthreadP.h> -+#include <sysdep.h> - #include <libgcc_s.h> - -+static void *libgcc_s_handle; - static void (*libgcc_s_resume) (struct _Unwind_Exception *exc); - static _Unwind_Reason_Code (*libgcc_s_personality) - (int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *, -@@ -42,13 +45,32 @@ init (void) - - libgcc_s_resume = resume; - libgcc_s_personality = personality; -+ atomic_write_barrier (); -+ /* At the point at which any thread writes the handle -+ to libgcc_s_handle, the initialization is complete. -+ The writing of libgcc_s_handle is atomic. All other -+ threads reading libgcc_s_handle do so atomically. Any -+ thread that does not execute this function must issue -+ a read barrier to ensure that all of the above has -+ actually completed and that the values of the -+ function pointers are correct. */ -+ libgcc_s_handle = handle; - } - -+static __always_inline void -+_maybe_init (void) -+{ -+ if (__builtin_expect (libgcc_s_handle == NULL, 0)) -+ init (); -+ else -+ atomic_read_barrier (); -+} -+ -+ - void - _Unwind_Resume (struct _Unwind_Exception *exc) - { -- if (__builtin_expect (libgcc_s_resume == NULL, 0)) -- init (); -+ _maybe_init (); - libgcc_s_resume (exc); - } - -@@ -58,8 +80,7 @@ __gcc_personality_v0 (int version, _Unwi - struct _Unwind_Exception *ue_header, - struct _Unwind_Context *context) - { -- if (__builtin_expect (libgcc_s_personality == NULL, 0)) -- init (); -+ _maybe_init (); - return libgcc_s_personality (version, actions, exception_class, - ue_header, context); - } diff --git a/src/patches/glibc/glibc-rh916986.patch b/src/patches/glibc/glibc-rh916986.patch deleted file mode 100644 index 9bed61f..0000000 --- a/src/patches/glibc/glibc-rh916986.patch +++ /dev/null @@ -1,123 +0,0 @@ -commit cf7c9078a5acdbb435498ace92cd81009637a971 -Author: Ulrich Drepper drepper@redhat.com -Date: Fri Nov 19 09:35:39 2010 -0500 - - Define MAP_HUGETLB. - - * sysdeps/unix/sysv/linux/i386/bits/mman.h: Define MAP_HUGETLB. - * sysdeps/unix/sysv/linux/x86_64/bits/mman.h: Likewise. - -commit dd62fda6cc83b3afa150a4be7d273ab118bf9825 -Author: Anton Blanchard anton@samba.org -Date: Tue Mar 27 18:37:16 2012 -0700 - - Define MAP_STACK and MAP_HUGETLB on powerpc, s390, sh and sparc. - - * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Define MAP_STACK and - MAP_HUGETLB. - * sysdeps/unix/sysv/linux/s390/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/sh/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/mman.h: Likewise. - -commit 7e4fc5890e07549e5ad98b4244e3e0ed5c709e6a -Author: Mike Frysinger vapier@gentoo.org -Date: Mon Apr 16 22:44:23 2012 -0400 - - ia64: add MAP_{STACK,HUGETLB} to bits/mman.h - - Just adding new bit flags that newer kernels define. - - Signed-off-by: Mike Frysinger vapier@gentoo.org - - * sysdeps/unix/sysv/linux/ia64/bits/mman.h (MAP_STACK): Define. - (MAP_HUGETLB): Likewise. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/powerpc/bits/mman.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/powerpc/bits/mman.h 2013-07-23 04:01:42.440052942 -0300 -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/powerpc/bits/mman.h 2013-07-23 22:26:42.317789260 -0300 -@@ -65,6 +65,8 @@ - # define MAP_NORESERVE 0x00040 /* Don't check for reservations. */ - # define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */ - # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */ -+# define MAP_STACK 0x20000 /* Allocation is for a stack. */ -+# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */ - #endif - - /* Flags to `msync'. */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/s390/bits/mman.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/s390/bits/mman.h 2013-07-23 04:01:42.447052393 -0300 -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/s390/bits/mman.h 2013-07-23 22:26:42.335787833 -0300 -@@ -64,6 +64,8 @@ - # define MAP_NORESERVE 0x04000 /* Don't check for reservations. */ - # define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */ - # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */ -+# define MAP_STACK 0x20000 /* Allocation is for a stack. */ -+# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */ - #endif - - /* Flags to `msync'. */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sh/bits/mman.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/sh/bits/mman.h 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sh/bits/mman.h 2013-07-23 22:26:42.336787753 -0300 -@@ -64,6 +64,8 @@ - # define MAP_NORESERVE 0x4000 /* Don't check for reservations. */ - # define MAP_POPULATE 0x8000 /* Populate (prefault) pagetables. */ - # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */ -+# define MAP_STACK 0x20000 /* Allocation is for a stack. */ -+# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */ - #endif - - /* Flags to `msync'. */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sparc/bits/mman.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/sparc/bits/mman.h 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sparc/bits/mman.h 2013-07-23 22:26:42.337787674 -0300 -@@ -66,6 +66,8 @@ - # define _MAP_NEW 0x80000000 /* Binary compatibility with SunOS. */ - # define MAP_POPULATE 0x8000 /* Populate (prefault) pagetables. */ - # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */ -+# define MAP_STACK 0x20000 /* Allocation is for a stack. */ -+# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */ - #endif - - /* Flags to `msync'. */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/bits/mman.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/i386/bits/mman.h 2013-07-23 04:01:42.406055607 -0300 -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/bits/mman.h 2013-07-23 22:32:37.407630135 -0300 -@@ -64,6 +64,7 @@ - # define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */ - # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */ - # define MAP_STACK 0x20000 /* Allocation is for a stack. */ -+# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */ - #endif - - /* Flags to `msync'. */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/x86_64/bits/mman.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/x86_64/bits/mman.h 2013-07-23 04:01:42.493048788 -0300 -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/x86_64/bits/mman.h 2013-07-23 22:32:37.433628073 -0300 -@@ -65,6 +65,7 @@ - # define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */ - # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */ - # define MAP_STACK 0x20000 /* Allocation is for a stack. */ -+# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */ - #endif - - /* Flags to `msync'. */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/bits/mman.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/ia64/bits/mman.h 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/bits/mman.h 2013-07-23 22:37:28.643530951 -0300 -@@ -65,6 +65,8 @@ - # define MAP_NORESERVE 0x04000 /* Don't check for reservations. */ - # define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */ - # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */ -+# define MAP_STACK 0x20000 /* Allocation is for a stack. */ -+# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */ - #endif - - /* Flags to `msync'. */ diff --git a/src/patches/glibc/glibc-rh919562.patch b/src/patches/glibc/glibc-rh919562.patch deleted file mode 100644 index 42aa819..0000000 --- a/src/patches/glibc/glibc-rh919562.patch +++ /dev/null @@ -1,190 +0,0 @@ -# -# Patch provided by Ulrich Drepper in BZ#919562. -# -# Patch has not been sent upstream. -# -# 2013-03-08 Ulrich Drepper drepper@gmail.com -# -# * elf/rtld.c (dl_main): Correctly determine when the application -# required DSOs with TLS and bump the generation counter in that -# case. The current condition does not account for an audit -# module using TLS. -# * elf/dl-tls.c (_dl_count_modids): New function. -# (_dl_allocate_tls_init): Add assertion to check TLS -# generation. -# * sysdeps/generic/ldsodefs.h: Declare _dl_count_modids. -# * elf/Makefile: Add rules to build and run tst-audit9. -# * elf/tst-audit9.c: New file. -# * elf/tst-auditmod9a.c: New file. -# * elf/tst-auditmod9b.c: New file. -# -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/dl-tls.c glibc-2.12-2-gc4ccff1/elf/dl-tls.c ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-tls.c 2013-04-24 16:06:10.410756438 -0400 -+++ glibc-2.12-2-gc4ccff1/elf/dl-tls.c 2013-04-24 16:06:49.092604707 -0400 -@@ -109,6 +109,28 @@ - } - - -+size_t -+internal_function -+_dl_count_modids (void) -+{ -+ if (! __builtin_expect (GL(dl_tls_dtv_gaps), true)) -+ return GL(dl_tls_max_dtv_idx); -+ -+ size_t n = 0; -+ struct dtv_slotinfo_list *runp = GL(dl_tls_dtv_slotinfo_list); -+ while (runp != NULL) -+ { -+ for (size_t i = 0; i < runp->len; ++i) -+ if (runp->slotinfo[i].map != NULL) -+ ++n; -+ -+ runp = runp->next; -+ } -+ -+ return n; -+} -+ -+ - #ifdef SHARED - void - internal_function -@@ -411,6 +433,7 @@ - - /* Keep track of the maximum generation number. This might - not be the generation counter. */ -+ assert (listp->slotinfo[cnt].gen <= GL(dl_tls_generation)); - maxgen = MAX (maxgen, listp->slotinfo[cnt].gen); - - if (map->l_tls_offset == NO_TLS_OFFSET -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/Makefile glibc-2.12-2-gc4ccff1/elf/Makefile ---- glibc-2.12-2-gc4ccff1.orig/elf/Makefile 2013-04-24 16:06:10.408756448 -0400 -+++ glibc-2.12-2-gc4ccff1/elf/Makefile 2013-04-24 16:07:29.475457962 -0400 -@@ -97,6 +97,8 @@ - tst-audit6.c tst-auditmod6a.c tst-auditmod6b.c \ - tst-auditmod6c.c \ - tst-audit7.c tst-auditmod7a.c tst-auditmod7b.c \ -+ tst-audit9.c \ -+ tst-auditmod9a.c tst-auditmod9b.c \ - order2mod1.c order2mod2.c order2mod3.c order2mod4.c \ - tst-stackguard1.c tst-stackguard1-static.c \ - tst-array5.c tst-array5-static.c tst-array5dep.c \ -@@ -198,7 +200,7 @@ - tst-dlmodcount tst-dlopenrpath tst-deep1 \ - tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \ - unload3 unload4 unload5 unload6 unload7 unload8 tst-global1 order2 \ -- tst-audit1 tst-audit2 \ -+ tst-audit1 tst-audit2 tst-audit9 \ - tst-stackguard1 tst-addr1 tst-thrlock \ - tst-unique1 tst-unique2 - # reldep9 -@@ -251,7 +253,8 @@ - unload8mod1 unload8mod1x unload8mod2 unload8mod3 \ - order2mod1 order2mod2 order2mod3 order2mod4 \ - tst-unique1mod1 tst-unique1mod2 \ -- tst-unique2mod1 tst-unique2mod2 -+ tst-unique2mod1 tst-unique2mod2 \ -+ tst-auditmod9a tst-auditmod9b - ifeq (yes,$(have-initfini-array)) - modules-names += tst-array2dep tst-array5dep - endif -@@ -574,6 +577,8 @@ - ifuncmod1.so-no-z-defs = yes - ifuncmod5.so-no-z-defs = yes - ifuncmod6.so-no-z-defs = yes -+tst-auditmod9a.so-no-z-defs = yes -+tst-auditmod9b.so-no-z-defs = yes - - ifeq ($(build-shared),yes) - # Build all the modules even when not actually running test programs. -@@ -1015,6 +1020,10 @@ - $(objpfx)tst-audit7.out: $(objpfx)tst-auditmod7b.so - tst-audit7-ENV = LD_AUDIT=$(objpfx)tst-auditmod7b.so - -+$(objpfx)tst-audit9: $(libdl) -+$(objpfx)tst-audit9.out: $(objpfx)tst-auditmod9a.so $(objpfx)tst-auditmod9b.so -+tst-audit9-ENV = LD_AUDIT=$(objpfx)tst-auditmod9a.so -+ - $(objpfx)tst-global1: $(libdl) - $(objpfx)tst-global1.out: $(objpfx)testobj6.so $(objpfx)testobj2.so - -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/rtld.c glibc-2.12-2-gc4ccff1/elf/rtld.c ---- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c 2013-04-24 16:06:10.410756438 -0400 -+++ glibc-2.12-2-gc4ccff1/elf/rtld.c 2013-04-24 16:06:49.096604693 -0400 -@@ -1637,6 +1637,10 @@ - } - } - -+ /* Keep track of the currently loaded modules to count how many -+ non-audit modules which use TLS are loaded. */ -+ size_t count_modids = _dl_count_modids (); -+ - /* Set up debugging before the debugger is notified for the first time. */ - #ifdef ELF_MACHINE_DEBUG_SETUP - /* Some machines (e.g. MIPS) don't use DT_DEBUG in this way. */ -@@ -2281,7 +2285,8 @@ - # define NONTLS_INIT_TP do { } while (0) - #endif - -- if (!was_tls_init_tp_called && GL(dl_tls_max_dtv_idx) > 0) -+ if ((!was_tls_init_tp_called && GL(dl_tls_max_dtv_idx) > 0) -+ || count_modids != _dl_count_modids ()) - ++GL(dl_tls_generation); - - /* Now that we have completed relocation, the initializer data -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/tst-audit9.c glibc-2.12-2-gc4ccff1/elf/tst-audit9.c ---- glibc-2.12-2-gc4ccff1.orig/elf/tst-audit9.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1/elf/tst-audit9.c 2013-04-24 16:06:49.096604693 -0400 -@@ -0,0 +1,8 @@ -+#include <dlfcn.h> -+ -+int main(void) -+{ -+ void *h = dlopen("$ORIGIN/tst-auditmod9b.so", RTLD_LAZY); -+ int (*fp)(void) = dlsym(h, "f"); -+ return fp() - 1; -+} -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9a.c glibc-2.12-2-gc4ccff1/elf/tst-auditmod9a.c ---- glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9a.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1/elf/tst-auditmod9a.c 2013-04-24 16:06:49.097604689 -0400 -@@ -0,0 +1,16 @@ -+#include <stdint.h> -+ -+__thread int var; -+ -+unsigned int -+la_version (unsigned int v) -+{ -+ return v; -+} -+ -+void -+la_activity (uintptr_t *cookie, unsigned int flag) -+{ -+ ++var; -+} -+ -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9b.c glibc-2.12-2-gc4ccff1/elf/tst-auditmod9b.c ---- glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9b.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1/elf/tst-auditmod9b.c 2013-04-24 16:06:49.097604689 -0400 -@@ -0,0 +1,6 @@ -+__thread int a; -+ -+int f(void) -+{ -+ return ++a; -+} -diff -urN glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h 2013-04-24 16:06:10.545755798 -0400 -+++ glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h 2013-04-24 16:06:49.098604686 -0400 -@@ -1031,6 +1031,9 @@ - /* Determine next available module ID. */ - extern size_t _dl_next_tls_modid (void) internal_function attribute_hidden; - -+/* Count the modules with TLS segments. */ -+extern size_t _dl_count_modids (void) internal_function attribute_hidden; -+ - /* Calculate offset of the TLS blocks in the static TLS block. */ - extern void _dl_determine_tlsoffset (void) internal_function attribute_hidden; - diff --git a/src/patches/glibc/glibc-rh928318.patch b/src/patches/glibc/glibc-rh928318.patch deleted file mode 100644 index 36aa19a..0000000 --- a/src/patches/glibc/glibc-rh928318.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/resolv/res_init.c b/resolv/res_init.c -index 40dbe7d..202569d 100644 ---- a/resolv/res_init.c -+++ b/resolv/res_init.c -@@ -176,13 +176,6 @@ __res_vinit(res_state statp, int preinit) { - statp->id = res_randomid(); - } - --#ifdef USELOOPBACK -- statp->nsaddr.sin_addr = inet_makeaddr(IN_LOOPBACKNET, 1); --#else -- statp->nsaddr.sin_addr.s_addr = INADDR_ANY; --#endif -- statp->nsaddr.sin_family = AF_INET; -- statp->nsaddr.sin_port = htons(NAMESERVER_PORT); - statp->nscount = 0; - statp->ndots = 1; - statp->pfcode = 0; -@@ -433,6 +426,12 @@ __res_vinit(res_state statp, int preinit) { - #endif - (void) fclose(fp); - } -+ if (__builtin_expect(statp->nscount == 0, 0)) { -+ statp->nsaddr.sin_addr = inet_makeaddr(IN_LOOPBACKNET, 1); -+ statp->nsaddr.sin_family = AF_INET; -+ statp->nsaddr.sin_port = htons(NAMESERVER_PORT); -+ statp->nscount = 1; -+ } - if (statp->defdname[0] == 0 && - __gethostname(buf, sizeof(statp->defdname) - 1) == 0 && - (cp = strchr(buf, '.')) != NULL) diff --git a/src/patches/glibc/glibc-rh929302.patch b/src/patches/glibc/glibc-rh929302.patch deleted file mode 100644 index 305b339..0000000 --- a/src/patches/glibc/glibc-rh929302.patch +++ /dev/null @@ -1,98 +0,0 @@ -From decadad73858bc108828eed5540c7955dc2a977b Mon Sep 17 00:00:00 2001 -From: Adhemerval Zanella azanella@linux.vnet.ibm.com -Date: Fri, 7 Jun 2013 14:44:58 -0500 -Subject: [PATCH 1/2] PowerPC: Change sched_getcpu to use vDSO getcpu instead of syscall. - -Backport of d5e0b9bd6e296f3ec5263fa296d39f3fed9b8fa2 from master. ---- - sysdeps/unix/sysv/linux/powerpc/Versions | 1 + - sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h | 2 + - sysdeps/unix/sysv/linux/powerpc/init-first.c | 3 ++ - sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c | 30 ++++++++++++++++++++++ - 4 files changed, 36 insertions(+), 0 deletions(-) - create mode 100644 sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c - -diff --git a/sysdeps/unix/sysv/linux/powerpc/Versions b/sysdeps/unix/sysv/linux/powerpc/Versions -index 1ef53b9..396a423 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/Versions -+++ b/sysdeps/unix/sysv/linux/powerpc/Versions -@@ -3,5 +3,6 @@ libc { - __vdso_get_tbfreq; - __vdso_clock_gettime; - __vdso_clock_getres; -+ __vdso_getcpu; - } - } -diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h b/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h -index 746d9ce..c3026d5 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h -+++ b/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h -@@ -31,6 +31,8 @@ extern void *__vdso_clock_getres; - - extern void *__vdso_get_tbfreq; - -+extern void *__vdso_getcpu; -+ - #endif - - #endif /* _LIBC_VDSO_H */ -diff --git a/sysdeps/unix/sysv/linux/powerpc/init-first.c b/sysdeps/unix/sysv/linux/powerpc/init-first.c -index 92dacc7..cfed655 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/init-first.c -+++ b/sysdeps/unix/sysv/linux/powerpc/init-first.c -@@ -27,6 +27,7 @@ void *__vdso_gettimeofday attribute_hidden; - void *__vdso_clock_gettime; - void *__vdso_clock_getres; - void *__vdso_get_tbfreq; -+void *__vdso_getcpu; - - - static inline void -@@ -41,6 +42,8 @@ _libc_vdso_platform_setup (void) - __vdso_clock_getres = _dl_vdso_vsym ("__kernel_clock_getres", &linux2615); - - __vdso_get_tbfreq = _dl_vdso_vsym ("__kernel_vdso_get_tbfreq", &linux2615); -+ -+ __vdso_getcpu = _dl_vdso_vsym ("__kernel_getcpu", &linux2615); - } - - # define VDSO_SETUP _libc_vdso_platform_setup -diff --git a/sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c b/sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c -new file mode 100644 -index 0000000..617e6f1 ---- /dev/null -+++ b/sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c -@@ -0,0 +1,30 @@ -+/* Copyright (C) 2013 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ http://www.gnu.org/licenses/. */ -+ -+#include <sched.h> -+#include <sysdep.h> -+#include <bits/libc-vdso.h> -+ -+ -+int -+sched_getcpu (void) -+{ -+ unsigned int cpu; -+ int r = INLINE_VSYSCALL (getcpu, 3, &cpu, NULL, NULL); -+ -+ return r == -1 ? r : cpu; -+} --- -1.7.1 - diff --git a/src/patches/glibc/glibc-rh929388.patch b/src/patches/glibc/glibc-rh929388.patch deleted file mode 100644 index 44ddd17..0000000 --- a/src/patches/glibc/glibc-rh929388.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -pruN glibc-2.5-20061008T1257/sysdeps/x86_64/fpu/math_private.h glibc-2.5-20061008T1257.patched/sysdeps/x86_64/fpu/math_private.h ---- glibc-2.5-20061008T1257/sysdeps/x86_64/fpu/math_private.h 2013-02-12 07:05:08.000000000 -0500 -+++ glibc-2.5-20061008T1257.patched/sysdeps/x86_64/fpu/math_private.h 2013-02-12 06:59:08.000000000 -0500 -@@ -90,10 +90,14 @@ while (0) - #undef libc_feupdateenv - #define libc_feupdateenv(e) \ - do { \ -- unsigned int mxcsr; \ -+ unsigned int mxcsr, new_mxcsr; \ - asm volatile ("stmxcsr %0" : "=m" (*&mxcsr)); \ -- asm volatile ("ldmxcsr %0" : : "m" ((e)->__mxcsr)); \ -- feraiseexcept (mxcsr & FE_ALL_EXCEPT); \ -+ /* Merge in the old exceptions. */ \ -+ new_mxcsr = mxcsr & FE_ALL_EXCEPT | (e)->__mxcsr; \ -+ asm volatile ("ldmxcsr %0" : : "m" (*&new_mxcsr)); \ -+ /* Only raise exception if there are any that are not masked. */ \ -+ if (~(mxcsr >> 7) & mxcsr & FE_ALL_EXCEPT) \ -+ feraiseexcept (mxcsr & FE_ALL_EXCEPT); \ - } while (0) - #undef libc_feupdateenvf - #define libc_feupdateenvf(e) libc_feupdateenv (e) diff --git a/src/patches/glibc/glibc-rh947882.patch b/src/patches/glibc/glibc-rh947882.patch deleted file mode 100644 index 6d10982..0000000 --- a/src/patches/glibc/glibc-rh947882.patch +++ /dev/null @@ -1,63 +0,0 @@ -# -# Backport from upstream: -# -# From 1cef1b19089528db11f221e938f60b9b048945d7 Mon Sep 17 00:00:00 2001 -# From: Andreas Schwab schwab@suse.de -# Date: Thu, 21 Mar 2013 15:50:27 +0100 -# Subject: [PATCH] Fix stack overflow in getaddrinfo with many results -# -# --- -# ChangeLog | 6 ++++++ -# NEWS | 5 ++++- -# sysdeps/posix/getaddrinfo.c | 23 +++++++++++++++++++++-- -# 3 files changed, 31 insertions(+), 3 deletions(-) -# -# 2013-04-03 Andreas Schwab schwab@suse.de -# -# [BZ #15330] -# * sysdeps/posix/getaddrinfo.c (getaddrinfo): Allocate results and -# order arrays from heap if bigger than alloca cutoff. -# -diff -urN glibc-2.12-2-gc4ccff1.orig/sysdeps/posix/getaddrinfo.c glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/posix/getaddrinfo.c 2013-07-24 20:40:37.601887975 -0400 -+++ glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c 2013-07-24 20:54:32.722447705 -0400 -@@ -2386,11 +2386,27 @@ - __typeof (once) old_once = once; - __libc_once (once, gaiconf_init); - /* Sort results according to RFC 3484. */ -- struct sort_result results[nresults]; -- size_t order[nresults]; -+ struct sort_result *results; -+ size_t *order; - struct addrinfo *q; - struct addrinfo *last = NULL; - char *canonname = NULL; -+ bool malloc_results; -+ -+ malloc_results -+ = !__libc_use_alloca (nresults * (sizeof (*results) + sizeof (*order))); -+ if (malloc_results) -+ { -+ results = malloc (nresults * (sizeof (*results) + sizeof (*order))); -+ if (results == NULL) -+ { -+ free (in6ai); -+ return EAI_MEMORY; -+ } -+ } -+ else -+ results = alloca (nresults * (sizeof (*results) + sizeof (*order))); -+ order = (size_t *) (results + nresults); - - /* If we have information about deprecated and temporary addresses - sort the array now. */ -@@ -2557,6 +2573,9 @@ - - /* Fill in the canonical name into the new first entry. */ - p->ai_canonname = canonname; -+ -+ if (malloc_results) -+ free (results); - } - - free (in6ai); diff --git a/src/patches/glibc/glibc-rh952422.patch b/src/patches/glibc/glibc-rh952422.patch deleted file mode 100644 index c73bf52..0000000 --- a/src/patches/glibc/glibc-rh952422.patch +++ /dev/null @@ -1,127 +0,0 @@ -diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c -index af454b6..249bd19 100644 ---- a/sysdeps/unix/sysv/linux/getsysstats.c -+++ b/sysdeps/unix/sysv/linux/getsysstats.c -@@ -35,6 +34,7 @@ - - #include <atomic.h> - #include <not-cancel.h> -+#include <kernel-features.h> - - - /* How we can determine the number of available processors depends on -@@ -49,8 +49,6 @@ - But not all systems have support for the /proc filesystem. If it - is not available we simply return 1 since there is no way. */ - --#include <not-cancel.h> -- - - /* Other architectures use different formats for /proc/cpuinfo. This - provides a hook for alternative parsers. */ -@@ -128,6 +126,15 @@ next_line (int fd, char *const buffer, char **cp, char **re, - int - __get_nprocs () - { -+ static int cached_result; -+ static time_t timestamp; -+ -+ time_t now = time (NULL); -+ time_t prev = timestamp; -+ atomic_read_barrier (); -+ if (now == prev) -+ return cached_result; -+ - /* XXX Here will come a test for the new system call. */ - - const size_t buffer_size = __libc_use_alloca (8192) ? 8192 : 512; -@@ -135,20 +142,65 @@ __get_nprocs () - char *buffer_end = buffer + buffer_size; - char *cp = buffer_end; - char *re = buffer_end; -- int result = 1; - - #ifdef O_CLOEXEC - const int flags = O_RDONLY | O_CLOEXEC; - #else - const int flags = O_RDONLY; - #endif -+ int fd = open_not_cancel_2 ("/sys/devices/system/cpu/online", flags); -+ char *l; -+ int result = 0; -+ if (fd != -1) -+ { -+ l = next_line (fd, buffer, &cp, &re, buffer_end); -+ if (l != NULL) -+ do -+ { -+ char *endp; -+ unsigned long int n = strtoul (l, &endp, 10); -+ if (l == endp) -+ { -+ result = 0; -+ break; -+ } -+ -+ unsigned long int m = n; -+ if (*endp == '-') -+ { -+ l = endp + 1; -+ m = strtoul (l, &endp, 10); -+ if (l == endp) -+ { -+ result = 0; -+ break; -+ } -+ } -+ -+ result += m - n + 1; -+ -+ l = endp; -+ while (l < re && isspace (*l)) -+ ++l; -+ } -+ while (l < re); -+ -+ close_not_cancel_no_status (fd); -+ -+ if (result > 0) -+ goto out; -+ } -+ -+ cp = buffer_end; -+ re = buffer_end; -+ result = 1; -+ - /* The /proc/stat format is more uniform, use it by default. */ -- int fd = open_not_cancel_2 ("/proc/stat", flags); -+ fd = open_not_cancel_2 ("/proc/stat", flags); - if (fd != -1) - { - result = 0; - -- char *l; - while ((l = next_line (fd, buffer, &cp, &re, buffer_end)) != NULL) - /* The current format of /proc/stat has all the cpu* entries - at the front. We assume here that stays this way. */ -@@ -169,6 +221,11 @@ __get_nprocs () - } - } - -+ out: -+ cached_result = result; -+ atomic_write_barrier (); -+ timestamp = now; -+ - return result; - } - weak_alias (__get_nprocs, get_nprocs) -@@ -236,7 +293,7 @@ phys_pages_info (const char *format) - long int result = -1; - - /* If we haven't found an appropriate entry return 1. */ -- FILE *fp = fopen ("/proc/meminfo", "rc"); -+ FILE *fp = fopen ("/proc/meminfo", "rce"); - if (fp != NULL) - { - /* No threads use this stream. */ diff --git a/src/patches/glibc/glibc-rh966775.patch b/src/patches/glibc/glibc-rh966775.patch deleted file mode 100644 index 32a0f21..0000000 --- a/src/patches/glibc/glibc-rh966775.patch +++ /dev/null @@ -1,177 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/math/math_private.h glibc-2.12-2-gc4ccff1.new/math/math_private.h ---- glibc-2.12-2-gc4ccff1/math/math_private.h 2013-06-07 08:35:52.785442441 -0400 -+++ glibc-2.12-2-gc4ccff1.new/math/math_private.h 2013-06-07 08:29:35.621042340 -0400 -@@ -394,4 +394,31 @@ extern void __docos (double __x, double - #define libc_feupdateenvf(e) (void) feupdateenv (e) - #define libc_feupdateenvl(e) (void) feupdateenv (e) - -+/* Save and set the rounding mode. The use of fenv_t to store the old mode -+ allows a target-specific version of this function to avoid converting the -+ rounding mode from the fpu format. By default we have no choice but to -+ manipulate the entire env. */ -+ -+#ifndef libc_feholdsetround -+# define libc_feholdsetround(e, r, c) libc_feholdexcept_setround(e, r) -+#endif -+#ifndef libc_feholdsetroundf -+# define libc_feholdsetroundf(e, r, c) libc_feholdexcept_setroundf(e, r) -+#endif -+#ifndef libc_feholdsetroundl -+# define libc_feholdsetroundl(e, r, c) libc_feholdexcept_setroundl(e, r) -+#endif -+ -+/* ... and the reverse. */ -+ -+#ifndef libc_feresetround -+# define libc_feresetround(e, c) libc_feupdateenv(e) -+#endif -+#ifndef libc_feresetroundf -+# define libc_feresetroundf(e, c) libc_feupdateenvf(e) -+#endif -+#ifndef libc_feresetroundl -+# define libc_feresetroundl(e, c) libc_feupdateenvl(e) -+#endif -+ - #endif /* _MATH_PRIVATE_H_ */ -diff -pruN glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/e_exp.c glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/e_exp.c ---- glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/e_exp.c 2013-06-07 08:35:52.785442441 -0400 -+++ glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/e_exp.c 2013-06-07 08:30:21.976222459 -0400 -@@ -57,7 +57,8 @@ double __ieee754_exp(double x) { - fenv_t env; - double retval; - -- libc_feholdexcept_setround (&env, FE_TONEAREST); -+ int changed; -+ libc_feholdsetround (&env, FE_TONEAREST, changed); - - junk1.x = x; - m = junk1.i[HIGH_HALF]; -@@ -152,7 +153,7 @@ double __ieee754_exp(double x) { - else { retval = __slowexp(x); goto ret; } - } - ret: -- libc_feupdateenv (&env); -+ libc_feresetround (&env, changed); - return retval; - } - -diff -pruN glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/e_pow.c glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/e_pow.c ---- glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/e_pow.c 2013-06-07 08:35:52.785442441 -0400 -+++ glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/e_pow.c 2013-06-07 08:31:00.294939087 -0400 -@@ -83,7 +83,8 @@ double __ieee754_pow(double x, double y) - fenv_t env; - double retval; - -- libc_feholdexcept_setround (&env, FE_TONEAREST); -+ int changed; -+ libc_feholdsetround (&env, FE_TONEAREST, changed); - - z = log1(x,&aa,&error); /* x^y =e^(y log (X)) */ - t = y*134217729.0; -@@ -100,7 +101,7 @@ double __ieee754_pow(double x, double y) - t = __exp1(a1,a2,1.9e16*error); /* return -10 or 0 if wasn't computed exactly */ - retval = (t>0)?t:power1(x,y); - -- libc_feupdateenv (&env); -+ libc_feresetround (&env, changed); - return retval; - } - -diff -pruN glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/s_sin.c glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/s_sin.c ---- glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/s_sin.c 2013-06-07 08:35:52.786442462 -0400 -+++ glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/s_sin.c 2013-06-07 08:32:08.254822633 -0400 -@@ -101,7 +101,8 @@ double __sin(double x){ - fenv_t env; - double retval = 0; - -- libc_feholdexcept_setround (&env, FE_TONEAREST); -+ int changed; -+ libc_feholdsetround (&env, FE_TONEAREST, changed); - - u.x = x; - m = u.i[HIGH_HALF]; -@@ -355,7 +356,7 @@ double __sin(double x){ - } - - ret: -- libc_feupdateenv (&env); -+ libc_feresetround (&env, changed); - return retval; - } - -@@ -374,7 +375,8 @@ double __cos(double x) - fenv_t env; - double retval = 0; - -- libc_feholdexcept_setround (&env, FE_TONEAREST); -+ int changed; -+ libc_feholdsetround (&env, FE_TONEAREST, changed); - - u.x = x; - m = u.i[HIGH_HALF]; -@@ -623,7 +625,7 @@ double __cos(double x) - } - - ret: -- libc_feupdateenv (&env); -+ libc_feresetround (&env, changed); - return retval; - } - -diff -pruN glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/s_tan.c glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/s_tan.c ---- glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/s_tan.c 2013-06-07 08:35:52.786442462 -0400 -+++ glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/s_tan.c 2013-06-07 08:32:39.736162619 -0400 -@@ -66,7 +66,8 @@ double tan(double x) { - int __branred(double, double *, double *); - int __mpranred(double, mp_no *, int); - -- libc_feholdexcept_setround (&env, FE_TONEAREST); -+ int changed; -+ libc_feholdsetround (&env, FE_TONEAREST, changed); - - /* x=+-INF, x=NaN */ - num.d = x; ux = num.i[HIGH_HALF]; -@@ -495,7 +496,7 @@ double tan(double x) { - goto ret; - - ret: -- libc_feupdateenv (&env); -+ libc_feresetround (&env, changed); - return retval; - } - -diff -pruN glibc-2.12-2-gc4ccff1/sysdeps/x86_64/fpu/math_private.h glibc-2.12-2-gc4ccff1.new/sysdeps/x86_64/fpu/math_private.h ---- glibc-2.12-2-gc4ccff1/sysdeps/x86_64/fpu/math_private.h 2013-06-07 08:35:52.787442488 -0400 -+++ glibc-2.12-2-gc4ccff1.new/sysdeps/x86_64/fpu/math_private.h 2013-06-07 08:34:35.370109759 -0400 -@@ -139,3 +139,31 @@ do { \ - #undef libc_feupdateenvf - #define libc_feupdateenvf(e) libc_feupdateenv (e) - // #define libc_feupdateenvl(e) (void) feupdateenv (e) -+ -+#undef libc_feholdsetround -+#define libc_feholdsetround(e, r, c) \ -+({ \ -+ unsigned int mxcsr, new_mxcsr; \ -+ asm ("stmxcsr %0" : "=m" (*&mxcsr)); \ -+ new_mxcsr = (mxcsr & ~0x6000) | ((r) << 3); \ -+ if (__builtin_expect (new_mxcsr != mxcsr, 0)) \ -+ { \ -+ (e)->__mxcsr = mxcsr; \ -+ asm volatile ("ldmxcsr %0" : : "m" (*&new_mxcsr)); \ -+ c = 1; \ -+ } \ -+ else \ -+ c = 0; \ -+}) -+ -+#undef libc_feresetround -+#define libc_feresetround(e, c) \ -+({ \ -+ if (__builtin_expect (c, 0)) \ -+ { \ -+ unsigned int mxcsr; \ -+ asm ("stmxcsr %0" : "=m" (*&mxcsr)); \ -+ mxcsr = (mxcsr & ~0x6000) | ((e)->__mxcsr & 0x6000); \ -+ asm volatile ("ldmxcsr %0" : : "m" (*&mxcsr)); \ -+ } \ -+}) diff --git a/src/patches/glibc/glibc-rh966778.patch b/src/patches/glibc/glibc-rh966778.patch deleted file mode 100644 index d8fd3fa..0000000 --- a/src/patches/glibc/glibc-rh966778.patch +++ /dev/null @@ -1,54 +0,0 @@ -commit 3056dcdb783a177158a5617657d1a33f872358d6 -Author: Ulrich Drepper drepper@redhat.com -Date: Mon Nov 22 11:11:24 2010 -0500 - - Fix multiple nss_compat initgroups() bugs - - Compat initgroups() is completely broken; the code will always set - skip_initgroups_dyn to true, so initgroups() will never be actually - called, but due to the nature of the code, setgrent() won't be called - either - thus, subsequent invocations of initgroups() will not return - the NIS group list anymore. - - This is a simple patch that makes sure skip_initgroups_dyn is set only - in case initgroups is not available; it also attempts to handle the - unavailability of other NSS interfaces better. - - Conflicts: - - ChangeLog - -diff --git a/nis/nss_compat/compat-initgroups.c b/nis/nss_compat/compat-initgroups.c -index 07a3b92..de8d95c 100644 ---- a/nis/nss_compat/compat-initgroups.c -+++ b/nis/nss_compat/compat-initgroups.c -@@ -474,18 +474,21 @@ internal_getgrent_r (ent_t *ent, char *buffer, size_t buflen, const char *user, - /* If the selected module does not support getgrent_r or - initgroups_dyn, abort. We cannot find the needed group - entries. */ -- if (nss_getgrent_r == NULL && nss_initgroups_dyn == NULL) -+ if (nss_initgroups_dyn == NULL || nss_getgrgid_r == NULL) -+ { -+ if (nss_setgrent != NULL) -+ { -+ nss_setgrent (1); -+ ent->need_endgrent = true; -+ } -+ ent->skip_initgroups_dyn = true; -+ } -+ -+ if (ent->skip_initgroups_dyn && nss_getgrent_r == NULL) - return NSS_STATUS_UNAVAIL; - - ent->files = false; - -- if (nss_initgroups_dyn == NULL && nss_setgrent != NULL) -- { -- nss_setgrent (1); -- ent->need_endgrent = true; -- } -- ent->skip_initgroups_dyn = true; -- - return getgrent_next_nss (ent, buffer, buflen, user, group, - start, size, groupsp, limit, errnop); - } diff --git a/src/patches/glibc/glibc-rh970090.patch b/src/patches/glibc/glibc-rh970090.patch deleted file mode 100644 index 6010624..0000000 --- a/src/patches/glibc/glibc-rh970090.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -pruN glibc-2.18/nscd/aicache.c glibc-2.18.new/nscd/aicache.c ---- glibc-2.18/nscd/aicache.c 2013-08-11 04:22:55.000000000 +0530 -+++ glibc-2.18.new/nscd/aicache.c 2013-08-26 11:10:25.843470413 +0530 -@@ -25,6 +25,7 @@ - #include <time.h> - #include <unistd.h> - #include <sys/mman.h> -+#include <resolv/res_hconf.h> - - #include "dbg_log.h" - #include "nscd.h" -@@ -100,8 +101,11 @@ addhstaiX (struct database_dyn *db, int - no_more = __nss_database_lookup ("hosts", NULL, - "dns [!UNAVAIL=return] files", &nip); - -+ /* Initialize configurations. */ -+ if (__builtin_expect (!_res_hconf.initialized, 0)) -+ _res_hconf_init (); - if (__res_maybe_init (&_res, 0) == -1) -- no_more = 1; -+ no_more = 1; - - /* If we are looking for both IPv4 and IPv6 address we don't want - the lookup functions to automatically promote IPv4 addresses to diff --git a/src/patches/glibc/glibc-rh970776.patch b/src/patches/glibc/glibc-rh970776.patch deleted file mode 100644 index ec2f2a6..0000000 --- a/src/patches/glibc/glibc-rh970776.patch +++ /dev/null @@ -1,279 +0,0 @@ -Patch attached to bugzilla by Ankit Patel, from Red Hat translation team. - -Index: glibc-2.12-2-gc4ccff1/po/de.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/de.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/de.po 2013-07-23 20:35:03.213177408 -0300 -@@ -2396,14 +2396,14 @@ msgstr "Zu viele Benutzer" - msgid "Disk quota exceeded" - msgstr "Der zugewiesene Plattenplatz (Quota) ist ÃŒberschritten" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. --#: stdio-common/../sysdeps/gnu/errlist.c:779 --#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181 --msgid "Stale NFS file handle" --msgstr "Veraltete NFS-Dateizugriffsnummer" -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. -+#: sysdeps/gnu/errlist.c:787 -+msgid "Stale file handle" -+msgstr "Veraltetes Datei-Handle" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that - #. TRANS already specifies an NFS-mounted file. -Index: glibc-2.12-2-gc4ccff1/po/es.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/es.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/es.po 2013-07-23 20:35:03.243175029 -0300 -@@ -2533,14 +2533,14 @@ msgstr "Se ha excedido la cuota de disco - # Muy bien, he buscado "stale" y por lo que parece es algo que "caduca" - # o que "vence", como las letras comerciales. Me he decidido por "en desuso". - # --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. --#: stdio-common/../sysdeps/gnu/errlist.c:779 --#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181 --msgid "Stale NFS file handle" --msgstr "`handle' de fichero NFS en desuso" -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. -+#: sysdeps/gnu/errlist.c:787 -+msgid "Stale file handle" -+msgstr "Identificador de archivos obsoletos" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that - #. TRANS already specifies an NFS-mounted file. -Index: glibc-2.12-2-gc4ccff1/po/fr.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/fr.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/fr.po 2013-07-23 20:35:03.250174474 -0300 -@@ -5802,13 +5802,14 @@ msgstr "Trop d'usagers" - msgid "Disk quota exceeded" - msgstr "Débordement du quota d'espace disque" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. - #: sysdeps/gnu/errlist.c:787 --msgid "Stale NFS file handle" --msgstr "Panne d'accÚs au fichier NFS" -+msgid "Stale file handle" -+msgstr "Gestionnaire de fichiers périmés" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that - #. TRANS already specifies an NFS-mounted file. -Index: glibc-2.12-2-gc4ccff1/po/it.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/it.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/it.po 2013-07-23 20:35:03.253174237 -0300 -@@ -1662,6 +1662,15 @@ msgstr "Superata la quota di disco" - msgid "Disk quota exceeded" - msgstr "Superata la quota di disco" - -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. -+#: sysdeps/gnu/errlist.c:787 -+msgid "Stale file handle" -+msgstr "Gestione file obsoleti" -+ - #: nscd/nscd.c:86 - msgid "Do not fork and display messages on the current tty" - msgstr "Non fa fork e stampa i messaggi sul tty corrente" -Index: glibc-2.12-2-gc4ccff1/po/ja.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/ja.po 2013-07-23 04:01:34.628665260 -0300 -+++ glibc-2.12-2-gc4ccff1/po/ja.po 2013-07-23 20:35:03.304170193 -0300 -@@ -2333,14 +2333,14 @@ msgstr "¥æ¡Œ¥¶€¬Â¿€¹€®€Þ€¹" - msgid "Disk quota exceeded" - msgstr "¥Ç¥£¥¹¥¯»ÈÍÑÎÌÀ©žÂ€òĶ²á€·€Þ€·€¿" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. --#: stdio-common/../sysdeps/gnu/errlist.c:779 --#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181 --msgid "Stale NFS file handle" --msgstr "ŒÂžúÀ€Î€Ê€€NFS¥Õ¥¡¥€¥ë¥Ï¥ó¥É¥ë€Ç€¹" -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. -+#: sysdeps/gnu/errlist.c:787 -+msgid "Stale file handle" -+msgstr "žÅ€€¥Õ¥¡¥€¥ë¥Ï¥ó¥É¥ë€Ç€¹" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that - #. TRANS already specifies an NFS-mounted file. -Index: glibc-2.12-2-gc4ccff1/po/ko.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/ko.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/ko.po 2013-07-23 20:35:03.311169638 -0300 -@@ -5803,13 +5803,14 @@ msgstr "ì¬ì©ìê° ë묎 ë§ì" - msgid "Disk quota exceeded" - msgstr "ëì€í¬ í ë¹ëìŽ ìŽê³Œëš" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. - #: sysdeps/gnu/errlist.c:787 --msgid "Stale NFS file handle" --msgstr "ëìŽì§ NFS íìŒ ížë€" -+msgid "Stale file handle" -+msgstr "ì€ëë íìŒ ì²ëŠ¬" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that - #. TRANS already specifies an NFS-mounted file. -Index: glibc-2.12-2-gc4ccff1/po/libc.pot -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/libc.pot 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/libc.pot 2013-07-23 20:35:03.326168449 -0300 -@@ -5696,12 +5696,13 @@ msgstr "" - msgid "Disk quota exceeded" - msgstr "" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. - #: sysdeps/gnu/errlist.c:787 --msgid "Stale NFS file handle" -+msgid "Stale file handle" - msgstr "" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that -Index: glibc-2.12-2-gc4ccff1/po/pt_BR.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/pt_BR.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/pt_BR.po 2013-07-23 20:35:03.331168053 -0300 -@@ -2287,13 +2287,14 @@ msgstr "Erro de Srmount" - msgid "Stack fault" - msgstr "Falha de pilha" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. --#: stdio-common/../sysdeps/gnu/errlist.c:506 --msgid "Stale NFS file handle" --msgstr "Manipulador de arquivo NFS corrompido" -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. -+#: sysdeps/gnu/errlist.c:787 -+msgid "Stale file handle" -+msgstr "Manipulador de arquivo obsoleto" - - #: nscd/nscd.c:81 - msgid "Start NUMBER threads" -Index: glibc-2.12-2-gc4ccff1/po/ru.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/ru.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/ru.po 2013-07-23 20:35:03.338167498 -0300 -@@ -5798,13 +5798,14 @@ msgstr "СлОÑкПЌ ЌМПгП пПл - msgid "Disk quota exceeded" - msgstr "ÐÑевÑÑеМа ЎОÑÐºÐŸÐ²Ð°Ñ ÐºÐ²ÐŸÑа" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. - #: sysdeps/gnu/errlist.c:787 --msgid "Stale NFS file handle" --msgstr "УÑÑаÑевÑОй Ñ ÑМЎл Ñайла NFS" -+msgid "Stale file handle" -+msgstr "УÑÑаÑевÑОй ЎеÑкÑОпÑÐŸÑ Ñайла" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that - #. TRANS already specifies an NFS-mounted file. -Index: glibc-2.12-2-gc4ccff1/po/zh_CN.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/zh_CN.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/zh_CN.po 2013-07-23 20:35:03.344167022 -0300 -@@ -5519,13 +5519,14 @@ msgstr "çšæ·è¿å€" - msgid "Disk quota exceeded" - msgstr "è¶ åºç£çéé¢" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. - #: sysdeps/gnu/errlist.c:787 --msgid "Stale NFS file handle" --msgstr "" -+msgid "Stale file handle" -+msgstr "倱ææ件å¥æ" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that - #. TRANS already specifies an NFS-mounted file. -Index: glibc-2.12-2-gc4ccff1/po/zh_TW.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/zh_TW.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/zh_TW.po 2013-07-23 20:35:03.349166626 -0300 -@@ -2333,14 +2333,14 @@ msgstr "倪å€äœ¿çšè " - msgid "Disk quota exceeded" - msgstr "ç¡¬ç¢ quota 滿äº" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. --#: stdio-common/../sysdeps/gnu/errlist.c:779 --#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181 --msgid "Stale NFS file handle" --msgstr "éèç NFS æªæ¡æ§å¶ç¢Œ" -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. -+#: sysdeps/gnu/errlist.c:787 -+msgid "Stale file handle" -+msgstr "éèçæªæ¡èç" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that - #. TRANS already specifies an NFS-mounted file. diff --git a/src/patches/glibc/glibc-rh978098.patch b/src/patches/glibc/glibc-rh978098.patch deleted file mode 100644 index 0b53dcc..0000000 --- a/src/patches/glibc/glibc-rh978098.patch +++ /dev/null @@ -1,124 +0,0 @@ -# -# Based on commit e6c61494125126d2ba77e5d99f83887a2ed49783. -# -# 2011-04-10 Ulrich Drepper drepper@gmail.com -# -# [BZ #12650] -# * sysdeps/i386/dl-tls.h: Define TLS_DTV_UNALLOCATED. -# * sysdeps/ia64/dl-tls.h: Likewise. -# * sysdeps/powerpc/dl-tls.h: Likewise. -# * sysdeps/s390/dl-tls.h: Likewise. -# * sysdeps/sh/dl-tls.h: Likewise. -# * sysdeps/sparc/dl-tls.h: Likewise. -# * sysdeps/x86_64/dl-tls.h: Likewise. -# * elf/dl-tls.c: Don't define TLS_DTV_UNALLOCATED here. -# -diff -urN glibc-2.12-2-gc4ccff1/elf/dl-tls.c glibc-2.12-2-gc4ccff1.mod/elf/dl-tls.c ---- glibc-2.12-2-gc4ccff1/elf/dl-tls.c 2015-02-18 05:16:56.087096028 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/elf/dl-tls.c 2015-02-18 05:21:04.018424445 -0500 -@@ -33,9 +33,6 @@ - to allow dynamic loading of modules defining IE-model TLS data. */ - #define TLS_STATIC_SURPLUS 64 + DL_NNS * 100 - --/* Value used for dtv entries for which the allocation is delayed. */ --#define TLS_DTV_UNALLOCATED ((void *) -1l) -- - - /* Out-of-memory handler. */ - #ifdef SHARED -diff -urN glibc-2.12-2-gc4ccff1/nptl/allocatestack.c glibc-2.12-2-gc4ccff1.mod/nptl/allocatestack.c ---- glibc-2.12-2-gc4ccff1/nptl/allocatestack.c 2015-02-18 05:16:56.101095594 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/nptl/allocatestack.c 2015-02-18 05:21:04.019424414 -0500 -@@ -26,6 +26,7 @@ - #include <sys/mman.h> - #include <sys/param.h> - #include <dl-sysdep.h> -+#include <dl-tls.h> - #include <tls.h> - #include <list.h> - #include <lowlevellock.h> -@@ -242,6 +243,10 @@ - - /* Clear the DTV. */ - dtv_t *dtv = GET_DTV (TLS_TPADJ (result)); -+ for (size_t cnt = 0; cnt < dtv[-1].counter; ++cnt) -+ if (! dtv[1 + cnt].pointer.is_static -+ && dtv[1 + cnt].pointer.val != TLS_DTV_UNALLOCATED) -+ free (dtv[1 + cnt].pointer.val); - memset (dtv, '\0', (dtv[-1].counter + 1) * sizeof (dtv_t)); - - /* Re-initialize the TLS. */ -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/i386/dl-tls.h glibc-2.12-2-gc4ccff1.mod/sysdeps/i386/dl-tls.h ---- glibc-2.12-2-gc4ccff1/sysdeps/i386/dl-tls.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/i386/dl-tls.h 2015-02-18 05:21:04.019424414 -0500 -@@ -58,3 +58,6 @@ - - # endif - #endif -+ -+/* Value used for dtv entries for which the allocation is delayed. */ -+#define TLS_DTV_UNALLOCATED ((void *) -1l) -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/ia64/dl-tls.h glibc-2.12-2-gc4ccff1.mod/sysdeps/ia64/dl-tls.h ---- glibc-2.12-2-gc4ccff1/sysdeps/ia64/dl-tls.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/ia64/dl-tls.h 2015-02-18 05:21:04.019424414 -0500 -@@ -28,3 +28,6 @@ - #define DONT_USE_TLS_INDEX 1 - - extern void *__tls_get_addr (size_t m, size_t offset); -+ -+/* Value used for dtv entries for which the allocation is delayed. */ -+#define TLS_DTV_UNALLOCATED ((void *) -1l) -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/powerpc/dl-tls.h glibc-2.12-2-gc4ccff1.mod/sysdeps/powerpc/dl-tls.h ---- glibc-2.12-2-gc4ccff1/sysdeps/powerpc/dl-tls.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/powerpc/dl-tls.h 2015-02-18 05:21:04.019424414 -0500 -@@ -47,3 +47,6 @@ - # define GET_ADDR_OFFSET (ti->ti_offset + TLS_DTV_OFFSET) - # define __TLS_GET_ADDR(__ti) (__tls_get_addr (__ti) - TLS_DTV_OFFSET) - #endif -+ -+/* Value used for dtv entries for which the allocation is delayed. */ -+#define TLS_DTV_UNALLOCATED ((void *) -1l) -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/s390/dl-tls.h glibc-2.12-2-gc4ccff1.mod/sysdeps/s390/dl-tls.h ---- glibc-2.12-2-gc4ccff1/sysdeps/s390/dl-tls.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/s390/dl-tls.h 2015-02-18 05:21:04.019424414 -0500 -@@ -72,6 +72,9 @@ - # define __TLS_GET_ADDR(__ti) \ - ({ extern char _GLOBAL_OFFSET_TABLE_[] attribute_hidden; \ - (void *) __tls_get_offset ((char *) (__ti) - _GLOBAL_OFFSET_TABLE_) \ -- + (unsigned long) __builtin_thread_pointer (); }) -+ + (unsigned long) __builtin_thread_pointer (); }) - - #endif -+ -+/* Value used for dtv entries for which the allocation is delayed. */ -+#define TLS_DTV_UNALLOCATED ((void *) -1l) -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/sh/dl-tls.h glibc-2.12-2-gc4ccff1.mod/sysdeps/sh/dl-tls.h ---- glibc-2.12-2-gc4ccff1/sysdeps/sh/dl-tls.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/sh/dl-tls.h 2015-02-18 05:21:04.019424414 -0500 -@@ -27,3 +27,6 @@ - - - extern void *__tls_get_addr (tls_index *ti); -+ -+/* Value used for dtv entries for which the allocation is delayed. */ -+#define TLS_DTV_UNALLOCATED ((void *) -1l) -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/sparc/dl-tls.h glibc-2.12-2-gc4ccff1.mod/sysdeps/sparc/dl-tls.h ---- glibc-2.12-2-gc4ccff1/sysdeps/sparc/dl-tls.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/sparc/dl-tls.h 2015-02-18 05:21:04.019424414 -0500 -@@ -27,3 +27,6 @@ - - - extern void *__tls_get_addr (tls_index *ti); -+ -+/* Value used for dtv entries for which the allocation is delayed. */ -+#define TLS_DTV_UNALLOCATED ((void *) -1l) -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-tls.h glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/dl-tls.h ---- glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-tls.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/dl-tls.h 2015-02-18 05:21:04.019424414 -0500 -@@ -27,3 +27,6 @@ - - - extern void *__tls_get_addr (tls_index *ti); -+ -+/* Value used for dtv entries for which the allocation is delayed. */ -+#define TLS_DTV_UNALLOCATED ((void *) -1l) diff --git a/src/patches/glibc/glibc-rh981942.patch b/src/patches/glibc/glibc-rh981942.patch deleted file mode 100644 index cbe1ab8..0000000 --- a/src/patches/glibc/glibc-rh981942.patch +++ /dev/null @@ -1,22 +0,0 @@ -commit 2e96f1c73b06e81da59ef7fffa426dc201875f31 -Author: Andreas Schwab schwab@redhat.com -Date: Thu Aug 4 15:42:10 2011 -0400 - - Fix encoding name for IDN in getaddrinfo - -diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c -index 6d574c5..a5aafe9 100644 ---- a/sysdeps/posix/getaddrinfo.c -+++ b/sysdeps/posix/getaddrinfo.c -@@ -432,7 +432,10 @@ gaih_inet (const char *name, const struct gaih_service *service, - /* In case the output string is the same as the input string - no new string has been allocated. */ - if (p != name) -- malloc_name = true; -+ { -+ name = p; -+ malloc_name = true; -+ } - } - #endif - diff --git a/src/patches/glibc/glibc-rh988931.patch b/src/patches/glibc/glibc-rh988931.patch deleted file mode 100644 index 38594a4..0000000 --- a/src/patches/glibc/glibc-rh988931.patch +++ /dev/null @@ -1,33 +0,0 @@ -commit e23fe25b33324a9ea992276c1a4f04127bf9ba4b -Author: Andreas Schwab schwab@redhat.com -Date: Sun Feb 20 07:24:56 2011 -0500 - - Move setting variable in relro data earlier in ld.so. - -diff --git a/elf/rtld.c b/elf/rtld.c -index 8510380..174954b 100644 ---- a/elf/rtld.c -+++ b/elf/rtld.c -@@ -2179,6 +2179,10 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", - we need it in the memory handling later. */ - GLRO(dl_initial_searchlist) = *GL(dl_ns)[LM_ID_BASE]._ns_main_searchlist; - -+ /* Remember the last search directory added at startup, now that -+ malloc will no longer be the one from dl-minimal.c. */ -+ GLRO(dl_init_all_dirs) = GL(dl_all_dirs); -+ - if (prelinked) - { - if (main_map->l_info [ADDRIDX (DT_GNU_CONFLICT)] != NULL) -@@ -2298,9 +2302,8 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", - lossage); - } - -- /* Remember the last search directory added at startup, now that -- malloc will no longer be the one from dl-minimal.c. */ -- GLRO(dl_init_all_dirs) = GL(dl_all_dirs); -+ /* Make sure no new search directories have been added. */ -+ assert (GLRO(dl_init_all_dirs) == GL(dl_all_dirs)); - - if (! prelinked && rtld_multiple_ref) - { diff --git a/src/patches/glibc/glibc-rh995972.patch b/src/patches/glibc/glibc-rh995972.patch deleted file mode 100644 index 0178bca..0000000 --- a/src/patches/glibc/glibc-rh995972.patch +++ /dev/null @@ -1,246 +0,0 @@ -commit d26dfc60edc8c6dd160eefff16a734152a835ca0 -Author: Martin von Gagern Martin.vGagern@gmx.net -Date: Sat May 14 21:25:43 2011 -0400 - - Fix handling of static TLS in dlopen'ed objects - - When dynamically loading a library along with several dependencies, calls to - _dl_add_to_slotinfo and _dl_update_slotinfo can become intermixed. As a - consequence, _dl_update_slotinfo will update the generation counter of the dtv - although not all of the slots belonging to that generation have been added. - Subsequent calls to _dl_add_to_slotinfo will add more slots to the same - generation, for which no storage will be allocated, as the dtv generation - checks will claim no work is necessary. This will lead to uninitialized dtv - entries and will likely cause a SIGSEGV when thread local variables are - accessed. - -diff --git a/elf/Makefile b/elf/Makefile -index 8d9657d..6efb86c 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -76,6 +76,7 @@ distribute := rtld-Rules \ - tst-tlsmod12.c tst-tls10.h tst-alignmod.c tst-alignmod2.c \ - circlemod1.c circlemod1a.c circlemod2.c circlemod2a.c \ - circlemod3.c circlemod3a.c nodlopenmod2.c \ -+ tst-tls19mod1.c tst-tls19mod2.c tst-tls19mod3.c \ - tls-macros.h \ - reldep8mod1.c reldep8mod2.c reldep8mod3.c \ - nodel2mod1.c nodel2mod2.c nodel2mod3.c \ -@@ -194,7 +195,7 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \ - restest2 next dblload dblunload reldep5 reldep6 reldep7 reldep8 \ - circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8 \ - tst-tls10 tst-tls11 tst-tls12 tst-tls13 tst-tls14 tst-tls15 \ -- tst-tls16 tst-tls17 tst-tls18 tst-tls-dlinfo \ -+ tst-tls16 tst-tls17 tst-tls18 tst-tls19 tst-tls-dlinfo \ - tst-align tst-align2 $(tests-execstack-$(have-z-execstack)) \ - tst-dlmodcount tst-dlopenrpath tst-deep1 \ - tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \ -@@ -240,6 +241,7 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ - $(patsubst %,tst-tlsmod17a%,$(tlsmod17a-suffixes)) \ - tst-tlsmod17b \ - $(patsubst %,tst-tlsmod18a%,$(tlsmod18a-suffixes)) \ -+ tst-tls19mod1 tst-tls19mod2 tst-tls19mod3 \ - circlemod1 circlemod1a circlemod2 circlemod2a \ - circlemod3 circlemod3a \ - reldep8mod1 reldep8mod2 reldep8mod3 \ -@@ -525,6 +527,8 @@ $(objpfx)tst-tlsmod13a.so: $(objpfx)tst-tlsmod13.so - # For tst-tls9-static, make sure the modules it dlopens have libc.so in DT_NEEDED - $(objpfx)tst-tlsmod5.so: $(common-objpfx)libc.so - $(objpfx)tst-tlsmod6.so: $(common-objpfx)libc.so -+$(objpfx)tst-tls19mod1.so: $(objpfx)tst-tls19mod2.so $(objpfx)tst-tls19mod3.so -+$(objpfx)tst-tls19mod3.so: $(objpfx)ld.so - $(objpfx)reldep8mod3.so: $(objpfx)reldep8mod1.so $(objpfx)reldep8mod2.so - $(objpfx)nodel2mod3.so: $(objpfx)nodel2mod1.so $(objpfx)nodel2mod2.so - $(objpfx)reldep9mod2.so: $(objpfx)reldep9mod1.so -@@ -822,6 +826,9 @@ $(patsubst %,$(objpfx)%.os,$(tlsmod18a-modules)): $(objpfx)tst-tlsmod18a%.os : t - $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ -DN=$* -DNOT_IN_libc=1 $< - $(patsubst %,$(objpfx)tst-tlsmod18a%.so,$(tlsmod18a-suffixes)): $(objpfx)tst-tlsmod18a%.so: $(objpfx)ld.so - -+$(objpfx)tst-tls19: $(libdl) -+$(objpfx)tst-tls19.out: $(objpfx)tst-tls19mod1.so -+ - CFLAGS-tst-align.c = $(stack-align-test-flags) - CFLAGS-tst-align2.c = $(stack-align-test-flags) - CFLAGS-tst-alignmod.c = $(stack-align-test-flags) -diff --git a/elf/dl-open.c b/elf/dl-open.c -index cf8e8cc..8d90b56 100644 ---- a/elf/dl-open.c -+++ b/elf/dl-open.c -@@ -347,6 +347,7 @@ dl_open_worker (void *a) - /* If the file is not loaded now as a dependency, add the search - list of the newly loaded object to the scope. */ - bool any_tls = false; -+ unsigned int first_static_tls = new->l_searchlist.r_nlist; - for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i) - { - struct link_map *imap = new->l_searchlist.r_list[i]; -@@ -425,30 +426,9 @@ dl_open_worker (void *a) - might have to increase its size. */ - _dl_add_to_slotinfo (imap); - -- if (imap->l_need_tls_init) -- { -- /* For static TLS we have to allocate the memory here -- and now. This includes allocating memory in the DTV. -- But we cannot change any DTV other than our own. So, -- if we cannot guarantee that there is room in the DTV -- we don't even try it and fail the load. -- -- XXX We could track the minimum DTV slots allocated in -- all threads. */ -- if (! RTLD_SINGLE_THREAD_P && imap->l_tls_modid > DTV_SURPLUS) -- _dl_signal_error (0, "dlopen", NULL, N_("\ --cannot load any more object with static TLS")); -- -- imap->l_need_tls_init = 0; --#ifdef SHARED -- /* Update the slot information data for at least the -- generation of the DSO we are allocating data for. */ -- _dl_update_slotinfo (imap->l_tls_modid); --#endif -- -- GL(dl_init_static_tls) (imap); -- assert (imap->l_need_tls_init == 0); -- } -+ if (imap->l_need_tls_init -+ && first_static_tls == new->l_searchlist.r_nlist) -+ first_static_tls = i; - - /* We have to bump the generation counter. */ - any_tls = true; -@@ -460,6 +440,40 @@ cannot load any more object with static TLS")); - _dl_fatal_printf (N_("\ - TLS generation counter wrapped! Please report this.")); - -+ /* We need a second pass for static tls data, because _dl_update_slotinfo -+ must not be run while calls to _dl_add_to_slotinfo are still pending. */ -+ for (unsigned int i = first_static_tls; i < new->l_searchlist.r_nlist; ++i) -+ { -+ struct link_map *imap = new->l_searchlist.r_list[i]; -+ -+ if (imap->l_need_tls_init -+ && ! imap->l_init_called -+ && imap->l_tls_blocksize > 0) -+ { -+ /* For static TLS we have to allocate the memory here and -+ now. This includes allocating memory in the DTV. But we -+ cannot change any DTV other than our own. So, if we -+ cannot guarantee that there is room in the DTV we don't -+ even try it and fail the load. -+ -+ XXX We could track the minimum DTV slots allocated in -+ all threads. */ -+ if (! RTLD_SINGLE_THREAD_P && imap->l_tls_modid > DTV_SURPLUS) -+ _dl_signal_error (0, "dlopen", NULL, N_("\ -+cannot load any more object with static TLS")); -+ -+ imap->l_need_tls_init = 0; -+#ifdef SHARED -+ /* Update the slot information data for at least the -+ generation of the DSO we are allocating data for. */ -+ _dl_update_slotinfo (imap->l_tls_modid); -+#endif -+ -+ GL(dl_init_static_tls) (imap); -+ assert (imap->l_need_tls_init == 0); -+ } -+ } -+ - /* Notify the debugger all new objects have been relocated. */ - if (relocation_in_progress) - LIBC_PROBE (rtld_reloc_complete, 3, args->nsid, r, new); -diff --git a/elf/tst-tls19.c b/elf/tst-tls19.c -new file mode 100644 -index 0000000..acbc1d6 ---- /dev/null -+++ b/elf/tst-tls19.c -@@ -0,0 +1,27 @@ -+// BZ 12453 -+#include <stdio.h> -+#include <dlfcn.h> -+ -+ -+static int -+do_test (void) -+{ -+ void* dl = dlopen ("tst-tls19mod1.so", RTLD_LAZY | RTLD_GLOBAL); -+ if (dl == NULL) -+ { -+ printf ("Error loading tst-tls19mod1.so: %s\n", dlerror ()); -+ return 1; -+ } -+ -+ int (*fn) (void) = dlsym (dl, "foo"); -+ if (fn == NULL) -+ { -+ printf("Error obtaining symbol foo\n"); -+ return 1; -+ } -+ -+ return fn (); -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff --git a/elf/tst-tls19mod1.c b/elf/tst-tls19mod1.c -new file mode 100644 -index 0000000..2790097 ---- /dev/null -+++ b/elf/tst-tls19mod1.c -@@ -0,0 +1,15 @@ -+#include <stdio.h> -+ -+extern int bar (void); -+extern int baz (void); -+ -+int -+foo (void) -+{ -+ int v1 = bar (); -+ int v2 = baz (); -+ -+ printf ("bar=%d, baz=%d\n", v1, v2); -+ -+ return v1 != 666 || v2 != 42; -+} -diff --git a/elf/tst-tls19mod2.c b/elf/tst-tls19mod2.c -new file mode 100644 -index 0000000..cae702f ---- /dev/null -+++ b/elf/tst-tls19mod2.c -@@ -0,0 +1,13 @@ -+static int __thread tbar __attribute__ ((tls_model ("initial-exec"))) = 666; -+ -+void -+setter (int a) -+{ -+ tbar = a; -+} -+ -+int -+bar (void) -+{ -+ return tbar; -+} -diff --git a/elf/tst-tls19mod3.c b/elf/tst-tls19mod3.c -new file mode 100644 -index 0000000..e7b2801 ---- /dev/null -+++ b/elf/tst-tls19mod3.c -@@ -0,0 +1,16 @@ -+#include <stdio.h> -+ -+static int __thread tbaz __attribute__ ((tls_model ("local-dynamic"))) = 42; -+ -+void -+setter2 (int a) -+{ -+ tbaz = a; -+} -+ -+int -+baz (void) -+{ -+ printf ("&tbaz=%p\n", &tbaz); -+ return tbaz; -+} diff --git a/src/patches/grub2-remove-gets.patch b/src/patches/grub2-remove-gets.patch new file mode 100644 index 0000000..0da71b3 --- /dev/null +++ b/src/patches/grub2-remove-gets.patch @@ -0,0 +1,21 @@ +ISO C11 removes the specification of gets() from the C language, eglibc 2.16+ removed it + +Signed-off-by: Khem Raj raj.khem@gmail.com +Signed-off-by: Thomas Petazzoni thomas.petazzoni@free-electrons.com + +Upstream-Status: Pending +Index: grub-1.99/grub-core/gnulib/stdio.in.h +=================================================================== +--- grub-1.99.orig/grub-core/gnulib/stdio.in.h 2010-12-01 06:45:43.000000000 -0800 ++++ grub-1.99/grub-core/gnulib/stdio.in.h 2012-07-04 12:25:02.057099107 -0700 +@@ -140,8 +140,10 @@ + /* It is very rare that the developer ever has full control of stdin, + so any use of gets warrants an unconditional warning. Assume it is + always declared, since it is required by C89. */ ++#if defined gets + #undef gets + _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); ++#endif + + #if @GNULIB_FOPEN@ + # if @REPLACE_FOPEN@ diff --git a/src/patches/openssl-1.0.2a-rpmbuild.patch b/src/patches/openssl-1.0.2a-rpmbuild.patch index 2f71f1d..db1460c 100644 --- a/src/patches/openssl-1.0.2a-rpmbuild.patch +++ b/src/patches/openssl-1.0.2a-rpmbuild.patch @@ -1,34 +1,78 @@ -diff -Nur openssl-1.0.2d/Configure openssl-1.0.2d.patched/Configure ---- openssl-1.0.2d/Configure 2015-07-09 11:57:15.000000000 +0000 -+++ openssl-1.0.2d.patched/Configure 2015-08-22 20:44:19.487000000 +0000 -@@ -365,7 +365,7 @@ +diff -up openssl-1.0.2e/Configure.rpmbuild openssl-1.0.2e/Configure +--- openssl-1.0.2e/Configure.rpmbuild 2015-12-03 15:04:23.000000000 +0100 ++++ openssl-1.0.2e/Configure 2015-12-04 13:20:22.996835604 +0100 +@@ -365,8 +365,8 @@ my %table=( #### # *-generic* is endian-neutral target, but ./config is free to # throw in -D[BL]_ENDIAN, whichever appropriate... -"linux-generic32","gcc:-O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)", -+"linux-generic32","gcc:$(CFLAGS) -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC:$(CFLAGS):.so.$(SHLIB_SONAMEVER)", - "linux-ppc", "gcc:-DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC::.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)", +-"linux-ppc", "gcc:-DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC::.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)", ++"linux-generic32","gcc:-Wall $(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC:$(RPM_OPT_FLAGS):.so.$(SHLIB_SONAMEVER)", ++"linux-ppc", "gcc:-DB_ENDIAN -Wall $(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC:$(RPM_OPT_FLAGS):.so.$(SHLIB_SONAMEVER)",
####################################################################### -@@ -406,7 +406,7 @@ - "linux64-mips64", "gcc:-mabi=64 -O3 -Wall -DBN_DIV3W::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips64_asm}:64:dlfcn:linux-shared:-fPIC:-mabi=64:.so.$(SHLIB_MAJOR).$(SHLIB_MINOR):::64", + # Note that -march is not among compiler options in below linux-armv4 +@@ -395,31 +395,31 @@ my %table=( + # + # ./Configure linux-armv4 -march=armv6 -D__ARM_MAX_ARCH__=8 + # +-"linux-armv4", "gcc: -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)", +-"linux-aarch64","gcc: -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${aarch64_asm}:linux64:dlfcn:linux-shared:-fPIC::.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)", ++"linux-armv4", "gcc:-Wall $(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC:$(RPM_OPT_FLAGS):.so.$(SHLIB_SONAMEVER)", ++"linux-aarch64","gcc:-DL_ENDIAN -Wall $(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${aarch64_asm}:linux64:dlfcn:linux-shared:-fPIC:$(RPM_OPT_FLAGS):.so.$(SHLIB_SONAMEVER):::64", + # Configure script adds minimally required -march for assembly support, + # if no -march was specified at command line. mips32 and mips64 below + # refer to contemporary MIPS Architecture specifications, MIPS32 and + # MIPS64, rather than to kernel bitness. +-"linux-mips32", "gcc:-mabi=32 -O3 -Wall -DBN_DIV3W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC::.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)", +-"linux-mips64", "gcc:-mabi=n32 -O3 -Wall -DBN_DIV3W::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips64_asm}:n32:dlfcn:linux-shared:-fPIC:-mabi=n32:.so.$(SHLIB_MAJOR).$(SHLIB_MINOR):::32", +-"linux64-mips64", "gcc:-mabi=64 -O3 -Wall -DBN_DIV3W::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips64_asm}:64:dlfcn:linux-shared:-fPIC:-mabi=64:.so.$(SHLIB_MAJOR).$(SHLIB_MINOR):::64", ++"linux-mips32", "gcc:-mabi=32 -Wall $(RPM_OPT_FLAGS) -DBN_DIV3W::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC:$(RPM_OPT_FLAGS):.so.$(SHLIB_SONAMEVER)", ++"linux-mips64", "gcc:-mabi=n32 -Wall $(RPM_OPT_FLAGS) -DBN_DIV3W::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips64_asm}:n32:dlfcn:linux-shared:-fPIC:-mabi=n32 $(RPM_OPT_FLAGS):.so.$(SHLIB_SONAMEVER):::32", ++"linux64-mips64", "gcc:-mabi=64 -Wall $(RPM_OPT_FLAGS) -DBN_DIV3W::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips64_asm}:64:dlfcn:linux-shared:-fPIC:-mabi=64 $(RPM_OPT_FLAGS):.so.$(SHLIB_SONAMEVER):::64", #### IA-32 targets... "linux-ia32-icc", "icc:-DL_ENDIAN -O2::-D_REENTRANT::-ldl -no_cpprt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-KPIC::.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)", -"linux-elf", "gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)", -+"linux-elf", "gcc:-DL_ENDIAN $(CFLAGS) -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.$(SHLIB_SONAMEVER)", ++"linux-elf", "gcc:-DL_ENDIAN -Wall $(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC:$(RPM_OPT_FLAGS):.so.$(SHLIB_SONAMEVER)", "linux-aout", "gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -march=i486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out", #### - "linux-generic64","gcc:-O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)", -@@ -414,7 +414,7 @@ - "linux-ppc64le","gcc:-m64 -DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:$ppc64_asm:linux64le:dlfcn:linux-shared:-fPIC:-m64:.so.$(SHLIB_MAJOR).$(SHLIB_MINOR):::", - "linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)", +-"linux-generic64","gcc:-O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)", +-"linux-ppc64", "gcc:-m64 -DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc64_asm}:linux64:dlfcn:linux-shared:-fPIC:-m64:.so.$(SHLIB_MAJOR).$(SHLIB_MINOR):::64", +-"linux-ppc64le","gcc:-m64 -DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:$ppc64_asm:linux64le:dlfcn:linux-shared:-fPIC:-m64:.so.$(SHLIB_MAJOR).$(SHLIB_MINOR):::", +-"linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)", ++"linux-generic64","gcc:-Wall $(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC:$(RPM_OPT_FLAGS):.so.$(SHLIB_SONAMEVER):::64", ++"linux-ppc64", "gcc:-m64 -DB_ENDIAN -Wall $(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc64_asm}:linux64:dlfcn:linux-shared:-fPIC:-m64 $(RPM_OPT_FLAGS):.so.$(SHLIB_SONAMEVER):::64", ++"linux-ppc64le","gcc:-m64 -DL_ENDIAN -Wall $(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:$ppc64_asm:linux64le:dlfcn:linux-shared:-fPIC:-m64 $(RPM_OPT_FLAGS):.so.$(SHLIB_SONAMEVER):::64", ++"linux-ia64", "gcc:-DL_ENDIAN -Wall $(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC:$(RPM_OPT_FLAGS):.so.$(SHLIB_SONAMEVER)", "linux-ia64-icc","icc:-DL_ENDIAN -O2 -Wall::-D_REENTRANT::-ldl -no_cpprt:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)", -"linux-x86_64", "gcc:-m64 -DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.$(SHLIB_MAJOR).$(SHLIB_MINOR):::64", -+"linux-x86_64", "gcc:-m64 -DL_ENDIAN $(CFLAGS) -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.$(SHLIB_SONAMEVER):::64", ++"linux-x86_64", "gcc:-m64 -DL_ENDIAN -Wall $(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64 $(RPM_OPT_FLAGS):.so.$(SHLIB_SONAMEVER):::64", "linux-x86_64-clang", "clang: -m64 -DL_ENDIAN -O3 -Wall -Wextra $clang_disabled_warnings -Qunused-arguments::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.$(SHLIB_MAJOR).$(SHLIB_MINOR):::64", + "debug-linux-x86_64-clang", "clang: -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -m64 -DL_ENDIAN -g -Wall -Wextra $clang_disabled_warnings -Qunused-arguments::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.$(SHLIB_MAJOR).$(SHLIB_MINOR):::64", "linux-x86_64-icc", "icc:-DL_ENDIAN -O2::-D_REENTRANT::-ldl -no_cpprt:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC::.so.$(SHLIB_MAJOR).$(SHLIB_MINOR):::64", "linux-x32", "gcc:-mx32 -DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-mx32:.so.$(SHLIB_MAJOR).$(SHLIB_MINOR):::x32", -@@ -1764,7 +1764,7 @@ +-"linux64-s390x", "gcc:-m64 -DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:64:dlfcn:linux-shared:-fPIC:-m64:.so.$(SHLIB_MAJOR).$(SHLIB_MINOR):::64", ++"linux64-s390x", "gcc:-m64 -DB_ENDIAN -Wall $(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:64:dlfcn:linux-shared:-fPIC:-m64 $(RPM_OPT_FLAGS):.so.$(SHLIB_SONAMEVER):::64", + #### So called "highgprs" target for z/Architecture CPUs + # "Highgprs" is kernel feature first implemented in Linux 2.6.32, see + # /proc/cpuinfo. The idea is to preserve most significant bits of +@@ -437,12 +437,12 @@ my %table=( + #### SPARC Linux setups + # Ray Miller ray.miller@computing-services.oxford.ac.uk has patiently + # assisted with debugging of following two configs. +-"linux-sparcv8","gcc:-mcpu=v8 -DB_ENDIAN -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:linux-shared:-fPIC::.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)", ++"linux-sparcv8","gcc:-mcpu=v8 -DB_ENDIAN -Wall $(RPM_OPT_FLAGS) -DBN_DIV2W::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:linux-shared:-fPIC:$(RPM_OPT_FLAGS):.so.$(SHLIB_SONAMEVER)", + # it's a real mess with -mcpu=ultrasparc option under Linux, but + # -Wa,-Av8plus should do the trick no matter what. +-"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)", ++"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -Wall $(RPM_OPT_FLAGS) -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m32 $(RPM_OPT_FLAGS):.so.$(SHLIB_SONAMEVER)", + # GCC 3.1 is a requirement +-"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.$(SHLIB_MAJOR).$(SHLIB_MINOR):::64", ++"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -Wall $(RPM_OPT_FLAGS)::-D_REENTRANT:ULTRASPARC:-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m64 $(RPM_OPT_FLAGS):.so.$(SHLIB_SONAMEVER):::64", + #### Alpha Linux with GNU C and Compaq C setups + # Special notes: + # - linux-alpha+bwx-gcc is ment to be used from ./config only. If you +@@ -1767,7 +1767,7 @@ while (<IN>) elsif ($shared_extension ne "" && $shared_extension =~ /^.s([ol]).[^.]*.[^.]*$/) { my $sotmp = $1; @@ -37,11 +81,10 @@ diff -Nur openssl-1.0.2d/Configure openssl-1.0.2d.patched/Configure } elsif ($shared_extension ne "" && $shared_extension =~ /^.[^.]*.[^.]*.dylib$/) { - -diff -Nur openssl-1.0.2d/Makefile.org openssl-1.0.2d.patched/Makefile.org ---- openssl-1.0.2d/Makefile.org 2015-07-09 11:57:15.000000000 +0000 -+++ openssl-1.0.2d.patched/Makefile.org 2015-08-22 20:41:49.921000000 +0000 -@@ -10,6 +10,7 @@ +diff -up openssl-1.0.2e/Makefile.org.rpmbuild openssl-1.0.2e/Makefile.org +--- openssl-1.0.2e/Makefile.org.rpmbuild 2015-12-03 15:04:23.000000000 +0100 ++++ openssl-1.0.2e/Makefile.org 2015-12-04 13:18:44.913538616 +0100 +@@ -10,6 +10,7 @@ SHLIB_VERSION_HISTORY= SHLIB_MAJOR= SHLIB_MINOR= SHLIB_EXT= @@ -49,7 +92,7 @@ diff -Nur openssl-1.0.2d/Makefile.org openssl-1.0.2d.patched/Makefile.org PLATFORM=dist OPTIONS= CONFIGURE_ARGS= -@@ -339,10 +340,9 @@ +@@ -341,10 +342,9 @@ clean-shared: link-shared: @ set -e; for i in $(SHLIBDIRS); do \ $(MAKE) -f $(HERE)/Makefile.shared -e $(BUILDENV) \ @@ -61,7 +104,7 @@ diff -Nur openssl-1.0.2d/Makefile.org openssl-1.0.2d.patched/Makefile.org done
build-shared: do_$(SHLIB_TARGET) link-shared -@@ -353,7 +353,7 @@ +@@ -355,7 +355,7 @@ do_$(SHLIB_TARGET): libs="$(LIBKRB5) $$libs"; \ fi; \ $(CLEARENV) && $(MAKE) -f Makefile.shared -e $(BUILDENV) \ @@ -69,3 +112,4 @@ diff -Nur openssl-1.0.2d/Makefile.org openssl-1.0.2d.patched/Makefile.org + LIBNAME=$$i LIBVERSION=$(SHLIB_SONAMEVER) \ LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \ LIBDEPS="$$libs $(EX_LIBS)" \ + link_a.$(SHLIB_TARGET); \ diff --git a/src/patches/pam-0.99.10.0-rlimit-build-fix.patch b/src/patches/pam-0.99.10.0-rlimit-build-fix.patch new file mode 100644 index 0000000..5fdee07 --- /dev/null +++ b/src/patches/pam-0.99.10.0-rlimit-build-fix.patch @@ -0,0 +1,28 @@ +From 8e508f23bf5ed727649c99bbd540f7b1c2c2bd35 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stevan=20Baji=C4=87?= stevan@bajic.ch +Date: Mon, 9 Jul 2012 09:43:11 +0200 +Subject: [PATCH] RLIMIT_* variables are no longer defined unless you + explicitly include sys/resource.h. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Diego Elio Pettenò flameeyes@flameeyes.eu + +modules/pam_unix/pam_unix_acct.c: Include sys/resource.h. +--- + modules/pam_unix/pam_unix_acct.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules/pam_unix/pam_unix_acct.c b/modules/pam_unix/pam_unix_acct.c +index 8e90cc9..4a362f8 100644 +--- a/modules/pam_unix/pam_unix_acct.c ++++ b/modules/pam_unix/pam_unix_acct.c +@@ -41,6 +41,7 @@ + #include <string.h> + #include <unistd.h> + #include <sys/types.h> ++#include <sys/resource.h> + #include <syslog.h> + #include <pwd.h> + #include <shadow.h> diff --git a/src/patches/perl-Fix-Errno.pm-generation-for-gcc-5.0.patch b/src/patches/perl-Fix-Errno.pm-generation-for-gcc-5.0.patch new file mode 100644 index 0000000..1f6e80a --- /dev/null +++ b/src/patches/perl-Fix-Errno.pm-generation-for-gcc-5.0.patch @@ -0,0 +1,66 @@ +From 96bcd6ed97ff05f5b421005f23973279dbfcafbf Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= ppisar@redhat.com +Date: Wed, 11 Feb 2015 15:46:37 +0100 +Subject: [PATCH 1/2] Fix Errno.pm generation for gcc-5.0 + +gcc-5.0 -E interleaves now line numbers with expended macros, so that +the generated errno.c will be preprocessed to + +EBFONT => [[ + 59 + ]] + +which is hard to parse in in line-based reader. + +So use -P option with gcc >= 5.0. Global -P usage would break makedepend, +global -ftrack-macro-expansion=0 would break lib/h2ph.t. + +RT#123784 +--- + ext/Errno/Errno_pm.PL | 23 +++++++++++++++++------ + 1 file changed, 17 insertions(+), 6 deletions(-) + +diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL +index 3dadfce..c6bfa06 100644 +--- a/ext/Errno/Errno_pm.PL ++++ b/ext/Errno/Errno_pm.PL +@@ -215,20 +215,31 @@ sub write_errno_pm { + { # BeOS (support now removed) did not enter this block + # invoke CPP and read the output + ++ my $inhibit_linemarkers = ''; ++ if ($Config{gccversion} =~ /\A(\d+)./ and $1 >= 5) { ++ # GCC 5.0 interleaves expanded macros with line numbers breaking ++ # each line into multiple lines. RT#123784 ++ $inhibit_linemarkers = ' -P'; ++ } ++ + if ($^O eq 'VMS') { +- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; ++ my $cpp = "$Config{cppstdin} $Config{cppflags}" . ++ $inhibit_linemarkers . " $Config{cppminus}"; + $cpp =~ s/sys$input//i; + open(CPPO,"$cpp errno.c |") or + die "Cannot exec $Config{cppstdin}"; + } elsif ($IsMSWin32 || $^O eq 'NetWare') { +- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or +- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; ++ my $cpp = "$Config{cpprun} $Config{cppflags}" . ++ $inhibit_linemarkers; ++ open(CPPO,"$cpp errno.c |") or ++ die "Cannot run '$cpp errno.c'"; + } elsif ($IsSymbian) { +- my $cpp = "gcc -E -I$ENV{SDK}\epoc32\include\libc -"; ++ my $cpp = "gcc -E -I$ENV{SDK}\epoc32\include\libc" . ++ $inhibit_linemarkers ." -"; + open(CPPO,"$cpp < errno.c |") + or die "Cannot exec $cpp"; + } else { +- my $cpp = default_cpp(); ++ my $cpp = default_cpp() . $inhibit_linemarkers; + open(CPPO,"$cpp < errno.c |") + or die "Cannot exec $cpp"; + } +-- +2.3.0 + diff --git a/src/patches/pkg-config-0.29-glib-compile-fix.patch b/src/patches/pkg-config-0.29-glib-compile-fix.patch new file mode 100644 index 0000000..a092882 --- /dev/null +++ b/src/patches/pkg-config-0.29-glib-compile-fix.patch @@ -0,0 +1,29 @@ +From 0817af40e8c74c721c30f6ef482b1f53d12044c7 Mon Sep 17 00:00:00 2001 +From: coypu coypu@sdf.org +Date: Mon, 8 Feb 2016 00:06:06 +0200 +Subject: gdate: Suppress string format literal warning + +Newer versions of GCC emit an error here, but we know it's safe. +https://bugzilla.gnome.org/761550 +--- + glib/gdate.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/glib/gdate.c b/glib/gdate.c +index 4aece02..cdc735c 100644 +--- a/glib/gdate.c ++++ b/glib/gdate.c +@@ -2494,7 +2494,10 @@ g_date_strftime (gchar *s, + * recognize whether strftime actually failed or just returned "". + */ + tmpbuf[0] = '\1'; ++ #pragma GCC diagnostic push ++ #pragma GCC diagnostic ignored "-Wformat-nonliteral" + tmplen = strftime (tmpbuf, tmpbufsize, locale_format, &tm); ++ #pragma GCC diagnostic pop + + if (tmplen == 0 && tmpbuf[0] != '\0') + { +-- +cgit v0.12 + diff --git a/src/patches/python-2.7.13-getentropy.patch b/src/patches/python-2.7.13-getentropy.patch new file mode 100644 index 0000000..7e00061 --- /dev/null +++ b/src/patches/python-2.7.13-getentropy.patch @@ -0,0 +1,22 @@ +diff --git a/Python/random.c b/Python/random.c +index 2f83b5d..4cae217 100644 +--- a/Python/random.c ++++ b/Python/random.c +@@ -97,8 +97,15 @@ win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise) + } + + /* Issue #25003: Don't use getentropy() on Solaris (available since +- * Solaris 11.3), it is blocking whereas os.urandom() should not block. */ +-#elif defined(HAVE_GETENTROPY) && !defined(sun) ++ Solaris 11.3), it is blocking whereas os.urandom() should not block. ++ ++ Issue #29188: Don't use getentropy() on Linux since the glibc 2.24 ++ implements it with the getrandom() syscall which can fail with ENOSYS, ++ and this error is not supported in py_getentropy() and getrandom() is called ++ with flags=0 which blocks until system urandom is initialized, which is not ++ the desired behaviour to seed the Python hash secret nor for os.urandom(): ++ see the PEP 524 which was only implemented in Python 3.6. */ ++#elif defined(HAVE_GETENTROPY) && !defined(sun) && !defined(linux) + #define PY_GETENTROPY 1 + + /* Fill buffer with size pseudo-random bytes generated by getentropy(). diff --git a/src/scripts/archive.files b/src/scripts/archive.files index ca0ee51..0ed237b 100755 --- a/src/scripts/archive.files +++ b/src/scripts/archive.files @@ -31,7 +31,7 @@ for dir in $@; do continue fi
- for exclude in ${dir}/${MACHINE}/*; do + for exclude in ${dir}/${BUILD_ARCH}/*; do [ -f "${exclude}" ] || continue EXCLUDE="$EXCLUDE $exclude" done @@ -52,4 +52,4 @@ for dir in $@; do done
cat ${FILELIST} 2>/dev/null | grep -v ^# | sort | uniq | \ - sed -e "s/KVER/${KVER}/g" -e "s/MACHINE/${MACHINE}/g" -e "s/BUILDTARGET/${BUILDTARGET}/g" + sed -e "s/KVER/${KVER}/g" -e "s/MACHINE/${BUILD_ARCH}/g" -e "s/BUILDTARGET/${BUILDTARGET}/g" diff --git a/tools/make-functions b/tools/make-functions index 0180ded..ebe157a 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -60,69 +60,94 @@ WARN="\033[1;35m" FAIL="\033[1;31m" NORMAL="\033[0;39m"
-configure_target() { - local target_arch="${1}" +configure_build() { + local build_arch="${1}"
- if [ "${target_arch}" = "default" ]; then - target_arch="$(configure_target_guess)" + if [ "${build_arch}" = "default" ]; then + build_arch="$(configure_build_guess)" fi
- case "${target_arch}" in + case "${build_arch}" in x86_64) - BUILDTARGET="${target_arch}-unknown-linux-gnu" - CROSSTARGET="${target_arch}-cross-linux-gnu" + BUILDTARGET="${build_arch}-unknown-linux-gnu" + CROSSTARGET="${build_arch}-cross-linux-gnu" + BUILD_PLATFORM="x86" CFLAGS_ARCH="-m64 -mtune=generic" ;;
i586) - BUILDTARGET="${target_arch}-pc-linux-gnu" - CROSSTARGET="${target_arch}-cross-linux-gnu" + BUILDTARGET="${build_arch}-pc-linux-gnu" + CROSSTARGET="${build_arch}-cross-linux-gnu" + BUILD_PLATFORM="x86" CFLAGS_ARCH="-march=i586 -mtune=generic -fomit-frame-pointer" ;;
+ aarch64) + BUILDTARGET="${build_arch}-unknown-linux-gnu" + CROSSTARGET="${build_arch}-cross-linux-gnu" + BUILD_PLATFORM="arm" + CFLAGS_ARCH="" + ;; + + armv7hl) + BUILDTARGET="${build_arch}-unknown-linux-gnueabi" + CROSSTARGET="${build_arch}-cross-linux-gnueabi" + BUILD_PLATFORM="arm" + CFLAGS_ARCH="-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard" + ;; + armv5tel) - BUILDTARGET="${target_arch}-unknown-linux-gnueabi" - CROSSTARGET="${target_arch}-cross-linux-gnueabi" + BUILDTARGET="${build_arch}-unknown-linux-gnueabi" + CROSSTARGET="${build_arch}-cross-linux-gnueabi" + BUILD_PLATFORM="arm" CFLAGS_ARCH="-march=armv5te -mfloat-abi=soft -fomit-frame-pointer" - MACHINE_TYPE="arm" ;;
*) - exiterror "Cannot build for architure ${target_arch}" + exiterror "Cannot build for architure ${build_arch}" ;; esac
# Check if the QEMU helper is available if needed. - if qemu_is_required "${target_arch}"; then - local qemu_target_helper="$(qemu_find_target_helper_name "${target_arch}")" + if qemu_is_required "${build_arch}"; then + local qemu_build_helper="$(qemu_find_build_helper_name "${build_arch}")"
- if [ -n "${qemu_target_helper}" ]; then - QEMU_TARGET_HELPER="${qemu_target_helper}" + if [ -n "${qemu_build_helper}" ]; then + QEMU_TARGET_HELPER="${qemu_build_helper}" else - exiterror "Could not find a binfmt_misc helper entry for ${target_arch}" + exiterror "Could not find a binfmt_misc helper entry for ${build_arch}" fi fi
- TARGET_ARCH="${target_arch}" + BUILD_ARCH="${build_arch}"
- # Old variable names - MACHINE="${TARGET_ARCH}" + # Enables hardening + HARDENING_CFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4"
- CFLAGS="-O2 -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fPIC" - CFLAGS="${CFLAGS} -fstack-protector-strong --param=ssp-buffer-size=4 ${CFLAGS_ARCH}" + CFLAGS="-O2 -pipe -Wall -fexceptions -fPIC ${CFLAGS_ARCH}" CXXFLAGS="${CFLAGS}" }
-configure_target_guess() { - case "${BUILD_ARCH}" in +configure_build_guess() { + case "${HOST_ARCH}" in x86_64|i686|i586) echo "i586" ;; - aarch64|armv7*|armv6*|armv5*) + + aarch64) + echo "aarch64" + ;; + + armv7*) + echo "armv7hl" + ;; + + armv6*|armv5*) echo "armv5tel" ;; + *) - exiterror "Cannot guess target architecture" + exiterror "Cannot guess build architecture" ;; esac } @@ -335,7 +360,7 @@ fake_environ() { env="${env} UTS_RELEASE=${KVER}"
# Fake machine version. - env="${env} UTS_MACHINE=${TARGET_ARCH}" + env="${env} UTS_MACHINE=${BUILD_ARCH}"
echo "${env}" } @@ -349,7 +374,7 @@ qemu_environ() { fi
# Set default qemu options - case "${TARGET_ARCH}" in + case "${BUILD_ARCH}" in arm*) QEMU_CPU="${QEMU_CPU:-cortex-a9}"
@@ -364,13 +389,13 @@ qemu_environ() { }
qemu_is_required() { - local target_arch="${1}" + local build_arch="${1}"
- if [ -z "${target_arch}" ]; then - target_arch="${TARGET_ARCH}" + if [ -z "${build_arch}" ]; then + build_arch="${BUILD_ARCH}" fi
- case "${BUILD_ARCH},${target_arch}" in + case "${HOST_ARCH},${build_arch}" in x86_64,arm*|i?86,arm*|i?86,x86_64) return 0 ;; @@ -424,11 +449,11 @@ qemu_install_helper() { exiterror "Could not find a statically-linked QEMU emulator: ${QEMU_TARGET_HELPER}" }
-qemu_find_target_helper_name() { - local target_arch="${1}" +qemu_find_build_helper_name() { + local build_arch="${1}"
local magic - case "${target_arch}" in + case "${build_arch}" in arm*) magic="7f454c4601010100000000000000000002002800" ;; @@ -465,36 +490,53 @@ file_is_static() { file ${file} 2>/dev/null | grep -q "statically linked" }
-entershell() { - if [ ! -e $BASEDIR/build/usr/src/lfs/ ]; then - exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/" - fi - +enterchroot() { # Install QEMU helper, if needed qemu_install_helper
- echo "Entering to a shell inside LFS chroot, go out with exit" - chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='ipfire build chroot ($(uname -m)) \u:\w$ ' \ - PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ - VERSION=$VERSION CONFIG_ROOT=$CONFIG_ROOT \ - NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \ + local PATH="/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin" + + PATH="${PATH}" chroot ${LFS} env -i \ + HOME="/root" \ + TERM="${TERM}" \ + PS1="${PS1}" \ + PATH="${PATH}" \ + SYSTEM_RELEASE="${SYSTEM_RELEASE}" \ + PAKFIRE_CORE="${PAKFIRE_CORE}" \ + NAME="${NAME}" \ + SNAME="${SNAME}" \ + VERSION="${VERSION}" \ + CORE="${CORE}" \ + SLOGAN="${SLOGAN}" \ + CONFIG_ROOT="${CONFIG_ROOT}" \ + CFLAGS="${CFLAGS} ${HARDENING_CFLAGS}" \ + CXXFLAGS="${CXXFLAGS} ${HARDENING_CFLAGS}" \ + BUILDTARGET="${BUILDTARGET}" \ + CROSSTARGET="${CROSSTARGET}" \ + BUILD_ARCH="${BUILD_ARCH}" \ + BUILD_PLATFORM="${BUILD_PLATFORM}" \ CCACHE_DIR=/usr/src/ccache \ CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ - KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" \ - CROSSTARGET="${CROSSTARGET}" \ - MACHINE="$MACHINE" \ - MACHINE_TYPE="$MACHINE_TYPE" \ + KVER="${KVER}" \ $(fake_environ) \ $(qemu_environ) \ - /tools/bin/bash -i - if [ $? -ne 0 ]; then - beautify message FAIL - exiterror "chroot error" - else + "$@" +} + +entershell() { + if [ ! -e $BASEDIR/build/usr/src/lfs/ ]; then + exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/" + fi + + echo "Entering to a shell inside LFS chroot, go out with exit" + local PS1="ipfire build chroot ($(uname -m)) \u:\w$ " + + if enterchroot bash -i; then stdumount + else + beautify message FAIL + exiterror "chroot error" fi }
@@ -523,8 +565,8 @@ lfsmakecommoncheck() # Check if this package is supported by our architecture. # If no SUP_ARCH is found, we assume the package can be built for all. if grep "^SUP_ARCH" ${BASEDIR}/lfs/${1} >/dev/null; then - # Check if package supports ${MACHINE} or all architectures. - if ! grep -E "^SUP_ARCH.*${MACHINE}|^SUP_ARCH.*all" ${BASEDIR}/lfs/${1} >/dev/null; then + # Check if package supports ${BUILD_ARCH} or all architectures. + if ! grep -E "^SUP_ARCH.*${BUILD_ARCH}|^SUP_ARCH.*all" ${BASEDIR}/lfs/${1} >/dev/null; then beautify result SKIP return 1 fi @@ -542,15 +584,13 @@ lfsmakecommoncheck()
echo -ne "`date -u '+%b %e %T'`: Building $* " >> $LOGFILE
- cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \ - MACHINE_TYPE="$MACHINE_TYPE" \ + cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR BUILD_ARCH="${BUILD_ARCH}" \ MESSAGE="$1\t " download >> $LOGFILE 2>&1 if [ $? -ne 0 ]; then exiterror "Download error in $1" fi
- cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \ - MACHINE_TYPE="$MACHINE_TYPE" \ + cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR BUILD_ARCH="${BUILD_ARCH}" \ MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1 if [ $? -ne 0 ]; then exiterror "md5sum error in $1, check file in cache or signature" @@ -565,17 +605,25 @@ lfsmake1() {
local PKG_TIME_START=`date +%s`
- cd $BASEDIR/lfs && \ + cd $BASEDIR/lfs && env -i \ PATH="/tools/ccache/bin:/tools/bin:$PATH" \ - make -f $* TOOLCHAIN=1 BUILDTARGET=$BUILDTARGET \ - CROSSTARGET="${CROSSTARGET}" \ - MACHINE=$MACHINE \ - MACHINE_TYPE=$MACHINE_TYPE \ - LFS_BASEDIR=$BASEDIR \ - ROOT=$LFS \ - KVER=$KVER \ - MAKETUNING=$MAKETUNING \ - install >> $LOGFILE 2>&1 + make -f $* \ + TOOLCHAIN=1 \ + CROSSTARGET="${CROSSTARGET}" \ + BUILDTARGET="${BUILDTARGET}" \ + BUILD_ARCH="${BUILD_ARCH}" \ + BUILD_PLATFORM="${BUILD_PLATFORM}" \ + CFLAGS="${CFLAGS}" \ + CXXFLAGS="${CXXFLAGS}" \ + LFS_BASEDIR="${BASEDIR}" \ + ROOT="${LFS}" \ + KVER="${KVER}" \ + MAKETUNING="${MAKETUNING}" \ + CCACHE_DIR="${CCACHE_DIR}" \ + CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ + CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ + install >> $LOGFILE 2>&1 + local COMPILE_SUCCESS=$? local PKG_TIME_END=`date +%s`
@@ -593,72 +641,12 @@ lfsmake2() { lfsmakecommoncheck $* [ $? == 1 ] && return 0
- # Install QEMU helper, if needed - qemu_install_helper - local PKG_TIME_START=`date +%s` - chroot $LFS /tools/bin/env -i HOME=/root \ - TERM=$TERM PS1='\u:\w$ ' \ - PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ - VERSION=$VERSION PAKFIRE_CORE="${PAKFIRE_CORE}" \ - SYSTEM_RELEASE="${SYSTEM_RELEASE}" \ - CONFIG_ROOT=$CONFIG_ROOT \ - NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \ - CCACHE_DIR=/usr/src/ccache \ - CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ - CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ - KVER=$KVER MAKETUNING=$MAKETUNING \ - BUILDTARGET="$BUILDTARGET" \ - CROSSTARGET="${CROSSTARGET}" \ - MACHINE="$MACHINE" \ - MACHINE_TYPE="$MACHINE_TYPE" \ - $(qemu_environ) \ - $(fake_environ) \ - /tools/bin/bash -x -c "cd /usr/src/lfs && \ - make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 - local COMPILE_SUCCESS=$? - local PKG_TIME_END=`date +%s` - - if [ $COMPILE_SUCCESS -ne 0 ]; then - beautify result FAIL $[ $PKG_TIME_END - $PKG_TIME_START ] - exiterror "Building $*"; - else - beautify result DONE $[ $PKG_TIME_END - $PKG_TIME_START ] - fi - - return 0 -} - -ipfiremake() { - lfsmakecommoncheck $* - [ $? == 1 ] && return 0 - - # Install QEMU helper, if needed - qemu_install_helper + local PS1='\u:\w$ '
- local PKG_TIME_START=`date +%s` - chroot $LFS /tools/bin/env -i HOME=/root \ - TERM=$TERM PS1='\u:\w$ ' \ - PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin \ - VERSION=$VERSION \ - CORE=$CORE \ - CONFIG_ROOT=$CONFIG_ROOT \ - NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - SYSTEM_RELEASE="$SYSTEM_RELEASE" \ - CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \ - CCACHE_DIR=/usr/src/ccache \ - CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ - CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ - KVER=$KVER MAKETUNING=$MAKETUNING \ - BUILDTARGET="$BUILDTARGET" \ - CROSSTARGET="${CROSSTARGET}" \ - MACHINE="$MACHINE" \ - MACHINE_TYPE="$MACHINE_TYPE" \ - $(qemu_environ) \ - $(fake_environ) \ - /bin/bash -x -c "cd /usr/src/lfs && \ - make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 + enterchroot \ + bash -x -c "cd /usr/src/lfs && make -f $* LFS_BASEDIR=/usr/src install" \ + >> ${LOGFILE} 2>&1
local COMPILE_SUCCESS=$? local PKG_TIME_END=`date +%s` @@ -669,81 +657,27 @@ ipfiremake() { else beautify result DONE $[ $PKG_TIME_END - $PKG_TIME_START ] fi + return 0 }
ipfiredist() { lfsmakecommoncheck $* [ $? == 1 ] && return 0 - - # Install QEMU helper, if needed - qemu_install_helper
local PKG_TIME_START=`date +%s` - chroot $LFS /tools/bin/env -i HOME=/root \ - TERM=$TERM PS1='\u:\w$ ' \ - PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin \ - VERSION=$VERSION \ - CONFIG_ROOT=$CONFIG_ROOT \ - NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \ - CCACHE_DIR=/usr/src/ccache \ - CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ - CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ - KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" \ - CROSSTARGET="${CROSSTARGET}" \ - MACHINE="$MACHINE" \ - MACHINE_TYPE="$MACHINE_TYPE" \ - $(qemu_environ) \ - $(fake_environ) \ - /bin/bash -x -c "cd /usr/src/lfs && \ - make -f $1 LFS_BASEDIR=/usr/src dist" >>$LOGFILE 2>&1 - - local COMPILE_SUCCESS=$? - local PKG_TIME_END=`date +%s` - - if [ $COMPILE_SUCCESS -ne 0 ]; then - beautify result FAIL $[ $PKG_TIME_END - $PKG_TIME_START ] - exiterror "Packaging $*"; - else - beautify result DONE $[ $PKG_TIME_END - $PKG_TIME_START ] - fi - return 0 -} - -installmake() { - lfsmakecommoncheck $* - [ $? == 1 ] && return 0 - - # Install QEMU helper, if needed - qemu_install_helper + local PS1='\u:\w$ '
- local PKG_TIME_START=`date +%s` - chroot $LFS /tools/bin/env -i HOME=/root \ - TERM=$TERM PS1='\u:\w$ ' \ - PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin \ - VERSION=$VERSION \ - SYSTEM_RELEASE="${SYSTEM_RELEASE}" \ - CONFIG_ROOT=$CONFIG_ROOT \ - NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \ - CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 CCACHE_HASHDIR=1 \ - KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" \ - CROSSTARGET="${CROSSTARGET}" \ - MACHINE="$MACHINE" \ - MACHINE_TYPE="$MACHINE_TYPE" \ - LD_LIBRARY_PATH=/tools/lib \ - /tools/bin/bash -x -c "cd /usr/src/lfs && \ - /tools/bin/make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 + enterchroot \ + bash -x -c "cd /usr/src/lfs && make -f $* LFS_BASEDIR=/usr/src dist" \ + >> ${LOGFILE} 2>&1
local COMPILE_SUCCESS=$? local PKG_TIME_END=`date +%s`
if [ $COMPILE_SUCCESS -ne 0 ]; then beautify result FAIL $[ $PKG_TIME_END - $PKG_TIME_START ] - exiterror "Building $*"; + exiterror "Packaging $*"; else beautify result DONE $[ $PKG_TIME_END - $PKG_TIME_START ] fi
hooks/post-receive -- IPFire 2.x development tree