mirror of
https://github.com/logos-messaging/logos-messaging-interop-tests.git
synced 2026-05-03 09:03:25 +00:00
110 lines
18 KiB
Plaintext
110 lines
18 KiB
Plaintext
[35mDEBUG [0m tests.conftest:conftest.py:51 Running fixture setup: test_id
|
||
[35mDEBUG [0m tests.conftest:conftest.py:57 Running test: test_invalid_page_size with id: 2026-03-24_04-37-34__7941a953-e553-4520-bcd0-eeb29823da63
|
||
[35mDEBUG [0m src.steps.common:common.py:19 Running fixture setup: common_setup
|
||
[35mDEBUG [0m src.steps.store:store.py:31 Running fixture setup: store_setup
|
||
[35mDEBUG [0m src.steps.store:store.py:39 Running fixture setup: node_setup
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:19 Docker client initialized with image wakuorg/nwaku:latest
|
||
[35mDEBUG [0m src.node.waku_node:waku_node.py:86 WakuNode instance initialized with log path ./log/docker/publishing_node1_2026-03-24_04-37-34__7941a953-e553-4520-bcd0-eeb29823da63__wakuorg_nwaku:latest.log
|
||
[35mDEBUG [0m src.node.waku_node:waku_node.py:90 Starting Node...
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:22 Attempting to create or retrieve network waku
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:25 Network waku already exists
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:108 Generated random external IP 172.18.36.254
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:101 Generated ports ['60739', '60740', '60741', '60742', '60743']
|
||
[35mDEBUG [0m src.node.waku_node:waku_node.py:439 RLN credentials were not set
|
||
[32mINFO [0m src.node.waku_node:waku_node.py:176 RLN credentials not set or credential store not available, starting without RLN
|
||
[35mDEBUG [0m src.node.waku_node:waku_node.py:178 Using volumes []
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:49 docker run -i -t -p 60739:60739 -p 60740:60740 -p 60741:60741 -p 60742:60742 -p 60743:60743 wakuorg/nwaku:latest --listen-address=0.0.0.0 --rest=true --rest-admin=true --websocket-support=true --log-level=TRACE --rest-relay-cache-capacity=100 --websocket-port=60741 --rest-port=60739 --tcp-port=60740 --discv5-udp-port=60742 --rest-address=0.0.0.0 --nat=extip:172.18.36.254 --peer-exchange=true --discv5-discovery=true --cluster-id=3 --nodekey=e1dbe7afa063c0ea0ad75ffbaacb92dcd66e68ff4d5c1ef1248e55d5dbce2d75 --shard=0 --metrics-server=true --metrics-server-address=0.0.0.0 --metrics-server-port=60743 --metrics-logging=true --store=true --relay=true
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:55 docker network connect --ip 172.18.36.254 waku 7bdb514fcb755661264e75a824da618bb61f6c8cc121e395d2f6434cec081244
|
||
[1m[31mERROR [0m src.node.docker_mananger:docker_mananger.py:89 Max retries reached for container b1b3e16e4174. Exiting log stream.
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:58 Container started with ID 7bdb514fcb75. Setting up logs at ./log/docker/publishing_node1_2026-03-24_04-37-34__7941a953-e553-4520-bcd0-eeb29823da63__wakuorg_nwaku:latest.log
|
||
[35mDEBUG [0m src.node.waku_node:waku_node.py:190 Started container from image wakuorg/nwaku:latest. REST: 60739
|
||
[35mDEBUG [0m src.libs.common:common.py:47 Sleeping for 1 seconds
|
||
[1m[31mERROR [0m src.node.docker_mananger:docker_mananger.py:89 Max retries reached for container cc1073a71653. Exiting log stream.
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X GET "http://127.0.0.1:60739/health" -H "Content-Type: application/json" -d 'None'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:22 Response status code: 200. Response content: b'{"nodeHealth":"READY","connectionStatus":"Disconnected","protocolsHealth":[{"Relay":"NOT_READY","desc":"No connected peers"},{"Lightpush":"NOT_MOUNTED"},{"Legacy Lightpush":"NOT_MOUNTED"},{"Filter":"NOT_MOUNTED"},{"Store":"READY"},{"Legacy Store":"NOT_MOUNTED"},{"Peer Exchange":"READY"},{"Rendezvous":"NOT_READY","desc":"No Rendezvous peers are available yet"},{"Mix":"NOT_MOUNTED"},{"Lightpush Client":"NOT_READY","desc":"No Lightpush service peer available yet"},{"Legacy Lightpush Client":"NOT_READY","desc":"No Lightpush service peer available yet"},{"Store Client":"READY"},{"Legacy Store Client":"NOT_READY","desc":"No Legacy Store service peers are available yet, neither Store service set up for the node"},{"Filter Client":"NOT_READY","desc":"No Filter service peer available yet"},{"Rln Relay":"NOT_MOUNTED"}]}'
|
||
[32mINFO [0m src.node.waku_node:waku_node.py:287 Node protocols are initialized !!
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X GET "http://127.0.0.1:60739/debug/v1/info" -H "Content-Type: application/json" -d 'None'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:22 Response status code: 200. Response content: b'{"listenAddresses":["/ip4/172.18.36.254/tcp/60740/p2p/16Uiu2HAmChxSW288GtCx5z4iqUGDVtVGEVc2jMEe1gEN9zbWyCtC","/ip4/172.18.36.254/tcp/60741/ws/p2p/16Uiu2HAmChxSW288GtCx5z4iqUGDVtVGEVc2jMEe1gEN9zbWyCtC"],"enrUri":"enr:-L24QHGeaOpdiC5cEp8WhgOlP-OBbgYV4Q7Qe4NMoXUAvUzZMyhL80MNw68d8QfKOTk66mkMnQLDPgsQCifl453FSsICgmlkgnY0gmlwhKwSJP6KbXVsdGlhZGRyc5YACASsEiT-Bu1EAAoErBIk_gbtRd0DgnJzhQADAQAAiXNlY3AyNTZrMaEDAMKVJiQDAWK7DztHgjkeWAI9LUM34-EcOUh7HX4qujWDdGNwgu1Eg3VkcILtRoV3YWt1MgM"}'
|
||
[32mINFO [0m src.node.waku_node:waku_node.py:292 REST service is ready !!
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:19 Docker client initialized with image wakuorg/nwaku:latest
|
||
[35mDEBUG [0m src.node.waku_node:waku_node.py:86 WakuNode instance initialized with log path ./log/docker/store_node1_2026-03-24_04-37-34__7941a953-e553-4520-bcd0-eeb29823da63__wakuorg_nwaku:latest.log
|
||
[35mDEBUG [0m src.node.waku_node:waku_node.py:90 Starting Node...
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:22 Attempting to create or retrieve network waku
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:25 Network waku already exists
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:108 Generated random external IP 172.18.177.190
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:101 Generated ports ['9620', '9621', '9622', '9623', '9624']
|
||
[35mDEBUG [0m src.node.waku_node:waku_node.py:439 RLN credentials were not set
|
||
[32mINFO [0m src.node.waku_node:waku_node.py:176 RLN credentials not set or credential store not available, starting without RLN
|
||
[35mDEBUG [0m src.node.waku_node:waku_node.py:178 Using volumes []
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:49 docker run -i -t -p 9620:9620 -p 9621:9621 -p 9622:9622 -p 9623:9623 -p 9624:9624 wakuorg/nwaku:latest --listen-address=0.0.0.0 --rest=true --rest-admin=true --websocket-support=true --log-level=TRACE --rest-relay-cache-capacity=100 --websocket-port=9622 --rest-port=9620 --tcp-port=9621 --discv5-udp-port=9623 --rest-address=0.0.0.0 --nat=extip:172.18.177.190 --peer-exchange=true --discv5-discovery=true --cluster-id=3 --nodekey=9fb3bbd9fea92f2a831aa01b0b90dbb8beb77fb3a8042e6bcede6beb844caf7d --shard=0 --metrics-server=true --metrics-server-address=0.0.0.0 --metrics-server-port=9624 --metrics-logging=true --discv5-bootstrap-node=enr:-L24QHGeaOpdiC5cEp8WhgOlP-OBbgYV4Q7Qe4NMoXUAvUzZMyhL80MNw68d8QfKOTk66mkMnQLDPgsQCifl453FSsICgmlkgnY0gmlwhKwSJP6KbXVsdGlhZGRyc5YACASsEiT-Bu1EAAoErBIk_gbtRd0DgnJzhQADAQAAiXNlY3AyNTZrMaEDAMKVJiQDAWK7DztHgjkeWAI9LUM34-EcOUh7HX4qujWDdGNwgu1Eg3VkcILtRoV3YWt1MgM --storenode=/ip4/172.18.36.254/tcp/60740/p2p/16Uiu2HAmChxSW288GtCx5z4iqUGDVtVGEVc2jMEe1gEN9zbWyCtC --store=true --relay=true
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:55 docker network connect --ip 172.18.177.190 waku 98dfbfd0c72bfb7da69d38875f3ef34ea9e01c9fff5fd63363161cdb779581e3
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:58 Container started with ID 98dfbfd0c72b. Setting up logs at ./log/docker/store_node1_2026-03-24_04-37-34__7941a953-e553-4520-bcd0-eeb29823da63__wakuorg_nwaku:latest.log
|
||
[35mDEBUG [0m src.node.waku_node:waku_node.py:190 Started container from image wakuorg/nwaku:latest. REST: 9620
|
||
[35mDEBUG [0m src.libs.common:common.py:47 Sleeping for 1 seconds
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X GET "http://127.0.0.1:9620/health" -H "Content-Type: application/json" -d 'None'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:22 Response status code: 200. Response content: b'{"nodeHealth":"READY","connectionStatus":"PartiallyConnected","protocolsHealth":[{"Relay":"READY"},{"Lightpush":"NOT_MOUNTED"},{"Legacy Lightpush":"NOT_MOUNTED"},{"Filter":"NOT_MOUNTED"},{"Store":"READY"},{"Legacy Store":"NOT_MOUNTED"},{"Peer Exchange":"READY"},{"Rendezvous":"NOT_READY","desc":"No Rendezvous peers are available yet"},{"Mix":"NOT_MOUNTED"},{"Lightpush Client":"NOT_READY","desc":"No Lightpush service peer available yet"},{"Legacy Lightpush Client":"NOT_READY","desc":"No Lightpush service peer available yet"},{"Store Client":"READY"},{"Legacy Store Client":"NOT_READY","desc":"No Legacy Store service peers are available yet, neither Store service set up for the node"},{"Filter Client":"NOT_READY","desc":"No Filter service peer available yet"},{"Rln Relay":"NOT_MOUNTED"}]}'
|
||
[32mINFO [0m src.node.waku_node:waku_node.py:287 Node protocols are initialized !!
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X GET "http://127.0.0.1:9620/debug/v1/info" -H "Content-Type: application/json" -d 'None'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:22 Response status code: 200. Response content: b'{"listenAddresses":["/ip4/172.18.177.190/tcp/9621/p2p/16Uiu2HAm859pELir2mohpUV8fkHc9evPYMZXq91UwjiSh4dDwDHW","/ip4/172.18.177.190/tcp/9622/ws/p2p/16Uiu2HAm859pELir2mohpUV8fkHc9evPYMZXq91UwjiSh4dDwDHW"],"enrUri":"enr:-L24QN9_jTKFIO7h2lC3n6DIFme9AXrxO3U0AYSRzYu-pLpmdMI2PWU56FB8tRdxo2bSm8p17uB-y06XiR8GjL9OCtwCgmlkgnY0gmlwhKwSsb6KbXVsdGlhZGRyc5YACASsErG-BiWVAAoErBKxvgYllt0DgnJzhQADAQAAiXNlY3AyNTZrMaECu-Y00fzAF9jzhpqRGe-VUyUoarNoodC86_x6W9phbt2DdGNwgiWVg3VkcIIll4V3YWt1MgM"}'
|
||
[32mINFO [0m src.node.waku_node:waku_node.py:292 REST service is ready !!
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X POST "http://127.0.0.1:9620/admin/v1/peers" -H "Content-Type: application/json" -d '["/ip4/172.18.36.254/tcp/60740/p2p/16Uiu2HAmChxSW288GtCx5z4iqUGDVtVGEVc2jMEe1gEN9zbWyCtC"]'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:22 Response status code: 200. Response content: b'OK'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X POST "http://127.0.0.1:60739/relay/v1/subscriptions" -H "Content-Type: application/json" -d '["/waku/2/rs/3/0"]'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:22 Response status code: 200. Response content: b'OK'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X POST "http://127.0.0.1:9620/relay/v1/subscriptions" -H "Content-Type: application/json" -d '["/waku/2/rs/3/0"]'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:22 Response status code: 200. Response content: b'OK'
|
||
[35mDEBUG [0m src.steps.store:store.py:132 Relaying message
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X POST "http://127.0.0.1:60739/relay/v1/messages/%2Fwaku%2F2%2Frs%2F3%2F0" -H "Content-Type: application/json" -d '{"payload": "TWVzc2FnZV8w", "contentTopic": "/myapp/1/latest/proto", "timestamp": '$(date +%s%N)'}'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:22 Response status code: 200. Response content: b'OK'
|
||
[35mDEBUG [0m src.libs.common:common.py:47 Sleeping for 0.2 seconds
|
||
[35mDEBUG [0m src.steps.store:store.py:132 Relaying message
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X POST "http://127.0.0.1:60739/relay/v1/messages/%2Fwaku%2F2%2Frs%2F3%2F0" -H "Content-Type: application/json" -d '{"payload": "TWVzc2FnZV8x", "contentTopic": "/myapp/1/latest/proto", "timestamp": '$(date +%s%N)'}'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:22 Response status code: 200. Response content: b'OK'
|
||
[35mDEBUG [0m src.libs.common:common.py:47 Sleeping for 0.2 seconds
|
||
[35mDEBUG [0m src.steps.store:store.py:132 Relaying message
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X POST "http://127.0.0.1:60739/relay/v1/messages/%2Fwaku%2F2%2Frs%2F3%2F0" -H "Content-Type: application/json" -d '{"payload": "TWVzc2FnZV8y", "contentTopic": "/myapp/1/latest/proto", "timestamp": '$(date +%s%N)'}'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:22 Response status code: 200. Response content: b'OK'
|
||
[35mDEBUG [0m src.libs.common:common.py:47 Sleeping for 0.2 seconds
|
||
[35mDEBUG [0m src.steps.store:store.py:132 Relaying message
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X POST "http://127.0.0.1:60739/relay/v1/messages/%2Fwaku%2F2%2Frs%2F3%2F0" -H "Content-Type: application/json" -d '{"payload": "TWVzc2FnZV8z", "contentTopic": "/myapp/1/latest/proto", "timestamp": '$(date +%s%N)'}'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:22 Response status code: 200. Response content: b'OK'
|
||
[35mDEBUG [0m src.libs.common:common.py:47 Sleeping for 0.2 seconds
|
||
[35mDEBUG [0m src.steps.store:store.py:132 Relaying message
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X POST "http://127.0.0.1:60739/relay/v1/messages/%2Fwaku%2F2%2Frs%2F3%2F0" -H "Content-Type: application/json" -d '{"payload": "TWVzc2FnZV80", "contentTopic": "/myapp/1/latest/proto", "timestamp": '$(date +%s%N)'}'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:22 Response status code: 200. Response content: b'OK'
|
||
[35mDEBUG [0m src.libs.common:common.py:47 Sleeping for 0.2 seconds
|
||
[35mDEBUG [0m src.steps.store:store.py:132 Relaying message
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X POST "http://127.0.0.1:60739/relay/v1/messages/%2Fwaku%2F2%2Frs%2F3%2F0" -H "Content-Type: application/json" -d '{"payload": "TWVzc2FnZV81", "contentTopic": "/myapp/1/latest/proto", "timestamp": '$(date +%s%N)'}'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:22 Response status code: 200. Response content: b'OK'
|
||
[35mDEBUG [0m src.libs.common:common.py:47 Sleeping for 0.2 seconds
|
||
[35mDEBUG [0m src.steps.store:store.py:132 Relaying message
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X POST "http://127.0.0.1:60739/relay/v1/messages/%2Fwaku%2F2%2Frs%2F3%2F0" -H "Content-Type: application/json" -d '{"payload": "TWVzc2FnZV82", "contentTopic": "/myapp/1/latest/proto", "timestamp": '$(date +%s%N)'}'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:22 Response status code: 200. Response content: b'OK'
|
||
[35mDEBUG [0m src.libs.common:common.py:47 Sleeping for 0.2 seconds
|
||
[35mDEBUG [0m src.steps.store:store.py:132 Relaying message
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X POST "http://127.0.0.1:60739/relay/v1/messages/%2Fwaku%2F2%2Frs%2F3%2F0" -H "Content-Type: application/json" -d '{"payload": "TWVzc2FnZV83", "contentTopic": "/myapp/1/latest/proto", "timestamp": '$(date +%s%N)'}'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:22 Response status code: 200. Response content: b'OK'
|
||
[35mDEBUG [0m src.libs.common:common.py:47 Sleeping for 0.2 seconds
|
||
[35mDEBUG [0m src.steps.store:store.py:132 Relaying message
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X POST "http://127.0.0.1:60739/relay/v1/messages/%2Fwaku%2F2%2Frs%2F3%2F0" -H "Content-Type: application/json" -d '{"payload": "TWVzc2FnZV84", "contentTopic": "/myapp/1/latest/proto", "timestamp": '$(date +%s%N)'}'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:22 Response status code: 200. Response content: b'OK'
|
||
[35mDEBUG [0m src.libs.common:common.py:47 Sleeping for 0.2 seconds
|
||
[35mDEBUG [0m src.steps.store:store.py:132 Relaying message
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X POST "http://127.0.0.1:60739/relay/v1/messages/%2Fwaku%2F2%2Frs%2F3%2F0" -H "Content-Type: application/json" -d '{"payload": "TWVzc2FnZV85", "contentTopic": "/myapp/1/latest/proto", "timestamp": '$(date +%s%N)'}'
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:22 Response status code: 200. Response content: b'OK'
|
||
[35mDEBUG [0m src.libs.common:common.py:47 Sleeping for 0.2 seconds
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X GET "http://127.0.0.1:60739/store/v3/messages?pubsubTopic=%2Fwaku%2F2%2Frs%2F3%2F0&pageSize=$2&ascending=true" -H "Content-Type: application/json" -d 'None'
|
||
[1m[31mERROR [0m src.node.api_clients.base_client:base_client.py:16 HTTP error occurred: 400 Client Error: Bad Request for url: http://127.0.0.1:60739/store/v3/messages?pubsubTopic=%2Fwaku%2F2%2Frs%2F3%2F0&pageSize=$2&ascending=true. Response content: b'page size parsing error: invalid integer: $2'
|
||
[35mDEBUG [0m tests.store.test_page_size:test_page_size.py:66 the invalid page_size $2 wasn't accepted
|
||
[32mINFO [0m src.node.api_clients.base_client:base_client.py:37 curl -v -X GET "http://127.0.0.1:9620/store/v3/messages?pubsubTopic=%2Fwaku%2F2%2Frs%2F3%2F0&pageSize=$2&ascending=true" -H "Content-Type: application/json" -d 'None'
|
||
[1m[31mERROR [0m src.node.api_clients.base_client:base_client.py:16 HTTP error occurred: 400 Client Error: Bad Request for url: http://127.0.0.1:9620/store/v3/messages?pubsubTopic=%2Fwaku%2F2%2Frs%2F3%2F0&pageSize=$2&ascending=true. Response content: b'page size parsing error: invalid integer: $2'
|
||
[35mDEBUG [0m tests.store.test_page_size:test_page_size.py:66 the invalid page_size $2 wasn't accepted
|
||
[35mDEBUG [0m tests.conftest:conftest.py:59 Running fixture teardown: test_setup
|
||
[35mDEBUG [0m tests.conftest:conftest.py:83 Running fixture teardown: close_open_nodes
|
||
[35mDEBUG [0m src.node.waku_node:waku_node.py:234 Stopping container with id 7bdb514fcb75
|
||
[35mDEBUG [0m src.node.waku_node:waku_node.py:241 Container stopped.
|
||
[35mDEBUG [0m src.node.waku_node:waku_node.py:234 Stopping container with id 98dfbfd0c72b
|
||
[35mDEBUG [0m src.node.waku_node:waku_node.py:241 Container stopped.
|
||
[35mDEBUG [0m tests.conftest:conftest.py:98 Running fixture teardown: check_waku_log_errors
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:144 No errors found in the waku logs.
|
||
[35mDEBUG [0m src.node.docker_mananger:docker_mananger.py:144 No errors found in the waku logs. |