Testsuite: output changes resulting
[exim.git] / test / stderr / 2610
index a59624c158d3b4a3f4ccb4f7f7f4958681d27ca8..e964a6fbabb6eb5cb75eda1dc88dd38587a5de8b 100644 (file)
@@ -1,4 +1,8 @@
+### start a db server
+### wait for db startup, set password on the root user
+### create testdb and extra users
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -9,9 +13,10 @@ dropping to exim gid; retaining priv uid
  internal_search_find: file="NULL"
    type=mysql key="select name from them where id='ph10';" opts=NULL
  database lookup required for select name from them where id='ph10';
- MySQL query: select name from them where id='ph10';
- MYSQL new connection: host=127.0.0.1 port=1223 socket=NULL database=test user=root
- lookup yielded: Philip Hazel
+ MySQL query: "select name from them where id='ph10';" opts 'NULL'
+ MYSQL new connection: host=127.0.0.1 port=PORT_N socket=NULL database=test user=root
+ creating new cache entry
+ lookup yielded: Philip░Hazel
  search_open: mysql "NULL"
    cached open
  search_find: file="NULL"
@@ -20,7 +25,7 @@ dropping to exim gid; retaining priv uid
  internal_search_find: file="NULL"
    type=mysql key="select name from them where id='ph10';" opts=NULL
  cached data used for lookup of select name from them where id='ph10';
- lookup yielded: Philip Hazel
+ lookup yielded: PhilipHazel
  search_open: mysql "NULL"
    cached open
  search_find: file="NULL"
@@ -29,9 +34,10 @@ dropping to exim gid; retaining priv uid
  internal_search_find: file="NULL"
    type=mysql key="select name from them where id='xxxx';" opts=NULL
  database lookup required for select name from them where id='xxxx';
- MySQL query: select name from them where id='xxxx';
- MYSQL using cached connection for 127.0.0.1:1223/test/root
+ MySQL query: "select name from them where id='xxxx';" opts 'NULL'
+ MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
  MYSQL: no data found
+ creating new cache entry
  lookup failed
  search_open: mysql "NULL"
    cached open
@@ -41,8 +47,9 @@ dropping to exim gid; retaining priv uid
  internal_search_find: file="NULL"
    type=mysql key="select name from them where id='nothing';" opts=NULL
  database lookup required for select name from them where id='nothing';
- MySQL query: select name from them where id='nothing';
- MYSQL using cached connection for 127.0.0.1:1223/test/root
+ MySQL query: "select name from them where id='nothing';" opts 'NULL'
+ MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
+ creating new cache entry
  lookup yielded: 
  search_open: mysql "NULL"
    cached open
@@ -52,9 +59,10 @@ dropping to exim gid; retaining priv uid
  internal_search_find: file="NULL"
    type=mysql key="select id,name from them where id='nothing';" opts=NULL
  database lookup required for select id,name from them where id='nothing';
- MySQL query: select id,name from them where id='nothing';
- MYSQL using cached connection for 127.0.0.1:1223/test/root
- lookup yielded: id=nothing name="" 
+ MySQL query: "select id,name from them where id='nothing';" opts 'NULL'
+ MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
+ creating new cache entry
+ lookup yielded: id=nothing░name=""░
  search_open: mysql "NULL"
    cached open
  search_find: file="NULL"
@@ -63,8 +71,8 @@ dropping to exim gid; retaining priv uid
  internal_search_find: file="NULL"
    type=mysql key="delete from them where id='nonexist';" opts=NULL
  database lookup required for delete from them where id='nonexist';
- MySQL query: delete from them where id='nonexist';
- MYSQL using cached connection for 127.0.0.1:1223/test/root
+ MySQL query: "delete from them where id='nonexist';" opts 'NULL'
+ MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
  MYSQL: query was not one that returns data
  lookup forced cache cleanup
  lookup yielded: 0
@@ -76,9 +84,10 @@ dropping to exim gid; retaining priv uid
  internal_search_find: file="NULL"
    type=mysql key="select * from them where id='quote';" opts=NULL
  database lookup required for select * from them where id='quote';
- MySQL query: select * from them where id='quote';
- MYSQL using cached connection for 127.0.0.1:1223/test/root
+ MySQL query: "select * from them where id='quote';" opts 'NULL'
+ MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
  MYSQL: no data found
+ creating new cache entry
  lookup failed
  search_open: mysql "NULL"
    cached open
@@ -88,9 +97,10 @@ dropping to exim gid; retaining priv uid
  internal_search_find: file="NULL"
    type=mysql key="select * from them where id='filter';" opts=NULL
  database lookup required for select * from them where id='filter';
- MySQL query: select * from them where id='filter';
- MYSQL using cached connection for 127.0.0.1:1223/test/root
+ MySQL query: "select * from them where id='filter';" opts 'NULL'
+ MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
  MYSQL: no data found
+ creating new cache entry
  lookup failed
  search_open: mysql "NULL"
    cached open
@@ -100,9 +110,10 @@ dropping to exim gid; retaining priv uid
  internal_search_find: file="NULL"
    type=mysql key="select * from them where id='quote2';" opts=NULL
  database lookup required for select * from them where id='quote2';
- MySQL query: select * from them where id='quote2';
- MYSQL using cached connection for 127.0.0.1:1223/test/root
- lookup yielded: name="\"stquot" id=quote2 
+ MySQL query: "select * from them where id='quote2';" opts 'NULL'
+ MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
+ creating new cache entry
+ lookup yielded: name="\"stquot"░id=quote2░
  search_open: mysql "NULL"
    cached open
  search_find: file="NULL"
@@ -111,64 +122,84 @@ dropping to exim gid; retaining priv uid
  internal_search_find: file="NULL"
    type=mysql key="select * from them where id='nlonly';" opts=NULL
  database lookup required for select * from them where id='nlonly';
- MySQL query: select * from them where id='nlonly';
- MYSQL using cached connection for 127.0.0.1:1223/test/root
+ MySQL query: "select * from them where id='nlonly';" opts 'NULL'
+ MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
  MYSQL: no data found
+ creating new cache entry
  lookup failed
  search_open: mysql "NULL"
    cached open
  search_find: file="NULL"
-   key="servers=x:127.0.0.1::1223; select name from them where id='ph10';" partial=-1 affix=NULL starflags=0 opts=NULL
+   key="servers=x:127.0.0.1::PORT_N; select name from them where id='ph10';" partial=-1 affix=NULL starflags=0 opts=NULL
  LRU list:
  internal_search_find: file="NULL"
-   type=mysql key="servers=x:127.0.0.1::1223; select name from them where id='ph10';" opts=NULL
- database lookup required for servers=x:127.0.0.1::1223; select name from them where id='ph10';
- MySQL query: servers=x:127.0.0.1::1223; select name from them where id='ph10';
+   type=mysql key="servers=x:127.0.0.1::PORT_N; select name from them where id='ph10';" opts=NULL
+ database lookup required for servers=x:127.0.0.1::PORT_N; select name from them where id='ph10';
+ MySQL query: "servers=x:127.0.0.1::PORT_N; select name from them where id='ph10';" opts 'NULL'
+LOG: MAIN
+  Exim configuration error in line 11 of -be stdin:
+  WARNING: obsolete syntax used for lookup
  lookup deferred: MySQL server "x" not found in mysql_servers
  search_open: mysql "NULL"
    cached open
  search_find: file="NULL"
-   key="servers=127.0.0.1::1223:x; select name from them where id='ph10';" partial=-1 affix=NULL starflags=0 opts=NULL
+   key="servers=127.0.0.1::PORT_N:x; select name from them where id='ph10';" partial=-1 affix=NULL starflags=0 opts=NULL
  LRU list:
  internal_search_find: file="NULL"
-   type=mysql key="servers=127.0.0.1::1223:x; select name from them where id='ph10';" opts=NULL
- database lookup required for servers=127.0.0.1::1223:x; select name from them where id='ph10';
- MySQL query: servers=127.0.0.1::1223:x; select name from them where id='ph10';
- MYSQL using cached connection for 127.0.0.1:1223/test/root
- lookup yielded: Philip Hazel
+   type=mysql key="servers=127.0.0.1::PORT_N:x; select name from them where id='ph10';" opts=NULL
+ database lookup required for servers=127.0.0.1::PORT_N:x; select name from them where id='ph10';
+ MySQL query: "servers=127.0.0.1::PORT_N:x; select name from them where id='ph10';" opts 'NULL'
+LOG: MAIN
+  Exim configuration error in line 12 of -be stdin:
+  WARNING: obsolete syntax used for lookup
+ MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
+ creating new cache entry
+ lookup yielded: Philip░Hazel
  search_open: mysql "NULL"
    cached open
  search_find: file="NULL"
-   key="servers=127.0.0.1::1223/test/root/:x; select name from them where id='ph10';" partial=-1 affix=NULL starflags=0 opts=NULL
+   key="servers=127.0.0.1::PORT_N/test/root/:x; select name from them where id='ph10';" partial=-1 affix=NULL starflags=0 opts=NULL
  LRU list:
  internal_search_find: file="NULL"
-   type=mysql key="servers=127.0.0.1::1223/test/root/:x; select name from them where id='ph10';" opts=NULL
- database lookup required for servers=127.0.0.1::1223/test/root/:x; select name from them where id='ph10';
- MySQL query: servers=127.0.0.1::1223/test/root/:x; select name from them where id='ph10';
- MYSQL using cached connection for 127.0.0.1:1223/test/root
- lookup yielded: Philip Hazel
+   type=mysql key="servers=127.0.0.1::PORT_N/test/root/:x; select name from them where id='ph10';" opts=NULL
+ database lookup required for servers=127.0.0.1::PORT_N/test/root/:x; select name from them where id='ph10';
+ MySQL query: "servers=127.0.0.1::PORT_N/test/root/:x; select name from them where id='ph10';" opts 'NULL'
+LOG: MAIN
+  Exim configuration error in line 13 of -be stdin:
+  WARNING: obsolete syntax used for lookup
+ MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
+ creating new cache entry
+ lookup yielded: Philip░Hazel
  search_open: mysql "NULL"
    cached open
  search_find: file="NULL"
-   key="servers=ip4.ip4.ip4.ip4::1223/test/root/:127.0.0.1::1223; select name from them where id='ph10';" partial=-1 affix=NULL starflags=0 opts=NULL
+   key="servers=ip4.ip4.ip4.ip4::1223/test/root/:127.0.0.1::PORT_N; select name from them where id='ph10';" partial=-1 affix=NULL starflags=0 opts=NULL
  LRU list:
  internal_search_find: file="NULL"
-   type=mysql key="servers=ip4.ip4.ip4.ip4::1223/test/root/:127.0.0.1::1223; select name from them where id='ph10';" opts=NULL
- database lookup required for servers=ip4.ip4.ip4.ip4::1223/test/root/:127.0.0.1::1223; select name from them where id='ph10';
- MySQL query: servers=ip4.ip4.ip4.ip4::1223/test/root/:127.0.0.1::1223; select name from them where id='ph10';
- MYSQL new connection: host=ip4.ip4.ip4.ip4 port=1223 socket=NULL database=test user=root
- lookup yielded: Philip Hazel
+   type=mysql key="servers=ip4.ip4.ip4.ip4::1223/test/root/:127.0.0.1::PORT_N; select name from them where id='ph10';" opts=NULL
+ database lookup required for servers=ip4.ip4.ip4.ip4::1223/test/root/:127.0.0.1::PORT_N; select name from them where id='ph10';
+ MySQL query: "servers=ip4.ip4.ip4.ip4::1223/test/root/:127.0.0.1::PORT_N; select name from them where id='ph10';" opts 'NULL'
+LOG: MAIN
+  Exim configuration error in line 14 of -be stdin:
+  WARNING: obsolete syntax used for lookup
+ MYSQL new connection: host=ip4.ip4.ip4.ip4 port=PORT_N socket=NULL database=test user=root
+ creating new cache entry
+ lookup yielded: Philip░Hazel
  search_open: mysql "NULL"
    cached open
  search_find: file="NULL"
-   key="servers=localhost(TESTSUITE/mysql/sock)/test/root/; select name from them where id='ph10';" partial=-1 affix=NULL starflags=0 opts=NULL
+   key="servers=localhost(TESTSUITE/mysql/sock)/test/root/pass; select name from them where id='ph10';" partial=-1 affix=NULL starflags=0 opts=NULL
  LRU list:
  internal_search_find: file="NULL"
-   type=mysql key="servers=localhost(TESTSUITE/mysql/sock)/test/root/; select name from them where id='ph10';" opts=NULL
- database lookup required for servers=localhost(TESTSUITE/mysql/sock)/test/root/; select name from them where id='ph10';
- MySQL query: servers=localhost(TESTSUITE/mysql/sock)/test/root/; select name from them where id='ph10';
+   type=mysql key="servers=localhost(TESTSUITE/mysql/sock)/test/root/pass; select name from them where id='ph10';" opts=NULL
+ database lookup required for servers=localhost(TESTSUITE/mysql/sock)/test/root/pass; select name from them where id='ph10';
+ MySQL query: "servers=localhost(TESTSUITE/mysql/sock)/test/root/pass; select name from them where id='ph10';" opts 'NULL'
+LOG: MAIN
+  Exim configuration error in line 15 of -be stdin:
+  WARNING: obsolete syntax used for lookup
  MYSQL new connection: host=localhost port=0 socket=TESTSUITE/mysql/sock database=test user=root
- lookup yielded: Philip Hazel
+ creating new cache entry
+ lookup yielded: Philip░Hazel
  search_open: mysql "NULL"
    cached open
  search_find: file="NULL"
@@ -177,9 +208,10 @@ dropping to exim gid; retaining priv uid
  internal_search_find: file="NULL"
    type=mysql key="SELECT name FROM them WHERE id IN ('ph10', 'aaaa');" opts=NULL
  database lookup required for SELECT name FROM them WHERE id IN ('ph10', 'aaaa');
- MySQL query: SELECT name FROM them WHERE id IN ('ph10', 'aaaa');
- MYSQL using cached connection for 127.0.0.1:1223/test/root
- lookup yielded: Philip Hazel
+ MySQL query: "SELECT name FROM them WHERE id IN ('ph10', 'aaaa');" opts 'NULL'
+ MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
+ creating new cache entry
+ lookup yielded: Philip░Hazel↩
  Aristotle
  search_open: mysql "NULL"
    cached open
@@ -189,10 +221,11 @@ dropping to exim gid; retaining priv uid
  internal_search_find: file="NULL"
    type=mysql key="SELECT *    FROM them WHERE id IN ('ph10', 'aaaa');" opts=NULL
  database lookup required for SELECT *    FROM them WHERE id IN ('ph10', 'aaaa');
- MySQL query: SELECT *    FROM them WHERE id IN ('ph10', 'aaaa');
- MYSQL using cached connection for 127.0.0.1:1223/test/root
- lookup yielded: name="Philip Hazel" id=ph10 
- name=Aristotle id=aaaa 
+ MySQL query: "SELECT *    FROM them WHERE id IN ('ph10', 'aaaa');" opts 'NULL'
+ MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
+ creating new cache entry
+ lookup yielded: name="Philip░Hazel"░id=ph10░↩
+ name=Aristotle░id=aaaa░
  search_open: mysql "NULL"
    cached open
  search_find: file="NULL"
@@ -201,90 +234,508 @@ dropping to exim gid; retaining priv uid
  internal_search_find: file="NULL"
    type=mysql key="delete from them where id='aaaa'" opts=NULL
  database lookup required for delete from them where id='aaaa'
- MySQL query: delete from them where id='aaaa'
- MYSQL using cached connection for 127.0.0.1:1223/test/root
+ MySQL query: "delete from them where id='aaaa'" opts 'NULL'
+ MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
  MYSQL: query was not one that returns data
  lookup forced cache cleanup
  lookup yielded: 1
 search_tidyup called
 close MYSQL connection: localhost(TESTSUITE/mysql/sock)/test/root
 close MYSQL connection: ip4.ip4.ip4.ip4:1223/test/root
-close MYSQL connection: 127.0.0.1:1223/test/root
->>>>>>>>>>>>>>>> Exim pid=pppp (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
+close MYSQL connection: 127.0.0.1:PORT_N/test/root
+>>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
+01:01:01 p1235  Exim version x.yz uid=CALLER_UID gid=CALLER_GID pid=p1235 D=fff9ffff
+01:01:01 p1235  Hints DB:
+01:01:01 p1235  macros_trusted overridden to true by whitelisting
+01:01:01 p1235  changed uid/gid: forcing real = effective
+01:01:01 p1235    uid=uuuu gid=CALLER_GID pid=p1235
+01:01:01 p1235  environment after trimming:
+01:01:01 p1235   PATH=<munged>
+01:01:01 p1235  adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
+01:01:01 p1235  configuration file is TESTSUITE/test-config
+01:01:01 p1235  admin user
+01:01:01 p1235  changed uid/gid: privilege not needed
+01:01:01 p1235    uid=EXIM_UID gid=EXIM_GID pid=p1235
+01:01:01 p1235  seeking password data for user "CALLER": cache not available
+01:01:01 p1235  getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID
+01:01:01 p1235  try option gecos_pattern
+01:01:01 p1235  try option gecos_name
+01:01:01 p1235  try option unknown_login
+01:01:01 p1235  originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME
+01:01:01 p1235  sender address = CALLER@myhost.test.ex
+01:01:01 p1235  try option smtp_active_hostname
+01:01:01 p1235  sender_fullhost = [10.0.0.0]
+01:01:01 p1235  sender_rcvhost = [10.0.0.0]
+01:01:01 p1235  host in hosts_connection_nolog? no (option unset)
+01:01:01 p1235  LOG: smtp_connection MAIN
+01:01:01 p1235    SMTP connection from [10.0.0.0]
+01:01:01 p1235  try option message_size_limit
+01:01:01 p1235  host in host_lookup? no (option unset)
+01:01:01 p1235  set_process_info: pppp handling incoming connection from [10.0.0.0]
+01:01:01 p1235  host in host_reject_connection? no (option unset)
+01:01:01 p1235  host in sender_unqualified_hosts? no (option unset)
+01:01:01 p1235  host in recipient_unqualified_hosts? no (option unset)
+01:01:01 p1235  host in helo_verify_hosts? no (option unset)
+01:01:01 p1235  host in helo_try_verify_hosts? no (option unset)
+01:01:01 p1235  host in helo_accept_junk_hosts? no (option unset)
+01:01:01 p1235  try option acl_smtp_connect
+01:01:01 p1235  try option smtp_banner
+01:01:01 p1235   ╭considering: $smtp_active_hostname░ESMTP░Exim░$version_number░$tod_full
+01:01:01 p1235   ├──────value: myhost.test.ex
+01:01:01 p1235   ├considering: ░ESMTP░Exim░$version_number░$tod_full
+01:01:01 p1235   ├───────text: ░ESMTP░Exim░
+01:01:01 p1235   ├considering: $version_number░$tod_full
+01:01:01 p1235   ├──────value: x.yz
+01:01:01 p1235   ├considering: ░$tod_full
+01:01:01 p1235   ├───────text: ░
+01:01:01 p1235   ├considering: $tod_full
+01:01:01 p1235   ├──────value: Tue,░2░Mar░1999░09:44:33░+0000
+01:01:01 p1235   ├───expanded: $smtp_active_hostname░ESMTP░Exim░$version_number░$tod_full
+01:01:01 p1235   ╰─────result: myhost.test.ex░ESMTP░Exim░x.yz░Tue,░2░Mar░1999░09:44:33░+0000
+01:01:01 p1235  host in pipelining_connect_advertise_hosts?
+01:01:01 p1235   list element: 
+01:01:01 p1235  SMTP>> 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+01:01:01 p1235  smtp_setup_msg entered
+01:01:01 p1235  SMTP<< helo test
+01:01:01 p1235  test in helo_lookup_domains?
+01:01:01 p1235   list element: @
+01:01:01 p1235   list element: @[]
+01:01:01 p1235  test in helo_lookup_domains? no (end of list)
+01:01:01 p1235  sender_fullhost = (test) [10.0.0.0]
+01:01:01 p1235  sender_rcvhost = [10.0.0.0] (helo=test)
+01:01:01 p1235  set_process_info: pppp handling incoming connection from (test) [10.0.0.0]
+01:01:01 p1235  try option acl_smtp_helo
+01:01:01 p1235  SMTP>> 250 myhost.test.ex Hello test [10.0.0.0]
+01:01:01 p1235  SMTP<< mail from:<a@b>
+01:01:01 p1235  spool directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100 msg_size = 0
+01:01:01 p1235  log directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100
+01:01:01 p1235  try option acl_smtp_mail
+01:01:01 p1235  SMTP>> 250 OK
+01:01:01 p1235  SMTP<< rcpt to:<c@d>
+01:01:01 p1235  try option acl_smtp_rcpt
+01:01:01 p1235  using ACL "check_recipient"
+01:01:01 p1235  processing ACL check_recipient "warn" (TESTSUITE/test-config 26)
+01:01:01 p1235   ╭considering: ok:░░░░${lookup░mysql░░░░░░░░░░░░░░░░░░░░{select░name░from░them░where░id░=░'${quote_mysql:$local_part}'}}
+01:01:01 p1235   ├───────text: ok:░░░░
+01:01:01 p1235   ├considering: ${lookup░mysql░░░░░░░░░░░░░░░░░░░░{select░name░from░them░where░id░=░'${quote_mysql:$local_part}'}}
+01:01:01 p1235    ╭considering: select░name░from░them░where░id░=░'${quote_mysql:$local_part}'}}
+01:01:01 p1235    ├───────text: select░name░from░them░where░id░=░'
+01:01:01 p1235    ├considering: ${quote_mysql:$local_part}'}}
+01:01:01 p1235     ╭considering: $local_part}'}}
+01:01:01 p1235     ├──────value: c
+01:01:01 p1235                ╰──(tainted)
+01:01:01 p1235     ├considering: }'}}
+01:01:01 p1235     ├───expanded: $local_part
+01:01:01 p1235     ╰─────result: c
+01:01:01 p1235                ╰──(tainted)
+01:01:01 p1235    ├─────op-res: c
+01:01:01 p1235               ╰──(tainted, quoted:mysql)
+01:01:01 p1235    ├considering: '}}
+01:01:01 p1235    ├───────text: '
+01:01:01 p1235    ├considering: }}
+01:01:01 p1235    ├───expanded: select░name░from░them░where░id░=░'${quote_mysql:$local_part}'
+01:01:01 p1235    ╰─────result: select░name░from░them░where░id░=░'c'
+01:01:01 p1235               ╰──(tainted, quoted:mysql)
+01:01:01 p1235   search_open: mysql "NULL"
+01:01:01 p1235   search_find: file="NULL"
+01:01:01 p1235     key="select name from them where id = 'c'" partial=-1 affix=NULL starflags=0 opts=NULL
+01:01:01 p1235   LRU list:
+01:01:01 p1235   internal_search_find: file="NULL"
+01:01:01 p1235     type=mysql key="select name from them where id = 'c'" opts=NULL
+01:01:01 p1235   database lookup required for select name from them where id = 'c'
+01:01:01 p1235                                (tainted, quoted:mysql)
+01:01:01 p1235   MySQL query: "select name from them where id = 'c'" opts 'NULL'
+01:01:01 p1235   MYSQL new connection: host=127.0.0.1 port=PORT_N socket=NULL database=test user=root
+01:01:01 p1235   MYSQL: no data found
+01:01:01 p1235   creating new cache entry
+01:01:01 p1235   lookup failed
+01:01:01 p1235   ├───item-res: 
+01:01:01 p1235   ├───expanded: ok:░░░░${lookup░mysql░░░░░░░░░░░░░░░░░░░░{select░name░from░them░where░id░=░'${quote_mysql:$local_part}'}}
+01:01:01 p1235   ╰─────result: ok:░░░░
+01:01:01 p1235  check set acl_m0 = ok:    ${lookup mysql                    {select name from them where id = '${quote_mysql:$local_part}'}}
+01:01:01 p1235                   = ok:    
+01:01:01 p1235   ╭considering: FAIL1:░${lookup░mysql,no_rd░░░░░░░░░░░░░░{select░name░from░them░where░id░=░'$local_part'}}
+01:01:01 p1235   ├───────text: FAIL1:░
+01:01:01 p1235   ├considering: ${lookup░mysql,no_rd░░░░░░░░░░░░░░{select░name░from░them░where░id░=░'$local_part'}}
+01:01:01 p1235    ╭considering: select░name░from░them░where░id░=░'$local_part'}}
+01:01:01 p1235    ├───────text: select░name░from░them░where░id░=░'
+01:01:01 p1235    ├considering: $local_part'}}
+01:01:01 p1235    ├──────value: c
+01:01:01 p1235               ╰──(tainted)
+01:01:01 p1235    ├considering: '}}
+01:01:01 p1235    ├───────text: '
+01:01:01 p1235    ├considering: }}
+01:01:01 p1235    ├───expanded: select░name░from░them░where░id░=░'$local_part'
+01:01:01 p1235    ╰─────result: select░name░from░them░where░id░=░'c'
+01:01:01 p1235               ╰──(tainted)
+01:01:01 p1235   search_open: mysql "NULL"
+01:01:01 p1235     cached open
+01:01:01 p1235   search_find: file="NULL"
+01:01:01 p1235     key="select name from them where id = 'c'" partial=-1 affix=NULL starflags=0 opts="no_rd"
+01:01:01 p1235   LRU list:
+01:01:01 p1235   internal_search_find: file="NULL"
+01:01:01 p1235     type=mysql key="select name from them where id = 'c'" opts="no_rd"
+01:01:01 p1235   cached data found but wrong opts;  database lookup required for select name from them where id = 'c'
+01:01:01 p1235                                (tainted)
+01:01:01 p1235  No quoter name for addr
+01:01:01 p1235  LOG: MAIN PANIC
+01:01:01 p1235    tainted search query is not properly quoted (ACL warn, TESTSUITE/test-config 26): select name from them where id = 'c'
+01:01:01 p1235   required_quoter_id (mysql) quoting -1 (NULL)
+01:01:01 p1235   MySQL query: "select name from them where id = 'c'" opts 'no_rd'
+01:01:01 p1235   MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
+01:01:01 p1235   MYSQL: no data found
+01:01:01 p1235   replacing old cache entry
+01:01:01 p1235   lookup failed
+01:01:01 p1235   ├───item-res: 
+01:01:01 p1235   ├───expanded: FAIL1:░${lookup░mysql,no_rd░░░░░░░░░░░░░░{select░name░from░them░where░id░=░'$local_part'}}
+01:01:01 p1235   ╰─────result: FAIL1:░
+01:01:01 p1235  check set acl_m0 = FAIL1: ${lookup mysql,no_rd              {select name from them where id = '$local_part'}}
+01:01:01 p1235                   = FAIL1: 
+01:01:01 p1235  warn: condition test succeeded in ACL check_recipient
+01:01:01 p1235  processing ACL check_recipient "warn" (TESTSUITE/test-config 31)
+01:01:01 p1235   ╭considering: ok:░░░░${lookup░mysql,servers=127.0.0.1::PORT_N/test/root/pass░░░░░░{select░name░from░them░where░id░=░'${quote_mysql:$local_part}'}}
+01:01:01 p1235   ├───────text: ok:░░░░
+01:01:01 p1235   ├considering: ${lookup░mysql,servers=127.0.0.1::PORT_N/test/root/pass░░░░░░{select░name░from░them░where░id░=░'${quote_mysql:$local_part}'}}
+01:01:01 p1235    ╭considering: select░name░from░them░where░id░=░'${quote_mysql:$local_part}'}}
+01:01:01 p1235    ├───────text: select░name░from░them░where░id░=░'
+01:01:01 p1235    ├considering: ${quote_mysql:$local_part}'}}
+01:01:01 p1235     ╭considering: $local_part}'}}
+01:01:01 p1235     ├──────value: c
+01:01:01 p1235                ╰──(tainted)
+01:01:01 p1235     ├considering: }'}}
+01:01:01 p1235     ├───expanded: $local_part
+01:01:01 p1235     ╰─────result: c
+01:01:01 p1235                ╰──(tainted)
+01:01:01 p1235    ├─────op-res: c
+01:01:01 p1235               ╰──(tainted, quoted:mysql)
+01:01:01 p1235    ├considering: '}}
+01:01:01 p1235    ├───────text: '
+01:01:01 p1235    ├considering: }}
+01:01:01 p1235    ├───expanded: select░name░from░them░where░id░=░'${quote_mysql:$local_part}'
+01:01:01 p1235    ╰─────result: select░name░from░them░where░id░=░'c'
+01:01:01 p1235               ╰──(tainted, quoted:mysql)
+01:01:01 p1235   search_open: mysql "NULL"
+01:01:01 p1235     cached open
+01:01:01 p1235   search_find: file="NULL"
+01:01:01 p1235     key="select name from them where id = 'c'" partial=-1 affix=NULL starflags=0 opts="servers=127.0.0.1::PORT_N/test/root/pass"
+01:01:01 p1235   LRU list:
+01:01:01 p1235   internal_search_find: file="NULL"
+01:01:01 p1235     type=mysql key="select name from them where id = 'c'" opts="servers=127.0.0.1::PORT_N/test/root/pass"
+01:01:01 p1235   cached data found but wrong opts;  database lookup required for select name from them where id = 'c'
+01:01:01 p1235                                (tainted, quoted:mysql)
+01:01:01 p1235   MySQL query: "select name from them where id = 'c'" opts 'servers=127.0.0.1::PORT_N/test/root/pass'
+01:01:01 p1235   MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
+01:01:01 p1235   MYSQL: no data found
+01:01:01 p1235   replacing old cache entry
+01:01:01 p1235   lookup failed
+01:01:01 p1235   ├───item-res: 
+01:01:01 p1235   ├───expanded: ok:░░░░${lookup░mysql,servers=127.0.0.1::PORT_N/test/root/pass░░░░░░{select░name░from░them░where░id░=░'${quote_mysql:$local_part}'}}
+01:01:01 p1235   ╰─────result: ok:░░░░
+01:01:01 p1235  check set acl_m0 = ok:    ${lookup mysql,servers=127.0.0.1::PORT_N/test/root/pass      {select name from them where id = '${quote_mysql:$local_part}'}}
+01:01:01 p1235                   = ok:    
+01:01:01 p1235   ╭considering: ok:░░░░${lookup░mysql,servers=127.0.0.1::PORT_N░░░░{select░name░from░them░where░id░=░'${quote_mysql:$local_part}'}}
+01:01:01 p1235   ├───────text: ok:░░░░
+01:01:01 p1235   ├considering: ${lookup░mysql,servers=127.0.0.1::PORT_N░░░░{select░name░from░them░where░id░=░'${quote_mysql:$local_part}'}}
+01:01:01 p1235    ╭considering: select░name░from░them░where░id░=░'${quote_mysql:$local_part}'}}
+01:01:01 p1235    ├───────text: select░name░from░them░where░id░=░'
+01:01:01 p1235    ├considering: ${quote_mysql:$local_part}'}}
+01:01:01 p1235     ╭considering: $local_part}'}}
+01:01:01 p1235     ├──────value: c
+01:01:01 p1235                ╰──(tainted)
+01:01:01 p1235     ├considering: }'}}
+01:01:01 p1235     ├───expanded: $local_part
+01:01:01 p1235     ╰─────result: c
+01:01:01 p1235                ╰──(tainted)
+01:01:01 p1235    ├─────op-res: c
+01:01:01 p1235               ╰──(tainted, quoted:mysql)
+01:01:01 p1235    ├considering: '}}
+01:01:01 p1235    ├───────text: '
+01:01:01 p1235    ├considering: }}
+01:01:01 p1235    ├───expanded: select░name░from░them░where░id░=░'${quote_mysql:$local_part}'
+01:01:01 p1235    ╰─────result: select░name░from░them░where░id░=░'c'
+01:01:01 p1235               ╰──(tainted, quoted:mysql)
+01:01:01 p1235   search_open: mysql "NULL"
+01:01:01 p1235     cached open
+01:01:01 p1235   search_find: file="NULL"
+01:01:01 p1235     key="select name from them where id = 'c'" partial=-1 affix=NULL starflags=0 opts="servers=127.0.0.1::PORT_N"
+01:01:01 p1235   LRU list:
+01:01:01 p1235   internal_search_find: file="NULL"
+01:01:01 p1235     type=mysql key="select name from them where id = 'c'" opts="servers=127.0.0.1::PORT_N"
+01:01:01 p1235   cached data found but wrong opts;  database lookup required for select name from them where id = 'c'
+01:01:01 p1235                                (tainted, quoted:mysql)
+01:01:01 p1235   MySQL query: "select name from them where id = 'c'" opts 'servers=127.0.0.1::PORT_N'
+01:01:01 p1235   MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
+01:01:01 p1235   MYSQL: no data found
+01:01:01 p1235   replacing old cache entry
+01:01:01 p1235   lookup failed
+01:01:01 p1235   ├───item-res: 
+01:01:01 p1235   ├───expanded: ok:░░░░${lookup░mysql,servers=127.0.0.1::PORT_N░░░░{select░name░from░them░where░id░=░'${quote_mysql:$local_part}'}}
+01:01:01 p1235   ╰─────result: ok:░░░░
+01:01:01 p1235  check set acl_m0 = ok:    ${lookup mysql,servers=127.0.0.1::PORT_N    {select name from them where id = '${quote_mysql:$local_part}'}}
+01:01:01 p1235                   = ok:    
+01:01:01 p1235   ╭considering: FAIL2:░${lookup░mysql░░░░░{servers=127.0.0.1::PORT_N/test/root/pass;░select░name░from░them░where░id░=░'${quote_mysql:$local_part}'}}
+01:01:01 p1235   ├───────text: FAIL2:░
+01:01:01 p1235   ├considering: ${lookup░mysql░░░░░{servers=127.0.0.1::PORT_N/test/root/pass;░select░name░from░them░where░id░=░'${quote_mysql:$local_part}'}}
+01:01:01 p1235    ╭considering: servers=127.0.0.1::PORT_N/test/root/pass;░select░name░from░them░where░id░=░'${quote_mysql:$local_part}'}}
+01:01:01 p1235    ├───────text: servers=127.0.0.1::PORT_N/test/root/pass;░select░name░from░them░where░id░=░'
+01:01:01 p1235    ├considering: ${quote_mysql:$local_part}'}}
+01:01:01 p1235     ╭considering: $local_part}'}}
+01:01:01 p1235     ├──────value: c
+01:01:01 p1235                ╰──(tainted)
+01:01:01 p1235     ├considering: }'}}
+01:01:01 p1235     ├───expanded: $local_part
+01:01:01 p1235     ╰─────result: c
+01:01:01 p1235                ╰──(tainted)
+01:01:01 p1235    ├─────op-res: c
+01:01:01 p1235               ╰──(tainted, quoted:mysql)
+01:01:01 p1235    ├considering: '}}
+01:01:01 p1235    ├───────text: '
+01:01:01 p1235    ├considering: }}
+01:01:01 p1235    ├───expanded: servers=127.0.0.1::PORT_N/test/root/pass;░select░name░from░them░where░id░=░'${quote_mysql:$local_part}'
+01:01:01 p1235    ╰─────result: servers=127.0.0.1::PORT_N/test/root/pass;░select░name░from░them░where░id░=░'c'
+01:01:01 p1235               ╰──(tainted, quoted:mysql)
+01:01:01 p1235   search_open: mysql "NULL"
+01:01:01 p1235     cached open
+01:01:01 p1235   search_find: file="NULL"
+01:01:01 p1235     key="servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = 'c'" partial=-1 affix=NULL starflags=0 opts=NULL
+01:01:01 p1235   LRU list:
+01:01:01 p1235   internal_search_find: file="NULL"
+01:01:01 p1235     type=mysql key="servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = 'c'" opts=NULL
+01:01:01 p1235   database lookup required for servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = 'c'
+01:01:01 p1235                                (tainted, quoted:mysql)
+01:01:01 p1235   MySQL query: "servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = 'c'" opts 'NULL'
+01:01:01 p1235  LOG: MAIN
+01:01:01 p1235    Exim configuration error in ACL verb at line 31 of TESTSUITE/test-config:
+01:01:01 p1235    WARNING: obsolete syntax used for lookup
+01:01:01 p1235   lookup deferred: MySQL server "127.0.0.1:PORT_N/test" is tainted
+01:01:01 p1235   ├failed to expand: FAIL2: ${lookup mysql     {servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = '${quote_mysql:$local_part}'}}
+01:01:01 p1235   ╰───error message: lookup of "servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = 'c'" gave DEFER: MySQL server "127.0.0.1:1223/test" is tainted
+01:01:01 p1235  warn: condition test deferred in ACL check_recipient
+01:01:01 p1235  LOG: MAIN
+01:01:01 p1235    H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: MySQL server "127.0.0.1:PORT_N/test" is tainted
+01:01:01 p1235  processing ACL check_recipient "warn" (TESTSUITE/test-config 39)
+01:01:01 p1235   ╭considering: FAIL3:░${lookup░mysql░░░░░{servers=127.0.0.1::PORT_N;░select░name░from░them░where░id░=░'$local_part'}}
+01:01:01 p1235   ├───────text: FAIL3:░
+01:01:01 p1235   ├considering: ${lookup░mysql░░░░░{servers=127.0.0.1::PORT_N;░select░name░from░them░where░id░=░'$local_part'}}
+01:01:01 p1235    ╭considering: servers=127.0.0.1::PORT_N;░select░name░from░them░where░id░=░'$local_part'}}
+01:01:01 p1235    ├───────text: servers=127.0.0.1::PORT_N;░select░name░from░them░where░id░=░'
+01:01:01 p1235    ├considering: $local_part'}}
+01:01:01 p1235    ├──────value: c
+01:01:01 p1235               ╰──(tainted)
+01:01:01 p1235    ├considering: '}}
+01:01:01 p1235    ├───────text: '
+01:01:01 p1235    ├considering: }}
+01:01:01 p1235    ├───expanded: servers=127.0.0.1::PORT_N;░select░name░from░them░where░id░=░'$local_part'
+01:01:01 p1235    ╰─────result: servers=127.0.0.1::PORT_N;░select░name░from░them░where░id░=░'c'
+01:01:01 p1235               ╰──(tainted)
+01:01:01 p1235   search_open: mysql "NULL"
+01:01:01 p1235     cached open
+01:01:01 p1235   search_find: file="NULL"
+01:01:01 p1235     key="servers=127.0.0.1::PORT_N; select name from them where id = 'c'" partial=-1 affix=NULL starflags=0 opts=NULL
+01:01:01 p1235   LRU list:
+01:01:01 p1235   internal_search_find: file="NULL"
+01:01:01 p1235     type=mysql key="servers=127.0.0.1::PORT_N; select name from them where id = 'c'" opts=NULL
+01:01:01 p1235   database lookup required for servers=127.0.0.1::PORT_N; select name from them where id = 'c'
+01:01:01 p1235                                (tainted)
+01:01:01 p1235  No quoter name for addr
+01:01:01 p1235  LOG: MAIN PANIC
+01:01:01 p1235    tainted search query is not properly quoted (ACL warn, TESTSUITE/test-config 39): select name from them where id = 'c'
+01:01:01 p1235   required_quoter_id (mysql) quoting -1 (NULL)
+01:01:01 p1235   MySQL query: "servers=127.0.0.1::PORT_N; select name from them where id = 'c'" opts 'NULL'
+01:01:01 p1235  LOG: MAIN
+01:01:01 p1235    Exim configuration error in ACL verb at line 39 of TESTSUITE/test-config:
+01:01:01 p1235    WARNING: obsolete syntax used for lookup
+01:01:01 p1235   MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
+01:01:01 p1235   MYSQL: no data found
+01:01:01 p1235   creating new cache entry
+01:01:01 p1235   lookup failed
+01:01:01 p1235   ├───item-res: 
+01:01:01 p1235   ├───expanded: FAIL3:░${lookup░mysql░░░░░{servers=127.0.0.1::PORT_N;░select░name░from░them░where░id░=░'$local_part'}}
+01:01:01 p1235   ╰─────result: FAIL3:░
+01:01:01 p1235  check set acl_m0 = FAIL3: ${lookup mysql     {servers=127.0.0.1::PORT_N; select name from them where id = '$local_part'}}
+01:01:01 p1235                   = FAIL3: 
+01:01:01 p1235  warn: condition test succeeded in ACL check_recipient
+01:01:01 p1235  processing ACL check_recipient "warn" (TESTSUITE/test-config 42)
+01:01:01 p1235  check set acl_m0 = ok:    hostlist
+01:01:01 p1235  check hosts = net-mysql;select * from them where id='${quote_mysql:$local_part}'
+01:01:01 p1235   ╭considering: net-mysql;select░*░from░them░where░id='${quote_mysql:$local_part}'
+01:01:01 p1235   ├───────text: net-mysql;select░*░from░them░where░id='
+01:01:01 p1235   ├considering: ${quote_mysql:$local_part}'
+01:01:01 p1235    ╭considering: $local_part}'
+01:01:01 p1235    ├──────value: c
+01:01:01 p1235               ╰──(tainted)
+01:01:01 p1235    ├considering: }'
+01:01:01 p1235    ├───expanded: $local_part
+01:01:01 p1235    ╰─────result: c
+01:01:01 p1235               ╰──(tainted)
+01:01:01 p1235   ├─────op-res: c
+01:01:01 p1235              ╰──(tainted, quoted:mysql)
+01:01:01 p1235   ├considering: '
+01:01:01 p1235   ├───────text: '
+01:01:01 p1235   ├───expanded: net-mysql;select░*░from░them░where░id='${quote_mysql:$local_part}'
+01:01:01 p1235   ╰─────result: net-mysql;select░*░from░them░where░id='c'
+01:01:01 p1235              ╰──(tainted, quoted:mysql)
+01:01:01 p1235  host in "net-mysql;select * from them where id='c'"?
+01:01:01 p1235   list element: net-mysql;select░*░from░them░where░id='c'
+01:01:01 p1235   search_open: mysql "NULL"
+01:01:01 p1235     cached open
+01:01:01 p1235   search_find: file="NULL"
+01:01:01 p1235     key="select * from them where id='c'" partial=-1 affix=NULL starflags=0 opts=NULL
+01:01:01 p1235   LRU list:
+01:01:01 p1235   internal_search_find: file="NULL"
+01:01:01 p1235     type=mysql key="select * from them where id='c'" opts=NULL
+01:01:01 p1235   database lookup required for select * from them where id='c'
+01:01:01 p1235                                (tainted, quoted:mysql)
+01:01:01 p1235   MySQL query: "select * from them where id='c'" opts 'NULL'
+01:01:01 p1235   MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
+01:01:01 p1235   MYSQL: no data found
+01:01:01 p1235   creating new cache entry
+01:01:01 p1235   lookup failed
+01:01:01 p1235  host in "net-mysql;select * from them where id='c'"? no (end of list)
+01:01:01 p1235  warn: condition test failed in ACL check_recipient
+01:01:01 p1235  processing ACL check_recipient "warn" (TESTSUITE/test-config 45)
+01:01:01 p1235  check set acl_m0 = FAIL4: hostlist
+01:01:01 p1235  check hosts = <& net-mysql;servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='${quote_mysql:$local_part}'
+01:01:01 p1235   ╭considering: <&░net-mysql;servers=127.0.0.1::PORT_N/test/root/pass;░select░*░from░them░where░id='${quote_mysql:$local_part}'
+01:01:01 p1235   ├───────text: <&░net-mysql;servers=127.0.0.1::PORT_N/test/root/pass;░select░*░from░them░where░id='
+01:01:01 p1235   ├considering: ${quote_mysql:$local_part}'
+01:01:01 p1235    ╭considering: $local_part}'
+01:01:01 p1235    ├──────value: c
+01:01:01 p1235               ╰──(tainted)
+01:01:01 p1235    ├considering: }'
+01:01:01 p1235    ├───expanded: $local_part
+01:01:01 p1235    ╰─────result: c
+01:01:01 p1235               ╰──(tainted)
+01:01:01 p1235   ├─────op-res: c
+01:01:01 p1235              ╰──(tainted, quoted:mysql)
+01:01:01 p1235   ├considering: '
+01:01:01 p1235   ├───────text: '
+01:01:01 p1235   ├───expanded: <&░net-mysql;servers=127.0.0.1::PORT_N/test/root/pass;░select░*░from░them░where░id='${quote_mysql:$local_part}'
+01:01:01 p1235   ╰─────result: <&░net-mysql;servers=127.0.0.1::PORT_N/test/root/pass;░select░*░from░them░where░id='c'
+01:01:01 p1235              ╰──(tainted, quoted:mysql)
+01:01:01 p1235  host in "<& net-mysql;servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'"?
+01:01:01 p1235   list element: net-mysql;servers=127.0.0.1::PORT_N/test/root/pass;░select░*░from░them░where░id='c'
+01:01:01 p1235   search_open: mysql "NULL"
+01:01:01 p1235     cached open
+01:01:01 p1235   search_find: file="NULL"
+01:01:01 p1235     key="servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'" partial=-1 affix=NULL starflags=0 opts=NULL
+01:01:01 p1235   LRU list:
+01:01:01 p1235   internal_search_find: file="NULL"
+01:01:01 p1235     type=mysql key="servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'" opts=NULL
+01:01:01 p1235   database lookup required for servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'
+01:01:01 p1235                                (tainted, quoted:mysql)
+01:01:01 p1235   MySQL query: "servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'" opts 'NULL'
+01:01:01 p1235  LOG: MAIN
+01:01:01 p1235    Exim configuration error in ACL verb at line 45 of TESTSUITE/test-config:
+01:01:01 p1235    WARNING: obsolete syntax used for lookup
+01:01:01 p1235   lookup deferred: MySQL server "127.0.0.1:PORT_N/test" is tainted
+01:01:01 p1235  host in "<& net-mysql;servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'"? list match deferred for net-mysql;servers=127.0.0.1::1223/test/root/pass; select * from them where id='c'
+01:01:01 p1235  warn: condition test deferred in ACL check_recipient
+01:01:01 p1235  LOG: MAIN
+01:01:01 p1235    H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: MySQL server "127.0.0.1:PORT_N/test" is tainted
+01:01:01 p1235  processing ACL check_recipient "warn" (TESTSUITE/test-config 50)
+01:01:01 p1235  check set acl_m0 = FAIL5: hostlist
+01:01:01 p1235  check hosts = <& net-mysql,servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='${quote_mysql:$local_part}'
+01:01:01 p1235   ╭considering: <&░net-mysql,servers=127.0.0.1::PORT_N/test/root/pass;░select░*░from░them░where░id='${quote_mysql:$local_part}'
+01:01:01 p1235   ├───────text: <&░net-mysql,servers=127.0.0.1::PORT_N/test/root/pass;░select░*░from░them░where░id='
+01:01:01 p1235   ├considering: ${quote_mysql:$local_part}'
+01:01:01 p1235    ╭considering: $local_part}'
+01:01:01 p1235    ├──────value: c
+01:01:01 p1235               ╰──(tainted)
+01:01:01 p1235    ├considering: }'
+01:01:01 p1235    ├───expanded: $local_part
+01:01:01 p1235    ╰─────result: c
+01:01:01 p1235               ╰──(tainted)
+01:01:01 p1235   ├─────op-res: c
+01:01:01 p1235              ╰──(tainted, quoted:mysql)
+01:01:01 p1235   ├considering: '
+01:01:01 p1235   ├───────text: '
+01:01:01 p1235   ├───expanded: <&░net-mysql,servers=127.0.0.1::PORT_N/test/root/pass;░select░*░from░them░where░id='${quote_mysql:$local_part}'
+01:01:01 p1235   ╰─────result: <&░net-mysql,servers=127.0.0.1::PORT_N/test/root/pass;░select░*░from░them░where░id='c'
+01:01:01 p1235              ╰──(tainted, quoted:mysql)
+01:01:01 p1235  host in "<& net-mysql,servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'"?
+01:01:01 p1235   list element: net-mysql,servers=127.0.0.1::PORT_N/test/root/pass;░select░*░from░them░where░id='c'
+01:01:01 p1235   search_open: mysql "NULL"
+01:01:01 p1235     cached open
+01:01:01 p1235   search_find: file="NULL"
+01:01:01 p1235     key=" select * from them where id='c'" partial=-1 affix=NULL starflags=0 opts="servers=127.0.0.1::PORT_N/test/root/pass"
+01:01:01 p1235   LRU list:
+01:01:01 p1235   internal_search_find: file="NULL"
+01:01:01 p1235     type=mysql key=" select * from them where id='c'" opts="servers=127.0.0.1::PORT_N/test/root/pass"
+01:01:01 p1235   database lookup required for  select * from them where id='c'
+01:01:01 p1235                                (tainted, quoted:mysql)
+01:01:01 p1235   MySQL query: " select * from them where id='c'" opts 'servers=127.0.0.1::PORT_N/test/root/pass'
+01:01:01 p1235   lookup deferred: MySQL server "127.0.0.1:PORT_N/test" is tainted
+01:01:01 p1235  host in "<& net-mysql,servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'"? list match deferred for net-mysql,servers=127.0.0.1::1223/test/root/pass; select * from them where id='c'
+01:01:01 p1235  warn: condition test deferred in ACL check_recipient
+01:01:01 p1235  LOG: MAIN
+01:01:01 p1235    H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: MySQL server "127.0.0.1:PORT_N/test" is tainted
+01:01:01 p1235  processing ACL check_recipient "accept" (TESTSUITE/test-config 53)
+01:01:01 p1235  check domains = +local_domains
+01:01:01 p1235  d in "+local_domains"?
+01:01:01 p1235   list element: +local_domains
+01:01:01 p1235    start sublist local_domains
+01:01:01 p1235     d in "@"?
+01:01:01 p1235     ╎list element: @
+01:01:01 p1235     d in "@"? no (end of list)
+01:01:01 p1235    end sublist local_domains
+01:01:01 p1235  d in "+local_domains"? no (end of list)
+01:01:01 p1235  accept: condition test failed in ACL check_recipient
+01:01:01 p1235  processing ACL check_recipient "accept" (TESTSUITE/test-config 56)
+01:01:01 p1235  check hosts = +relay_hosts
+01:01:01 p1235  host in "+relay_hosts"?
+01:01:01 p1235   list element: +relay_hosts
+01:01:01 p1235    start sublist relay_hosts
+01:01:01 p1235     ╎╭considering: net-mysql;select░*░from░them░where░id='$sender_host_address'
+01:01:01 p1235     ╎├───────text: net-mysql;select░*░from░them░where░id='
+01:01:01 p1235     ╎├considering: $sender_host_address'
+01:01:01 p1235     ╎├──────value: 10.0.0.0
+01:01:01 p1235     ╎├considering: '
+01:01:01 p1235     ╎├───────text: '
+01:01:01 p1235     ╎├───expanded: net-mysql;select░*░from░them░where░id='$sender_host_address'
+01:01:01 p1235     ╎╰─────result: net-mysql;select░*░from░them░where░id='10.0.0.0'
+01:01:01 p1235     host in "net-mysql;select * from them where id='10.0.0.0'"?
+01:01:01 p1235     ╎list element: net-mysql;select░*░from░them░where░id='10.0.0.0'
+01:01:01 p1235     ╎search_open: mysql "NULL"
+01:01:01 p1235     ╎  cached open
+01:01:01 p1235     ╎search_find: file="NULL"
+01:01:01 p1235     ╎  key="select * from them where id='10.0.0.0'" partial=-1 affix=NULL starflags=0 opts=NULL
+01:01:01 p1235     ╎LRU list:
+01:01:01 p1235     ╎internal_search_find: file="NULL"
+01:01:01 p1235     ╎  type=mysql key="select * from them where id='10.0.0.0'" opts=NULL
+01:01:01 p1235     ╎database lookup required for select * from them where id='10.0.0.0'
+01:01:01 p1235     ╎MySQL query: "select * from them where id='10.0.0.0'" opts 'NULL'
+01:01:01 p1235     ╎MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
+01:01:01 p1235     ╎MYSQL: no data found
+01:01:01 p1235     ╎creating new cache entry
+01:01:01 p1235     ╎lookup failed
+01:01:01 p1235     host in "net-mysql;select * from them where id='10.0.0.0'"? no (end of list)
+01:01:01 p1235    end sublist relay_hosts
+01:01:01 p1235  host in "+relay_hosts"? no (end of list)
+01:01:01 p1235  accept: condition test failed in ACL check_recipient
+01:01:01 p1235  processing ACL check_recipient "deny" (TESTSUITE/test-config 57)
+01:01:01 p1235    message: relay not permitted
+01:01:01 p1235  deny: condition test succeeded in ACL check_recipient
+01:01:01 p1235  end of ACL check_recipient: DENY
+01:01:01 p1235  SMTP>> 550 relay not permitted
+01:01:01 p1235  LOG: MAIN REJECT
+01:01:01 p1235    H=(test) [10.0.0.0] F=<a@b> rejected RCPT <c@d>: relay not permitted
+01:01:01 p1235  SMTP<< quit
+01:01:01 p1235  try option acl_smtp_quit
+01:01:01 p1235  SMTP>> 221 myhost.test.ex closing connection
+01:01:01 p1235  LOG: smtp_connection MAIN
+01:01:01 p1235    SMTP connection from (test) [10.0.0.0] D=qqs closed by QUIT
+01:01:01 p1235  search_tidyup called
+01:01:01 p1235  close MYSQL connection: 127.0.0.1:PORT_N/test/root
+01:01:01 p1235  >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
-  uid=uuuu gid=CALLER_GID pid=pppp
+  uid=uuuu gid=CALLER_GID pid=p1236
 configuration file is TESTSUITE/test-config
 admin user
 changed uid/gid: privilege not needed
-  uid=EXIM_UID gid=EXIM_GID pid=pppp
-seeking password data for user "CALLER": cache not available
-getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID
-originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME
-sender address = CALLER@myhost.test.ex
-sender_fullhost = [10.0.0.0]
-sender_rcvhost = [10.0.0.0]
-host in hosts_connection_nolog? no (option unset)
-LOG: smtp_connection MAIN
-  SMTP connection from [10.0.0.0]
-host in host_lookup? no (option unset)
-set_process_info: pppp handling incoming connection from [10.0.0.0]
-host in host_reject_connection? no (option unset)
-host in sender_unqualified_hosts? no (option unset)
-host in recipient_unqualified_hosts? no (option unset)
-host in helo_verify_hosts? no (option unset)
-host in helo_try_verify_hosts? no (option unset)
-host in helo_accept_junk_hosts? no (option unset)
-SMTP>> 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
-smtp_setup_msg entered
-SMTP<< mail from:<a@b>
-spool directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100 msg_size = 0
-log directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100
-SMTP>> 250 OK
-SMTP<< rcpt to:<c@d>
-using ACL "check_recipient"
-processing "accept" (TESTSUITE/test-config 22)
-check domains = +local_domains
-d in "@"? no (end of list)
-d in "+local_domains"? no (end of list)
-accept: condition test failed in ACL "check_recipient"
-processing "accept" (TESTSUITE/test-config 23)
-check hosts = +relay_hosts
-search_open: mysql "NULL"
-search_find: file="NULL"
-  key="select * from them where id='10.0.0.0'" partial=-1 affix=NULL starflags=0 opts=NULL
-LRU list:
-internal_search_find: file="NULL"
-  type=mysql key="select * from them where id='10.0.0.0'" opts=NULL
-database lookup required for select * from them where id='10.0.0.0'
-MySQL query: select * from them where id='10.0.0.0'
-MYSQL new connection: host=127.0.0.1 port=1223 socket=NULL database=test user=root
-MYSQL: no data found
-lookup failed
-host in "net-mysql;select * from them where id='10.0.0.0'"? no (end of list)
-host in "+relay_hosts"? no (end of list)
-accept: condition test failed in ACL "check_recipient"
-processing "deny" (TESTSUITE/test-config 24)
-  message: relay not permitted
-deny: condition test succeeded in ACL "check_recipient"
-end of ACL "check_recipient": DENY
-SMTP>> 550 relay not permitted
-LOG: MAIN REJECT
-  H=[10.0.0.0] F=<a@b> rejected RCPT <c@d>: relay not permitted
-SMTP<< quit
-SMTP>> 221 myhost.test.ex closing connection
-LOG: smtp_connection MAIN
-  SMTP connection from [10.0.0.0] closed by QUIT
-search_tidyup called
-close MYSQL connection: 127.0.0.1:1223/test/root
->>>>>>>>>>>>>>>> Exim pid=pppp (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
-Exim version x.yz ....
-changed uid/gid: forcing real = effective
-  uid=uuuu gid=CALLER_GID pid=pppp
-configuration file is TESTSUITE/test-config
-admin user
-changed uid/gid: privilege not needed
-  uid=EXIM_UID gid=EXIM_GID pid=pppp
+  uid=EXIM_UID gid=EXIM_GID pid=p1236
 seeking password data for user "CALLER": cache not available
 getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID
 originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME
@@ -298,36 +749,44 @@ Recipients:
 search_tidyup called
 >>Headers received:
 
-rewrite_one_header: type=F:
-  From: CALLER_NAME <CALLER@myhost.test.ex>
+qualify & rewrite recipients list
+rewrite rules on sender address
+qualify and rewrite headers
+ rewrite_one_header: type=F:
+   From: CALLER_NAME <CALLER@myhost.test.ex>
 search_tidyup called
 >>Headers after rewriting and local additions:
-I Message-Id: <E10HmaX-0005vi-00@myhost.test.ex>
-F From: CALLER_NAME <CALLER@myhost.test.ex>
-  Date: Tue, 2 Mar 1999 09:44:33 +0000
+ I Message-Id: <E10HmaX-000000005vi-0000@myhost.test.ex>
+ F From: CALLER_NAME <CALLER@myhost.test.ex>
+   Date: Tue, 2 Mar 1999 09:44:33 +0000
 
-Data file name: TESTSUITE/spool//input//10HmaX-0005vi-00-D
-Data file written for message 10HmaX-0005vi-00
+Data file name: TESTSUITE/spool//input//10HmaX-000000005vi-0000-D
+Data file written for message 10HmaX-000000005vi-0000
 >>Generated Received: header line
 P Received: from CALLER by myhost.test.ex with local (Exim x.yz)
        (envelope-from <CALLER@myhost.test.ex>)
-       id 10HmaX-0005vi-00
-       for ph10@myhost.test.ex; Tue, 2 Mar 1999 09:44:33 +0000
-Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-0005vi-00
-DSN: Write SPOOL: -dsn_envid NULL
-DSN: Write SPOOL  :-dsn_ret 0
-DSN: Flags: 0x0
+       id 10HmaX-000000005vi-0000
+       for ph10@myhost.test.ex;
+       Tue, 2 Mar 1999 09:44:33 +0000
+using ACL "check_notsmtp"
+processing ACL check_notsmtp "accept" (TESTSUITE/test-config 60)
+check set acl_m_qtest = ${quote_mysql:$recipients}
+                      = ph10@myhost.test.ex
+accept: condition test succeeded in ACL check_notsmtp
+end of ACL check_notsmtp: ACCEPT
+Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-000000005vi-0000
 DSN: **** SPOOL_OUT - address: <ph10@myhost.test.ex> errorsto: <NULL> orcpt: <NULL> dsn_flags: 0x0
-Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H
+Renaming spool header file: TESTSUITE/spool//input//10HmaX-000000005vi-0000-H
 Size of headers = sss
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 search_tidyup called
-exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaX-0005vi-00
+exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
-  uid=uuuu gid=EXIM_GID pid=pppp
+  uid=uuuu gid=EXIM_GID pid=p1237
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -335,48 +794,64 @@ dropping to exim gid; retaining priv uid
 seeking password data for user "CALLER": cache not available
 getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID
 set_process_info: pppp delivering specified messages
-set_process_info: pppp delivering 10HmaX-0005vi-00
-Trying spool file TESTSUITE/spool//input//10HmaX-0005vi-00-D
-reading spool file 10HmaX-0005vi-00-H
+set_process_info: pppp delivering 10HmaX-000000005vi-0000
+Trying spool file TESTSUITE/spool//input//10HmaX-000000005vi-0000-D
+reading spool file 10HmaX-000000005vi-0000-H
 user=CALLER uid=CALLER_UID gid=CALLER_GID sender=CALLER@myhost.test.ex
 sender_local=1 ident=CALLER
 Non-recipients:
-Empty Tree
+ Empty Tree
 ---- End of tree ----
 recipients_count=1
 **** SPOOL_IN - No additional fields
-body_linecount=1 message_linecount=7
+body_linecount=1 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   ph10@myhost.test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- locked  TESTSUITE/spool/db/retry.lockfile
- EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
- returned from EXIM_DBOPEN: (nil)
- ensuring TESTSUITE/spool/db/retry.lockfile is owned by exim
- failed to open DB file TESTSUITE/spool/db/retry.lockfile: No such file or directory
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: ph10@myhost.test.ex
 unique = ph10@myhost.test.ex
-no   domain  retry record
-no   address retry record
+checking router retry status
+ no   domain  retry record
+ no   address retry record
 ph10@myhost.test.ex: queued for routing
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 routing ph10@myhost.test.ex
 --------> r1 router <--------
 local_part=ph10 domain=myhost.test.ex
+ search_open: mysql "NULL"
+ search_find: file="NULL"
+   key="select name from them where id='ph10@myhost.test.ex'" partial=-1 affix=NULL starflags=0 opts=NULL
+ LRU list:
+ internal_search_find: file="NULL"
+   type=mysql key="select name from them where id='ph10@myhost.test.ex'" opts=NULL
+ database lookup required for select name from them where id='ph10@myhost.test.ex'
+                              (tainted, quoted:mysql)
+ MySQL query: "select name from them where id='ph10@myhost.test.ex'" opts 'NULL'
+ MYSQL new connection: host=127.0.0.1 port=PORT_N socket=NULL database=test user=root
+ MYSQL: no data found
+ creating new cache entry
+ lookup failed
+acl_m_qtest: <ph10@myhost.test.ex> lkup: <>
 processing address_data
  search_open: mysql "NULL"
+   cached open
  search_find: file="NULL"
-   key="select name from them where id='ph10'" partial=-1 affix=NULL starflags=0 opts=NULL
+   key="select name from them where id='ph10' limit 1" partial=-1 affix=NULL starflags=0 opts=NULL
  LRU list:
  internal_search_find: file="NULL"
-   type=mysql key="select name from them where id='ph10'" opts=NULL
- database lookup required for select name from them where id='ph10'
- MySQL query: select name from them where id='ph10'
- MYSQL new connection: host=127.0.0.1 port=1223 socket=NULL database=test user=root
- lookup yielded: Philip Hazel
+   type=mysql key="select name from them where id='ph10' limit 1" opts=NULL
+ database lookup required for select name from them where id='ph10' limit 1
+                              (tainted)
+No quoter name for addr
+LOG: MAIN PANIC
+  tainted search query is not properly quoted (router r1, TESTSUITE/test-config 68): select name from them where id='ph10' limit 1
+ required_quoter_id (mysql) quoting -1 (NULL)
+ MySQL query: "select name from them where id='ph10' limit 1" opts 'NULL'
+ MYSQL using cached connection for 127.0.0.1:PORT_N/test/root
+ creating new cache entry
+ lookup yielded: Philip░Hazel
 calling r1 router
 r1 router called for ph10@myhost.test.ex
   domain = myhost.test.ex
@@ -384,7 +859,7 @@ set transport t1
 queued for t1 transport: local_part = ph10
 domain = myhost.test.ex
   errors_to=NULL
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL local_part_data=NULL
 routed by r1 router
   envelope to: ph10@myhost.test.ex
   transport: t1
@@ -396,20 +871,15 @@ After routing:
   Failed addresses:
   Deferred addresses:
 search_tidyup called
-close MYSQL connection: 127.0.0.1:1223/test/root
+close MYSQL connection: 127.0.0.1:PORT_N/test/root
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> ph10@myhost.test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked  TESTSUITE/spool/db/retry.lockfile
- EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
- returned from EXIM_DBOPEN: (nil)
- failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
 no retry data available
 search_tidyup called
 changed uid/gid: local delivery to ph10 <ph10@myhost.test.ex> transport=t1
-  uid=CALLER_UID gid=CALLER_GID pid=pppp
+  uid=CALLER_UID gid=CALLER_GID pid=p1238
   home=NULL current=/
-set_process_info: pppp delivering 10HmaX-0005vi-00 to ph10 using t1
+set_process_info: pppp delivering 10HmaX-000000005vi-0000 to ph10 using t1
 appendfile transport entered
  search_open: mysql "NULL"
  search_find: file="NULL"
@@ -418,8 +888,14 @@ appendfile transport entered
  internal_search_find: file="NULL"
    type=mysql key="select id from them where id='ph10'" opts=NULL
  database lookup required for select id from them where id='ph10'
- MySQL query: select id from them where id='ph10'
- MYSQL new connection: host=127.0.0.1 port=1223 socket=NULL database=test user=root
+                              (tainted)
+No quoter name for addr
+LOG: MAIN
+  tainted search query is not properly quoted (transport t1, TESTSUITE/test-config 82): select id from them where id='ph10'
+ required_quoter_id (mysql) quoting -1 (NULL)
+ MySQL query: "select id from them where id='ph10'" opts 'NULL'
+ MYSQL new connection: host=127.0.0.1 port=PORT_N socket=NULL database=test user=root
+ creating new cache entry
  lookup yielded: ph10
 appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   file=TESTSUITE/test-mail/ph10 format=unix
@@ -438,7 +914,8 @@ writing data block fd=dddd size=sss timeout=0
 writing data block fd=dddd size=sss timeout=0
 appendfile yields 0 with errno=dd more_errno=dd
 search_tidyup called
-close MYSQL connection: 127.0.0.1:1223/test/root
+close MYSQL connection: 127.0.0.1:PORT_N/test/root
+>>>>>>>>>>>>>>>> Exim pid=p1238 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling ph10@myhost.test.ex
 t1 transport returned OK for ph10@myhost.test.ex
 post-process ph10@myhost.test.ex (0)
@@ -447,13 +924,13 @@ LOG: MAIN
   => ph10 <ph10@myhost.test.ex> R=r1 T=t1
 >>>>>>>>>>>>>>>> deliveries are done >>>>>>>>>>>>>>>>
 changed uid/gid: post-delivery tidying
-  uid=EXIM_UID gid=EXIM_GID pid=pppp
-set_process_info: pppp tidying up after delivering 10HmaX-0005vi-00
+  uid=EXIM_UID gid=EXIM_GID pid=p1237
+set_process_info: pppp tidying up after delivering 10HmaX-000000005vi-0000
 Processing retry items
-Succeeded addresses:
- ph10@myhost.test.ex: no retry items
-Failed addresses:
-Deferred addresses:
+ Succeeded addresses:
 ph10@myhost.test.ex: no retry items
+ Failed addresses:
+ Deferred addresses:
 end of retry processing
 DSN: processing router : r1
 DSN: processing successful delivery address: ph10@myhost.test.ex
@@ -465,9 +942,9 @@ DSN: Remote SMTP server supports DSN: 0
 DSN: not sending DSN success message
 LOG: MAIN
   Completed
-end delivery of 10HmaX-0005vi-00
+end delivery of 10HmaX-000000005vi-0000
 search_tidyup called
 search_tidyup called
->>>>>>>>>>>>>>>> Exim pid=pppp (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1237 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 search_tidyup called
->>>>>>>>>>>>>>>> Exim pid=pppp (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>