rs@uunet.UU.NET (Rich Salz) (06/19/87)
Submitted by: Robert W. Baldwin <BALDWIN@XX.LCS.MIT.EDU> Mod.sources: Volume 10, Issue 6 Archive-name: cbw/Part06 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 6 (of 11)." # Contents: foo.perm lpair.c test1.perm # Wrapped by rs@uunet on Wed Jun 17 18:17:20 1987 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f foo.perm -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"foo.perm\" else echo shar: Extracting \"foo.perm\" \(16800 characters\) sed "s/^X//" >foo.perm <<'END_OF_foo.perm' X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 X 96 -1 124 223 97 19 -1 13 43 44 X -1 38 231 7 -1 207 179 134 133 5 X -1 -1 48 160 152 93 162 -1 191 -1 X 65 103 183 -1 -1 -1 243 242 11 180 X 87 173 154 8 9 99 112 58 22 108 X199 95 77 66 -1 62 128 190 47 79 X215 109 55 -1 73 30 53 178 214 82 X201 138 206 64 240 -1 228 52 140 59 X197 -1 69 203 -1 111 137 40 -1 -1 X -1 195 212 25 -1 51 0 4 251 45 X -1 122 148 31 227 234 167 202 49 61 X219 85 46 246 -1 -1 -1 254 211 249 X144 -1 101 218 2 150 186 -1 56 -1 X -1 247 164 18 17 -1 -1 86 71 -1 X 78 -1 -1 222 120 216 226 158 102 189 X125 225 24 -1 42 159 221 188 147 155 X 23 210 26 -1 132 232 184 106 -1 -1 X -1 196 253 41 204 -1 -1 235 67 16 X 39 192 -1 32 166 -1 126 -1 157 149 X 57 28 181 -1 241 91 171 80 -1 50 X -1 70 107 83 174 -1 72 15 -1 233 X161 118 92 244 68 60 145 -1 123 110 X237 156 143 3 -1 151 146 104 76 239 X -1 12 165 209 105 177 -1 220 -1 229 X 74 194 37 36 213 -1 113 131 -1 119 X -1 98 -1 172 117 -1 X 20 122 118 119 -1 229 158 -1 223 -1 X215 -1 197 249 82 126 237 23 87 93 X 0 -1 252 17 -1 -1 -1 225 -1 163 X 52 171 -1 155 214 -1 84 -1 216 85 X 45 152 -1 181 -1 40 241 235 142 210 X -1 69 30 83 99 134 212 253 70 144 X -1 -1 234 -1 132 250 173 114 95 51 X 58 -1 73 72 175 168 211 -1 92 169 X176 166 14 53 36 39 -1 18 148 117 X129 255 78 19 110 68 151 154 101 54 X244 98 242 147 227 204 128 203 188 254 X 94 217 170 251 67 231 -1 89 2 3 X206 146 1 183 -1 209 15 150 106 90 X184 159 64 141 55 238 195 -1 162 205 X245 133 48 -1 59 165 121 103 88 -1 X127 96 41 -1 97 33 -1 -1 6 131 X187 194 138 29 167 145 81 164 75 79 X112 31 178 66 -1 74 80 -1 172 -1 X -1 43 224 123 130 236 -1 160 108 246 X192 230 190 222 161 136 -1 12 200 213 X198 239 248 107 105 139 120 -1 247 125 X 49 76 56 199 34 10 38 111 233 -1 X -1 -1 193 8 182 27 -1 104 240 5 X191 115 -1 218 62 47 185 16 135 201 X228 46 102 -1 100 140 189 208 202 13 X 65 113 22 57 109 91 X 90 49 26 132 156 140 212 129 -1 122 X198 -1 97 148 38 79 25 154 80 -1 X214 216 248 184 161 16 2 107 66 168 X 33 -1 195 30 -1 -1 65 -1 14 84 X222 -1 123 53 136 47 69 45 -1 1 X125 -1 134 43 -1 102 145 126 238 194 X 78 232 138 246 224 36 28 225 -1 46 X130 215 120 188 119 105 231 209 60 15 X 18 87 185 176 39 160 182 81 -1 158 X 0 151 235 192 183 200 118 12 174 -1 X106 -1 55 -1 -1 75 100 27 249 187 X163 242 -1 230 254 205 179 190 96 74 X 72 -1 9 42 241 50 57 228 142 7 X 70 206 3 149 52 227 44 220 62 245 X 5 221 128 186 244 56 204 -1 13 133 X -1 91 197 165 17 -1 4 180 89 -1 X 85 24 193 110 199 153 -1 -1 29 255 X177 247 226 -1 98 252 83 170 237 116 X157 191 86 94 23 82 143 109 73 219 X117 181 93 162 59 32 -1 152 10 164 X 95 -1 250 239 146 115 131 -1 217 77 X234 -1 6 251 20 71 21 208 -1 189 X137 141 40 253 64 67 172 135 127 240 X113 76 61 -1 210 92 -1 178 58 203 X229 124 111 -1 144 139 63 171 22 108 X202 213 175 223 114 169 X 60 -1 26 79 203 204 122 -1 15 97 X -1 238 133 33 159 8 165 145 27 191 X192 69 250 -1 -1 183 2 18 50 65 X218 57 143 13 -1 -1 -1 93 116 213 X -1 199 -1 171 109 74 -1 177 56 -1 X 28 -1 -1 196 -1 227 48 31 80 221 X 0 248 202 103 233 29 140 -1 170 21 X216 164 137 190 45 189 -1 193 188 3 X 58 160 155 181 176 -1 186 104 111 225 X198 125 -1 37 -1 -1 252 9 231 223 X169 -1 255 63 87 154 -1 -1 152 44 X201 88 -1 -1 179 118 38 -1 115 161 X247 123 6 121 187 91 -1 240 241 239 X197 207 -1 12 -1 185 138 72 136 -1 X 66 -1 234 32 150 17 254 -1 -1 226 X144 -1 108 -1 105 82 228 172 173 14 X 81 119 -1 -1 71 16 208 246 242 100 X 68 43 157 158 -1 -1 84 47 229 114 X -1 83 -1 25 230 135 86 124 78 75 X 73 19 20 77 245 -1 53 130 90 41 X210 110 62 4 5 244 211 131 166 219 X200 206 220 39 -1 -1 70 -1 30 209 X212 59 -1 99 232 89 149 55 156 178 X184 98 224 64 142 236 235 -1 11 129 X127 128 168 249 205 194 167 120 61 243 X 22 -1 96 -1 146 102 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 END_OF_foo.perm if test 16800 -ne `wc -c <foo.perm`; then echo shar: \"foo.perm\" unpacked with wrong size! fi # end of overwriting check fi if test -f lpair.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"lpair.c\" else echo shar: Extracting \"lpair.c\" \(14095 characters\) sed "s/^X//" >lpair.c <<'END_OF_lpair.c' X/* X * Letter pair and equivalence class guessing. X * X * Bob Baldwin, May 1985. X */ X X#include <stdio.h> X#include <math.h> X#include "window.h" X#include "terminal.h" X#include "layout.h" X#include "specs.h" X#include "cipher.h" X X X#define DEBUG FALSE X#define AUTOREPEAT 1 /* Number of times to repeat guess loop. */ X X#define LPBLABEL1 "Bigram guess, level %6.3f, prob %6.3f -- Wait" X#define LPBLABEL2 "Bigram guess, level %6.3f, prob %6.3f -- Done" X#define LPBHELP "F3 enters guess, ^G undoes it." X X Xextern char mcbuf[]; Xextern ecinfo gecinfo; Xextern ec_init(); Xextern lpbdraw(), lpbfirst(), lpbenter(), lpbundo(); X X/* Gloabal State. */ Xkeyer lpbktab[] = { X {CACCEPT, lpbenter}, X {CUNDO, lpbundo}, X {CGO_UP, jogup}, X {CGO_DOWN, jogdown}, X {CGO_LEFT, jogleft}, X {CGO_RIGHT, jogright}, X {0, NULL}, X}; X X/* Routine invoked by user to put up the letter pair equivalence class X * guessing window. X * The window is drawn empty, and then filled in with the guess. X * Return NULL if command completes ok. X */ Xchar *lpbguess(str) Xchar *str; /* Command line */ X{ X ecinfo *ecbi; X int i; X gwindow *ecb; X float lp_accept_level, lp_prob_cutoff; X X ecb = &gbstore; X ecbi = &gecinfo; X lp_init(mcbuf, refperm(dbsgetblk(&dbstore)), ecbi); X X if ((i = sscanf(str, "%*[^:]: %f %*[^:]: %f", X &lp_accept_level, &lp_prob_cutoff)) != 2) { X return("Could not parameters."); X } X X gbsswitch(ecb, ((char *) ecbi), lpbktab, lpbfirst, wl_noop, lpbdraw); X X sprintf(statmsg, LPBLABEL1, lp_accept_level, lp_prob_cutoff); X gblset(&gblabel, statmsg); X gbsclear(ecb); X fflush(stdout); X X lp_autoguess(ecbi, lp_accept_level); X decode(ecbi->ciphertext, ecbi->plaintext, ecbi->perm); X X sprintf(statmsg, LPBLABEL2, lp_accept_level, lp_prob_cutoff); X gblset(&gblabel, statmsg); X lpbdraw(ecb); X X return(NULL); X} X X X/* (re) Draw the window. X */ Xlpbdraw(ecb) Xgwindow *ecb; X{ X int i; X int row, col; X ecinfo *ecbi; X X ecbi = ((ecinfo *) ecb->wprivate); X row = 1; X col = 1; X X for (i = 0 ; i < BLOCKSIZE ; i++) { X if (i%LINELEN == 0) { X wl_setcur(ecb, gbspos2row(i), gbspos2col(i)); X } X plnchars(1, char2sym(ecbi->plaintext[i])); X } X X for (i = gbspos2row(BLOCKSIZE) ; i <= GBHEIGHT ; i++) { X wl_setcur(ecb, i, 1); X plnchars(LINELEN, ' '); X } X X for (i = 1 ; i <= GBHEIGHT ; i++) { X wl_setcur(ecb, i, LINELEN+1); X plnchars(ecb->wwidth - LINELEN, ' '); X } X X wl_setcur(ecb, row, col); X} X X X/* First time cursor enters window. X */ Xlpbfirst(ecb, row, col) Xgwindow *ecb; Xint row, col; X{ X usrhelp(&user, LPBHELP); X wl_setcur(ecb, row, col); X} X X X/* Enter the guess into the decryption block. X */ Xlpbenter(ecb) Xgwindow *ecb; X{ X ecinfo *ecbi; X X ecbi = ((ecinfo *) ecb->wprivate); X dbsmerge(&dbstore, ecbi->perm); X wl_rcursor(ecb); X} X X X/* Undo the last guess. X */ Xlpbundo(ecb) Xgwindow *ecb; X{ X ecinfo *ecbi; X X ecbi = ((ecinfo *) ecb->wprivate); X dbsundo(&dbstore); X wl_rcursor(ecb); X} X X X X/* Guess at a block using letter pair statistics. X * The parameter accept_level is the minimum ratio (of estmated prob X * that the guess is right over estimate prob that some other guess X * is right) needed to accept a guess. X * The parameter prob_cutoff is the minimum probability (density) that X * the guess is right. This parameter comes into play when there is one X * guess which looks much better than the rest (i.e., has a high ratio), X * but in fact all the guesses look pretty bad, so the program should X * avoid picking one. X * Modfies eci. X */ Xlp_autoguess(eci, accept_level, prob_cutoff) Xreg ecinfo *eci; X float accept_level; X float prob_cutoff; X{ X int i; Xreg int c; X int ntried; Xreg int classpos; X int *permp; X int repeat; X Xfor(repeat = 0 ; repeat < AUTOREPEAT ; repeat++) { X ntried = 0; X for (ntried = 0 ; ntried < BLOCKSIZE ; ntried++) { X classpos = lp_best_pos(eci, 2); X if (classpos == NONE) X break; X c = lp_best_char(eci, classpos, X accept_level - ((repeat == 0) ? 0.0 : 0.0), X prob_cutoff); X if (c != NONE) { X lp_accept(eci, classpos, c); X } X } X#if (AUTOREPEAT > 1) X for (i = 0 ; i < eci->nclasses ; i++) { X eci->classlist[i].changed = TRUE; X } X#endif X } X} X X X/* Score a guess using letter pair statistics. X * Bigger scores are better scores. They range from 0 to 1. X * A score of zero means the choice is not possible. X * The result is the probability density that the guess is correct. X * Actually, the resulting score is the product of the prob densities X * of the first and second order statistics. X */ Xfloat lp_cscore(gsi) Xreg gsinfo *gsi; X{ X extern float score2_scale, score1_scale; X float score1, score2; Xreg float sdev1, sdev2; /* Standard Deviation for 1st and 2nd stats. */ X int ccount; X X for (ccount = 0 ; gsi->cpos[ccount] != NONE ; ccount++); X X sdev1 = gsi_1score(gsi); X if (sdev1 < 0.0) return(0.0); X score1 = fexp(sdev1); X score1 = (score1 * isqrt[ccount]) / score1_scale; X X sdev2 = gsi_2score(gsi); X if (sdev2 < 0.0) return(0.0); X score2 = fexp(sdev2); X score2 = (score2 * isqrt[ccount]) / score2_scale; X X return(score1 * score2); X} X X X/* Select best plaintext value for a ciphertext equiv class. X * The class is identified by the position in the block of one X * of the characters in the class. The plaintext value for X * an entire class can be specified by the plaintext value of X * one of its members. This routine returns the best plaintext X * value for the ciphertext character at position firstpos. X * If there is not a clear best value, NONE is returned. X */ Xint lp_best_char(eci, firstpos, alevel, min_prob) Xreg ecinfo *eci; Xint firstpos; Xfloat alevel; /* Level to accept a guess ~= prob(right)/prob(wrong) */ Xfloat min_prob; X{ X#if DEBUG X int pvec[BLOCKSIZE+1]; X char str[BLOCKSIZE+1]; X#endif X float total_score, score; X float best_score; X int best_char; Xreg int c; X int x,y; X int class; X float count; Xreg gsinfo *gsi; X gsinfo tmpgsi; X int gssbuf[BLOCKSIZE+1]; X X gsi = &tmpgsi; X gsi_init(gsi, eci->plaintext, gssbuf); X X total_score = 0.0; X best_score = 0.0; X count = 0.0; X best_char = NONE; X X for (c = 0 ; c <= MAXCHAR ; c++) { X gsi_clear(gsi); X if (gsi_class_guess(gsi, eci, firstpos, c) == 0) X continue; X score = lp_cscore(gsi); X if (score > 0.0) { X count += 1.0; X total_score += score; X } X if (score > best_score) { X best_score = score; X best_char = c; X } X } X X#if DEBUG X printf("Total score is %7.4f", total_score); X printf(". Count is %4.0f.\n", count); X#endif X if (total_score == 0.0 || count == 0.0 || best_char == NONE) { X#if DEBUG X printf("NO GUESSES\n"); X#endif X return(NONE); X } X#if DEBUG X printf("Best score is %7.4f", best_score); X printf(", which is %7.4f fraction of total", best_score/total_score); X printf(".\n"); X X class = eci->posclass[firstpos]; X printf("Class reliability is %d.", X (2 * eci->classlist[class].npairs) + eci->classlist[class].nchars); X printf(" "); X X decode_class(eci, firstpos, best_char, pvec); X pvec2str(str, pvec); X printf("The best chars are '%s'\n", str); X#endif X X if ((best_score > alevel * (total_score - best_score)) X && (best_score > min_prob)) { X return(best_char); X } X else { X return(NONE); X } X} X X X/* Accept a guess. X * Updates the eci plaintext to reflect the characters deduced from X * assuming that the plaintext character at position pos is pchar. X * It updates the npairs count and used flag in the class info list. X * The changed flag is set for positions pos-1 and pos+1 (if they exist). X * The used flag is set for the class(es) that now have an accepted value. X */ Xlp_accept(eci, firstpos, firstpchar) Xreg ecinfo *eci; Xint firstpos; Xint firstpchar; X{ X int firstflag; /* For macro for_pos_in_class. */ X int otherpos; Xreg int pos; X int x,y; X int pchar; X int delta; X clinfo *firstclassp, *otherclassp; Xreg clinfo *classp; X X firstpos = firstpos & MODMASK; X firstpchar = firstpchar & CHARMASK; X x = eci->scipher[firstpos]; X y = MODMASK & (firstpchar + firstpos); X X eci->perm[x] = y; X eci->perm[y] = x; X X firstclassp = &(eci->classlist[eci->posclass[firstpos]]); X firstclassp->used = TRUE; X X otherpos = eci->permmap[y]; X if (otherpos == NONE) { X otherclassp = NULL; X } X else { X otherclassp = &(eci->classlist[eci->posclass[otherpos]]); X otherclassp->used = TRUE; X } X X X delta = y - x; X for_pos_in_class(pos, firstpos) { X pchar = MODMASK & (eci->scipher[pos] + delta - pos); X eci->plaintext[pos] = pchar; X if ((pos - 1) >= 0) { X classp = &(eci->classlist[eci->posclass[pos - 1]]); X if (classp != firstclassp) { X classp->changed = TRUE; X classp->npairs++; X } X } X if ((pos + 1) < BLOCKSIZE) { X classp = &(eci->classlist[eci->posclass[pos + 1]]); X if (classp != firstclassp) { X classp->changed = TRUE; X classp->npairs++; X } X } X } X X if (otherpos != NONE) { X delta = x - y; X for_pos_in_class(pos, otherpos) { X pchar = MODMASK & (eci->scipher[pos] + delta - pos); X eci->plaintext[pos] = pchar; X if ((pos - 1) >= 0) { X classp = &(eci->classlist[eci->posclass[pos - 1]]); X if (classp != otherclassp) { X classp->changed = TRUE; X classp->npairs++; X } X } X if ((pos + 1) < BLOCKSIZE) { X classp = &(eci->classlist[eci->posclass[pos + 1]]); X if (classp != otherclassp) { X classp->changed = TRUE; X classp->npairs++; X } X } X } X } X} X X X X/* Pick the best position to do guessing. X * Use the class info list to select the unused class that will yield X * the most reliable guesses. X * The changed flag is cleared to make sure that a class is not considered X * again unless the reliability of its guesses has changed. X * At first, all the changed flags should be set. X * The changed flag for the selected class is cleared. X * Returns a position or NONE. X */ Xint lp_best_pos(eci, min_reliability) Xreg ecinfo *eci; Xint min_reliability; X{ X int score; X int best_score, best_pos; Xreg clinfo *classp; Xreg clinfo *endclassp; X X best_score = 0; X best_pos = NONE; X endclassp = &(eci->classlist[eci->nclasses]); X for (classp = &(eci->classlist[0]) ; classp < endclassp ; classp++) { X if ((classp->used) || (!(classp->changed))) X continue; X score = (2 * (classp->npairs)) + classp->nchars; X if (score > best_score) { X best_score = score; X best_pos = classp->firstpos; X } X } X if (best_score < min_reliability) X return(NONE); X X if (best_pos != NONE) { X eci->classlist[eci->posclass[best_pos]].changed = FALSE; X } X return(best_pos); X} X X X/* Fill in equiv class info from given ciphertext block X * and permutation. X */ Xlp_init(cipher, perm, eci) Xchar cipher[]; Xint perm[]; Xreg ecinfo *eci; X{ X int firstflag; /* Used by for_pos_in_class */ X int i,j; X int firstpos, char_count, pair_count; Xreg int pos; Xreg clinfo *class; X X ec_init(cipher, perm, eci); X X for (i = 0 ; i < BLOCKSIZE ; i++) { X eci->posclass[i] = NONE; X } X X eci->nclasses = 0; X for (i = 0 ; i < BLOCKSIZE ; i++) { X if ((firstpos = eci->permmap[i]) == NONE) X continue; X char_count = 0; X pair_count = 0; X for_pos_in_class(pos, firstpos) { X eci->posclass[pos] = eci->nclasses; X char_count++; X } X for_pos_in_class(pos, firstpos) { X if ((pos + 1) < BLOCKSIZE) { X if (eci->posclass[pos + 1] == eci->nclasses) { X pair_count++; X } X else if (eci->perm[eci->scipher[pos + 1]] != NONE) { X pair_count++; X } X } X if ((pos - 1) >= 0) { X if (eci->posclass[pos - 1] == eci->nclasses) { X /* Don't double count it. */ X } X else if (eci->perm[eci->scipher[pos - 1]] != NONE) { X pair_count++; X } X } X } X class = &(eci->classlist[eci->nclasses]); X class->nchars = char_count; X class->npairs = pair_count; X class->firstpos = firstpos; X class->changed = TRUE; X if (eci->perm[i] != NONE) X class->used = TRUE; X else X class->used = FALSE; X X eci->nclasses++; X } X} X X X/* Initialize a guess info structure. X * Also clears the guess buffer. X */ Xgsi_init(gsi, pbuf, gssbuf) Xreg gsinfo *gsi; X int *pbuf; /* Accepted characters. */ Xreg int *gssbuf; /* Buffer for new guesses. */ X{ Xreg int i; X X gsi->cknown = pbuf; X gsi->cpos[0] = NONE; X gsi->cguessed = gssbuf; X for (i = 0 ; i < BLOCKSIZE ; i++) X *gssbuf++ = NONE; X} X X X/* Clear out a guess from a gsi. X */ Xgsi_clear(gsi) Xreg gsinfo *gsi; X{ Xreg int *ip; X X for (ip = &(gsi->cpos[0]) ; *ip != NONE ; ip++) { X gsi->cguessed[*ip] = NONE; X } X gsi->cpos[0] = NONE; X} X X X/* Add to a gsi with the characters deduced from assuming that X * the character at firstpos is c. X * If that asumption conflicts with eci->perm, then nothing is added. X * Returns the number of characters added. X */ Xint gsi_class_guess(gsi, eci, firstpos, c) Xreg gsinfo *gsi; Xreg ecinfo *eci; X int firstpos; X int c; X{ X int firstflag; /* For macro for_pos_in_class. */ X int otherpos; Xreg int pos; X int x,y; X int pchar; X int delta; X int *cposp; X int nchars; X X for (cposp = &(gsi->cpos[0]) ; *cposp != NONE ; cposp++); X nchars = 0; X X firstpos = firstpos & MODMASK; X c = c & CHARMASK; X x = eci->scipher[firstpos]; X y = MODMASK & (c + firstpos); X X if (perm_conflict(eci->perm, x, y)) X return(nchars); X X delta = y - x; X for_pos_in_class(pos, firstpos) { X pchar = MODMASK & (eci->scipher[pos] + delta - pos); X if ((pchar & CHARMASK) != pchar) { X *cposp = NONE; X return(0); X } X gsi->cguessed[pos] = pchar; X *cposp++ = pos; X nchars++; X } X X otherpos = eci->permmap[y]; X if (otherpos != NONE) { X delta = x - y; X for_pos_in_class(pos, otherpos) { X pchar = MODMASK & (eci->scipher[pos] + delta - pos); X if ((pchar & CHARMASK) != pchar) { X *cposp = NONE; X return(0); X } X gsi->cguessed[pos] = pchar; X *cposp++ = pos; X nchars++; X } X } X *cposp = NONE; X return(nchars); X} X X X/* Dump class table onto a stream. X */ Xlp_dclasses(out, eci) XFILE *out; Xecinfo *eci; X{ X int i; X X fprintf(out, "\nThere are %d classes.\n", eci->nclasses); X for (i = 0 ; i < eci->nclasses ; i++) { X fprintf(out, "Singles: %d, pairs: %d, First member: %d", X eci->classlist[i].nchars, eci->classlist[i].npairs, X eci->classlist[i].firstpos); X fprintf(out, ", flags:"); X if (!(eci->classlist[i].used)) X fprintf(out, " not"); X fprintf(out, " used"); X fprintf(out, " and"); X if (!(eci->classlist[i].changed)) X fprintf(out, " not"); X fprintf(out, " changed"); X fprintf(out, "\n"); X } X} X X END_OF_lpair.c if test 14095 -ne `wc -c <lpair.c`; then echo shar: \"lpair.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f test1.perm -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"test1.perm\" else echo shar: Extracting \"test1.perm\" \(16800 characters\) sed "s/^X//" >test1.perm <<'END_OF_test1.perm' X -1 -1 116 150 159 64 -1 -1 200 232 X -1 -1 63 -1 -1 95 -1 254 -1 8 X -1 -1 123 117 243 210 179 -1 119 17 X -1 46 -1 203 -1 12 -1 -1 -1 71 X -1 -1 204 -1 -1 -1 -1 -1 -1 -1 X 74 -1 202 -1 11 81 67 -1 141 213 X 66 94 -1 217 29 154 3 -1 -1 -1 X -1 -1 -1 93 -1 -1 -1 -1 173 -1 X -1 -1 -1 196 4 -1 -1 -1 70 -1 X -1 252 41 43 -1 -1 48 61 -1 38 X 20 -1 166 208 -1 -1 -1 -1 5 -1 X -1 130 -1 -1 207 -1 227 190 -1 125 X -1 -1 -1 -1 -1 -1 51 120 -1 13 X139 -1 127 246 248 18 -1 -1 136 167 X -1 113 -1 -1 244 114 -1 198 201 189 X144 22 140 -1 109 83 131 180 -1 -1 X -1 50 250 -1 37 -1 -1 242 23 214 X -1 112 -1 -1 -1 233 -1 161 188 104 X -1 103 -1 -1 89 80 -1 -1 19 85 X192 147 -1 65 199 -1 247 245 -1 60 X -1 102 -1 88 224 -1 -1 45 -1 -1 X -1 -1 -1 215 230 -1 -1 -1 -1 -1 X -1 251 -1 14 -1 -1 -1 87 -1 73 X158 -1 110 168 -1 152 197 108 133 148 X -1 -1 184 240 100 -1 111 170 183 -1 X 42 10 218 82 -1 -1 X 96 114 124 223 97 19 -1 13 43 -1 X -1 38 231 7 200 207 179 134 133 5 X100 -1 48 160 152 93 162 168 191 127 X -1 103 183 -1 252 193 243 242 11 180 X 87 173 154 8 -1 -1 112 -1 22 -1 X199 95 -1 66 163 62 128 190 -1 79 X215 109 55 245 73 -1 53 178 214 82 X201 138 206 64 240 182 228 -1 -1 59 X197 248 69 203 175 111 -1 40 -1 139 X -1 195 -1 25 217 51 0 4 251 -1 X 20 -1 148 31 227 234 167 202 -1 61 X219 85 46 246 1 135 142 254 211 -1 X144 -1 -1 218 2 150 186 29 56 169 X185 247 164 18 17 115 250 -1 71 89 X -1 205 116 222 120 -1 226 158 102 189 X125 -1 24 -1 42 159 221 188 147 155 X 23 210 26 54 132 -1 184 106 27 129 X -1 196 253 41 204 84 238 235 67 16 X 39 192 75 32 166 130 126 224 157 149 X 57 28 181 35 241 91 171 80 208 50 X 14 70 107 83 174 141 72 15 198 233 X161 118 -1 244 68 60 -1 94 123 110 X237 156 143 3 187 -1 146 104 76 239 X -1 12 -1 209 105 177 -1 220 176 229 X 74 194 37 36 213 63 113 131 81 -1 X136 98 34 172 117 -1 X -1 122 -1 119 71 229 -1 28 223 -1 X215 -1 197 -1 82 126 237 23 87 93 X -1 -1 252 17 -1 177 137 -1 7 -1 X -1 171 -1 155 -1 -1 -1 60 -1 -1 X -1 152 -1 -1 -1 -1 241 -1 142 -1 X243 69 -1 -1 99 134 -1 -1 -1 144 X 37 63 -1 61 -1 250 173 114 -1 51 X -1 4 73 72 -1 168 211 -1 92 169 X176 166 14 -1 -1 -1 -1 18 148 117 X129 -1 78 19 110 -1 151 154 101 54 X244 98 242 147 227 -1 -1 -1 188 254 X 94 217 170 251 67 231 179 89 -1 3 X -1 -1 1 183 -1 209 15 150 -1 90 X184 159 -1 141 55 238 -1 26 162 -1 X245 133 48 -1 59 -1 -1 103 88 -1 X127 96 41 186 97 33 -1 219 -1 131 X187 194 138 -1 167 -1 81 164 75 79 X112 31 178 66 -1 -1 80 25 172 116 X -1 -1 -1 123 130 236 153 160 108 246 X192 -1 190 -1 161 -1 -1 12 200 213 X198 239 248 -1 -1 -1 -1 -1 247 125 X -1 76 -1 199 -1 10 -1 111 233 157 X -1 -1 -1 8 -1 -1 -1 104 240 5 X -1 115 -1 218 -1 -1 185 16 135 201 X228 46 102 50 100 140 189 208 202 -1 X 65 113 22 -1 109 -1 X 90 49 26 132 156 140 212 -1 147 -1 X198 54 97 148 38 79 25 154 80 -1 X214 -1 248 184 161 16 2 107 66 168 X 33 112 195 30 166 236 65 155 14 84 X222 -1 123 53 136 -1 69 -1 218 1 X125 243 134 43 11 102 145 126 238 194 X 78 232 138 246 224 36 28 -1 150 46 X130 215 120 188 119 105 231 209 60 15 X 18 87 -1 176 39 160 -1 81 159 158 X 0 151 235 192 183 200 -1 12 174 101 X -1 99 55 196 207 75 -1 27 -1 187 X163 242 31 230 254 205 179 190 -1 74 X 72 233 -1 42 241 50 57 228 142 -1 X 70 -1 3 149 52 227 44 220 62 245 X 5 221 128 186 244 56 -1 8 13 133 X 68 91 197 165 17 37 4 -1 89 88 X 85 24 193 110 199 153 34 201 29 255 X -1 247 226 -1 98 252 83 -1 237 116 X -1 191 -1 94 23 -1 143 109 73 219 X117 181 93 162 59 32 103 152 10 164 X 95 167 250 239 -1 115 -1 104 217 77 X -1 -1 6 251 20 71 -1 208 48 189 X137 141 40 253 64 -1 172 135 127 -1 X113 76 61 121 -1 92 35 178 58 203 X -1 124 111 51 144 139 63 171 22 -1 X202 213 175 223 114 169 X 60 -1 26 -1 203 204 122 -1 15 97 X -1 -1 133 -1 159 8 -1 145 27 191 X192 -1 250 117 -1 183 2 18 50 65 X218 -1 143 -1 -1 -1 -1 93 -1 -1 X -1 199 -1 171 -1 74 -1 -1 -1 -1 X 28 -1 162 -1 -1 227 -1 -1 -1 221 X 0 248 -1 103 233 29 140 95 170 -1 X -1 -1 137 190 45 -1 -1 -1 -1 -1 X -1 -1 -1 181 -1 94 -1 104 111 -1 X198 -1 -1 37 85 67 252 9 231 223 X169 -1 -1 63 87 -1 -1 -1 152 -1 X201 88 180 -1 179 118 -1 23 115 161 X247 -1 6 -1 187 -1 -1 240 241 239 X197 207 -1 12 151 185 -1 72 -1 148 X 66 214 -1 32 150 17 254 251 139 -1 X144 134 108 -1 -1 -1 -1 172 173 14 X -1 119 52 -1 -1 -1 208 246 242 100 X 68 43 157 158 -1 -1 -1 -1 229 114 X112 83 -1 25 230 135 -1 124 -1 -1 X 73 19 20 -1 -1 -1 -1 130 90 41 X210 110 -1 4 5 244 211 131 166 219 X200 206 220 -1 141 -1 -1 -1 30 209 X212 59 -1 99 232 -1 -1 55 -1 178 X184 98 224 64 -1 236 235 -1 -1 129 X127 128 168 249 205 -1 167 120 61 243 X 22 147 96 -1 146 -1 X -1 -1 -1 150 223 175 -1 -1 25 204 X -1 122 181 198 -1 56 -1 -1 202 67 X -1 -1 49 168 -1 8 145 -1 177 -1 X 32 211 30 84 57 238 -1 83 217 -1 X160 -1 108 89 -1 -1 228 225 -1 22 X207 176 -1 -1 -1 -1 15 34 169 219 X152 189 107 -1 193 123 95 19 -1 -1 X -1 253 -1 164 -1 -1 -1 -1 230 -1 X -1 -1 209 37 33 -1 205 213 -1 43 X220 -1 194 -1 -1 66 -1 134 -1 -1 X190 -1 103 102 -1 -1 -1 62 42 240 X116 236 115 -1 156 112 110 229 -1 -1 X131 149 11 65 -1 -1 140 196 -1 -1 X239 120 243 139 97 -1 154 174 -1 133 X126 -1 -1 -1 -1 26 182 -1 232 121 X 3 162 60 -1 136 192 114 171 -1 185 X 40 -1 151 -1 73 -1 -1 233 23 58 X197 157 -1 -1 137 5 51 28 -1 227 X -1 12 146 -1 -1 159 255 -1 -1 61 X100 221 155 64 92 -1 127 170 13 -1 X244 210 18 246 9 86 208 50 206 82 X201 31 249 87 242 -1 -1 38 -1 59 X 90 191 -1 4 -1 47 -1 179 46 117 X 78 -1 148 167 -1 237 111 235 35 130 X109 -1 214 132 200 -1 203 -1 -1 212 X -1 -1 -1 71 -1 186 X120 146 232 66 217 81 113 -1 144 239 X 44 49 230 -1 166 60 151 218 34 -1 X 80 128 193 249 -1 148 116 210 183 165 X 94 -1 109 133 18 192 163 73 252 158 X 61 -1 195 46 10 102 43 90 131 11 X122 -1 135 172 -1 207 188 58 57 227 X 15 40 77 99 143 138 3 231 226 136 X221 -1 -1 37 253 104 -1 62 254 185 X 20 5 -1 132 173 189 124 91 150 255 X 47 87 212 184 30 -1 -1 149 187 63 X178 -1 45 228 75 180 177 141 125 32 X121 -1 -1 6 161 -1 26 244 224 137 X 0 110 50 157 86 108 -1 156 21 147 X238 48 83 33 240 52 69 119 65 175 X -1 107 160 64 8 176 1 129 25 97 X 88 16 225 -1 243 164 127 123 39 -1 X142 114 -1 36 155 29 14 169 233 167 X211 -1 53 84 -1 139 145 106 100 204 X105 201 223 28 93 79 203 98 56 85 X -1 251 35 22 205 42 -1 219 213 235 X -1 181 222 186 179 194 -1 55 246 215 X 27 170 92 198 -1 209 -1 4 17 197 X -1 70 202 182 118 152 68 59 103 245 X 12 67 2 168 -1 199 247 250 130 9 X134 248 -1 154 117 229 208 236 241 23 X237 191 38 74 78 89 X -1 165 187 203 8 -1 -1 168 4 124 X131 36 86 -1 -1 83 54 -1 -1 150 X221 56 172 144 65 218 42 33 109 252 X 58 93 160 27 115 214 11 -1 40 117 X 38 -1 26 126 228 94 247 152 235 232 X -1 181 87 -1 16 108 21 138 30 147 X 66 222 250 84 174 24 60 199 116 90 X170 245 239 242 213 118 -1 224 209 -1 X -1 151 98 15 63 193 12 52 -1 -1 X 69 99 169 31 45 217 156 104 82 91 X185 -1 223 133 97 143 127 -1 55 28 X114 -1 134 141 110 34 68 39 75 237 X -1 179 -1 157 9 130 43 106 167 246 X125 10 176 103 112 255 251 142 57 200 X155 113 137 105 23 177 173 59 192 189 X 19 81 47 161 -1 140 96 123 -1 -1 X 32 153 220 -1 -1 1 190 128 7 92 X 70 186 22 146 64 233 132 145 231 121 X254 51 -1 216 210 100 171 2 -1 149 X166 198 148 85 206 -1 208 249 191 67 X139 207 -1 3 241 -1 194 201 196 78 X184 -1 244 74 35 238 183 95 25 230 X162 20 61 102 77 -1 236 -1 44 -1 X219 178 49 175 -1 48 226 119 215 72 X -1 204 73 -1 212 71 129 46 -1 197 X 62 136 29 -1 180 135 X -1 78 -1 188 184 32 151 236 130 16 X 57 -1 209 240 213 63 9 157 123 84 X147 -1 172 219 224 242 49 53 220 -1 X146 196 5 66 231 254 179 -1 210 197 X227 74 112 -1 160 204 69 193 158 26 X 59 -1 65 27 77 142 194 10 141 50 X199 207 -1 15 91 52 33 155 191 46 X -1 -1 252 -1 41 202 144 54 1 -1 X100 189 140 103 19 89 234 97 247 85 X -1 64 -1 225 162 153 206 87 120 104 X 80 248 117 83 99 124 134 177 135 118 X -1 119 42 164 148 139 183 102 109 111 X 98 241 208 18 105 175 192 -1 176 -1 X 8 235 205 198 106 108 -1 182 221 115 X 82 58 55 253 76 232 30 20 114 -1 X168 6 -1 95 -1 67 251 17 48 222 X 44 -1 94 171 113 174 -1 229 150 -1 X -1 163 22 201 165 125 128 107 -1 36 X195 238 137 116 4 203 -1 250 3 81 X239 68 126 47 56 180 31 39 133 60 X211 173 75 185 45 132 96 61 122 12 X 38 200 -1 14 -1 218 255 244 215 23 X 28 138 159 246 24 93 -1 40 -1 167 X -1 34 145 -1 86 131 7 -1 181 190 X 13 121 25 -1 217 249 223 88 101 245 X187 156 72 143 35 216 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 X -1 -1 -1 -1 -1 -1 END_OF_test1.perm if test 16800 -ne `wc -c <test1.perm`; then echo shar: \"test1.perm\" unpacked with wrong size! fi # end of overwriting check fi echo shar: End of archive 6 \(of 11\). cp /dev/null ark6isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 11 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 11 archives. rm -f ark[1-9]isdone ark[1-9][0-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0