Commit | Line | Data |
---|---|---|
54c5ebb1 PH |
1 | Exim version x.yz .... |
2 | changed uid/gid: forcing real = effective | |
3 | uid=uuuu gid=CALLER_GID pid=pppp | |
4 | configuration file is TESTSUITE/test-config | |
5 | admin user | |
4b424e0d | 6 | dropping to exim gid; retaining priv uid |
54c5ebb1 PH |
7 | originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME |
8 | sender address = CALLER@test.ex | |
9 | Address testing: uid=uuuu gid=EXIM_GID euid=uuuu egid=EXIM_GID | |
10 | >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | |
11 | Testing x@test.ex | |
12 | >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | |
13 | Considering x@test.ex | |
14 | >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | |
15 | routing x@test.ex | |
16 | --------> l1 router <-------- | |
17 | local_part=x domain=test.ex | |
18 | calling l1 router | |
19 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases1}} | |
42c7f0b4 JH |
20 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases1" |
21 | search_find: file="TESTSUITE/aux-fixed/0123.aliases1" | |
22 | key="x" partial=-1 affix=NULL starflags=0 | |
23 | LRU list: | |
24 | 0TESTSUITE/aux-fixed/0123.aliases1 | |
25 | End | |
26 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases1" | |
27 | type=lsearch key="x" | |
28 | file lookup required for x | |
29 | in TESTSUITE/aux-fixed/0123.aliases1 | |
30 | lookup failed | |
54c5ebb1 PH |
31 | expanded: |
32 | file is not a filter file | |
33 | parse_forward_list: | |
34 | l1 router declined for x@test.ex | |
35 | --------> l2 router <-------- | |
36 | local_part=x domain=test.ex | |
37 | calling l2 router | |
38 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases2}} | |
42c7f0b4 JH |
39 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases2" |
40 | search_find: file="TESTSUITE/aux-fixed/0123.aliases2" | |
41 | key="x" partial=-1 affix=NULL starflags=0 | |
42 | LRU list: | |
43 | 0TESTSUITE/aux-fixed/0123.aliases2 | |
44 | 0TESTSUITE/aux-fixed/0123.aliases1 | |
45 | End | |
46 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases2" | |
47 | type=lsearch key="x" | |
48 | file lookup required for x | |
49 | in TESTSUITE/aux-fixed/0123.aliases2 | |
50 | lookup failed | |
54c5ebb1 PH |
51 | expanded: |
52 | file is not a filter file | |
53 | parse_forward_list: | |
54 | l2 router declined for x@test.ex | |
55 | --------> l3 router <-------- | |
56 | local_part=x domain=test.ex | |
57 | calling l3 router | |
58 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases3}} | |
42c7f0b4 JH |
59 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases3" |
60 | Too many lookup files open | |
61 | closing 0TESTSUITE/aux-fixed/0123.aliases1 | |
62 | search_find: file="TESTSUITE/aux-fixed/0123.aliases3" | |
63 | key="x" partial=-1 affix=NULL starflags=0 | |
64 | LRU list: | |
65 | 0TESTSUITE/aux-fixed/0123.aliases3 | |
66 | 0TESTSUITE/aux-fixed/0123.aliases2 | |
67 | End | |
68 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases3" | |
69 | type=lsearch key="x" | |
70 | file lookup required for x | |
71 | in TESTSUITE/aux-fixed/0123.aliases3 | |
72 | lookup failed | |
54c5ebb1 PH |
73 | expanded: |
74 | file is not a filter file | |
75 | parse_forward_list: | |
76 | l3 router declined for x@test.ex | |
77 | --------> c1 router <-------- | |
78 | local_part=x domain=test.ex | |
79 | calling c1 router | |
80 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases4}} | |
42c7f0b4 JH |
81 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases4" |
82 | Too many lookup files open | |
83 | closing 0TESTSUITE/aux-fixed/0123.aliases2 | |
84 | search_find: file="TESTSUITE/aux-fixed/0123.aliases4" | |
85 | key="x" partial=-1 affix=NULL starflags=0 | |
86 | LRU list: | |
87 | 0TESTSUITE/aux-fixed/0123.aliases4 | |
88 | 0TESTSUITE/aux-fixed/0123.aliases3 | |
89 | End | |
90 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases4" | |
91 | type=lsearch key="x" | |
92 | file lookup required for x | |
93 | in TESTSUITE/aux-fixed/0123.aliases4 | |
94 | lookup failed | |
54c5ebb1 PH |
95 | expanded: |
96 | file is not a filter file | |
97 | parse_forward_list: | |
98 | c1 router declined for x@test.ex | |
99 | --------> c2 router <-------- | |
100 | local_part=x domain=test.ex | |
101 | calling c2 router | |
102 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases5}} | |
42c7f0b4 JH |
103 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases5" |
104 | Too many lookup files open | |
105 | closing 0TESTSUITE/aux-fixed/0123.aliases3 | |
106 | search_find: file="TESTSUITE/aux-fixed/0123.aliases5" | |
107 | key="x" partial=-1 affix=NULL starflags=0 | |
108 | LRU list: | |
109 | 0TESTSUITE/aux-fixed/0123.aliases5 | |
110 | 0TESTSUITE/aux-fixed/0123.aliases4 | |
111 | End | |
112 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases5" | |
113 | type=lsearch key="x" | |
114 | file lookup required for x | |
115 | in TESTSUITE/aux-fixed/0123.aliases5 | |
116 | lookup failed | |
54c5ebb1 PH |
117 | expanded: |
118 | file is not a filter file | |
119 | parse_forward_list: | |
120 | c2 router declined for x@test.ex | |
121 | --------> c3 router <-------- | |
122 | local_part=x domain=test.ex | |
123 | calling c3 router | |
124 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases6}} | |
42c7f0b4 JH |
125 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases6" |
126 | Too many lookup files open | |
127 | closing 0TESTSUITE/aux-fixed/0123.aliases4 | |
128 | search_find: file="TESTSUITE/aux-fixed/0123.aliases6" | |
129 | key="x" partial=-1 affix=NULL starflags=0 | |
130 | LRU list: | |
131 | 0TESTSUITE/aux-fixed/0123.aliases6 | |
132 | 0TESTSUITE/aux-fixed/0123.aliases5 | |
133 | End | |
134 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases6" | |
135 | type=lsearch key="x" | |
136 | file lookup required for x | |
137 | in TESTSUITE/aux-fixed/0123.aliases6 | |
138 | lookup failed | |
54c5ebb1 PH |
139 | expanded: |
140 | file is not a filter file | |
141 | parse_forward_list: | |
142 | c3 router declined for x@test.ex | |
143 | no more routers | |
144 | >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | |
145 | Testing y@test.ex | |
146 | >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | |
147 | Considering y@test.ex | |
148 | >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | |
149 | routing y@test.ex | |
150 | --------> l1 router <-------- | |
151 | local_part=y domain=test.ex | |
152 | calling l1 router | |
153 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases1}} | |
42c7f0b4 JH |
154 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases1" |
155 | cached closed | |
156 | Too many lookup files open | |
157 | closing 0TESTSUITE/aux-fixed/0123.aliases5 | |
158 | search_find: file="TESTSUITE/aux-fixed/0123.aliases1" | |
159 | key="y" partial=-1 affix=NULL starflags=0 | |
160 | LRU list: | |
161 | 0TESTSUITE/aux-fixed/0123.aliases1 | |
162 | 0TESTSUITE/aux-fixed/0123.aliases6 | |
163 | End | |
164 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases1" | |
165 | type=lsearch key="y" | |
166 | file lookup required for y | |
167 | in TESTSUITE/aux-fixed/0123.aliases1 | |
168 | lookup failed | |
54c5ebb1 PH |
169 | expanded: |
170 | file is not a filter file | |
171 | parse_forward_list: | |
172 | l1 router declined for y@test.ex | |
173 | --------> l2 router <-------- | |
174 | local_part=y domain=test.ex | |
175 | calling l2 router | |
176 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases2}} | |
42c7f0b4 JH |
177 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases2" |
178 | cached closed | |
179 | Too many lookup files open | |
180 | closing 0TESTSUITE/aux-fixed/0123.aliases6 | |
181 | search_find: file="TESTSUITE/aux-fixed/0123.aliases2" | |
182 | key="y" partial=-1 affix=NULL starflags=0 | |
183 | LRU list: | |
184 | 0TESTSUITE/aux-fixed/0123.aliases2 | |
185 | 0TESTSUITE/aux-fixed/0123.aliases1 | |
186 | End | |
187 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases2" | |
188 | type=lsearch key="y" | |
189 | file lookup required for y | |
190 | in TESTSUITE/aux-fixed/0123.aliases2 | |
191 | lookup failed | |
54c5ebb1 PH |
192 | expanded: |
193 | file is not a filter file | |
194 | parse_forward_list: | |
195 | l2 router declined for y@test.ex | |
196 | --------> l3 router <-------- | |
197 | local_part=y domain=test.ex | |
198 | calling l3 router | |
199 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases3}} | |
42c7f0b4 JH |
200 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases3" |
201 | cached closed | |
202 | Too many lookup files open | |
203 | closing 0TESTSUITE/aux-fixed/0123.aliases1 | |
204 | search_find: file="TESTSUITE/aux-fixed/0123.aliases3" | |
205 | key="y" partial=-1 affix=NULL starflags=0 | |
206 | LRU list: | |
207 | 0TESTSUITE/aux-fixed/0123.aliases3 | |
208 | 0TESTSUITE/aux-fixed/0123.aliases2 | |
209 | End | |
210 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases3" | |
211 | type=lsearch key="y" | |
212 | file lookup required for y | |
213 | in TESTSUITE/aux-fixed/0123.aliases3 | |
214 | lookup failed | |
54c5ebb1 PH |
215 | expanded: |
216 | file is not a filter file | |
217 | parse_forward_list: | |
218 | l3 router declined for y@test.ex | |
219 | --------> c1 router <-------- | |
220 | local_part=y domain=test.ex | |
221 | calling c1 router | |
222 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases4}} | |
42c7f0b4 JH |
223 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases4" |
224 | cached closed | |
225 | Too many lookup files open | |
226 | closing 0TESTSUITE/aux-fixed/0123.aliases2 | |
227 | search_find: file="TESTSUITE/aux-fixed/0123.aliases4" | |
228 | key="y" partial=-1 affix=NULL starflags=0 | |
229 | LRU list: | |
230 | 0TESTSUITE/aux-fixed/0123.aliases4 | |
231 | 0TESTSUITE/aux-fixed/0123.aliases3 | |
232 | End | |
233 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases4" | |
234 | type=lsearch key="y" | |
235 | file lookup required for y | |
236 | in TESTSUITE/aux-fixed/0123.aliases4 | |
237 | lookup failed | |
54c5ebb1 PH |
238 | expanded: |
239 | file is not a filter file | |
240 | parse_forward_list: | |
241 | c1 router declined for y@test.ex | |
242 | --------> c2 router <-------- | |
243 | local_part=y domain=test.ex | |
244 | calling c2 router | |
245 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases5}} | |
42c7f0b4 JH |
246 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases5" |
247 | cached closed | |
248 | Too many lookup files open | |
249 | closing 0TESTSUITE/aux-fixed/0123.aliases3 | |
250 | search_find: file="TESTSUITE/aux-fixed/0123.aliases5" | |
251 | key="y" partial=-1 affix=NULL starflags=0 | |
252 | LRU list: | |
253 | 0TESTSUITE/aux-fixed/0123.aliases5 | |
254 | 0TESTSUITE/aux-fixed/0123.aliases4 | |
255 | End | |
256 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases5" | |
257 | type=lsearch key="y" | |
258 | file lookup required for y | |
259 | in TESTSUITE/aux-fixed/0123.aliases5 | |
260 | lookup failed | |
54c5ebb1 PH |
261 | expanded: |
262 | file is not a filter file | |
263 | parse_forward_list: | |
264 | c2 router declined for y@test.ex | |
265 | --------> c3 router <-------- | |
266 | local_part=y domain=test.ex | |
267 | calling c3 router | |
268 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases6}} | |
42c7f0b4 JH |
269 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases6" |
270 | cached closed | |
271 | Too many lookup files open | |
272 | closing 0TESTSUITE/aux-fixed/0123.aliases4 | |
273 | search_find: file="TESTSUITE/aux-fixed/0123.aliases6" | |
274 | key="y" partial=-1 affix=NULL starflags=0 | |
275 | LRU list: | |
276 | 0TESTSUITE/aux-fixed/0123.aliases6 | |
277 | 0TESTSUITE/aux-fixed/0123.aliases5 | |
278 | End | |
279 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases6" | |
280 | type=lsearch key="y" | |
281 | file lookup required for y | |
282 | in TESTSUITE/aux-fixed/0123.aliases6 | |
283 | lookup failed | |
54c5ebb1 PH |
284 | expanded: |
285 | file is not a filter file | |
286 | parse_forward_list: | |
287 | c3 router declined for y@test.ex | |
288 | no more routers | |
289 | >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | |
290 | Testing z@test.ex | |
291 | >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | |
292 | Considering z@test.ex | |
293 | >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | |
294 | routing z@test.ex | |
295 | --------> l1 router <-------- | |
296 | local_part=z domain=test.ex | |
297 | calling l1 router | |
298 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases1}} | |
42c7f0b4 JH |
299 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases1" |
300 | cached closed | |
301 | Too many lookup files open | |
302 | closing 0TESTSUITE/aux-fixed/0123.aliases5 | |
303 | search_find: file="TESTSUITE/aux-fixed/0123.aliases1" | |
304 | key="z" partial=-1 affix=NULL starflags=0 | |
305 | LRU list: | |
306 | 0TESTSUITE/aux-fixed/0123.aliases1 | |
307 | 0TESTSUITE/aux-fixed/0123.aliases6 | |
308 | End | |
309 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases1" | |
310 | type=lsearch key="z" | |
311 | file lookup required for z | |
312 | in TESTSUITE/aux-fixed/0123.aliases1 | |
313 | lookup failed | |
54c5ebb1 PH |
314 | expanded: |
315 | file is not a filter file | |
316 | parse_forward_list: | |
317 | l1 router declined for z@test.ex | |
318 | --------> l2 router <-------- | |
319 | local_part=z domain=test.ex | |
320 | calling l2 router | |
321 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases2}} | |
42c7f0b4 JH |
322 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases2" |
323 | cached closed | |
324 | Too many lookup files open | |
325 | closing 0TESTSUITE/aux-fixed/0123.aliases6 | |
326 | search_find: file="TESTSUITE/aux-fixed/0123.aliases2" | |
327 | key="z" partial=-1 affix=NULL starflags=0 | |
328 | LRU list: | |
329 | 0TESTSUITE/aux-fixed/0123.aliases2 | |
330 | 0TESTSUITE/aux-fixed/0123.aliases1 | |
331 | End | |
332 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases2" | |
333 | type=lsearch key="z" | |
334 | file lookup required for z | |
335 | in TESTSUITE/aux-fixed/0123.aliases2 | |
336 | lookup failed | |
54c5ebb1 PH |
337 | expanded: |
338 | file is not a filter file | |
339 | parse_forward_list: | |
340 | l2 router declined for z@test.ex | |
341 | --------> l3 router <-------- | |
342 | local_part=z domain=test.ex | |
343 | calling l3 router | |
344 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases3}} | |
42c7f0b4 JH |
345 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases3" |
346 | cached closed | |
347 | Too many lookup files open | |
348 | closing 0TESTSUITE/aux-fixed/0123.aliases1 | |
349 | search_find: file="TESTSUITE/aux-fixed/0123.aliases3" | |
350 | key="z" partial=-1 affix=NULL starflags=0 | |
351 | LRU list: | |
352 | 0TESTSUITE/aux-fixed/0123.aliases3 | |
353 | 0TESTSUITE/aux-fixed/0123.aliases2 | |
354 | End | |
355 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases3" | |
356 | type=lsearch key="z" | |
357 | file lookup required for z | |
358 | in TESTSUITE/aux-fixed/0123.aliases3 | |
359 | lookup failed | |
54c5ebb1 PH |
360 | expanded: |
361 | file is not a filter file | |
362 | parse_forward_list: | |
363 | l3 router declined for z@test.ex | |
364 | --------> c1 router <-------- | |
365 | local_part=z domain=test.ex | |
366 | calling c1 router | |
367 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases4}} | |
42c7f0b4 JH |
368 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases4" |
369 | cached closed | |
370 | Too many lookup files open | |
371 | closing 0TESTSUITE/aux-fixed/0123.aliases2 | |
372 | search_find: file="TESTSUITE/aux-fixed/0123.aliases4" | |
373 | key="z" partial=-1 affix=NULL starflags=0 | |
374 | LRU list: | |
375 | 0TESTSUITE/aux-fixed/0123.aliases4 | |
376 | 0TESTSUITE/aux-fixed/0123.aliases3 | |
377 | End | |
378 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases4" | |
379 | type=lsearch key="z" | |
380 | file lookup required for z | |
381 | in TESTSUITE/aux-fixed/0123.aliases4 | |
382 | lookup failed | |
54c5ebb1 PH |
383 | expanded: |
384 | file is not a filter file | |
385 | parse_forward_list: | |
386 | c1 router declined for z@test.ex | |
387 | --------> c2 router <-------- | |
388 | local_part=z domain=test.ex | |
389 | calling c2 router | |
390 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases5}} | |
42c7f0b4 JH |
391 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases5" |
392 | cached closed | |
393 | Too many lookup files open | |
394 | closing 0TESTSUITE/aux-fixed/0123.aliases3 | |
395 | search_find: file="TESTSUITE/aux-fixed/0123.aliases5" | |
396 | key="z" partial=-1 affix=NULL starflags=0 | |
397 | LRU list: | |
398 | 0TESTSUITE/aux-fixed/0123.aliases5 | |
399 | 0TESTSUITE/aux-fixed/0123.aliases4 | |
400 | End | |
401 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases5" | |
402 | type=lsearch key="z" | |
403 | file lookup required for z | |
404 | in TESTSUITE/aux-fixed/0123.aliases5 | |
405 | lookup failed | |
54c5ebb1 PH |
406 | expanded: |
407 | file is not a filter file | |
408 | parse_forward_list: | |
409 | c2 router declined for z@test.ex | |
410 | --------> c3 router <-------- | |
411 | local_part=z domain=test.ex | |
412 | calling c3 router | |
413 | rda_interpret (string): ${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.aliases6}} | |
42c7f0b4 JH |
414 | search_open: lsearch "TESTSUITE/aux-fixed/0123.aliases6" |
415 | cached closed | |
416 | Too many lookup files open | |
417 | closing 0TESTSUITE/aux-fixed/0123.aliases4 | |
418 | search_find: file="TESTSUITE/aux-fixed/0123.aliases6" | |
419 | key="z" partial=-1 affix=NULL starflags=0 | |
420 | LRU list: | |
421 | 0TESTSUITE/aux-fixed/0123.aliases6 | |
422 | 0TESTSUITE/aux-fixed/0123.aliases5 | |
423 | End | |
424 | internal_search_find: file="TESTSUITE/aux-fixed/0123.aliases6" | |
425 | type=lsearch key="z" | |
426 | file lookup required for z | |
427 | in TESTSUITE/aux-fixed/0123.aliases6 | |
428 | lookup failed | |
54c5ebb1 PH |
429 | expanded: |
430 | file is not a filter file | |
431 | parse_forward_list: | |
432 | c3 router declined for z@test.ex | |
433 | no more routers | |
434 | search_tidyup called | |
9bfb7e1b | 435 | >>>>>>>>>>>>>>>> Exim pid=pppp (main) terminating with rc=2 >>>>>>>>>>>>>>>> |