diff options
author | Antoine A <> | 2024-10-21 20:08:23 +0200 |
---|---|---|
committer | Antoine A <> | 2024-10-21 20:08:23 +0200 |
commit | 484e622406933cbd2c99bb8eda59ac804c47cf0a (patch) | |
tree | 76945a451303e53fa1e5dee26afa879b24c59503 | |
parent | 96f4d57ffdb4c0ac4edcbb238c0b6ca3ae3c2509 (diff) |
test: longer passwords
-rw-r--r-- | src/testing/tmp-last-response.pyLLmJmw | 0 | ||||
-rw-r--r-- | tmp.log | 14532 |
2 files changed, 14532 insertions, 0 deletions
diff --git a/src/testing/tmp-last-response.pyLLmJmw b/src/testing/tmp-last-response.pyLLmJmw new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/src/testing/tmp-last-response.pyLLmJmw diff --git a/tmp.log b/tmp.log new file mode 100644 index 00000000..d0241dfa --- /dev/null +++ b/tmp.log @@ -0,0 +1,14532 @@ +========================================================= + taler-merchant 0.14.0: src/backenddb/test-suite.log +========================================================= + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + +=================================================== + taler-merchant 0.14.0: src/lib/test-suite.log +=================================================== + +# TOTAL: 1 +# PASS: 1 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 0 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + +======================================================= + taler-merchant 0.14.0: src/testing/test-suite.log +======================================================= + +# TOTAL: 14 +# PASS: 7 +# SKIP: 0 +# XFAIL: 0 +# FAIL: 7 +# XPASS: 0 +# ERROR: 0 + +.. contents:: :depth: 2 + +FAIL: test_merchant_api_cs +========================== + +2024-10-21T20:00:15.576447+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `run-fakebank' +2024-10-21T20:00:15.576490+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Storing command run-fakebank under variable `fakebank' +Warning: value "1", specified as the thread pool size, is ignored. Thread pool is not used. +2024-10-21T20:00:15.576649+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `start-taler' +2024-10-21T20:00:15.576905+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Trying to start child management. +2024-10-21T20:00:15.576928+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Child management started. +2024-10-21T20:00:16.621252+0200 gnunet-config-565604 ERROR Configuration fails to specify option `TALER_AUDITOR_SALT' in section `AUDITOR'! +2024-10-21T20:00:17.904925+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Taler system UP +2024-10-21T20:00:17.904951+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `get-exchange' +2024-10-21T20:00:17.904962+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Storing command get-exchange under variable `exchange' +2024-10-21T20:00:17.905032+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Requesting keys with URL `http://localhost:8081/keys'. +* Host localhost:8081 was resolved. +* IPv6: ::1 +* IPv4: 127.0.0.1 +* Trying [::1]:8081... +* Connected to localhost (::1) port 8081 +* using HTTP/1.x +> GET /keys HTTP/1.1
+Host: localhost:8081
+Accept: */*
+Accept-Encoding: deflate, gzip, br, zstd
+Content-Type: application/json
+
+* Request completely sent off +< HTTP/1.1 200 OK
+< Date: Mon, 21 Oct 2024 18:00:17 GMT
+< Connection: close
+< Content-Encoding: deflate
+< Access-Control-Allow-Origin: *
+< Access-Control-Expose-Headers: *
+< Content-Type: application/json
+< Cache-Control: public,must-revalidate,max-age=86400
+< Expires: Tue, 29 Oct 2024 00:00:00 GMT
+2024-10-21T20:00:17.911642+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Found Expires header `Tue, 29 Oct 2024 00:00:00 GMT
+' +< Vary: Accept-Encoding
+< ETag: PC34X696C2W7Y4ZVYRJX77KHAKMSGMKT36C03DBGRM38R56CKCKYHTWGYAEHNQ2FKFDNPZ8T5FWN58DVB7J4N8F8SKBH5FTJ3SMK820
+< Content-Length: 27375
+<
+* shutting down connection #0 +2024-10-21T20:00:17.913284+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Received keys from URL `http://localhost:8081/keys' with status 200 and expiration Tue Oct 29 00:00:00 2024. +2024-10-21T20:00:17.913823+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Parsed 1 wire accounts from JSON +2024-10-21T20:00:17.926330+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8081/keys' finished with 200 after 6 ms +2024-10-21T20:00:17.926370+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `orders-id' +2024-10-21T20:00:17.926373+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running batched command: instance-create-default +2024-10-21T20:00:17.929510+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO POST /management/instances completed with response code 204 +2024-10-21T20:00:17.929531+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances' finished with 204 after 3008 µs +2024-10-21T20:00:17.929542+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `orders-id' +2024-10-21T20:00:17.929545+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running batched command: instance-create-default-account +2024-10-21T20:00:17.930986+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO POST /accounts completed with response code 200 +2024-10-21T20:00:17.931012+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/accounts' finished with 200 after 1407 µs +2024-10-21T20:00:17.931023+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `orders-id' +2024-10-21T20:00:17.931026+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running batched command: instance-create-kyc-0 +2024-10-21T20:00:17.931663+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/kyc?exchange_url=http%3A%2F%2Flocalhost%3A8081%2F' finished with 204 after 619 µs +2024-10-21T20:00:17.931679+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `orders-id' +2024-10-21T20:00:17.931682+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running batched command: create-proposal-bad-currency +{ + "code": 30, + "hint": "The currency involved in the operation is not acceptable for this server. Check your configuration and make sure the currency specified for a given service provider is one of the currencies supported by that provider.", + "detail": "no trusted exchange for this currency" +}2024-10-21T20:00:17.933127+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 ERROR Unexpected status code from /orders: 400 (30) at orders-id; JSON: {"code":30,"hint":"The currency involved in the operation is not acceptable for this server. Check your configuration and make sure the currency specified for a given service provider is one of the currencies supported by that provider.","detail":"no trusted exchange for this currency"} +2024-10-21T20:00:17.933137+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/orders' finished with 400 after 1346 µs +2024-10-21T20:00:17.933145+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `orders-id' +2024-10-21T20:00:17.933147+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running batched command: create-proposal-4 +2024-10-21T20:00:17.935238+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/orders' finished with 200 after 2036 µs +2024-10-21T20:00:17.935252+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `orders-id' +2024-10-21T20:00:17.935255+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running batched command: get-order-4 +2024-10-21T20:00:17.935273+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Getting order status from http://localhost:8080/private/orders/4 +2024-10-21T20:00:17.935762+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO GET /private/orders/$ID completed with status 200 +2024-10-21T20:00:17.935779+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/orders/4' finished with 200 after 476 µs +2024-10-21T20:00:17.935786+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `orders-id' +2024-10-21T20:00:17.935788+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running batched command: delete-order-4 +2024-10-21T20:00:17.936423+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/orders/4' finished with 204 after 626 µs +2024-10-21T20:00:17.936433+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `orders-id' +2024-10-21T20:00:17.936438+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running batched command: purge-default +2024-10-21T20:00:17.938680+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances/default?purge=yes' finished with 204 after 2233 µs +2024-10-21T20:00:17.938693+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `orders-id' +2024-10-21T20:00:17.938696+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Exiting from batch: orders-id +2024-10-21T20:00:17.938699+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `config' +2024-10-21T20:00:17.938817+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/config' finished with 200 after 90 µs +2024-10-21T20:00:17.938827+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instances-empty' +2024-10-21T20:00:17.938900+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances' finished with 200 after 65 µs +2024-10-21T20:00:17.938906+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instance-create-default-setup' +2024-10-21T20:00:17.939836+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO POST /management/instances completed with response code 204 +2024-10-21T20:00:17.939845+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances' finished with 204 after 905 µs +2024-10-21T20:00:17.939851+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instance-create-default-account' +2024-10-21T20:00:17.940821+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO POST /accounts completed with response code 200 +2024-10-21T20:00:17.940839+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/accounts' finished with 200 after 952 µs +2024-10-21T20:00:17.940846+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instance-create-i1' +2024-10-21T20:00:17.941930+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO POST /management/instances completed with response code 204 +2024-10-21T20:00:17.941940+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances' finished with 204 after 1058 µs +2024-10-21T20:00:17.941946+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instances-get-i1' +2024-10-21T20:00:17.942068+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances' finished with 200 after 99 µs +2024-10-21T20:00:17.942075+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instances-get-i1' +2024-10-21T20:00:17.942259+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/instances/i1/private' finished with 200 after 163 µs +2024-10-21T20:00:17.942271+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instance-patch-i1' +2024-10-21T20:00:17.943477+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO PATCH /instances/$ID completed with response code 204 +2024-10-21T20:00:17.943490+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances/i1' finished with 204 after 1178 µs +2024-10-21T20:00:17.943502+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instances-get-i1-2' +2024-10-21T20:00:17.943676+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/instances/i1/private' finished with 200 after 152 µs +2024-10-21T20:00:17.943696+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instances-get-i2-nx' +2024-10-21T20:00:17.943850+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 WARNING Attempt to lookup command for empty label +2024-10-21T20:00:17.943865+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/instances/i2/private' finished with 404 after 142 µs +2024-10-21T20:00:17.943871+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instance-create-ACL' +2024-10-21T20:00:17.945180+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO POST /management/instances completed with response code 204 +2024-10-21T20:00:17.945197+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances' finished with 204 after 1281 µs +2024-10-21T20:00:17.945209+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instance-patch-ACL' +2024-10-21T20:00:17.946137+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO PATCH /instances/$ID completed with response code 204 +2024-10-21T20:00:17.946147+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances/i-acl' finished with 204 after 894 µs +2024-10-21T20:00:17.946155+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instance-create-i2' +2024-10-21T20:00:17.947390+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO POST /management/instances completed with response code 204 +2024-10-21T20:00:17.947409+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances' finished with 204 after 1204 µs +2024-10-21T20:00:17.947419+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instance-create-i2-idem' +2024-10-21T20:00:17.947600+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO POST /management/instances completed with response code 204 +2024-10-21T20:00:17.947621+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances' finished with 204 after 148 µs +2024-10-21T20:00:17.947634+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instance-delete-i2' +2024-10-21T20:00:17.948832+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances/i2' finished with 204 after 1183 µs +2024-10-21T20:00:17.948848+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instances-get-i2-post-deletion' +2024-10-21T20:00:17.949030+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 WARNING Attempt to lookup command for empty label +2024-10-21T20:00:17.949045+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/instances/i2/private' finished with 404 after 169 µs +2024-10-21T20:00:17.949052+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instance-delete-then-purge-i2' +2024-10-21T20:00:17.950192+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances/i2?purge=yes' finished with 204 after 1121 µs +2024-10-21T20:00:17.950208+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instance-purge-i1' +2024-10-21T20:00:17.951118+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances/i1?purge=yes' finished with 204 after 900 µs +2024-10-21T20:00:17.951128+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instance-purge-then-delete-i1' +2024-10-21T20:00:17.951255+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances/i1' finished with 404 after 115 µs +2024-10-21T20:00:17.951273+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instance-purge-i-acl-middle' +2024-10-21T20:00:17.952317+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances/i-acl?purge=yes' finished with 204 after 1033 µs +2024-10-21T20:00:17.952330+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instance-purge-default-middle' +2024-10-21T20:00:17.953344+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances/default?purge=yes' finished with 204 after 1006 µs +2024-10-21T20:00:17.953358+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instance-create-default-after-purge' +2024-10-21T20:00:17.954418+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO POST /management/instances completed with response code 204 +2024-10-21T20:00:17.954428+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/management/instances' finished with 204 after 1029 µs +2024-10-21T20:00:17.954434+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `instance-create-default-account-after-purge' +2024-10-21T20:00:17.955470+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO POST /accounts completed with response code 200 +2024-10-21T20:00:17.955484+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/accounts' finished with 200 after 1005 µs +2024-10-21T20:00:17.955491+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `get-products-empty' +2024-10-21T20:00:17.955897+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/products' finished with 200 after 393 µs +2024-10-21T20:00:17.955908+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `post-products-p1' +2024-10-21T20:00:17.957427+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO POST /products completed with response code 204 +2024-10-21T20:00:17.957439+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/products' finished with 204 after 1487 µs +2024-10-21T20:00:17.957446+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `post-products-p1-idem' +2024-10-21T20:00:17.958293+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO POST /products completed with response code 204 +2024-10-21T20:00:17.958302+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/products' finished with 204 after 818 µs +2024-10-21T20:00:17.958311+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `post-products-p1-non-idem' +2024-10-21T20:00:17.958615+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO POST /products completed with response code 409 +2024-10-21T20:00:17.958623+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/products' finished with 409 after 278 µs +2024-10-21T20:00:17.958629+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `get-products-p1' +2024-10-21T20:00:17.958869+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/products' finished with 200 after 223 µs +2024-10-21T20:00:17.958880+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `get-product-p1' +2024-10-21T20:00:17.959235+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/products/product-1' finished with 200 after 330 µs +2024-10-21T20:00:17.959250+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `post-products-p2' +2024-10-21T20:00:17.959702+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO POST /products completed with response code 204 +2024-10-21T20:00:17.959709+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/products' finished with 204 after 428 µs +2024-10-21T20:00:17.959715+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `patch-products-p2' +2024-10-21T20:00:17.960527+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO PATCH /products/$ID completed with response code 204 +2024-10-21T20:00:17.960537+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/products/product-2' finished with 204 after 783 µs +2024-10-21T20:00:17.960543+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `get-product-p2' +2024-10-21T20:00:17.960830+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/products/product-2' finished with 200 after 269 µs +2024-10-21T20:00:17.960840+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `get-product-nx' +2024-10-21T20:00:17.961122+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/products/product-nx' finished with 404 after 271 µs +2024-10-21T20:00:17.961134+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `patch-products-p3-nx' +2024-10-21T20:00:17.961408+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO PATCH /products/$ID completed with response code 404 +2024-10-21T20:00:17.961416+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/products/product-3' finished with 404 after 246 µs +2024-10-21T20:00:17.961421+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `get-products-empty' +2024-10-21T20:00:17.961803+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/products/p1' finished with 404 after 371 µs +2024-10-21T20:00:17.961812+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `get-products-empty' +2024-10-21T20:00:17.962293+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/products/product-1' finished with 204 after 473 µs +2024-10-21T20:00:17.962302+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `lock-product-p2' +2024-10-21T20:00:17.963291+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO LOCK /products/$ID completed with response code 204 +2024-10-21T20:00:17.963301+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/products/product-2/lock' finished with 204 after 971 µs +2024-10-21T20:00:17.963307+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `lock-product-nx' +2024-10-21T20:00:17.963847+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO LOCK /products/$ID completed with response code 404 +2024-10-21T20:00:17.963855+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/products/product-nx/lock' finished with 404 after 521 µs +2024-10-21T20:00:17.963861+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `lock-product-too-much' +2024-10-21T20:00:17.964424+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO LOCK /products/$ID completed with response code 410 +2024-10-21T20:00:17.964432+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/products/product-2/lock' finished with 410 after 546 µs +2024-10-21T20:00:17.964438+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `delete-product-locked' +2024-10-21T20:00:17.964680+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/products/product-2' finished with 409 after 234 µs +2024-10-21T20:00:17.964689+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `pay' +2024-10-21T20:00:17.964692+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running batched command: create-reserve-1 +2024-10-21T20:00:17.964780+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Requesting administrative transaction at `http://localhost:8082/accounts/2/taler-wire-gateway/admin/add-incoming' for reserve 3N9PM9A4 +2024-10-21T20:00:17.964970+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Fakebank TWG, serving URL `/admin/add-incoming' for account `2' +2024-10-21T20:00:17.965011+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Fakebank TWG, serving URL `/admin/add-incoming' for account `2' +2024-10-21T20:00:17.965020+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Fakebank TWG, serving URL `/admin/add-incoming' for account `2' +2024-10-21T20:00:17.965045+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Receiving incoming wire transfer: 62->2, subject: 3N9PM9A4, amount: EUR:10.02 +2024-10-21T20:00:17.965068+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Making transfer from 62 to 2 over EUR:10.02 and subject 3N9PM9A4 at row 1 +2024-10-21T20:00:17.965138+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8082/accounts/2/taler-wire-gateway/admin/add-incoming' finished with 200 after 294 µs +2024-10-21T20:00:17.965153+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `pay' +2024-10-21T20:00:17.965156+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running batched command: wirewatch-1 +2024-10-21T20:00:17.965615+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Trying to start child management. +2024-10-21T20:00:17.978924+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Fakebank TWG, serving URL `/history/incoming' for account `2' +2024-10-21T20:00:17.978953+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Handling /history/incoming connection 0xffffa0009d90 +2024-10-21T20:00:17.978961+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Request for 1 records from 0 +2024-10-21T20:00:17.978967+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Returning 1 credit transactions starting (inclusive) from 1 +2024-10-21T20:00:17.983494+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Fakebank TWG, serving URL `/history/incoming' for account `2' +2024-10-21T20:00:17.983525+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Handling /history/incoming connection 0xffffa0009ff0 +2024-10-21T20:00:17.983533+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Request for 1 records from 1 +2024-10-21T20:00:17.984776+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Got SIGCHLD for `wirewatch-1'. +2024-10-21T20:00:17.984802+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `pay' +2024-10-21T20:00:17.984806+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running batched command: check_bank_transfer-2 +2024-10-21T20:00:17.984821+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO converted debit_payto (payto://x-taler-bank/localhost/62?receiver-name=62) to debit_account (62) +2024-10-21T20:00:17.984827+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `pay' +2024-10-21T20:00:17.984829+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running batched command: withdraw-coin-1 +2024-10-21T20:00:17.985827+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Attempting to batch-withdraw from reserve 3N9PM9A4 +2024-10-21T20:00:17.985936+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8081/csr-withdraw' finished with 200 after 446 µs +2024-10-21T20:00:17.989319+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8081/reserves/TPCK1Z5FFVW42STZ49G1QK5PES845C4HWN3M6Z6NWADQ543WEDM0/batch-withdraw' finished with 200 after 2953 µs +2024-10-21T20:00:17.989345+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `pay' +2024-10-21T20:00:17.989349+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running batched command: withdraw-coin-2 +2024-10-21T20:00:17.990068+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Attempting to batch-withdraw from reserve 3N9PM9A4 +2024-10-21T20:00:17.990155+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8081/csr-withdraw' finished with 200 after 280 µs +2024-10-21T20:00:17.991640+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8081/reserves/TPCK1Z5FFVW42STZ49G1QK5PES845C4HWN3M6Z6NWADQ543WEDM0/batch-withdraw' finished with 200 after 1056 µs +2024-10-21T20:00:17.991662+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running command `pay' +2024-10-21T20:00:17.991666+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Running batched command: get-orders-empty +2024-10-21T20:00:17.991864+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 ERROR Unexpected response code 400/26 +2024-10-21T20:00:17.991874+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 ERROR Unexpected response code 400 (26) to command pay +2024-10-21T20:00:17.991878+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 ERROR Failed at command `pay' +2024-10-21T20:00:17.991880+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 ERROR Batch is at command `get-orders-empty' +2024-10-21T20:00:17.991885+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO HTTP request for `http://localhost:8080/private/orders?date_s=Wed%20Jan%2019%2009%3A01%3A49%20586524' finished with 400 after 166 µs +2024-10-21T20:00:17.991890+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Executing shutdown at `pay' +2024-10-21T20:00:17.992559+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_cs-565439 INFO Child management stopped. +Taler unified setup terminating at ready! +FAIL test_merchant_api_cs (exit status: 1) + +FAIL: test_merchant_api_rsa +=========================== + +2024-10-21T20:00:18.038436+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `run-fakebank' +2024-10-21T20:00:18.038474+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Storing command run-fakebank under variable `fakebank' +Warning: value "1", specified as the thread pool size, is ignored. Thread pool is not used. +2024-10-21T20:00:18.038601+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `start-taler' +2024-10-21T20:00:18.038820+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Trying to start child management. +2024-10-21T20:00:18.038839+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Child management started. +2024-10-21T20:00:19.126763+0200 gnunet-config-565935 ERROR Configuration fails to specify option `TALER_AUDITOR_SALT' in section `AUDITOR'! +2024-10-21T20:00:22.488004+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Taler system UP +2024-10-21T20:00:22.488026+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `get-exchange' +2024-10-21T20:00:22.488034+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Storing command get-exchange under variable `exchange' +2024-10-21T20:00:22.488070+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Requesting keys with URL `http://localhost:8081/keys'. +* Host localhost:8081 was resolved. +* IPv6: ::1 +* IPv4: 127.0.0.1 +* Trying [::1]:8081... +* Connected to localhost (::1) port 8081 +* using HTTP/1.x +> GET /keys HTTP/1.1
+Host: localhost:8081
+Accept: */*
+Accept-Encoding: deflate, gzip, br, zstd
+Content-Type: application/json
+
+* Request completely sent off +< HTTP/1.1 200 OK
+< Date: Mon, 21 Oct 2024 18:00:22 GMT
+< Connection: close
+< Content-Encoding: deflate
+< Access-Control-Allow-Origin: *
+< Access-Control-Expose-Headers: *
+< Content-Type: application/json
+< Cache-Control: public,must-revalidate,max-age=86400
+< Expires: Tue, 29 Oct 2024 00:00:00 GMT
+2024-10-21T20:00:22.493301+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Found Expires header `Tue, 29 Oct 2024 00:00:00 GMT
+' +< Vary: Accept-Encoding
+< ETag: FE6EN0YPAK528SF1S4F8XVPWT2DXBXKMGBA8WVSQ5VCJR0HYT5T0FJQG30HQVD8ECRNC4SNG4VEHAY1QAEY22PYGMWT1NDXHZF4MSH8
+< Content-Length: 52126
+<
+* shutting down connection #0 +2024-10-21T20:00:22.495257+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Received keys from URL `http://localhost:8081/keys' with status 200 and expiration Tue Oct 29 00:00:00 2024. +2024-10-21T20:00:22.495727+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Parsed 1 wire accounts from JSON +2024-10-21T20:00:22.508115+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8081/keys' finished with 200 after 5 ms +2024-10-21T20:00:22.508156+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `orders-id' +2024-10-21T20:00:22.508160+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running batched command: instance-create-default +2024-10-21T20:00:22.510599+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO POST /management/instances completed with response code 204 +2024-10-21T20:00:22.510628+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances' finished with 204 after 2330 µs +2024-10-21T20:00:22.510640+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `orders-id' +2024-10-21T20:00:22.510644+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running batched command: instance-create-default-account +2024-10-21T20:00:22.511897+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO POST /accounts completed with response code 200 +2024-10-21T20:00:22.511917+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/accounts' finished with 200 after 1220 µs +2024-10-21T20:00:22.511926+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `orders-id' +2024-10-21T20:00:22.511929+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running batched command: instance-create-kyc-0 +2024-10-21T20:00:22.512469+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/kyc?exchange_url=http%3A%2F%2Flocalhost%3A8081%2F' finished with 204 after 520 µs +2024-10-21T20:00:22.512486+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `orders-id' +2024-10-21T20:00:22.512490+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running batched command: create-proposal-bad-currency +{ + "code": 30, + "hint": "The currency involved in the operation is not acceptable for this server. Check your configuration and make sure the currency specified for a given service provider is one of the currencies supported by that provider.", + "detail": "no trusted exchange for this currency" +}2024-10-21T20:00:22.513943+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 ERROR Unexpected status code from /orders: 400 (30) at orders-id; JSON: {"code":30,"hint":"The currency involved in the operation is not acceptable for this server. Check your configuration and make sure the currency specified for a given service provider is one of the currencies supported by that provider.","detail":"no trusted exchange for this currency"} +2024-10-21T20:00:22.513954+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/orders' finished with 400 after 1350 µs +2024-10-21T20:00:22.513962+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `orders-id' +2024-10-21T20:00:22.513965+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running batched command: create-proposal-4 +2024-10-21T20:00:22.516322+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/orders' finished with 200 after 2300 µs +2024-10-21T20:00:22.516335+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `orders-id' +2024-10-21T20:00:22.516338+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running batched command: get-order-4 +2024-10-21T20:00:22.516357+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Getting order status from http://localhost:8080/private/orders/4 +2024-10-21T20:00:22.516841+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO GET /private/orders/$ID completed with status 200 +2024-10-21T20:00:22.516862+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/orders/4' finished with 200 after 469 µs +2024-10-21T20:00:22.516869+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `orders-id' +2024-10-21T20:00:22.516871+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running batched command: delete-order-4 +2024-10-21T20:00:22.517569+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/orders/4' finished with 204 after 688 µs +2024-10-21T20:00:22.517582+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `orders-id' +2024-10-21T20:00:22.517588+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running batched command: purge-default +2024-10-21T20:00:22.519794+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances/default?purge=yes' finished with 204 after 2195 µs +2024-10-21T20:00:22.519807+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `orders-id' +2024-10-21T20:00:22.519809+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Exiting from batch: orders-id +2024-10-21T20:00:22.519813+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `config' +2024-10-21T20:00:22.519933+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/config' finished with 200 after 87 µs +2024-10-21T20:00:22.519952+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instances-empty' +2024-10-21T20:00:22.520075+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances' finished with 200 after 111 µs +2024-10-21T20:00:22.520086+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instance-create-default-setup' +2024-10-21T20:00:22.521140+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO POST /management/instances completed with response code 204 +2024-10-21T20:00:22.521150+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances' finished with 204 after 1026 µs +2024-10-21T20:00:22.521156+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instance-create-default-account' +2024-10-21T20:00:22.522157+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO POST /accounts completed with response code 200 +2024-10-21T20:00:22.522172+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/accounts' finished with 200 after 983 µs +2024-10-21T20:00:22.522178+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instance-create-i1' +2024-10-21T20:00:22.523150+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO POST /management/instances completed with response code 204 +2024-10-21T20:00:22.523158+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances' finished with 204 after 950 µs +2024-10-21T20:00:22.523164+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instances-get-i1' +2024-10-21T20:00:22.523286+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances' finished with 200 after 102 µs +2024-10-21T20:00:22.523293+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instances-get-i1' +2024-10-21T20:00:22.523398+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/instances/i1/private' finished with 200 after 87 µs +2024-10-21T20:00:22.523404+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instance-patch-i1' +2024-10-21T20:00:22.524394+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO PATCH /instances/$ID completed with response code 204 +2024-10-21T20:00:22.524403+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances/i1' finished with 204 after 970 µs +2024-10-21T20:00:22.524411+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instances-get-i1-2' +2024-10-21T20:00:22.524533+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/instances/i1/private' finished with 200 after 103 µs +2024-10-21T20:00:22.524544+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instances-get-i2-nx' +2024-10-21T20:00:22.524654+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 WARNING Attempt to lookup command for empty label +2024-10-21T20:00:22.524663+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/instances/i2/private' finished with 404 after 102 µs +2024-10-21T20:00:22.524668+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instance-create-ACL' +2024-10-21T20:00:22.525728+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO POST /management/instances completed with response code 204 +2024-10-21T20:00:22.525739+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances' finished with 204 after 1036 µs +2024-10-21T20:00:22.525745+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instance-patch-ACL' +2024-10-21T20:00:22.526562+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO PATCH /instances/$ID completed with response code 204 +2024-10-21T20:00:22.526570+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances/i-acl' finished with 204 after 790 µs +2024-10-21T20:00:22.526575+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instance-create-i2' +2024-10-21T20:00:22.527479+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO POST /management/instances completed with response code 204 +2024-10-21T20:00:22.527486+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances' finished with 204 after 882 µs +2024-10-21T20:00:22.527492+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instance-create-i2-idem' +2024-10-21T20:00:22.527575+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO POST /management/instances completed with response code 204 +2024-10-21T20:00:22.527580+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances' finished with 204 after 66 µs +2024-10-21T20:00:22.527584+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instance-delete-i2' +2024-10-21T20:00:22.528512+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances/i2' finished with 204 after 919 µs +2024-10-21T20:00:22.528522+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instances-get-i2-post-deletion' +2024-10-21T20:00:22.528632+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 WARNING Attempt to lookup command for empty label +2024-10-21T20:00:22.528637+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/instances/i2/private' finished with 404 after 101 µs +2024-10-21T20:00:22.528641+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instance-delete-then-purge-i2' +2024-10-21T20:00:22.529619+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances/i2?purge=yes' finished with 204 after 969 µs +2024-10-21T20:00:22.529631+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instance-purge-i1' +2024-10-21T20:00:22.530472+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances/i1?purge=yes' finished with 204 after 833 µs +2024-10-21T20:00:22.530482+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instance-purge-then-delete-i1' +2024-10-21T20:00:22.530565+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances/i1' finished with 404 after 74 µs +2024-10-21T20:00:22.530571+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instance-purge-i-acl-middle' +2024-10-21T20:00:22.531370+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances/i-acl?purge=yes' finished with 204 after 792 µs +2024-10-21T20:00:22.531383+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instance-purge-default-middle' +2024-10-21T20:00:22.532348+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances/default?purge=yes' finished with 204 after 957 µs +2024-10-21T20:00:22.532358+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instance-create-default-after-purge' +2024-10-21T20:00:22.533455+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO POST /management/instances completed with response code 204 +2024-10-21T20:00:22.533465+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/management/instances' finished with 204 after 1070 µs +2024-10-21T20:00:22.533471+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `instance-create-default-account-after-purge' +2024-10-21T20:00:22.534378+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO POST /accounts completed with response code 200 +2024-10-21T20:00:22.534390+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/accounts' finished with 200 after 888 µs +2024-10-21T20:00:22.534396+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `get-products-empty' +2024-10-21T20:00:22.534824+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/products' finished with 200 after 413 µs +2024-10-21T20:00:22.534835+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `post-products-p1' +2024-10-21T20:00:22.536318+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO POST /products completed with response code 204 +2024-10-21T20:00:22.536330+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/products' finished with 204 after 1450 µs +2024-10-21T20:00:22.536338+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `post-products-p1-idem' +2024-10-21T20:00:22.537230+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO POST /products completed with response code 204 +2024-10-21T20:00:22.537242+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/products' finished with 204 after 864 µs +2024-10-21T20:00:22.537248+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `post-products-p1-non-idem' +2024-10-21T20:00:22.537553+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO POST /products completed with response code 409 +2024-10-21T20:00:22.537561+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/products' finished with 409 after 280 µs +2024-10-21T20:00:22.537566+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `get-products-p1' +2024-10-21T20:00:22.537804+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/products' finished with 200 after 219 µs +2024-10-21T20:00:22.537815+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `get-product-p1' +2024-10-21T20:00:22.538180+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/products/product-1' finished with 200 after 338 µs +2024-10-21T20:00:22.538190+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `post-products-p2' +2024-10-21T20:00:22.538618+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO POST /products completed with response code 204 +2024-10-21T20:00:22.538626+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/products' finished with 204 after 407 µs +2024-10-21T20:00:22.538632+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `patch-products-p2' +2024-10-21T20:00:22.539382+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO PATCH /products/$ID completed with response code 204 +2024-10-21T20:00:22.539395+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/products/product-2' finished with 204 after 719 µs +2024-10-21T20:00:22.539401+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `get-product-p2' +2024-10-21T20:00:22.539670+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/products/product-2' finished with 200 after 252 µs +2024-10-21T20:00:22.539682+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `get-product-nx' +2024-10-21T20:00:22.539899+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/products/product-nx' finished with 404 after 207 µs +2024-10-21T20:00:22.539908+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `patch-products-p3-nx' +2024-10-21T20:00:22.540173+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO PATCH /products/$ID completed with response code 404 +2024-10-21T20:00:22.540181+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/products/product-3' finished with 404 after 238 µs +2024-10-21T20:00:22.540186+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `get-products-empty' +2024-10-21T20:00:22.540563+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/products/p1' finished with 404 after 365 µs +2024-10-21T20:00:22.540574+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `get-products-empty' +2024-10-21T20:00:22.541079+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/products/product-1' finished with 204 after 498 µs +2024-10-21T20:00:22.541092+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `lock-product-p2' +2024-10-21T20:00:22.542119+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO LOCK /products/$ID completed with response code 204 +2024-10-21T20:00:22.542129+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/products/product-2/lock' finished with 204 after 1004 µs +2024-10-21T20:00:22.542136+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `lock-product-nx' +2024-10-21T20:00:22.542707+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO LOCK /products/$ID completed with response code 404 +2024-10-21T20:00:22.542716+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/products/product-nx/lock' finished with 404 after 550 µs +2024-10-21T20:00:22.542721+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `lock-product-too-much' +2024-10-21T20:00:22.543273+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO LOCK /products/$ID completed with response code 410 +2024-10-21T20:00:22.543281+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/products/product-2/lock' finished with 410 after 534 µs +2024-10-21T20:00:22.543287+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `delete-product-locked' +2024-10-21T20:00:22.543633+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/products/product-2' finished with 409 after 337 µs +2024-10-21T20:00:22.543642+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `pay' +2024-10-21T20:00:22.543645+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running batched command: create-reserve-1 +2024-10-21T20:00:22.543699+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Requesting administrative transaction at `http://localhost:8082/accounts/2/taler-wire-gateway/admin/add-incoming' for reserve KWFDX1KF +2024-10-21T20:00:22.543835+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Fakebank TWG, serving URL `/admin/add-incoming' for account `2' +2024-10-21T20:00:22.543850+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Fakebank TWG, serving URL `/admin/add-incoming' for account `2' +2024-10-21T20:00:22.543853+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Fakebank TWG, serving URL `/admin/add-incoming' for account `2' +2024-10-21T20:00:22.543878+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Receiving incoming wire transfer: 62->2, subject: KWFDX1KF, amount: EUR:10.02 +2024-10-21T20:00:22.543893+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Making transfer from 62 to 2 over EUR:10.02 and subject KWFDX1KF at row 1 +2024-10-21T20:00:22.543950+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8082/accounts/2/taler-wire-gateway/admin/add-incoming' finished with 200 after 215 µs +2024-10-21T20:00:22.543967+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `pay' +2024-10-21T20:00:22.543974+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running batched command: wirewatch-1 +2024-10-21T20:00:22.544325+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Trying to start child management. +2024-10-21T20:00:22.555951+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Fakebank TWG, serving URL `/history/incoming' for account `2' +2024-10-21T20:00:22.555983+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Handling /history/incoming connection 0xffff90009d90 +2024-10-21T20:00:22.555991+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Request for 1 records from 0 +2024-10-21T20:00:22.555998+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Returning 1 credit transactions starting (inclusive) from 1 +2024-10-21T20:00:22.559430+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Fakebank TWG, serving URL `/history/incoming' for account `2' +2024-10-21T20:00:22.559454+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Handling /history/incoming connection 0xffff90009ff0 +2024-10-21T20:00:22.559459+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Request for 1 records from 1 +2024-10-21T20:00:22.560412+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Got SIGCHLD for `wirewatch-1'. +2024-10-21T20:00:22.560442+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `pay' +2024-10-21T20:00:22.560446+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running batched command: check_bank_transfer-2 +2024-10-21T20:00:22.560462+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO converted debit_payto (payto://x-taler-bank/localhost/62?receiver-name=62) to debit_account (62) +2024-10-21T20:00:22.560468+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `pay' +2024-10-21T20:00:22.560471+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running batched command: withdraw-coin-1 +2024-10-21T20:00:22.560738+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Attempting to batch-withdraw from reserve KWFDX1KF +2024-10-21T20:00:22.564818+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8081/reserves/XRT12WE4V0Q0JCQ344KZ5HFCVJ6KR9JM5125PJT05VJZ0YT9KBMG/batch-withdraw' finished with 200 after 3557 µs +2024-10-21T20:00:22.564842+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `pay' +2024-10-21T20:00:22.564845+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running batched command: withdraw-coin-2 +2024-10-21T20:00:22.565074+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Attempting to batch-withdraw from reserve KWFDX1KF +2024-10-21T20:00:22.567568+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8081/reserves/XRT12WE4V0Q0JCQ344KZ5HFCVJ6KR9JM5125PJT05VJZ0YT9KBMG/batch-withdraw' finished with 200 after 2007 µs +2024-10-21T20:00:22.567587+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running command `pay' +2024-10-21T20:00:22.567591+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Running batched command: get-orders-empty +2024-10-21T20:00:22.567774+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 ERROR Unexpected response code 400/26 +2024-10-21T20:00:22.567783+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 ERROR Unexpected response code 400 (26) to command pay +2024-10-21T20:00:22.567790+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 ERROR Failed at command `pay' +2024-10-21T20:00:22.567793+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 ERROR Batch is at command `get-orders-empty' +2024-10-21T20:00:22.567798+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO HTTP request for `http://localhost:8080/private/orders?date_s=Wed%20Jan%2019%2009%3A01%3A49%20586524' finished with 400 after 151 µs +2024-10-21T20:00:22.567804+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Executing shutdown at `pay' +2024-10-21T20:00:22.568644+0200 /home/antoine.linux/merchant/src/testing/.libs/test_merchant_api_rsa-565725 INFO Child management stopped. +Taler unified setup terminating at ready! +FAIL test_merchant_api_rsa (exit status: 1) + +FAIL: test_kyc_api +================== + +2024-10-21T20:00:22.611684+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running command `run-fakebank' +2024-10-21T20:00:22.611718+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Storing command run-fakebank under variable `fakebank' +Warning: value "1", specified as the thread pool size, is ignored. Thread pool is not used. +2024-10-21T20:00:22.611844+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running command `start-taler' +2024-10-21T20:00:22.612051+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Trying to start child management. +2024-10-21T20:00:22.612069+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Child management started. +2024-10-21T20:00:23.680380+0200 gnunet-config-566238 ERROR Configuration fails to specify option `TALER_AUDITOR_SALT' in section `AUDITOR'! +2024-10-21T20:00:26.999877+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Taler system UP +2024-10-21T20:00:26.999902+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running command `get-exchange' +2024-10-21T20:00:26.999910+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Storing command get-exchange under variable `exchange' +2024-10-21T20:00:26.999947+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Requesting keys with URL `http://localhost:8081/keys'. +* Host localhost:8081 was resolved. +* IPv6: ::1 +* IPv4: 127.0.0.1 +* Trying [::1]:8081... +* Connected to localhost (::1) port 8081 +* using HTTP/1.x +> GET /keys HTTP/1.1
+Host: localhost:8081
+Accept: */*
+Accept-Encoding: deflate, gzip, br, zstd
+Content-Type: application/json
+
+* Request completely sent off +< HTTP/1.1 200 OK
+< Date: Mon, 21 Oct 2024 18:00:27 GMT
+< Connection: close
+< Content-Encoding: deflate
+< Access-Control-Allow-Origin: *
+< Access-Control-Expose-Headers: *
+< Content-Type: application/json
+< Cache-Control: public,must-revalidate,max-age=86400
+< Expires: Tue, 29 Oct 2024 00:00:00 GMT
+2024-10-21T20:00:27.005279+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Found Expires header `Tue, 29 Oct 2024 00:00:00 GMT
+' +< Vary: Accept-Encoding
+< ETag: 26V7M2NJ6Y3SCSWQEX4SG878WEECKH4Z2V0N0FGZDX18ZJJDHDHD32ZV3Q4GCKVA7MBH5026YA17X37J4YNERP4C1FC6NFQ4V2E4SQG
+< Content-Length: 52153
+<
+* shutting down connection #0 +2024-10-21T20:00:27.007239+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Received keys from URL `http://localhost:8081/keys' with status 200 and expiration Tue Oct 29 00:00:00 2024. +2024-10-21T20:00:27.007716+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Parsed 1 wire accounts from JSON +2024-10-21T20:00:27.020429+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO HTTP request for `http://localhost:8081/keys' finished with 200 after 5 ms +2024-10-21T20:00:27.020480+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running command `start-oauth-service' +2024-10-21T20:00:27.020583+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running command `instance-create-default-setup' +2024-10-21T20:00:27.022887+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO POST /management/instances completed with response code 204 +2024-10-21T20:00:27.022912+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO HTTP request for `http://localhost:8080/management/instances' finished with 204 after 2185 µs +2024-10-21T20:00:27.022923+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running command `instance-create-default-account' +2024-10-21T20:00:27.023998+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO POST /accounts completed with response code 200 +2024-10-21T20:00:27.024017+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO HTTP request for `http://localhost:8080/private/accounts' finished with 200 after 1046 µs +2024-10-21T20:00:27.024027+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running command `pay' +2024-10-21T20:00:27.024029+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running batched command: create-reserve-1 +2024-10-21T20:00:27.024073+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Requesting administrative transaction at `http://localhost:8082/accounts/2/taler-wire-gateway/admin/add-incoming' for reserve 45VW11RE +2024-10-21T20:00:27.024185+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Fakebank TWG, serving URL `/admin/add-incoming' for account `2' +2024-10-21T20:00:27.024202+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Fakebank TWG, serving URL `/admin/add-incoming' for account `2' +2024-10-21T20:00:27.024206+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Fakebank TWG, serving URL `/admin/add-incoming' for account `2' +2024-10-21T20:00:27.024229+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Receiving incoming wire transfer: 62->2, subject: 45VW11RE, amount: EUR:10.02 +2024-10-21T20:00:27.024244+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Making transfer from 62 to 2 over EUR:10.02 and subject 45VW11RE at row 1 +2024-10-21T20:00:27.024325+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO HTTP request for `http://localhost:8082/accounts/2/taler-wire-gateway/admin/add-incoming' finished with 200 after 210 µs +2024-10-21T20:00:27.024350+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running command `pay' +2024-10-21T20:00:27.024354+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running batched command: wirewatch-1 +2024-10-21T20:00:27.024659+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Trying to start child management. +2024-10-21T20:00:27.036986+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Fakebank TWG, serving URL `/history/incoming' for account `2' +2024-10-21T20:00:27.037047+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Handling /history/incoming connection 0xffff80009d90 +2024-10-21T20:00:27.037059+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Request for 1 records from 0 +2024-10-21T20:00:27.037067+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Returning 1 credit transactions starting (inclusive) from 1 +2024-10-21T20:00:27.040819+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Fakebank TWG, serving URL `/history/incoming' for account `2' +2024-10-21T20:00:27.040837+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Handling /history/incoming connection 0xffff80009ff0 +2024-10-21T20:00:27.040842+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Request for 1 records from 1 +2024-10-21T20:00:27.041779+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Got SIGCHLD for `wirewatch-1'. +2024-10-21T20:00:27.041805+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running command `pay' +2024-10-21T20:00:27.041808+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running batched command: check_bank_transfer-2 +2024-10-21T20:00:27.041825+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO converted debit_payto (payto://x-taler-bank/localhost/62?receiver-name=62) to debit_account (62) +2024-10-21T20:00:27.041831+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running command `pay' +2024-10-21T20:00:27.041833+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running batched command: withdraw-coin-1 +2024-10-21T20:00:27.042122+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Attempting to batch-withdraw from reserve 45VW11RE +2024-10-21T20:00:27.117612+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO HTTP request for `http://localhost:8081/reserves/RVR1NBVWFK16WRXTX3A8V8AMGQH0PJ4QE7WQ8KNXX638276RV56G/batch-withdraw' finished with 200 after 74 ms +2024-10-21T20:00:27.117640+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running command `pay' +2024-10-21T20:00:27.117644+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running batched command: withdraw-coin-2 +2024-10-21T20:00:27.117867+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Attempting to batch-withdraw from reserve 45VW11RE +2024-10-21T20:00:27.192417+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO HTTP request for `http://localhost:8081/reserves/RVR1NBVWFK16WRXTX3A8V8AMGQH0PJ4QE7WQ8KNXX638276RV56G/batch-withdraw' finished with 200 after 74 ms +2024-10-21T20:00:27.192444+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running command `pay' +2024-10-21T20:00:27.192448+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Running batched command: get-orders-empty +2024-10-21T20:00:27.192691+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 ERROR Unexpected response code 400/26 +2024-10-21T20:00:27.192705+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 ERROR Unexpected response code 400 (26) to command pay +2024-10-21T20:00:27.192709+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 ERROR Failed at command `pay' +2024-10-21T20:00:27.192712+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 ERROR Batch is at command `get-orders-empty' +2024-10-21T20:00:27.192717+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO HTTP request for `http://localhost:8080/private/orders?date_s=Wed%20Jan%2019%2009%3A01%3A49%20586524' finished with 400 after 201 µs +2024-10-21T20:00:27.192723+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Executing shutdown at `pay' +2024-10-21T20:00:27.193536+0200 /home/antoine.linux/merchant/src/testing/.libs/test_kyc_api-566047 INFO Child management stopped. +Taler unified setup terminating at ready! +FAIL test_kyc_api (exit status: 1) + +FAIL: test_merchant_order_creation.sh +===================================== + +Checking for curl ... OK +Checking for jq ... OK +Testing for taler-harness FOUND +Starting test system ... +Starting with configuration file at: test_template.conf +Testing for jq FOUND +Testing for wget FOUND +Testing for Taler exchange FOUND +Testing for Taler merchant FOUND +Setting up for TESTKUDOS at http://localhost:8081/ +Setting up fakebank ... OK +Waiting for the bank. OK +Register Fakebank users ... DONE +Starting exchange ... DONE +Starting merchant ... DONE +Waiting for Taler services ...EMM OK +Wait for exchange /management/keys to be ready . OK +Setting up exchange keys ...OK +Configuring bank account exchange-account-2 ... OK +Checking /keys . OK +<<READY>> +Test system ready +First prepare wallet with coins ...... OK +2024-10-21T18:00:50.478Z host-impl.node.ts INFO using sqlite3 DB backend +2024-10-21T18:00:50.479Z host-impl.node.ts INFO using database /tmp/test_wallet.json-OGvtNV +2024-10-21T18:00:50.481Z host-impl.node.ts INFO using node thread crypto worker +2024-10-21T18:00:50.496Z shepherd.ts INFO Stopping task shepherd. +Configuring merchant instance ...Ok +Configuring merchant account ...Ok +Get accounts...OK +Deleting one account ...OK +Creating order without TOKEN...OK +Checking created order without TOKEN...OK +Creating order without TOKEN and fullfilment URL...OK +Creating token family ... OK +Creating v1 order with token family ... OK +Claming order with token family ... OK +Creating order with non-inventory products...OK +Creating product...OK +Creating order with inventory products...OK +Creating order to be paid...OK +Pay first order taler+http://pay/localhost:9966/2024.295-00W69BK53CSDE/?c=FKZH01KZYZT5VTKCQWM0E2N8PG ... OK (took 1 secs ) +Waiting 18445014540055 secs for wire transfer +Perform wire transfers ...Killing taler-unified-setup (567594) +Taler unified setup terminating at ready! +Terminated +FAIL test_merchant_order_creation.sh (exit status: 2) + +FAIL: test_merchant_transfer_tracking.sh +======================================== + +Checking for curl ... OK +Checking for jq ... OK +Testing for taler-harness FOUND +Starting test system ... +Starting with configuration file at: test_template.conf +Testing for jq FOUND +Testing for wget FOUND +Testing for Taler exchange FOUND +Testing for Taler merchant FOUND +Setting up for TESTKUDOS at http://localhost:8081/ +Setting up fakebank ... OK +Waiting for the bank. OK +Register Fakebank users ... DONE +Starting exchange ... DONE +Starting merchant ... DONE +Waiting for Taler services ...EMM OK +Wait for exchange /management/keys to be ready . OK +Setting up exchange keys ...OK +Configuring bank account exchange-account-2 ... OK +Checking /keys . OK +<<READY>> +Test system ready +First prepare wallet with coins...... OK +Configuring merchant default instance ...OK +Configuring merchant test instance ...Creating order to be paid...OK +Pay first order ... OK (took 1 secs) +waiting 18445014540049 secs for wire transfer +Perform wire transfers ...Killing taler-unified-setup (568200) +Taler unified setup terminating at ready! +Terminated +FAIL test_merchant_transfer_tracking.sh (exit status: 2) + +FAIL: test_merchant_wirewatch.sh +================================ + +Testing for taler-harness FOUND +Checking for curl ... OK +Checking for jq ... OK +Starting test system ... +Starting with configuration file at: test_template.conf +Testing for jq FOUND +Testing for wget FOUND +Testing for Taler exchange FOUND +Testing for Taler merchant FOUND +Setting up for TESTKUDOS at http://localhost:8081/ +Setting up fakebank ... OK +Waiting for the bank. OK +Register Fakebank users ... DONE +Starting exchange ... DONE +Starting merchant ... DONE +Waiting for Taler services ...EMM OK +Wait for exchange /management/keys to be ready . OK +Setting up exchange keys ...OK +Configuring bank account exchange-account-2 ... OK +Checking /keys . OK +<<READY>> +Test system ready +First prepare wallet with coins...... OK +Configuring merchant default instance ...OK +Configuring bank account...OK +Creating order to be paid...OK +Pay first order ...OK. Took 0s. +Perform wire transfers (with 18445014540027s timeshift) ...Killing taler-unified-setup (569587) +Taler unified setup terminating at ready! +Terminated +FAIL test_merchant_wirewatch.sh (exit status: 2) + +FAIL: test-merchant-walletharness.sh +==================================== + +Checking for curl ... OK +Checking for jq ... OK +Testing for libeufin-bank FOUND +Testing for taler-harness FOUND +2024-10-21T18:01:26.640Z testrunner.ts INFO purging shared test environment +testsuite root directory: /tmp/taler-integrationtests-jtWkXo +running claim-loop with timeout 60000ms +2024-10-21T18:01:26.807Z testrunner.ts INFO running test claim-loop +2024-10-21T18:01:26.808Z harness.ts INFO running test in directory [ + "/tmp/taler-integrationtests-jtWkXo/claim-loop" +] +2024-10-21T18:01:26.808Z harness.ts INFO running command dropdb taler-integrationtest +2024-10-21T18:01:26.854Z harness.ts INFO running command createdb taler-integrationtest +2024-10-21T18:01:26.942Z harness.ts INFO starting fakebank +2024-10-21T18:01:26.942Z harness.ts INFO spawning process (bank): taler-fakebank-run -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/bank.conf' --signup-bonus TESTKUDOS:100 +2024-10-21T18:01:27.500Z harness.ts INFO child process exchange-dbinit exited (0 / null) +2024-10-21T18:01:27.500Z harness.ts INFO spawning process (exchange-crypto-eddsa-testexchange-1): taler-exchange-secmod-eddsa -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:27.503Z harness.ts INFO spawning process (exchange-crypto-cs-testexchange-1): taler-exchange-secmod-cs -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:27.504Z harness.ts INFO spawning process (exchange-crypto-rsa-testexchange-1): taler-exchange-secmod-rsa -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:27.506Z harness.ts INFO spawning process (exchange-wirewatch-testexchange-1): taler-exchange-wirewatch -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/exchange-testexchange-1.conf' --longpoll-timeout=5s +2024-10-21T18:01:27.507Z harness.ts INFO spawning process (exchange-transfer-testexchange-1): taler-exchange-transfer -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/exchange-testexchange-1.conf' +2024-10-21T18:01:27.509Z harness.ts INFO spawning process (exchange-aggregator-testexchange-1): taler-exchange-aggregator -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/exchange-testexchange-1.conf' +2024-10-21T18:01:27.511Z harness.ts INFO spawning process (exchange-httpd-testexchange-1): taler-exchange-httpd -LINFO -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/exchange-testexchange-1.conf' +2024-10-21T18:01:27.516Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533687516},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:27.516Z harness.ts INFO waiting 10ms on exchange (testexchange-1) +2024-10-21T18:01:27.574Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533687574},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:27.575Z harness.ts INFO waiting 15ms on exchange (testexchange-1) +2024-10-21T18:01:27.592Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533687592},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:27.592Z harness.ts INFO waiting 22ms on exchange (testexchange-1) +2024-10-21T18:01:27.619Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533687619},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:27.619Z harness.ts INFO waiting 33ms on exchange (testexchange-1) +2024-10-21T18:01:27.655Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533687655},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:27.655Z harness.ts INFO waiting 49ms on exchange (testexchange-1) +2024-10-21T18:01:27.722Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/exchange-testexchange-1.conf' download sign upload +2024-10-21T18:01:27.739Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/exchange-testexchange-1.conf' enable-account 'payto://x-taler-bank/localhost/exchange?receiver-name=exchange' upload +2024-10-21T18:01:27.749Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/exchange-testexchange-1.conf' wire-fee 2024 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:27.760Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/exchange-testexchange-1.conf' wire-fee 2025 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:27.769Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/exchange-testexchange-1.conf' wire-fee 2026 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:27.778Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/exchange-testexchange-1.conf' wire-fee 2027 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:27.788Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/exchange-testexchange-1.conf' wire-fee 2028 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:27.797Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/exchange-testexchange-1.conf' global-fee now 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.00' 1h 1year 5 upload +2024-10-21T18:01:27.807Z harness.ts INFO running command taler-merchant-dbinit -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/merchant-testmerchant-1.conf' +2024-10-21T18:01:28.245Z harness.ts INFO spawning process (merchant-httpd-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/merchant-testmerchant-1.conf' +2024-10-21T18:01:28.247Z harness.ts INFO spawning process (merchant-exchangekeyupdate-testmerchant-1): taler-merchant-exchangekeyupdate taler-merchant-exchangekeyupdate -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/merchant-testmerchant-1.conf' +2024-10-21T18:01:28.248Z harness.ts INFO spawning process (merchant-kyccheck-testmerchant-1): taler-merchant-kyccheck taler-merchant-kyccheck -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/claim-loop/merchant-testmerchant-1.conf' +2024-10-21T18:01:28.250Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533688250},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:28.250Z harness.ts INFO waiting 10ms on merchant (testmerchant-1) +2024-10-21T18:01:28.261Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533688261},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:28.261Z harness.ts INFO waiting 15ms on merchant (testmerchant-1) +2024-10-21T18:01:28.279Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533688279},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:28.279Z harness.ts INFO waiting 22ms on merchant (testmerchant-1) +2024-10-21T18:01:28.303Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533688303},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:28.303Z harness.ts INFO waiting 33ms on merchant (testmerchant-1) +2024-10-21T18:01:28.337Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533688337},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:28.337Z harness.ts INFO waiting 49ms on merchant (testmerchant-1) +2024-10-21T18:01:28.388Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533688388},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:28.388Z harness.ts INFO waiting 73ms on merchant (testmerchant-1) +2024-10-21T18:01:28.463Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533688463},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:28.463Z harness.ts INFO waiting 109ms on merchant (testmerchant-1) +2024-10-21T18:01:28.583Z harness.ts INFO adding instance 'default' +2024-10-21T18:01:28.595Z harness.ts INFO adding instance 'minst1' +2024-10-21T18:01:28.600Z harness.ts INFO spawning process (wallet-wallet): taler-wallet-cli --wallet-db '/tmp/taler-integrationtests-jtWkXo/claim-loop/walletdb-wallet.sqlite3' -LTRACE --no-throttle advanced serve --unix-path '/tmp/taler-integrationtests-jtWkXo/claim-loop/wallet.sock' --no-init +2024-10-21T18:01:28.602Z harness.ts INFO hint: connect to wallet using taler-wallet-cli --wallet-connection=/tmp/taler-integrationtests-jtWkXo/claim-loop/wallet.sock +2024-10-21T18:01:28.603Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/claim-loop/wallet.sock +2024-10-21T18:01:28.603Z harness.ts INFO waiting on wallet for 10ms +2024-10-21T18:01:28.613Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/claim-loop/wallet.sock +2024-10-21T18:01:28.613Z harness.ts INFO waiting on wallet for 15ms +2024-10-21T18:01:28.630Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/claim-loop/wallet.sock +2024-10-21T18:01:28.630Z harness.ts INFO waiting on wallet for 22ms +2024-10-21T18:01:28.653Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/claim-loop/wallet.sock +2024-10-21T18:01:28.653Z harness.ts INFO waiting on wallet for 33ms +2024-10-21T18:01:28.687Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/claim-loop/wallet.sock +2024-10-21T18:01:28.687Z harness.ts INFO waiting on wallet for 49ms +2024-10-21T18:01:28.737Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/claim-loop/wallet.sock +2024-10-21T18:01:28.737Z harness.ts INFO waiting on wallet for 73ms +2024-10-21T18:01:28.811Z harness.ts INFO connection to wallet-core succeeded +2024-10-21T18:01:28.811Z twrpc-impl.node.ts INFO connected! +setup done! +user-q0fh9yk7sp4zbsha pw-8whddfy6t0prfh5m +2024-10-21T18:01:29.091Z bank-api-client.ts INFO confirming withdrawal operation via http://localhost:8082/accounts/user-q0fh9yk7sp4zbsha/withdrawals/0C42ARF8PTH6S9T2Y7YJSYTGQR1RW1SFZCR7C68CBZ1XNXKSNJR0/confirm +2024-10-21T18:01:29.251Z remote.ts INFO wallet: remote wallet disconnected +2024-10-21T18:01:29.252Z harness.ts WARN process wallet-wallet exited { + "code": 143, + "signal": null +} +2024-10-21T18:01:29.252Z harness.ts INFO completed test in directory [ + "/tmp/taler-integrationtests-jtWkXo/claim-loop" +] +2024-10-21T18:01:29.252Z testrunner.ts INFO done test claim-loop: pass +2024-10-21T18:01:29.258Z testrunner.ts INFO process exited code=0 signal=null +parent: got result {"name":"claim-loop","timeSec":2.444,"status":"pass"} +running merchant-exchange-confusion with timeout 60000ms +2024-10-21T18:01:29.453Z testrunner.ts INFO running test merchant-exchange-confusion +2024-10-21T18:01:29.454Z harness.ts INFO running test in directory [ + "/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion" +] +2024-10-21T18:01:29.455Z harness.ts INFO running command dropdb taler-integrationtest +2024-10-21T18:01:29.496Z harness.ts INFO running command createdb taler-integrationtest +2024-10-21T18:01:29.561Z harness.ts INFO starting fakebank +2024-10-21T18:01:29.562Z harness.ts INFO spawning process (bank): taler-fakebank-run -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/bank.conf' --signup-bonus TESTKUDOS:100 +2024-10-21T18:01:30.036Z harness.ts INFO child process exchange-dbinit exited (0 / null) +2024-10-21T18:01:30.037Z harness.ts INFO spawning process (exchange-crypto-eddsa-testexchange-1): taler-exchange-secmod-eddsa -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:30.038Z harness.ts INFO spawning process (exchange-crypto-cs-testexchange-1): taler-exchange-secmod-cs -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:30.039Z harness.ts INFO spawning process (exchange-crypto-rsa-testexchange-1): taler-exchange-secmod-rsa -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:30.041Z harness.ts INFO spawning process (exchange-wirewatch-testexchange-1): taler-exchange-wirewatch -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/exchange-testexchange-1.conf' --longpoll-timeout=5s +2024-10-21T18:01:30.043Z harness.ts INFO spawning process (exchange-transfer-testexchange-1): taler-exchange-transfer -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/exchange-testexchange-1.conf' +2024-10-21T18:01:30.045Z harness.ts INFO spawning process (exchange-aggregator-testexchange-1): taler-exchange-aggregator -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/exchange-testexchange-1.conf' +2024-10-21T18:01:30.046Z harness.ts INFO spawning process (exchange-httpd-testexchange-1): taler-exchange-httpd -LINFO -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/exchange-testexchange-1.conf' +2024-10-21T18:01:30.051Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533690051},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:30.051Z harness.ts INFO waiting 10ms on exchange (testexchange-1) +2024-10-21T18:01:30.111Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533690111},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:30.111Z harness.ts INFO waiting 15ms on exchange (testexchange-1) +2024-10-21T18:01:30.132Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533690132},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:30.133Z harness.ts INFO waiting 22ms on exchange (testexchange-1) +2024-10-21T18:01:30.157Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533690157},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:30.157Z harness.ts INFO waiting 33ms on exchange (testexchange-1) +2024-10-21T18:01:30.191Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533690191},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:30.191Z harness.ts INFO waiting 49ms on exchange (testexchange-1) +2024-10-21T18:01:30.243Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533690243},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:30.243Z harness.ts INFO waiting 73ms on exchange (testexchange-1) +2024-10-21T18:01:30.335Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/exchange-testexchange-1.conf' download sign upload +request for URL { + href: 'http://localhost:9081/management/keys', + origin: 'http://localhost:9081', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9081', + hostname: 'localhost', + port: '9081', + pathname: '/management/keys', + search: '', + searchParams: URLSearchParams {}, + hash: '' +} +end of data +full request body undefined +proxying request to target path '/management/keys' +gotten response from target 200 +end of target response +writing response head +request for URL { + href: 'http://localhost:9081/management/keys', + origin: 'http://localhost:9081', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9081', + hostname: 'localhost', + port: '9081', + pathname: '/management/keys', + search: '', + searchParams: URLSearchParams {}, + hash: '' +} +end of data +full request body <Buffer 78 9c 6d 95 4b 8b 20 b7 15 85 ff 4b af 67 a1 77 49 de a9 f4 2a 24 24 54 92 d0 cb 18 e3 c4 8d 6d 82 27 21 93 40 82 f1 7f 4f 35 31 18 7a 7a 53 a0 da 1c ... 1140 more bytes> +proxying request to target path '/management/keys' +gotten response from target 204 +end of target response +writing response head +2024-10-21T18:01:30.359Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/exchange-testexchange-1.conf' enable-account 'payto://x-taler-bank/localhost/exchange?receiver-name=exchange' upload +request for URL { + href: 'http://localhost:9081/management/wire', + origin: 'http://localhost:9081', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9081', + hostname: 'localhost', + port: '9081', + pathname: '/management/wire', + search: '', + searchParams: URLSearchParams {}, + hash: '' +} +end of data +full request body <Buffer 78 9c 6d 90 6d 6b 83 30 00 84 ff 4b 3e b7 d4 c4 18 5f 60 0c 6b 7d 41 51 d2 2a 6a 1d 43 52 0d 6d 58 5b 4b cc ba 96 d2 ff 3e 61 ec c3 60 df 8e bb 83 e7 ... 286 more bytes> +proxying request to target path '/management/wire' +gotten response from target 204 +end of target response +writing response head +2024-10-21T18:01:30.372Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/exchange-testexchange-1.conf' wire-fee 2024 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +request for URL { + href: 'http://localhost:9081/management/wire-fee', + origin: 'http://localhost:9081', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9081', + hostname: 'localhost', + port: '9081', + pathname: '/management/wire-fee', + search: '', + searchParams: URLSearchParams {}, + hash: '' +} +end of data +full request body <Buffer 78 9c 6d cf 4f 6f 82 30 18 06 f0 ef d2 b3 2e 2d 94 f2 e7 86 85 42 34 63 60 59 19 bd 34 6c 76 4a a6 98 d0 26 5b 62 fc ee 6b f4 e2 c1 f3 ef c9 fb 3c ef ... 169 more bytes> +proxying request to target path '/management/wire-fee' +gotten response from target 204 +end of target response +writing response head +2024-10-21T18:01:30.386Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/exchange-testexchange-1.conf' wire-fee 2025 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +request for URL { + href: 'http://localhost:9081/management/wire-fee', + origin: 'http://localhost:9081', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9081', + hostname: 'localhost', + port: '9081', + pathname: '/management/wire-fee', + search: '', + searchParams: URLSearchParams {}, + hash: '' +} +end of data +full request body <Buffer 78 9c 6d cf 41 4f 83 30 18 06 e0 ff d2 b3 33 85 02 a5 dc 80 96 12 88 58 d6 4a 27 97 06 5d 9d c4 8d 25 d0 44 93 65 ff 5d 74 17 0f 9e 9f 37 df fb 7e 17 ... 169 more bytes> +proxying request to target path '/management/wire-fee' +gotten response from target 204 +end of target response +writing response head +2024-10-21T18:01:30.398Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/exchange-testexchange-1.conf' wire-fee 2026 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +request for URL { + href: 'http://localhost:9081/management/wire-fee', + origin: 'http://localhost:9081', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9081', + hostname: 'localhost', + port: '9081', + pathname: '/management/wire-fee', + search: '', + searchParams: URLSearchParams {}, + hash: '' +} +end of data +full request body <Buffer 78 9c 6d cf c9 4e c3 30 14 05 d0 7f f1 9a 22 0f 89 e3 64 e7 d4 2d 56 ac 84 66 80 0c 1b 2b 50 53 22 da 54 8a 2d 81 54 f5 df b1 da 0d 0b d6 e7 ea dd fb ... 169 more bytes> +proxying request to target path '/management/wire-fee' +gotten response from target 204 +end of target response +writing response head +2024-10-21T18:01:30.409Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/exchange-testexchange-1.conf' wire-fee 2027 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +request for URL { + href: 'http://localhost:9081/management/wire-fee', + origin: 'http://localhost:9081', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9081', + hostname: 'localhost', + port: '9081', + pathname: '/management/wire-fee', + search: '', + searchParams: URLSearchParams {}, + hash: '' +} +end of data +full request body <Buffer 78 9c 6d cf 4f 4f 83 30 18 06 f0 ef d2 b3 33 fd b3 42 cb 0d 28 1b c9 02 32 a9 b4 70 69 d0 d5 49 dc 58 42 9b 68 b2 ec bb db b8 83 17 cf bf 27 ef f3 bc ... 169 more bytes> +proxying request to target path '/management/wire-fee' +gotten response from target 204 +end of target response +writing response head +2024-10-21T18:01:30.419Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/exchange-testexchange-1.conf' wire-fee 2028 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +request for URL { + href: 'http://localhost:9081/management/wire-fee', + origin: 'http://localhost:9081', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9081', + hostname: 'localhost', + port: '9081', + pathname: '/management/wire-fee', + search: '', + searchParams: URLSearchParams {}, + hash: '' +} +end of data +full request body <Buffer 78 9c 6d cf 41 4f 83 30 18 06 e0 ff d2 b3 33 2d 65 85 72 ab 6d 81 8c 50 45 70 2b 5c 1a 74 75 12 37 96 d0 26 9a 2c fb ef 36 f3 e2 c1 f3 f3 e6 7b df ef ... 169 more bytes> +proxying request to target path '/management/wire-fee' +gotten response from target 204 +end of target response +writing response head +2024-10-21T18:01:30.430Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/exchange-testexchange-1.conf' global-fee now 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.00' 1h 1year 5 upload +request for URL { + href: 'http://localhost:9081/management/global-fee', + origin: 'http://localhost:9081', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9081', + hostname: 'localhost', + port: '9081', + pathname: '/management/global-fee', + search: '', + searchParams: URLSearchParams {}, + hash: '' +} +end of data +full request body <Buffer 78 9c 75 8e d1 4e 83 30 00 45 ff a5 cf c6 b4 d0 42 e1 0d d3 16 02 41 37 41 84 bd 10 b2 75 da 44 60 a1 25 d1 2c fb 77 eb 88 4a 62 bc af e7 e4 de 7b 06 ... 196 more bytes> +proxying request to target path '/management/global-fee' +gotten response from target 204 +end of target response +writing response head +2024-10-21T18:01:30.445Z harness.ts INFO running command taler-merchant-dbinit -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/merchant-testmerchant-1.conf' +2024-10-21T18:01:30.875Z harness.ts INFO spawning process (merchant-httpd-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/merchant-testmerchant-1.conf' +2024-10-21T18:01:30.876Z harness.ts INFO spawning process (merchant-exchangekeyupdate-testmerchant-1): taler-merchant-exchangekeyupdate taler-merchant-exchangekeyupdate -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/merchant-testmerchant-1.conf' +2024-10-21T18:01:30.878Z harness.ts INFO spawning process (merchant-kyccheck-testmerchant-1): taler-merchant-kyccheck taler-merchant-kyccheck -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/merchant-testmerchant-1.conf' +2024-10-21T18:01:30.881Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533690881},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:30.881Z harness.ts INFO waiting 10ms on merchant (testmerchant-1) +2024-10-21T18:01:30.892Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533690892},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:30.892Z harness.ts INFO waiting 15ms on merchant (testmerchant-1) +2024-10-21T18:01:30.909Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533690909},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:30.909Z harness.ts INFO waiting 22ms on merchant (testmerchant-1) +2024-10-21T18:01:30.933Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533690933},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:30.933Z harness.ts INFO waiting 33ms on merchant (testmerchant-1) +2024-10-21T18:01:30.968Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533690968},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:30.968Z harness.ts INFO waiting 49ms on merchant (testmerchant-1) +2024-10-21T18:01:31.019Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533691019},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:31.019Z harness.ts INFO waiting 73ms on merchant (testmerchant-1) +2024-10-21T18:01:31.095Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533691095},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:31.095Z harness.ts INFO waiting 109ms on merchant (testmerchant-1) +2024-10-21T18:01:31.208Z harness.ts INFO adding instance 'default' +2024-10-21T18:01:31.219Z harness.ts INFO adding instance 'minst1' +setup done! +2024-10-21T18:01:31.225Z harness.ts INFO spawning process (wallet-default): taler-wallet-cli --wallet-db :memory: -LTRACE --no-throttle advanced serve --unix-path '/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/default.sock' --no-init +2024-10-21T18:01:31.227Z harness.ts INFO hint: connect to wallet using taler-wallet-cli --wallet-connection=/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/default.sock +2024-10-21T18:01:31.227Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/default.sock +2024-10-21T18:01:31.227Z harness.ts INFO waiting on wallet for 10ms +2024-10-21T18:01:31.238Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/default.sock +2024-10-21T18:01:31.238Z harness.ts INFO waiting on wallet for 15ms +2024-10-21T18:01:31.254Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/default.sock +2024-10-21T18:01:31.254Z harness.ts INFO waiting on wallet for 22ms +2024-10-21T18:01:31.277Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/default.sock +2024-10-21T18:01:31.277Z harness.ts INFO waiting on wallet for 33ms +2024-10-21T18:01:31.311Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/default.sock +2024-10-21T18:01:31.311Z harness.ts INFO waiting on wallet for 49ms +2024-10-21T18:01:31.361Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion/default.sock +2024-10-21T18:01:31.361Z harness.ts INFO waiting on wallet for 73ms +2024-10-21T18:01:31.438Z harness.ts INFO connection to wallet-core succeeded +2024-10-21T18:01:31.439Z twrpc-impl.node.ts INFO connected! +user-yqambhxn9h4wjyas pw-dcdsrmc2v8kkq699 +request for URL { + href: 'http://localhost:9081/keys', + origin: 'http://localhost:9081', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9081', + hostname: 'localhost', + port: '9081', + pathname: '/keys', + search: '', + searchParams: URLSearchParams {}, + hash: '' +} +end of data +full request body undefined +proxying request to target path '/keys' +gotten response from target 200 +end of target response +writing response head +request for URL { + href: 'http://localhost:9081/terms', + origin: 'http://localhost:9081', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9081', + hostname: 'localhost', + port: '9081', + pathname: '/terms', + search: '', + searchParams: URLSearchParams {}, + hash: '' +} +end of data +full request body undefined +proxying request to target path '/terms' +gotten response from target 501 +end of target response +writing response head +2024-10-21T18:01:31.841Z bank-api-client.ts INFO confirming withdrawal operation via http://localhost:8082/accounts/user-yqambhxn9h4wjyas/withdrawals/XMED7C6R6CC4V98ZA0RJPYKRWDGAV3A4ZPFRGH1XQWP8ACS077XG/confirm +request for URL { + href: 'http://localhost:9081/reserves/4YTV0Z53D2WYRVABA2C5WYF3T3JKAN52DMB9YYN7EWNW39CKWEV0?timeout_ms=30000', + origin: 'http://localhost:9081', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9081', + hostname: 'localhost', + port: '9081', + pathname: '/reserves/4YTV0Z53D2WYRVABA2C5WYF3T3JKAN52DMB9YYN7EWNW39CKWEV0', + search: '?timeout_ms=30000', + searchParams: URLSearchParams { 'timeout_ms' => '30000' }, + hash: '' +} +end of data +full request body undefined +proxying request to target path '/reserves/4YTV0Z53D2WYRVABA2C5WYF3T3JKAN52DMB9YYN7EWNW39CKWEV0?timeout_ms=30000' +gotten response from target 200 +end of target response +writing response head +request for URL { + href: 'http://localhost:9081/reserves/4YTV0Z53D2WYRVABA2C5WYF3T3JKAN52DMB9YYN7EWNW39CKWEV0/batch-withdraw', + origin: 'http://localhost:9081', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9081', + hostname: 'localhost', + port: '9081', + pathname: '/reserves/4YTV0Z53D2WYRVABA2C5WYF3T3JKAN52DMB9YYN7EWNW39CKWEV0/batch-withdraw', + search: '', + searchParams: URLSearchParams {}, + hash: '' +} +end of data +full request body <Buffer 7b 22 70 6c 61 6e 63 68 65 74 73 22 3a 5b 7b 22 64 65 6e 6f 6d 5f 70 75 62 5f 68 61 73 68 22 3a 22 57 53 44 4e 51 58 57 51 5a 47 39 44 30 54 47 46 39 ... 5498 more bytes> +proxying request to target path '/reserves/4YTV0Z53D2WYRVABA2C5WYF3T3JKAN52DMB9YYN7EWNW39CKWEV0/batch-withdraw' +gotten response from target 200 +end of target response +writing response head +request for URL { + href: 'http://localhost:9083/private/orders', + origin: 'http://localhost:9083', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9083', + hostname: 'localhost', + port: '9083', + pathname: '/private/orders', + search: '', + searchParams: URLSearchParams {}, + hash: '' +} +end of data +full request body <Buffer 7b 22 6f 72 64 65 72 22 3a 7b 22 73 75 6d 6d 61 72 79 22 3a 22 42 75 79 20 6d 65 21 22 2c 22 61 6d 6f 75 6e 74 22 3a 22 54 45 53 54 4b 55 44 4f 53 3a ... 54 more bytes> +proxying request to target path '/private/orders' +gotten response from target 200 +end of target response +writing response head +request for URL { + href: 'http://localhost:9083/private/orders/2024.295-01G4B7S1NYHCY?session_id=mysession-one', + origin: 'http://localhost:9083', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9083', + hostname: 'localhost', + port: '9083', + pathname: '/private/orders/2024.295-01G4B7S1NYHCY', + search: '?session_id=mysession-one', + searchParams: URLSearchParams { 'session_id' => 'mysession-one' }, + hash: '' +} +end of data +full request body undefined +proxying request to target path '/private/orders/2024.295-01G4B7S1NYHCY?session_id=mysession-one' +gotten response from target 200 +end of target response +writing response head +request for URL { + href: 'http://localhost:9083/orders/2024.295-01G4B7S1NYHCY?token=WRCC38EAN4XYBGMP3J4W197BY4&session_id=mysession-one', + origin: 'http://localhost:9083', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9083', + hostname: 'localhost', + port: '9083', + pathname: '/orders/2024.295-01G4B7S1NYHCY', + search: '?token=WRCC38EAN4XYBGMP3J4W197BY4&session_id=mysession-one', + searchParams: URLSearchParams { 'token' => 'WRCC38EAN4XYBGMP3J4W197BY4', 'session_id' => 'mysession-one' }, + hash: '' +} +end of data +full request body undefined +proxying request to target path '/orders/2024.295-01G4B7S1NYHCY?token=WRCC38EAN4XYBGMP3J4W197BY4&session_id=mysession-one' +gotten response from target 402 +end of target response +writing response head +{ + taler_pay_uri: 'taler+http://pay/localhost:9083/2024.295-01G4B7S1NYHCY/mysession-one?c=WRCC38EAN4XYBGMP3J4W197BY4', + already_paid_order_id: undefined +} +request for URL { + href: 'http://localhost:9083/orders/2024.295-01G4B7S1NYHCY/claim', + origin: 'http://localhost:9083', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9083', + hostname: 'localhost', + port: '9083', + pathname: '/orders/2024.295-01G4B7S1NYHCY/claim', + search: '', + searchParams: URLSearchParams {}, + hash: '' +} +end of data +full request body <Buffer 7b 22 6e 6f 6e 63 65 22 3a 22 4d 35 33 59 42 56 44 53 39 4e 4d 54 4e 31 4a 4b 45 4d 38 47 51 54 53 52 58 5a 37 4d 34 57 50 43 33 32 35 36 42 38 51 52 ... 51 more bytes> +proxying request to target path '/orders/2024.295-01G4B7S1NYHCY/claim' +gotten response from target 200 +end of target response +writing response head +requesting http://localhost:9083/orders/2024.295-01G4B7S1NYHCY?token=WRCC38EAN4XYBGMP3J4W197BY4&session_id=mysession-one&h_contract=81018DD1R8WVZMEV9Z6JM59AV8WXZN2TC7C1NWW0R3PT8D3C7F036S9EJS2F5K8KCR9BK0JMS9N3TD38ZPMJKFK2ADNS9GV7HNGSTHG +request for URL { + href: 'http://localhost:9083/orders/2024.295-01G4B7S1NYHCY?token=WRCC38EAN4XYBGMP3J4W197BY4&session_id=mysession-one&h_contract=81018DD1R8WVZMEV9Z6JM59AV8WXZN2TC7C1NWW0R3PT8D3C7F036S9EJS2F5K8KCR9BK0JMS9N3TD38ZPMJKFK2ADNS9GV7HNGSTHG', + origin: 'http://localhost:9083', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9083', + hostname: 'localhost', + port: '9083', + pathname: '/orders/2024.295-01G4B7S1NYHCY', + search: '?token=WRCC38EAN4XYBGMP3J4W197BY4&session_id=mysession-one&h_contract=81018DD1R8WVZMEV9Z6JM59AV8WXZN2TC7C1NWW0R3PT8D3C7F036S9EJS2F5K8KCR9BK0JMS9N3TD38ZPMJKFK2ADNS9GV7HNGSTHG', + searchParams: URLSearchParams { + 'token' => 'WRCC38EAN4XYBGMP3J4W197BY4', + 'session_id' => 'mysession-one', + 'h_contract' => '81018DD1R8WVZMEV9Z6JM59AV8WXZN2TC7C1NWW0R3PT8D3C7F036S9EJS2F5K8KCR9BK0JMS9N3TD38ZPMJKFK2ADNS9GV7HNGSTHG' }, + hash: '' +} +end of data +full request body undefined +proxying request to target path '/orders/2024.295-01G4B7S1NYHCY?token=WRCC38EAN4XYBGMP3J4W197BY4&session_id=mysession-one&h_contract=81018DD1R8WVZMEV9Z6JM59AV8WXZN2TC7C1NWW0R3PT8D3C7F036S9EJS2F5K8KCR9BK0JMS9N3TD38ZPMJKFK2ADNS9GV7HNGSTHG' +gotten response from target 402 +end of target response +writing response head +request for URL { + href: 'http://localhost:9083/orders/2024.295-01G4B7S1NYHCY/pay', + origin: 'http://localhost:9083', + protocol: 'http:', + username: '', + password: '', + host: 'localhost:9083', + hostname: 'localhost', + port: '9083', + pathname: '/orders/2024.295-01G4B7S1NYHCY/pay', + search: '', + searchParams: URLSearchParams {}, + hash: '' +} +end of data +full request body <Buffer 7b 22 63 6f 69 6e 73 22 3a 5b 7b 22 63 6f 69 6e 5f 70 75 62 22 3a 22 51 5a 59 52 52 44 54 39 4a 44 5a 5a 41 4a 33 5a 57 44 39 34 52 33 38 47 41 43 5a ... 610 more bytes> +proxying request to target path '/orders/2024.295-01G4B7S1NYHCY/pay' +gotten response from target 400 +end of target response +writing response head +{ + "code": 7005, + "when": { + "t_ms": 1729533692391 + }, + "hint": "Unexpected HTTP status 400 in response", + "requestUrl": "http://localhost:9083/orders/2024.295-01G4B7S1NYHCY/pay", + "requestMethod": "POST", + "httpStatusCode": 400, + "errorResponse": { + "code": 2025, + "hint": "The exchange specified in the operation is not trusted by this exchange. The client should limit its operation to exchanges enabled by the merchant, or ask the merchant to enable additional exchanges in the configuration.", + "detail": "http://localhost:9081/" + } +} +2024-10-21T18:01:32.395Z harness.ts INFO completed test in directory [ + "/tmp/taler-integrationtests-jtWkXo/merchant-exchange-confusion" +] +2024-10-21T18:01:32.445Z remote.ts INFO default: remote wallet disconnected +2024-10-21T18:01:32.445Z harness.ts WARN process wallet-default exited { + "code": 143, + "signal": null +} +2024-10-21T18:01:32.445Z testrunner.ts INFO done test merchant-exchange-confusion: pass +2024-10-21T18:01:32.451Z testrunner.ts INFO process exited code=0 signal=null +parent: got result {"name":"merchant-exchange-confusion","timeSec":2.991,"status":"pass"} +running merchant-instances-delete with timeout 60000ms +2024-10-21T18:01:32.623Z testrunner.ts INFO running test merchant-instances-delete +2024-10-21T18:01:32.625Z harness.ts INFO running test in directory [ + "/tmp/taler-integrationtests-jtWkXo/merchant-instances-delete" +] +2024-10-21T18:01:32.626Z harness.ts INFO running command dropdb taler-integrationtest +2024-10-21T18:01:32.678Z harness.ts INFO running command createdb taler-integrationtest +2024-10-21T18:01:32.742Z harness.ts INFO running command taler-merchant-dbinit -c '/tmp/taler-integrationtests-jtWkXo/merchant-instances-delete/merchant-testmerchant-1.conf' +2024-10-21T18:01:33.191Z harness.ts INFO spawning process (merchant-httpd-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-instances-delete/merchant-testmerchant-1.conf' +2024-10-21T18:01:33.194Z harness.ts INFO spawning process (merchant-exchangekeyupdate-testmerchant-1): taler-merchant-exchangekeyupdate taler-merchant-exchangekeyupdate -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-instances-delete/merchant-testmerchant-1.conf' +2024-10-21T18:01:33.195Z harness.ts INFO spawning process (merchant-kyccheck-testmerchant-1): taler-merchant-kyccheck taler-merchant-kyccheck -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-instances-delete/merchant-testmerchant-1.conf' +2024-10-21T18:01:33.213Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533693213},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:33.213Z harness.ts INFO waiting 10ms on merchant (testmerchant-1) +2024-10-21T18:01:33.225Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533693225},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:33.225Z harness.ts INFO waiting 15ms on merchant (testmerchant-1) +2024-10-21T18:01:33.243Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533693243},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:33.243Z harness.ts INFO waiting 22ms on merchant (testmerchant-1) +2024-10-21T18:01:33.267Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533693267},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:33.267Z harness.ts INFO waiting 33ms on merchant (testmerchant-1) +2024-10-21T18:01:33.303Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533693303},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:33.303Z harness.ts INFO waiting 49ms on merchant (testmerchant-1) +2024-10-21T18:01:33.356Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533693356},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:33.356Z harness.ts INFO waiting 73ms on merchant (testmerchant-1) +{ + currency: 'TESTKUDOS', + currencies: { + TESTKUDOS: { + name: 'Test-kudos (Taler Demonstrator)', + currency: 'TESTKUDOS', + num_fractional_input_digits: 2, + num_fractional_normal_digits: 2, + num_fractional_trailing_zero_digits: 2, + alt_unit_names: [Object] + } + }, + exchanges: [ + { + master_pub: '05B0X78NDDGWZXHQ29Y7Y6Z4QBX67GSATHPM8K15Z46D8TDMR7Z0', + currency: 'TESTKUDOS', + base_url: 'http://localhost:8081/' + } + ], + implementation: 'urn:net:taler:specs:taler-merchant:c-reference', + name: 'taler-merchant', + version: '17:0:13' +} +2024-10-21T18:01:33.438Z harness.ts INFO adding instance 'default' +2024-10-21T18:01:33.447Z harness.ts INFO adding instance 'myinst' +Got expected exception _TalerError: Unexpected HTTP status 401 in response + at _TalerError.fromDetail (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:10375:12) + at throwUnexpectedRequestError (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:11130:20) + at expectSuccessResponseOrThrow (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:11144:3) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) + at async MerchantApiClient.deleteInstance (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:19437:5) + at async /home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:64099:7 + at async GlobalTestState.assertThrowsAsync (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:55910:7) + at async runMerchantInstancesDeleteTest (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:64098:17) + at async runTestWithState (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:57203:5) + at async runTest (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:90027:24) { + errorDetail: { + code: 7005, + when: { t_ms: 1729533693454, [Symbol(opaque_AbsoluteTime)]: true }, + hint: 'Unexpected HTTP status 401 in response', + requestUrl: 'http://localhost:8083/management/instances/myinst', + requestMethod: 'DELETE', + httpStatusCode: 401, + errorResponse: { + code: 43, + hint: 'The service refused the request as the given authorization token is malformed.' + } + }, + cause: undefined +} +2024-10-21T18:01:33.459Z harness.ts INFO completed test in directory [ + "/tmp/taler-integrationtests-jtWkXo/merchant-instances-delete" +] +2024-10-21T18:01:33.463Z testrunner.ts INFO done test merchant-instances-delete: pass +2024-10-21T18:01:33.469Z testrunner.ts INFO process exited code=0 signal=null +parent: got result {"name":"merchant-instances-delete","timeSec":0.839,"status":"pass"} +running merchant-instances with timeout 60000ms +2024-10-21T18:01:33.607Z testrunner.ts INFO running test merchant-instances +2024-10-21T18:01:33.608Z harness.ts INFO running test in directory [ + "/tmp/taler-integrationtests-jtWkXo/merchant-instances" +] +2024-10-21T18:01:33.608Z harness.ts INFO running command dropdb taler-integrationtest +2024-10-21T18:01:33.642Z harness.ts INFO running command createdb taler-integrationtest +2024-10-21T18:01:33.704Z harness.ts INFO running command taler-merchant-dbinit -c '/tmp/taler-integrationtests-jtWkXo/merchant-instances/merchant-testmerchant-1.conf' +2024-10-21T18:01:34.144Z harness.ts INFO spawning process (merchant-httpd-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-instances/merchant-testmerchant-1.conf' +2024-10-21T18:01:34.145Z harness.ts INFO spawning process (merchant-exchangekeyupdate-testmerchant-1): taler-merchant-exchangekeyupdate taler-merchant-exchangekeyupdate -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-instances/merchant-testmerchant-1.conf' +2024-10-21T18:01:34.146Z harness.ts INFO spawning process (merchant-kyccheck-testmerchant-1): taler-merchant-kyccheck taler-merchant-kyccheck -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-instances/merchant-testmerchant-1.conf' +2024-10-21T18:01:34.161Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533694161},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:34.161Z harness.ts INFO waiting 10ms on merchant (testmerchant-1) +2024-10-21T18:01:34.173Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533694173},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:34.173Z harness.ts INFO waiting 15ms on merchant (testmerchant-1) +2024-10-21T18:01:34.190Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533694190},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:34.190Z harness.ts INFO waiting 22ms on merchant (testmerchant-1) +2024-10-21T18:01:34.214Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533694214},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:34.214Z harness.ts INFO waiting 33ms on merchant (testmerchant-1) +2024-10-21T18:01:34.248Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533694248},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:34.248Z harness.ts INFO waiting 49ms on merchant (testmerchant-1) +2024-10-21T18:01:34.301Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533694301},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:34.301Z harness.ts INFO waiting 73ms on merchant (testmerchant-1) +{ + currency: 'TESTKUDOS', + currencies: { + TESTKUDOS: { + name: 'Test-kudos (Taler Demonstrator)', + currency: 'TESTKUDOS', + num_fractional_input_digits: 2, + num_fractional_normal_digits: 2, + num_fractional_trailing_zero_digits: 2, + alt_unit_names: [Object] + } + }, + exchanges: [ + { + master_pub: '0FJ7E6NEV1WSKZYKVK6H1QWH7JN49MD5704FJAX72KGY5B98G70G', + currency: 'TESTKUDOS', + base_url: 'http://localhost:8081/' + } + ], + implementation: 'urn:net:taler:specs:taler-merchant:c-reference', + name: 'taler-merchant', + version: '17:0:13' +} +2024-10-21T18:01:34.385Z harness.ts INFO adding instance 'default' +2024-10-21T18:01:34.395Z harness.ts INFO adding instance 'default' +2024-10-21T18:01:34.398Z harness.ts INFO adding instance 'myinst' +requesting instances with auth { method: 'external' } +_TalerError: Unexpected HTTP status 401 in response + at _TalerError.fromDetail (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:10375:12) + at throwUnexpectedRequestError (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:11130:20) + at readSuccessResponseJsonOrThrow (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:11137:3) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) + at async /home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:64324:18 + at async GlobalTestState.assertThrowsAsync (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:55910:7) + at async runMerchantInstancesTest (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:64322:15) + at async runTestWithState (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:57203:5) + at async runTest (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:90027:24) { + errorDetail: { + code: 7005, + when: { t_ms: 1729533694408, [Symbol(opaque_AbsoluteTime)]: true }, + hint: 'Unexpected HTTP status 401 in response', + requestUrl: 'http://localhost:8083/management/instances', + requestMethod: 'GET', + httpStatusCode: 401, + errorResponse: { + code: 2015, + hint: 'The merchant refused the request due to lack of authorization.', + detail: "Check 'Authorization' header" + } + }, + cause: undefined +} +_TalerError: Unexpected HTTP status 401 in response + at _TalerError.fromDetail (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:10375:12) + at throwUnexpectedRequestError (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:11130:20) + at expectSuccessResponseOrThrow (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:11144:3) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) + at async MerchantApiClient.deleteInstance (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:19437:5) + at async /home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:64364:7 + at async GlobalTestState.assertThrowsAsync (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:55910:7) + at async runMerchantInstancesTest (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:64363:18) + at async runTestWithState (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:57203:5) + at async runTest (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:90027:24) { + errorDetail: { + code: 7005, + when: { t_ms: 1729533694416, [Symbol(opaque_AbsoluteTime)]: true }, + hint: 'Unexpected HTTP status 401 in response', + requestUrl: 'http://localhost:8083/management/instances/myinst', + requestMethod: 'DELETE', + httpStatusCode: 401, + errorResponse: { + code: 2015, + hint: 'The merchant refused the request due to lack of authorization.', + detail: "Check 'Authorization' header" + } + }, + cause: undefined +} +2024-10-21T18:01:34.417Z harness.ts INFO completed test in directory [ + "/tmp/taler-integrationtests-jtWkXo/merchant-instances" +] +2024-10-21T18:01:34.421Z testrunner.ts INFO done test merchant-instances: pass +2024-10-21T18:01:34.426Z testrunner.ts INFO process exited code=0 signal=null +parent: got result {"name":"merchant-instances","timeSec":0.813,"status":"pass"} +running merchant-instances-urls with timeout 60000ms +2024-10-21T18:01:34.564Z testrunner.ts INFO running test merchant-instances-urls +2024-10-21T18:01:34.565Z harness.ts INFO running test in directory [ + "/tmp/taler-integrationtests-jtWkXo/merchant-instances-urls" +] +2024-10-21T18:01:34.565Z harness.ts INFO running command dropdb taler-integrationtest +2024-10-21T18:01:34.597Z harness.ts INFO running command createdb taler-integrationtest +2024-10-21T18:01:34.658Z harness.ts INFO running command taler-merchant-dbinit -c '/tmp/taler-integrationtests-jtWkXo/merchant-instances-urls/merchant-testmerchant-1.conf' +2024-10-21T18:01:35.096Z harness.ts INFO spawning process (merchant-httpd-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-instances-urls/merchant-testmerchant-1.conf' +2024-10-21T18:01:35.098Z harness.ts INFO spawning process (merchant-exchangekeyupdate-testmerchant-1): taler-merchant-exchangekeyupdate taler-merchant-exchangekeyupdate -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-instances-urls/merchant-testmerchant-1.conf' +2024-10-21T18:01:35.100Z harness.ts INFO spawning process (merchant-kyccheck-testmerchant-1): taler-merchant-kyccheck taler-merchant-kyccheck -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-instances-urls/merchant-testmerchant-1.conf' +2024-10-21T18:01:35.116Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533695115},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:35.116Z harness.ts INFO waiting 10ms on merchant (testmerchant-1) +2024-10-21T18:01:35.128Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533695128},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:35.129Z harness.ts INFO waiting 15ms on merchant (testmerchant-1) +2024-10-21T18:01:35.146Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533695146},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:35.146Z harness.ts INFO waiting 22ms on merchant (testmerchant-1) +2024-10-21T18:01:35.171Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533695171},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:35.171Z harness.ts INFO waiting 33ms on merchant (testmerchant-1) +2024-10-21T18:01:35.207Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533695207},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:35.207Z harness.ts INFO waiting 49ms on merchant (testmerchant-1) +2024-10-21T18:01:35.259Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533695259},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:35.259Z harness.ts INFO waiting 73ms on merchant (testmerchant-1) +checking http://localhost:8083/private/instances/default/instances/default/config, expected 404, got 404 +checking http://localhost:8083/instances/default/private/instances, expected 404, got 404 +checking http://localhost:8083/instances/foo/private/instances, expected 404, got 404 +checking http://localhost:8083/instances/myinst/private/instances, expected 404, got 404 +checking http://localhost:8083/config, expected 200, got 200 +checking http://localhost:8083/instances/default/config, expected 200, got 200 +checking http://localhost:8083/instances/myinst/config, expected 200, got 200 +checking http://localhost:8083/instances/foo/config, expected 404, got 404 +checking http://localhost:8083/instances/default/instances/config, expected 404, got 404 +checking http://localhost:8083/private/instances/myinst/config, expected 404, got 404 +checking http://localhost:8083/instances/myinst/private/orders, expected 401, got 401 +checking http://localhost:8083/instances/myinst/private/orders, expected 401, got 401 +checking http://localhost:8083/instances/myinst/private/orders, expected 200, got 200 +checking http://localhost:8083/private/instances/myinst/orders, expected 404, got 404 +2024-10-21T18:01:35.364Z harness.ts INFO completed test in directory [ + "/tmp/taler-integrationtests-jtWkXo/merchant-instances-urls" +] +2024-10-21T18:01:35.368Z testrunner.ts INFO done test merchant-instances-urls: pass +2024-10-21T18:01:35.374Z testrunner.ts INFO process exited code=0 signal=null +parent: got result {"name":"merchant-instances-urls","timeSec":0.804,"status":"pass"} +running merchant-longpolling with timeout 60000ms +2024-10-21T18:01:35.506Z testrunner.ts INFO running test merchant-longpolling +2024-10-21T18:01:35.507Z harness.ts INFO running test in directory [ + "/tmp/taler-integrationtests-jtWkXo/merchant-longpolling" +] +2024-10-21T18:01:35.508Z harness.ts INFO running command dropdb taler-integrationtest +2024-10-21T18:01:35.540Z harness.ts INFO running command createdb taler-integrationtest +2024-10-21T18:01:35.600Z harness.ts INFO starting fakebank +2024-10-21T18:01:35.600Z harness.ts INFO spawning process (bank): taler-fakebank-run -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/bank.conf' --signup-bonus TESTKUDOS:100 +2024-10-21T18:01:36.106Z harness.ts INFO child process exchange-dbinit exited (0 / null) +2024-10-21T18:01:36.106Z harness.ts INFO spawning process (exchange-crypto-eddsa-testexchange-1): taler-exchange-secmod-eddsa -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:36.108Z harness.ts INFO spawning process (exchange-crypto-cs-testexchange-1): taler-exchange-secmod-cs -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:36.110Z harness.ts INFO spawning process (exchange-crypto-rsa-testexchange-1): taler-exchange-secmod-rsa -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:36.112Z harness.ts INFO spawning process (exchange-wirewatch-testexchange-1): taler-exchange-wirewatch -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/exchange-testexchange-1.conf' --longpoll-timeout=5s +2024-10-21T18:01:36.114Z harness.ts INFO spawning process (exchange-transfer-testexchange-1): taler-exchange-transfer -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/exchange-testexchange-1.conf' +2024-10-21T18:01:36.116Z harness.ts INFO spawning process (exchange-aggregator-testexchange-1): taler-exchange-aggregator -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/exchange-testexchange-1.conf' +2024-10-21T18:01:36.118Z harness.ts INFO spawning process (exchange-httpd-testexchange-1): taler-exchange-httpd -LINFO -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/exchange-testexchange-1.conf' +2024-10-21T18:01:36.219Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533696219},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:36.219Z harness.ts INFO waiting 10ms on exchange (testexchange-1) +2024-10-21T18:01:36.231Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533696230},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:36.231Z harness.ts INFO waiting 15ms on exchange (testexchange-1) +2024-10-21T18:01:36.247Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533696247},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:36.247Z harness.ts INFO waiting 22ms on exchange (testexchange-1) +2024-10-21T18:01:36.271Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533696271},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:36.271Z harness.ts INFO waiting 33ms on exchange (testexchange-1) +2024-10-21T18:01:36.322Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/exchange-testexchange-1.conf' download sign upload +2024-10-21T18:01:36.339Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/exchange-testexchange-1.conf' enable-account 'payto://x-taler-bank/localhost/exchange?receiver-name=exchange' upload +2024-10-21T18:01:36.350Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/exchange-testexchange-1.conf' wire-fee 2024 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:36.360Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/exchange-testexchange-1.conf' wire-fee 2025 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:36.369Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/exchange-testexchange-1.conf' wire-fee 2026 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:36.377Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/exchange-testexchange-1.conf' wire-fee 2027 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:36.387Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/exchange-testexchange-1.conf' wire-fee 2028 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:36.395Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/exchange-testexchange-1.conf' global-fee now 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.00' 1h 1year 5 upload +2024-10-21T18:01:36.406Z harness.ts INFO running command taler-merchant-dbinit -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/merchant-testmerchant-1.conf' +2024-10-21T18:01:36.821Z harness.ts INFO spawning process (merchant-httpd-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/merchant-testmerchant-1.conf' +2024-10-21T18:01:36.822Z harness.ts INFO spawning process (merchant-exchangekeyupdate-testmerchant-1): taler-merchant-exchangekeyupdate taler-merchant-exchangekeyupdate -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/merchant-testmerchant-1.conf' +2024-10-21T18:01:36.824Z harness.ts INFO spawning process (merchant-kyccheck-testmerchant-1): taler-merchant-kyccheck taler-merchant-kyccheck -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/merchant-testmerchant-1.conf' +2024-10-21T18:01:36.826Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533696826},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:36.826Z harness.ts INFO waiting 10ms on merchant (testmerchant-1) +2024-10-21T18:01:36.837Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533696837},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:36.837Z harness.ts INFO waiting 15ms on merchant (testmerchant-1) +2024-10-21T18:01:36.854Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533696854},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:36.854Z harness.ts INFO waiting 22ms on merchant (testmerchant-1) +2024-10-21T18:01:36.878Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533696878},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:36.878Z harness.ts INFO waiting 33ms on merchant (testmerchant-1) +2024-10-21T18:01:36.913Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533696913},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:36.913Z harness.ts INFO waiting 49ms on merchant (testmerchant-1) +2024-10-21T18:01:36.964Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533696964},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:36.964Z harness.ts INFO waiting 73ms on merchant (testmerchant-1) +2024-10-21T18:01:37.039Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533697039},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:37.039Z harness.ts INFO waiting 109ms on merchant (testmerchant-1) +2024-10-21T18:01:37.154Z harness.ts INFO adding instance 'default' +2024-10-21T18:01:37.163Z harness.ts INFO adding instance 'minst1' +2024-10-21T18:01:37.167Z harness.ts INFO spawning process (wallet-wallet): taler-wallet-cli --wallet-db '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/walletdb-wallet.sqlite3' -LTRACE --no-throttle advanced serve --unix-path '/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/wallet.sock' --no-init +2024-10-21T18:01:37.169Z harness.ts INFO hint: connect to wallet using taler-wallet-cli --wallet-connection=/tmp/taler-integrationtests-jtWkXo/merchant-longpolling/wallet.sock +2024-10-21T18:01:37.170Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-longpolling/wallet.sock +2024-10-21T18:01:37.170Z harness.ts INFO waiting on wallet for 10ms +2024-10-21T18:01:37.181Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-longpolling/wallet.sock +2024-10-21T18:01:37.181Z harness.ts INFO waiting on wallet for 15ms +2024-10-21T18:01:37.198Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-longpolling/wallet.sock +2024-10-21T18:01:37.198Z harness.ts INFO waiting on wallet for 22ms +2024-10-21T18:01:37.221Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-longpolling/wallet.sock +2024-10-21T18:01:37.221Z harness.ts INFO waiting on wallet for 33ms +2024-10-21T18:01:37.255Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-longpolling/wallet.sock +2024-10-21T18:01:37.255Z harness.ts INFO waiting on wallet for 49ms +2024-10-21T18:01:37.305Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-longpolling/wallet.sock +2024-10-21T18:01:37.305Z harness.ts INFO waiting on wallet for 73ms +2024-10-21T18:01:37.381Z harness.ts INFO connection to wallet-core succeeded +2024-10-21T18:01:37.381Z twrpc-impl.node.ts INFO connected! +setup done! +user-mq1ywxnvt0adgyeh pw-hse88k61f6f2633w +2024-10-21T18:01:37.669Z bank-api-client.ts INFO confirming withdrawal operation via http://localhost:8082/accounts/user-mq1ywxnvt0adgyeh/withdrawals/2AYYBEYS9ZXP44841A38EQQ0KF1FPD4VQ7002K5E7JQPT7KKJ0VG/confirm +requesting http://localhost:8083/orders/2024.295-02076F6NR4WSW?session_id=mysession-one +requesting http://localhost:8083/orders/2024.295-02076F6NR4WSW?session_id=mysession-one&timeout_ms=500 +{ + taler_pay_uri: 'taler+http://pay/localhost:8083/2024.295-02076F6NR4WSW/mysession-one', + already_paid_order_id: undefined +} +2024-10-21T18:01:43.596Z harness.ts INFO completed test in directory [ + "/tmp/taler-integrationtests-jtWkXo/merchant-longpolling" +] +2024-10-21T18:01:43.641Z remote.ts INFO wallet: remote wallet disconnected +2024-10-21T18:01:43.642Z harness.ts WARN process wallet-wallet exited { + "code": 143, + "signal": null +} +2024-10-21T18:01:43.642Z testrunner.ts INFO done test merchant-longpolling: pass +2024-10-21T18:01:43.646Z testrunner.ts INFO process exited code=0 signal=null +parent: got result {"name":"merchant-longpolling","timeSec":8.135,"status":"pass"} +running merchant-refund-api with timeout 60000ms +2024-10-21T18:01:43.786Z testrunner.ts INFO running test merchant-refund-api +2024-10-21T18:01:43.787Z harness.ts INFO running test in directory [ + "/tmp/taler-integrationtests-jtWkXo/merchant-refund-api" +] +2024-10-21T18:01:43.788Z harness.ts INFO running command dropdb taler-integrationtest +2024-10-21T18:01:43.828Z harness.ts INFO running command createdb taler-integrationtest +2024-10-21T18:01:43.895Z harness.ts INFO starting fakebank +2024-10-21T18:01:43.895Z harness.ts INFO spawning process (bank): taler-fakebank-run -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/bank.conf' --signup-bonus TESTKUDOS:100 +2024-10-21T18:01:44.363Z harness.ts INFO child process exchange-dbinit exited (0 / null) +2024-10-21T18:01:44.363Z harness.ts INFO spawning process (exchange-crypto-eddsa-testexchange-1): taler-exchange-secmod-eddsa -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:44.366Z harness.ts INFO spawning process (exchange-crypto-cs-testexchange-1): taler-exchange-secmod-cs -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:44.367Z harness.ts INFO spawning process (exchange-crypto-rsa-testexchange-1): taler-exchange-secmod-rsa -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:44.369Z harness.ts INFO spawning process (exchange-wirewatch-testexchange-1): taler-exchange-wirewatch -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/exchange-testexchange-1.conf' --longpoll-timeout=5s +2024-10-21T18:01:44.370Z harness.ts INFO spawning process (exchange-transfer-testexchange-1): taler-exchange-transfer -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/exchange-testexchange-1.conf' +2024-10-21T18:01:44.371Z harness.ts INFO spawning process (exchange-aggregator-testexchange-1): taler-exchange-aggregator -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/exchange-testexchange-1.conf' +2024-10-21T18:01:44.372Z harness.ts INFO spawning process (exchange-httpd-testexchange-1): taler-exchange-httpd -LINFO -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/exchange-testexchange-1.conf' +2024-10-21T18:01:44.412Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533704412},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:44.412Z harness.ts INFO waiting 10ms on exchange (testexchange-1) +2024-10-21T18:01:44.425Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533704425},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:44.425Z harness.ts INFO waiting 15ms on exchange (testexchange-1) +2024-10-21T18:01:44.442Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533704442},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:44.442Z harness.ts INFO waiting 22ms on exchange (testexchange-1) +2024-10-21T18:01:44.466Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533704466},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:44.467Z harness.ts INFO waiting 33ms on exchange (testexchange-1) +2024-10-21T18:01:44.502Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533704502},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:44.502Z harness.ts INFO waiting 49ms on exchange (testexchange-1) +2024-10-21T18:01:44.553Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533704553},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:44.553Z harness.ts INFO waiting 73ms on exchange (testexchange-1) +2024-10-21T18:01:44.647Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/exchange-testexchange-1.conf' download sign upload +2024-10-21T18:01:44.666Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/exchange-testexchange-1.conf' enable-account 'payto://x-taler-bank/localhost/exchange?receiver-name=exchange' upload +2024-10-21T18:01:44.677Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/exchange-testexchange-1.conf' wire-fee 2024 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:44.688Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/exchange-testexchange-1.conf' wire-fee 2025 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:44.699Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/exchange-testexchange-1.conf' wire-fee 2026 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:44.709Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/exchange-testexchange-1.conf' wire-fee 2027 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:44.719Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/exchange-testexchange-1.conf' wire-fee 2028 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:44.729Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/exchange-testexchange-1.conf' global-fee now 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.00' 1h 1year 5 upload +2024-10-21T18:01:44.740Z harness.ts INFO running command taler-merchant-dbinit -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/merchant-testmerchant-1.conf' +2024-10-21T18:01:45.175Z harness.ts INFO spawning process (merchant-httpd-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/merchant-testmerchant-1.conf' +2024-10-21T18:01:45.177Z harness.ts INFO spawning process (merchant-exchangekeyupdate-testmerchant-1): taler-merchant-exchangekeyupdate taler-merchant-exchangekeyupdate -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/merchant-testmerchant-1.conf' +2024-10-21T18:01:45.178Z harness.ts INFO spawning process (merchant-kyccheck-testmerchant-1): taler-merchant-kyccheck taler-merchant-kyccheck -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/merchant-testmerchant-1.conf' +2024-10-21T18:01:45.181Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533705181},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:45.181Z harness.ts INFO waiting 10ms on merchant (testmerchant-1) +2024-10-21T18:01:45.192Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533705192},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:45.192Z harness.ts INFO waiting 15ms on merchant (testmerchant-1) +2024-10-21T18:01:45.209Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533705209},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:45.209Z harness.ts INFO waiting 22ms on merchant (testmerchant-1) +2024-10-21T18:01:45.233Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533705233},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:45.233Z harness.ts INFO waiting 33ms on merchant (testmerchant-1) +2024-10-21T18:01:45.267Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533705267},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:45.268Z harness.ts INFO waiting 49ms on merchant (testmerchant-1) +2024-10-21T18:01:45.319Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533705318},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:45.319Z harness.ts INFO waiting 73ms on merchant (testmerchant-1) +2024-10-21T18:01:45.395Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533705395},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:45.395Z harness.ts INFO waiting 109ms on merchant (testmerchant-1) +2024-10-21T18:01:45.510Z harness.ts INFO adding instance 'default' +2024-10-21T18:01:45.520Z harness.ts INFO adding instance 'minst1' +2024-10-21T18:01:45.524Z harness.ts INFO spawning process (wallet-wallet): taler-wallet-cli --wallet-db '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/walletdb-wallet.sqlite3' -LTRACE --no-throttle advanced serve --unix-path '/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/wallet.sock' --no-init +2024-10-21T18:01:45.526Z harness.ts INFO hint: connect to wallet using taler-wallet-cli --wallet-connection=/tmp/taler-integrationtests-jtWkXo/merchant-refund-api/wallet.sock +2024-10-21T18:01:45.527Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-refund-api/wallet.sock +2024-10-21T18:01:45.527Z harness.ts INFO waiting on wallet for 10ms +2024-10-21T18:01:45.538Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-refund-api/wallet.sock +2024-10-21T18:01:45.538Z harness.ts INFO waiting on wallet for 15ms +2024-10-21T18:01:45.553Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-refund-api/wallet.sock +2024-10-21T18:01:45.553Z harness.ts INFO waiting on wallet for 22ms +2024-10-21T18:01:45.576Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-refund-api/wallet.sock +2024-10-21T18:01:45.576Z harness.ts INFO waiting on wallet for 33ms +2024-10-21T18:01:45.613Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-refund-api/wallet.sock +2024-10-21T18:01:45.613Z harness.ts INFO waiting on wallet for 49ms +2024-10-21T18:01:45.664Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-refund-api/wallet.sock +2024-10-21T18:01:45.664Z harness.ts INFO waiting on wallet for 73ms +2024-10-21T18:01:45.738Z harness.ts INFO connection to wallet-core succeeded +2024-10-21T18:01:45.738Z twrpc-impl.node.ts INFO connected! +setup done! +user-ynhvxsmkbqgh19f7 pw-za9m4d9dfb8wjssd +2024-10-21T18:01:46.018Z bank-api-client.ts INFO confirming withdrawal operation via http://localhost:8082/accounts/user-ynhvxsmkbqgh19f7/withdrawals/PC6D822T3TFT654010T6WJAG0Q0NS55QG6Q48T1CTZ2T50VNXZC0/confirm +requesting order status via 'http://localhost:8083/orders/2024.295-01Y0KWDYQP27G' +403 +{ + code: 2009, + hint: 'The order we found does not match the provided contract hash.' +} +{ + refunded: true, + refund_pending: true, + refund_taken: 'TESTKUDOS:0', + refund_amount: 'TESTKUDOS:5' +} +{ + code: 2009, + hint: 'The order we found does not match the provided contract hash.' +} +2024-10-21T18:01:46.506Z harness.ts INFO completed test in directory [ + "/tmp/taler-integrationtests-jtWkXo/merchant-refund-api" +] +2024-10-21T18:01:46.556Z remote.ts INFO wallet: remote wallet disconnected +2024-10-21T18:01:46.556Z harness.ts WARN process wallet-wallet exited { + "code": 143, + "signal": null +} +2024-10-21T18:01:46.556Z testrunner.ts INFO done test merchant-refund-api: pass +2024-10-21T18:01:46.561Z testrunner.ts INFO process exited code=0 signal=null +parent: got result {"name":"merchant-refund-api","timeSec":2.769,"status":"pass"} +running merchant-spec-public-orders with timeout 60000ms +2024-10-21T18:01:46.728Z testrunner.ts INFO running test merchant-spec-public-orders +2024-10-21T18:01:46.729Z harness.ts INFO running test in directory [ + "/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders" +] +2024-10-21T18:01:46.730Z harness.ts INFO running command dropdb taler-integrationtest +2024-10-21T18:01:46.779Z harness.ts INFO running command createdb taler-integrationtest +2024-10-21T18:01:46.845Z harness.ts INFO starting fakebank +2024-10-21T18:01:46.845Z harness.ts INFO spawning process (bank): taler-fakebank-run -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/bank.conf' --signup-bonus TESTKUDOS:100 +2024-10-21T18:01:47.316Z harness.ts INFO child process exchange-dbinit exited (0 / null) +2024-10-21T18:01:47.316Z harness.ts INFO spawning process (exchange-crypto-eddsa-testexchange-1): taler-exchange-secmod-eddsa -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:47.318Z harness.ts INFO spawning process (exchange-crypto-cs-testexchange-1): taler-exchange-secmod-cs -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:47.319Z harness.ts INFO spawning process (exchange-crypto-rsa-testexchange-1): taler-exchange-secmod-rsa -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:47.321Z harness.ts INFO spawning process (exchange-wirewatch-testexchange-1): taler-exchange-wirewatch -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/exchange-testexchange-1.conf' --longpoll-timeout=5s +2024-10-21T18:01:47.323Z harness.ts INFO spawning process (exchange-transfer-testexchange-1): taler-exchange-transfer -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/exchange-testexchange-1.conf' +2024-10-21T18:01:47.325Z harness.ts INFO spawning process (exchange-aggregator-testexchange-1): taler-exchange-aggregator -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/exchange-testexchange-1.conf' +2024-10-21T18:01:47.326Z harness.ts INFO spawning process (exchange-httpd-testexchange-1): taler-exchange-httpd -LINFO -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/exchange-testexchange-1.conf' +2024-10-21T18:01:47.331Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533707330},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:47.331Z harness.ts INFO waiting 10ms on exchange (testexchange-1) +2024-10-21T18:01:47.350Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533707350},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:47.350Z harness.ts INFO waiting 15ms on exchange (testexchange-1) +2024-10-21T18:01:47.366Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533707366},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:47.366Z harness.ts INFO waiting 22ms on exchange (testexchange-1) +2024-10-21T18:01:47.391Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533707391},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:47.391Z harness.ts INFO waiting 33ms on exchange (testexchange-1) +2024-10-21T18:01:47.426Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533707426},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:47.426Z harness.ts INFO waiting 49ms on exchange (testexchange-1) +2024-10-21T18:01:47.477Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533707477},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:47.478Z harness.ts INFO waiting 73ms on exchange (testexchange-1) +2024-10-21T18:01:47.574Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/exchange-testexchange-1.conf' download sign upload +2024-10-21T18:01:47.591Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/exchange-testexchange-1.conf' enable-account 'payto://x-taler-bank/localhost/exchange?receiver-name=exchange' upload +2024-10-21T18:01:47.602Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/exchange-testexchange-1.conf' wire-fee 2024 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:47.612Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/exchange-testexchange-1.conf' wire-fee 2025 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:47.622Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/exchange-testexchange-1.conf' wire-fee 2026 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:47.631Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/exchange-testexchange-1.conf' wire-fee 2027 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:47.640Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/exchange-testexchange-1.conf' wire-fee 2028 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:47.648Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/exchange-testexchange-1.conf' global-fee now 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.00' 1h 1year 5 upload +2024-10-21T18:01:47.658Z harness.ts INFO running command taler-merchant-dbinit -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/merchant-testmerchant-1.conf' +2024-10-21T18:01:48.049Z harness.ts INFO spawning process (merchant-httpd-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/merchant-testmerchant-1.conf' +2024-10-21T18:01:48.051Z harness.ts INFO spawning process (merchant-exchangekeyupdate-testmerchant-1): taler-merchant-exchangekeyupdate taler-merchant-exchangekeyupdate -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/merchant-testmerchant-1.conf' +2024-10-21T18:01:48.052Z harness.ts INFO spawning process (merchant-kyccheck-testmerchant-1): taler-merchant-kyccheck taler-merchant-kyccheck -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/merchant-testmerchant-1.conf' +2024-10-21T18:01:48.055Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533708055},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:48.055Z harness.ts INFO waiting 10ms on merchant (testmerchant-1) +2024-10-21T18:01:48.066Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533708066},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:48.066Z harness.ts INFO waiting 15ms on merchant (testmerchant-1) +2024-10-21T18:01:48.083Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533708083},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:48.083Z harness.ts INFO waiting 22ms on merchant (testmerchant-1) +2024-10-21T18:01:48.107Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533708107},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:48.107Z harness.ts INFO waiting 33ms on merchant (testmerchant-1) +2024-10-21T18:01:48.142Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533708142},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:48.142Z harness.ts INFO waiting 49ms on merchant (testmerchant-1) +2024-10-21T18:01:48.193Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533708193},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:48.193Z harness.ts INFO waiting 73ms on merchant (testmerchant-1) +2024-10-21T18:01:48.268Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533708268},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:48.268Z harness.ts INFO waiting 109ms on merchant (testmerchant-1) +2024-10-21T18:01:48.382Z harness.ts INFO adding instance 'default' +2024-10-21T18:01:48.393Z harness.ts INFO adding instance 'minst1' +2024-10-21T18:01:48.397Z harness.ts INFO spawning process (wallet-wallet): taler-wallet-cli --wallet-db '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/walletdb-wallet.sqlite3' -LTRACE --no-throttle advanced serve --unix-path '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wallet.sock' --no-init +2024-10-21T18:01:48.399Z harness.ts INFO hint: connect to wallet using taler-wallet-cli --wallet-connection=/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wallet.sock +2024-10-21T18:01:48.400Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wallet.sock +2024-10-21T18:01:48.400Z harness.ts INFO waiting on wallet for 10ms +2024-10-21T18:01:48.410Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wallet.sock +2024-10-21T18:01:48.410Z harness.ts INFO waiting on wallet for 15ms +2024-10-21T18:01:48.426Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wallet.sock +2024-10-21T18:01:48.426Z harness.ts INFO waiting on wallet for 22ms +2024-10-21T18:01:48.449Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wallet.sock +2024-10-21T18:01:48.449Z harness.ts INFO waiting on wallet for 33ms +2024-10-21T18:01:48.482Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wallet.sock +2024-10-21T18:01:48.482Z harness.ts INFO waiting on wallet for 49ms +2024-10-21T18:01:48.534Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wallet.sock +2024-10-21T18:01:48.534Z harness.ts INFO waiting on wallet for 73ms +2024-10-21T18:01:48.610Z harness.ts INFO connection to wallet-core succeeded +2024-10-21T18:01:48.610Z twrpc-impl.node.ts INFO connected! +setup done! +{ + currency: 'TESTKUDOS', + currencies: { + TESTKUDOS: { + name: 'Test-kudos (Taler Demonstrator)', + currency: 'TESTKUDOS', + num_fractional_input_digits: 2, + num_fractional_normal_digits: 2, + num_fractional_trailing_zero_digits: 2, + alt_unit_names: [Object] + } + }, + exchanges: [ + { + master_pub: '6SD3CYHHJZ5SKKS5V3G2SFXVJVFKMZY58NHX6TKKHG434S560BW0', + currency: 'TESTKUDOS', + base_url: 'http://localhost:8081/' + } + ], + implementation: 'urn:net:taler:specs:taler-merchant:c-reference', + name: 'taler-merchant', + version: '17:0:13' +} +{ + code: 2005, + hint: 'The proposal is not known to the backend.', + detail: 'foo' +} +{ + "code": 2005, + "hint": "The proposal is not known to the backend.", + "detail": "foo" +} +2024-10-21T18:01:48.642Z harness.ts INFO spawning process (wallet-wct): taler-wallet-cli --wallet-db :memory: -LTRACE --no-throttle advanced serve --unix-path '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wct.sock' --no-init +2024-10-21T18:01:48.644Z harness.ts INFO hint: connect to wallet using taler-wallet-cli --wallet-connection=/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wct.sock +2024-10-21T18:01:48.644Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wct.sock +2024-10-21T18:01:48.644Z harness.ts INFO waiting on wallet for 10ms +2024-10-21T18:01:48.655Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wct.sock +2024-10-21T18:01:48.655Z harness.ts INFO waiting on wallet for 15ms +2024-10-21T18:01:48.671Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wct.sock +2024-10-21T18:01:48.671Z harness.ts INFO waiting on wallet for 22ms +2024-10-21T18:01:48.693Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wct.sock +2024-10-21T18:01:48.693Z harness.ts INFO waiting on wallet for 33ms +2024-10-21T18:01:48.727Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wct.sock +2024-10-21T18:01:48.728Z harness.ts INFO waiting on wallet for 49ms +2024-10-21T18:01:48.778Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wct.sock +2024-10-21T18:01:48.778Z harness.ts INFO waiting on wallet for 73ms +2024-10-21T18:01:48.851Z harness.ts INFO connection to wallet-core succeeded +2024-10-21T18:01:48.852Z twrpc-impl.node.ts INFO connected! +user-pbdxd4wpradr89fk pw-10780ayqa28b50az +2024-10-21T18:01:49.130Z bank-api-client.ts INFO confirming withdrawal operation via http://localhost:8082/accounts/user-pbdxd4wpradr89fk/withdrawals/110YVKTSWNFKMFKKTGVM0G8PNWPVQ817G487N3V287BSJPWTK4NG/confirm +{ public_reorder_url: 'https://example.com/article42-share' } +{ + taler_pay_uri: 'taler+http://pay/localhost:8083/2024.295-038BS90KD5FD4/?c=9K99S15CQRXYEQT8DV35VXE90M', + fulfillment_url: 'https://example.com/article42' +} + + <!doctype html> + <html> + <head> + <meta charSet="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="taler-support" content="uri" /><meta name="taler-uri" content="taler+http://pay/localhost:8083/2024.295-038BS90KD5FD4/?c=9K99S15CQRXYEQT8DV35VXE90M" /><noscript><meta http-equiv="refresh" content="1" /></noscript><title>Payment requested for Buy me!</title> + <style>/* linaria:index_15ba2f5.linaria.css */ +.q1ma0zxq { + margin: auto; + text-align: center; + width: 340px; +} +.fef0x5t { + text-align: center; + background-color: #033; + color: white; + padding: 1em; + overflow: auto; +} +.fef0x5t > p > a:link, +.fef0x5t > p > a:visited, +.fef0x5t > p > a:hover, +.fef0x5t > p > a:active { + color: white; +} +.p1b3vqup { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + min-height: 100vh; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.p1b3vqup a:link, +.p1b3vqup a:visited, +.p1b3vqup a:hover, +.p1b3vqup a:active { + color: black; +} +.p1b3vqup section { + text-align: center; + width: 600px; + margin-bottom: auto; +} +.p1b3vqup section:not(:first-of-type) { + margin-top: 2em; +} +.p1b3vqup > header { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + text-align: center; +} +.p1b3vqup > footer { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: space-around; + -webkit-justify-content: space-around; + -ms-flex-pack: space-around; + justify-content: space-around; + width: 100%; + margin-bottom: 0px; +} +.c1gnd3xp { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; +} +.wpwjmk { + display: inline-block; + zoom: 1; + line-height: normal; + white-space: nowrap; + vertical-align: middle; + text-align: center; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + text-transform: var(--wpwjmk-0); + font-family: inherit; + font-size: 100%; + padding: 0.5em 1em; + color: #444; + color: rgba(0, 0, 0, 0.8); + border: 1px solid #999; + border: none rgba(0, 0, 0, 0); + background-color: "#e6e6e6"; + -webkit-text-decoration: none; + text-decoration: none; + border-radius: 2px; + background-color: #e6e6e6; + border-radius: 4px; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset, 0 0 6px rgba(0, 0, 0, 0.2) inset; + border-color: #000; +} +.wpwjmk:focus { + outline: 0; +} +.wpwjmk:disabled { + border: none; + background-image: none; + -webkit-filter: alpha(opacity=40); + filter: alpha(opacity=40); + opacity: 0.4; + cursor: not-allowed; + box-shadow: none; + pointer-events: none; +} +.wpwjmk:hover { + -webkit-filter: alpha(opacity=90); + filter: alpha(opacity=90); + background-image: + linear-gradient( + transparent, + rgba(0, 0, 0, 0.05) 40%, + rgba(0, 0, 0, 0.1)); +} +.i1pkgksb { + border-radius: 0.25em; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 1em; + border: solid 1px #b8daff; + background-color: #cce5ff; + color: #004085; +} +.t2c81u8 { + text-align: left; +} +.t2c81u8 dt { + font-weight: bold; + margin-top: 1em; +} +.t2c81u8 dd { + margin-inline-start: 0px; +} +.t1mav7fx { + text-align: left; +} +.t1mav7fx dt { + font-weight: bold; + display: inline-block; + width: 30%; +} +.t1mav7fx dd { + margin-inline-start: 0px; + display: inline-block; + width: 70%; +} + +/* src/css/pure-min.css */ +.talerbar { + text-align: center; +} +html { + line-height: 1.15; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +main { + display: block; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +hr { + -webkit-box-sizing: content-box; + box-sizing: content-box; + height: 0; + overflow: visible; +} +pre { + font-family: monospace, monospace; + font-size: 1em; +} +a { + background-color: transparent; +} +abbr[title] { + border-bottom: none; + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} +b, +strong { + font-weight: bolder; +} +code, +kbd, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.5em; +} +img { + border-style: none; +} +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + font-size: 100%; + line-height: 1.15; + margin: 0; +} +button, +input { + overflow: visible; +} +button, +select { + text-transform: none; +} +[type=button], +[type=reset], +[type=submit], +button { + -webkit-appearance: button; +} +[type=button]::-moz-focus-inner, +[type=reset]::-moz-focus-inner, +[type=submit]::-moz-focus-inner, +button::-moz-focus-inner { + border-style: none; + padding: 0; +} +[type=button]:-moz-focusring, +[type=reset]:-moz-focusring, +[type=submit]:-moz-focusring, +button:-moz-focusring { + outline: 1px dotted ButtonText; +} +fieldset { + padding: 0.35em 0.75em 0.625em; +} +legend { + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} +progress { + vertical-align: baseline; +} +textarea { + overflow: auto; +} +[type=checkbox], +[type=radio] { + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +[type=number]::-webkit-inner-spin-button, +[type=number]::-webkit-outer-spin-button { + height: auto; +} +[type=search] { + -webkit-appearance: textfield; + outline-offset: -2px; +} +[type=search]::-webkit-search-decoration { + -webkit-appearance: none; +} +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} +details { + display: block; +} +summary { + display: list-item; +} +template { + display: none; +} +[hidden] { + display: none; +} +html { + font-family: sans-serif; +} +.hidden, +[hidden] { + display: none !important; +} +.pure-img { + max-width: 100%; + height: auto; + display: block; +} +.pure-g { + letter-spacing: -0.31em; + text-rendering: optimizespeed; + font-family: + FreeSans, + Arimo, + "Droid Sans", + Helvetica, + Arial, + sans-serif; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -ms-flex-line-pack: start; + align-content: flex-start; +} +@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { + table .pure-g { + display: block; + } +} +.opera-only :-o-prefocus, +.pure-g { + word-spacing: -0.43em; +} +.pure-u { + display: inline-block; + letter-spacing: normal; + word-spacing: normal; + vertical-align: top; + text-rendering: auto; +} +.pure-g [class*=pure-u] { + font-family: sans-serif; +} +.pure-u-1, +.pure-u-1-1, +.pure-u-1-12, +.pure-u-1-2, +.pure-u-1-24, +.pure-u-1-3, +.pure-u-1-4, +.pure-u-1-5, +.pure-u-1-6, +.pure-u-1-8, +.pure-u-10-24, +.pure-u-11-12, +.pure-u-11-24, +.pure-u-12-24, +.pure-u-13-24, +.pure-u-14-24, +.pure-u-15-24, +.pure-u-16-24, +.pure-u-17-24, +.pure-u-18-24, +.pure-u-19-24, +.pure-u-2-24, +.pure-u-2-3, +.pure-u-2-5, +.pure-u-20-24, +.pure-u-21-24, +.pure-u-22-24, +.pure-u-23-24, +.pure-u-24-24, +.pure-u-3-24, +.pure-u-3-4, +.pure-u-3-5, +.pure-u-3-8, +.pure-u-4-24, +.pure-u-4-5, +.pure-u-5-12, +.pure-u-5-24, +.pure-u-5-5, +.pure-u-5-6, +.pure-u-5-8, +.pure-u-6-24, +.pure-u-7-12, +.pure-u-7-24, +.pure-u-7-8, +.pure-u-8-24, +.pure-u-9-24 { + display: inline-block; + letter-spacing: normal; + word-spacing: normal; + vertical-align: top; + text-rendering: auto; +} +.pure-u-1-24 { + width: 4.1667%; +} +.pure-u-1-12, +.pure-u-2-24 { + width: 8.3333%; +} +.pure-u-1-8, +.pure-u-3-24 { + width: 12.5%; +} +.pure-u-1-6, +.pure-u-4-24 { + width: 16.6667%; +} +.pure-u-1-5 { + width: 20%; +} +.pure-u-5-24 { + width: 20.8333%; +} +.pure-u-1-4, +.pure-u-6-24 { + width: 25%; +} +.pure-u-7-24 { + width: 29.1667%; +} +.pure-u-1-3, +.pure-u-8-24 { + width: 33.3333%; +} +.pure-u-3-8, +.pure-u-9-24 { + width: 37.5%; +} +.pure-u-2-5 { + width: 40%; +} +.pure-u-10-24, +.pure-u-5-12 { + width: 41.6667%; +} +.pure-u-11-24 { + width: 45.8333%; +} +.pure-u-1-2, +.pure-u-12-24 { + width: 50%; +} +.pure-u-13-24 { + width: 54.1667%; +} +.pure-u-14-24, +.pure-u-7-12 { + width: 58.3333%; +} +.pure-u-3-5 { + width: 60%; +} +.pure-u-15-24, +.pure-u-5-8 { + width: 62.5%; +} +.pure-u-16-24, +.pure-u-2-3 { + width: 66.6667%; +} +.pure-u-17-24 { + width: 70.8333%; +} +.pure-u-18-24, +.pure-u-3-4 { + width: 75%; +} +.pure-u-19-24 { + width: 79.1667%; +} +.pure-u-4-5 { + width: 80%; +} +.pure-u-20-24, +.pure-u-5-6 { + width: 83.3333%; +} +.pure-u-21-24, +.pure-u-7-8 { + width: 87.5%; +} +.pure-u-11-12, +.pure-u-22-24 { + width: 91.6667%; +} +.pure-u-23-24 { + width: 95.8333%; +} +.pure-u-1, +.pure-u-1-1, +.pure-u-24-24, +.pure-u-5-5 { + width: 100%; +} +.pure-button { + display: inline-block; + line-height: normal; + white-space: nowrap; + vertical-align: middle; + text-align: center; + cursor: pointer; + -webkit-user-drag: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.pure-button::-moz-focus-inner { + padding: 0; + border: 0; +} +.pure-button-group { + letter-spacing: -0.31em; + text-rendering: optimizespeed; +} +.opera-only :-o-prefocus, +.pure-button-group { + word-spacing: -0.43em; +} +.pure-button-group .pure-button { + letter-spacing: normal; + word-spacing: normal; + vertical-align: top; + text-rendering: auto; +} +.pure-button { + font-family: inherit; + font-size: 100%; + padding: 0.5em 1em; + color: rgba(0, 0, 0, 0.8); + border: none transparent; + background-color: #e6e6e6; + text-decoration: none; + border-radius: 2px; +} +.pure-button-hover, +.pure-button:focus, +.pure-button:hover { + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(40%, rgba(0, 0, 0, 0.05)), to(rgba(0, 0, 0, 0.1))); + background-image: + linear-gradient( + transparent, + rgba(0, 0, 0, 0.05) 40%, + rgba(0, 0, 0, 0.1)); +} +.pure-button:focus { + outline: 0; +} +.pure-button-active, +.pure-button:active { + -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset, 0 0 6px rgba(0, 0, 0, 0.2) inset; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset, 0 0 6px rgba(0, 0, 0, 0.2) inset; + border-color: #000; +} +.pure-button-disabled, +.pure-button-disabled:active, +.pure-button-disabled:focus, +.pure-button-disabled:hover, +.pure-button[disabled] { + border: none; + background-image: none; + opacity: 0.4; + cursor: not-allowed; + -webkit-box-shadow: none; + box-shadow: none; + pointer-events: none; +} +.pure-button-hidden { + display: none; +} +.pure-button-primary, +.pure-button-selected, +a.pure-button-primary, +a.pure-button-selected { + background-color: #0078e7; + color: #fff; +} +.pure-button-group .pure-button { + margin: 0; + border-radius: 0; + border-right: 1px solid rgba(0, 0, 0, 0.2); +} +.pure-button-group .pure-button:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +.pure-button-group .pure-button:last-child { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-right: none; +} +.pure-form input[type=color], +.pure-form input[type=date], +.pure-form input[type=datetime-local], +.pure-form input[type=datetime], +.pure-form input[type=email], +.pure-form input[type=month], +.pure-form input[type=number], +.pure-form input[type=password], +.pure-form input[type=search], +.pure-form input[type=tel], +.pure-form input[type=text], +.pure-form input[type=time], +.pure-form input[type=url], +.pure-form input[type=week], +.pure-form select, +.pure-form textarea { + padding: 0.5em 0.6em; + display: inline-block; + border: 1px solid #ccc; + -webkit-box-shadow: inset 0 1px 3px #ddd; + box-shadow: inset 0 1px 3px #ddd; + border-radius: 4px; + vertical-align: middle; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.pure-form input:not([type]) { + padding: 0.5em 0.6em; + display: inline-block; + border: 1px solid #ccc; + -webkit-box-shadow: inset 0 1px 3px #ddd; + box-shadow: inset 0 1px 3px #ddd; + border-radius: 4px; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.pure-form input[type=color] { + padding: 0.2em 0.5em; +} +.pure-form input[type=color]:focus, +.pure-form input[type=date]:focus, +.pure-form input[type=datetime-local]:focus, +.pure-form input[type=datetime]:focus, +.pure-form input[type=email]:focus, +.pure-form input[type=month]:focus, +.pure-form input[type=number]:focus, +.pure-form input[type=password]:focus, +.pure-form input[type=search]:focus, +.pure-form input[type=tel]:focus, +.pure-form input[type=text]:focus, +.pure-form input[type=time]:focus, +.pure-form input[type=url]:focus, +.pure-form input[type=week]:focus, +.pure-form select:focus, +.pure-form textarea:focus { + outline: 0; + border-color: #129fea; +} +.pure-form input:not([type]):focus { + outline: 0; + border-color: #129fea; +} +.pure-form input[type=checkbox]:focus, +.pure-form input[type=file]:focus, +.pure-form input[type=radio]:focus { + outline: thin solid #129fea; + outline: 1px auto #129fea; +} +.pure-form .pure-checkbox, +.pure-form .pure-radio { + margin: 0.5em 0; + display: block; +} +.pure-form input[type=color][disabled], +.pure-form input[type=date][disabled], +.pure-form input[type=datetime-local][disabled], +.pure-form input[type=datetime][disabled], +.pure-form input[type=email][disabled], +.pure-form input[type=month][disabled], +.pure-form input[type=number][disabled], +.pure-form input[type=password][disabled], +.pure-form input[type=search][disabled], +.pure-form input[type=tel][disabled], +.pure-form input[type=text][disabled], +.pure-form input[type=time][disabled], +.pure-form input[type=url][disabled], +.pure-form input[type=week][disabled], +.pure-form select[disabled], +.pure-form textarea[disabled] { + cursor: not-allowed; + background-color: #eaeded; + color: #cad2d3; +} +.pure-form input:not([type])[disabled] { + cursor: not-allowed; + background-color: #eaeded; + color: #cad2d3; +} +.pure-form input[readonly], +.pure-form select[readonly], +.pure-form textarea[readonly] { + background-color: #eee; + color: #777; + border-color: #ccc; +} +.pure-form input:focus:invalid, +.pure-form select:focus:invalid, +.pure-form textarea:focus:invalid { + color: #b94a48; + border-color: #e9322d; +} +.pure-form input[type=checkbox]:focus:invalid:focus, +.pure-form input[type=file]:focus:invalid:focus, +.pure-form input[type=radio]:focus:invalid:focus { + outline-color: #e9322d; +} +.pure-form select { + height: 2.25em; + border: 1px solid #ccc; + background-color: #fff; +} +.pure-form select[multiple] { + height: auto; +} +.pure-form label { + margin: 0.5em 0 0.2em; +} +.pure-form fieldset { + margin: 0; + padding: 0.35em 0 0.75em; + border: 0; +} +.pure-form legend { + display: block; + width: 100%; + padding: 0.3em 0; + margin-bottom: 0.3em; + color: #333; + border-bottom: 1px solid #e5e5e5; +} +.pure-form-stacked input[type=color], +.pure-form-stacked input[type=date], +.pure-form-stacked input[type=datetime-local], +.pure-form-stacked input[type=datetime], +.pure-form-stacked input[type=email], +.pure-form-stacked input[type=file], +.pure-form-stacked input[type=month], +.pure-form-stacked input[type=number], +.pure-form-stacked input[type=password], +.pure-form-stacked input[type=search], +.pure-form-stacked input[type=tel], +.pure-form-stacked input[type=text], +.pure-form-stacked input[type=time], +.pure-form-stacked input[type=url], +.pure-form-stacked input[type=week], +.pure-form-stacked label, +.pure-form-stacked select, +.pure-form-stacked textarea { + display: block; + margin: 0.25em 0; +} +.pure-form-stacked input:not([type]) { + display: block; + margin: 0.25em 0; +} +.pure-form-aligned input, +.pure-form-aligned select, +.pure-form-aligned textarea, +.pure-form-message-inline { + display: inline-block; + vertical-align: middle; +} +.pure-form-aligned textarea { + vertical-align: top; +} +.pure-form-aligned .pure-control-group { + margin-bottom: 0.5em; +} +.pure-form-aligned .pure-control-group label { + text-align: right; + display: inline-block; + vertical-align: middle; + width: 10em; + margin: 0 1em 0 0; +} +.pure-form-aligned .pure-controls { + margin: 1.5em 0 0 11em; +} +.pure-form .pure-input-rounded, +.pure-form input.pure-input-rounded { + border-radius: 2em; + padding: 0.5em 1em; +} +.pure-form .pure-group fieldset { + margin-bottom: 10px; +} +.pure-form .pure-group input, +.pure-form .pure-group textarea { + display: block; + padding: 10px; + margin: 0 0 -1px; + border-radius: 0; + position: relative; + top: -1px; +} +.pure-form .pure-group input:focus, +.pure-form .pure-group textarea:focus { + z-index: 3; +} +.pure-form .pure-group input:first-child, +.pure-form .pure-group textarea:first-child { + top: 1px; + border-radius: 4px 4px 0 0; + margin: 0; +} +.pure-form .pure-group input:first-child:last-child, +.pure-form .pure-group textarea:first-child:last-child { + top: 1px; + border-radius: 4px; + margin: 0; +} +.pure-form .pure-group input:last-child, +.pure-form .pure-group textarea:last-child { + top: -2px; + border-radius: 0 0 4px 4px; + margin: 0; +} +.pure-form .pure-group button { + margin: 0.35em 0; +} +.pure-form .pure-input-1 { + width: 100%; +} +.pure-form .pure-input-3-4 { + width: 75%; +} +.pure-form .pure-input-2-3 { + width: 66%; +} +.pure-form .pure-input-1-2 { + width: 50%; +} +.pure-form .pure-input-1-3 { + width: 33%; +} +.pure-form .pure-input-1-4 { + width: 25%; +} +.pure-form-message-inline { + display: inline-block; + padding-left: 0.3em; + color: #666; + vertical-align: middle; + font-size: 0.875em; +} +.pure-form-message { + display: block; + color: #666; + font-size: 0.875em; +} +@media only screen and (max-width: 480px) { + .pure-form button[type=submit] { + margin: 0.7em 0 0; + } + .pure-form input:not([type]), + .pure-form input[type=color], + .pure-form input[type=date], + .pure-form input[type=datetime-local], + .pure-form input[type=datetime], + .pure-form input[type=email], + .pure-form input[type=month], + .pure-form input[type=number], + .pure-form input[type=password], + .pure-form input[type=search], + .pure-form input[type=tel], + .pure-form input[type=text], + .pure-form input[type=time], + .pure-form input[type=url], + .pure-form input[type=week], + .pure-form label { + margin-bottom: 0.3em; + display: block; + } + .pure-group input:not([type]), + .pure-group input[type=color], + .pure-group input[type=date], + .pure-group input[type=datetime-local], + .pure-group input[type=datetime], + .pure-group input[type=email], + .pure-group input[type=month], + .pure-group input[type=number], + .pure-group input[type=password], + .pure-group input[type=search], + .pure-group input[type=tel], + .pure-group input[type=text], + .pure-group input[type=time], + .pure-group input[type=url], + .pure-group input[type=week] { + margin-bottom: 0; + } + .pure-form-aligned .pure-control-group label { + margin-bottom: 0.3em; + text-align: left; + display: block; + width: 100%; + } + .pure-form-aligned .pure-controls { + margin: 1.5em 0 0 0; + } + .pure-form-message, + .pure-form-message-inline { + display: block; + font-size: 0.75em; + padding: 0.2em 0 0.8em; + } +} +.pure-menu { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.pure-menu-fixed { + position: fixed; + left: 0; + top: 0; + z-index: 3; +} +.pure-menu-item, +.pure-menu-list { + position: relative; +} +.pure-menu-list { + list-style: none; + margin: 0; + padding: 0; +} +.pure-menu-item { + padding: 0; + margin: 0; + height: 100%; +} +.pure-menu-heading, +.pure-menu-link { + display: block; + text-decoration: none; + white-space: nowrap; +} +.pure-menu-horizontal { + width: 100%; + white-space: nowrap; +} +.pure-menu-horizontal .pure-menu-list { + display: inline-block; +} +.pure-menu-horizontal .pure-menu-heading, +.pure-menu-horizontal .pure-menu-item, +.pure-menu-horizontal .pure-menu-separator { + display: inline-block; + vertical-align: middle; +} +.pure-menu-item .pure-menu-item { + display: block; +} +.pure-menu-children { + display: none; + position: absolute; + left: 100%; + top: 0; + margin: 0; + padding: 0; + z-index: 3; +} +.pure-menu-horizontal .pure-menu-children { + left: 0; + top: auto; + width: inherit; +} +.pure-menu-active > .pure-menu-children, +.pure-menu-allow-hover:hover > .pure-menu-children { + display: block; + position: absolute; +} +.pure-menu-has-children > .pure-menu-link:after { + padding-left: 0.5em; + content: "\25b8"; + font-size: small; +} +.pure-menu-horizontal .pure-menu-has-children > .pure-menu-link:after { + content: "\25be"; +} +.pure-menu-scrollable { + overflow-y: scroll; + overflow-x: hidden; +} +.pure-menu-scrollable .pure-menu-list { + display: block; +} +.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list { + display: inline-block; +} +.pure-menu-horizontal.pure-menu-scrollable { + white-space: nowrap; + overflow-y: hidden; + overflow-x: auto; + padding: 0.5em 0; +} +.pure-menu-horizontal .pure-menu-children .pure-menu-separator, +.pure-menu-separator { + background-color: #ccc; + height: 1px; + margin: 0.3em 0; +} +.pure-menu-horizontal .pure-menu-separator { + width: 1px; + height: 1.3em; + margin: 0 0.3em; +} +.pure-menu-horizontal .pure-menu-children .pure-menu-separator { + display: block; + width: auto; +} +.pure-menu-heading { + text-transform: uppercase; + color: #565d64; +} +.pure-menu-link { + color: #777; +} +.pure-menu-children { + background-color: #fff; +} +.pure-menu-disabled, +.pure-menu-heading, +.pure-menu-link { + padding: 0.5em 1em; +} +.pure-menu-disabled { + opacity: 0.5; +} +.pure-menu-disabled .pure-menu-link:hover { + background-color: transparent; +} +.pure-menu-active > .pure-menu-link, +.pure-menu-link:focus, +.pure-menu-link:hover { + background-color: #eee; +} +.pure-menu-selected > .pure-menu-link, +.pure-menu-selected > .pure-menu-link:visited { + color: #000; +} +.pure-table { + border-collapse: collapse; + border-spacing: 0; + empty-cells: show; + border: 1px solid #cbcbcb; +} +.pure-table caption { + color: #000; + font: italic 85%/1 arial, sans-serif; + padding: 1em 0; + text-align: center; +} +.pure-table td, +.pure-table th { + border-left: 1px solid #cbcbcb; + border-width: 0 0 0 1px; + font-size: inherit; + margin: 0; + overflow: visible; + padding: 0.5em 1em; +} +.pure-table thead { + background-color: #e0e0e0; + color: #000; + text-align: left; + vertical-align: bottom; +} +.pure-table td { + background-color: transparent; +} +.pure-table-odd td { + background-color: #f2f2f2; +} +.pure-table-striped tr:nth-child(2n-1) td { + background-color: #f2f2f2; +} +.pure-table-bordered td { + border-bottom: 1px solid #cbcbcb; +} +.pure-table-bordered tbody > tr:last-child > td { + border-bottom-width: 0; +} +.pure-table-horizontal td, +.pure-table-horizontal th { + border-width: 0 0 1px 0; + border-bottom: 1px solid #cbcbcb; +} +.pure-table-horizontal tbody > tr:last-child > td { + border-bottom-width: 0; +} + +/* src/css/style.css */ +.talerbar { + text-align: center; +} +.tt { + font-family: + "Lucida Console", + Monaco, + monospace; +} +.content { + overflow-x: auto; + padding-left: 15%; + padding-right: 15%; +} +.qr { + margin: auto; + text-align: center; +} +.qrtext { + width: max-content; + margin: auto; + transition: font-size 0.2s; + font-family: + "Lucida Console", + Monaco, + monospace; + font-size: 0.5em; +} +.qrtext:hover { + font-size: 1em; +} +.talerbar { + margin: 0; + bottom: 0; + background-color: #033; + color: white; + width: 100%; + padding: 1em; + overflow: auto; +} +body { + overflow-y: scroll; +} +@media (min-width: 500px) { + .content { + padding-bottom: 2em; + overflow-y: auto; + } +} +#main a:link, +#main a:visited, +#main a:hover, +#main a:active { + color: black; +} +/*! + Pure v2.0.3 + Copyright 2013 Yahoo! + Licensed under the BSD License. + https://github.com/pure-cs s/pure/blob/master/LICENSE.md +*/ +/*! + normalize.cs s v | MIT License | git.io/normalize + Copyright (c) Nicolas Gallagher and Jonathan Neal +*/ +/*! normalize.cs s v8.0.1 | MIT License | github.com/necolas/normalize.cs s */ +/*! + Pure v2.0.3 + Copyright 2013 Yahoo! + Licensed under the BSD License. + https://github.com/pure-ss/pure/blob/master/LICENSE.md +*/ +/*! + normalize.cs v | MIT License | git.io/normalize + Copyright (c) Nicolas Gallagher and Jonathan Neal +*/ +/*! normalize.ss v8.0.1 | MIT License | github.com/necolas/normalize.cs */ +</style> + </head> + <script id="built_time_data"> + </script> + <body> + <div class="p1b3vqup"><section><h1>Pay with Taler</h1><p>Scan this QR code with your mobile wallet:</p><div class="q1ma0zxq"><svg width='100mm' height='100mm' viewBox='0 0 37 37' version='1.1' xmlns='http://www.w3.org/2000/svg' style='shape-rendering: crispedges;'> + <rect x=0 y=0 width=1 height=1 /> + <rect x=1 y=0 width=1 height=1 /> + <rect x=2 y=0 width=1 height=1 /> + <rect x=3 y=0 width=1 height=1 /> + <rect x=4 y=0 width=1 height=1 /> + <rect x=5 y=0 width=1 height=1 /> + <rect x=6 y=0 width=1 height=1 /> + <rect x=8 y=0 width=1 height=1 /> + <rect x=11 y=0 width=1 height=1 /> + <rect x=12 y=0 width=1 height=1 /> + <rect x=13 y=0 width=1 height=1 /> + <rect x=17 y=0 width=1 height=1 /> + <rect x=20 y=0 width=1 height=1 /> + <rect x=21 y=0 width=1 height=1 /> + <rect x=23 y=0 width=1 height=1 /> + <rect x=28 y=0 width=1 height=1 /> + <rect x=30 y=0 width=1 height=1 /> + <rect x=31 y=0 width=1 height=1 /> + <rect x=32 y=0 width=1 height=1 /> + <rect x=33 y=0 width=1 height=1 /> + <rect x=34 y=0 width=1 height=1 /> + <rect x=35 y=0 width=1 height=1 /> + <rect x=36 y=0 width=1 height=1 /> + <rect x=0 y=1 width=1 height=1 /> + <rect x=6 y=1 width=1 height=1 /> + <rect x=8 y=1 width=1 height=1 /> + <rect x=11 y=1 width=1 height=1 /> + <rect x=12 y=1 width=1 height=1 /> + <rect x=13 y=1 width=1 height=1 /> + <rect x=18 y=1 width=1 height=1 /> + <rect x=19 y=1 width=1 height=1 /> + <rect x=20 y=1 width=1 height=1 /> + <rect x=21 y=1 width=1 height=1 /> + <rect x=25 y=1 width=1 height=1 /> + <rect x=26 y=1 width=1 height=1 /> + <rect x=28 y=1 width=1 height=1 /> + <rect x=30 y=1 width=1 height=1 /> + <rect x=36 y=1 width=1 height=1 /> + <rect x=0 y=2 width=1 height=1 /> + <rect x=2 y=2 width=1 height=1 /> + <rect x=3 y=2 width=1 height=1 /> + <rect x=4 y=2 width=1 height=1 /> + <rect x=6 y=2 width=1 height=1 /> + <rect x=8 y=2 width=1 height=1 /> + <rect x=9 y=2 width=1 height=1 /> + <rect x=14 y=2 width=1 height=1 /> + <rect x=15 y=2 width=1 height=1 /> + <rect x=16 y=2 width=1 height=1 /> + <rect x=18 y=2 width=1 height=1 /> + <rect x=20 y=2 width=1 height=1 /> + <rect x=21 y=2 width=1 height=1 /> + <rect x=24 y=2 width=1 height=1 /> + <rect x=25 y=2 width=1 height=1 /> + <rect x=26 y=2 width=1 height=1 /> + <rect x=27 y=2 width=1 height=1 /> + <rect x=30 y=2 width=1 height=1 /> + <rect x=32 y=2 width=1 height=1 /> + <rect x=33 y=2 width=1 height=1 /> + <rect x=34 y=2 width=1 height=1 /> + <rect x=36 y=2 width=1 height=1 /> + <rect x=0 y=3 width=1 height=1 /> + <rect x=2 y=3 width=1 height=1 /> + <rect x=3 y=3 width=1 height=1 /> + <rect x=4 y=3 width=1 height=1 /> + <rect x=6 y=3 width=1 height=1 /> + <rect x=10 y=3 width=1 height=1 /> + <rect x=11 y=3 width=1 height=1 /> + <rect x=13 y=3 width=1 height=1 /> + <rect x=14 y=3 width=1 height=1 /> + <rect x=16 y=3 width=1 height=1 /> + <rect x=17 y=3 width=1 height=1 /> + <rect x=18 y=3 width=1 height=1 /> + <rect x=21 y=3 width=1 height=1 /> + <rect x=25 y=3 width=1 height=1 /> + <rect x=26 y=3 width=1 height=1 /> + <rect x=27 y=3 width=1 height=1 /> + <rect x=30 y=3 width=1 height=1 /> + <rect x=32 y=3 width=1 height=1 /> + <rect x=33 y=3 width=1 height=1 /> + <rect x=34 y=3 width=1 height=1 /> + <rect x=36 y=3 width=1 height=1 /> + <rect x=0 y=4 width=1 height=1 /> + <rect x=2 y=4 width=1 height=1 /> + <rect x=3 y=4 width=1 height=1 /> + <rect x=4 y=4 width=1 height=1 /> + <rect x=6 y=4 width=1 height=1 /> + <rect x=8 y=4 width=1 height=1 /> + <rect x=13 y=4 width=1 height=1 /> + <rect x=15 y=4 width=1 height=1 /> + <rect x=16 y=4 width=1 height=1 /> + <rect x=17 y=4 width=1 height=1 /> + <rect x=19 y=4 width=1 height=1 /> + <rect x=20 y=4 width=1 height=1 /> + <rect x=21 y=4 width=1 height=1 /> + <rect x=22 y=4 width=1 height=1 /> + <rect x=25 y=4 width=1 height=1 /> + <rect x=26 y=4 width=1 height=1 /> + <rect x=28 y=4 width=1 height=1 /> + <rect x=30 y=4 width=1 height=1 /> + <rect x=32 y=4 width=1 height=1 /> + <rect x=33 y=4 width=1 height=1 /> + <rect x=34 y=4 width=1 height=1 /> + <rect x=36 y=4 width=1 height=1 /> + <rect x=0 y=5 width=1 height=1 /> + <rect x=6 y=5 width=1 height=1 /> + <rect x=10 y=5 width=1 height=1 /> + <rect x=11 y=5 width=1 height=1 /> + <rect x=13 y=5 width=1 height=1 /> + <rect x=14 y=5 width=1 height=1 /> + <rect x=16 y=5 width=1 height=1 /> + <rect x=18 y=5 width=1 height=1 /> + <rect x=21 y=5 width=1 height=1 /> + <rect x=22 y=5 width=1 height=1 /> + <rect x=23 y=5 width=1 height=1 /> + <rect x=30 y=5 width=1 height=1 /> + <rect x=36 y=5 width=1 height=1 /> + <rect x=0 y=6 width=1 height=1 /> + <rect x=1 y=6 width=1 height=1 /> + <rect x=2 y=6 width=1 height=1 /> + <rect x=3 y=6 width=1 height=1 /> + <rect x=4 y=6 width=1 height=1 /> + <rect x=5 y=6 width=1 height=1 /> + <rect x=6 y=6 width=1 height=1 /> + <rect x=8 y=6 width=1 height=1 /> + <rect x=10 y=6 width=1 height=1 /> + <rect x=12 y=6 width=1 height=1 /> + <rect x=14 y=6 width=1 height=1 /> + <rect x=16 y=6 width=1 height=1 /> + <rect x=18 y=6 width=1 height=1 /> + <rect x=20 y=6 width=1 height=1 /> + <rect x=22 y=6 width=1 height=1 /> + <rect x=24 y=6 width=1 height=1 /> + <rect x=26 y=6 width=1 height=1 /> + <rect x=28 y=6 width=1 height=1 /> + <rect x=30 y=6 width=1 height=1 /> + <rect x=31 y=6 width=1 height=1 /> + <rect x=32 y=6 width=1 height=1 /> + <rect x=33 y=6 width=1 height=1 /> + <rect x=34 y=6 width=1 height=1 /> + <rect x=35 y=6 width=1 height=1 /> + <rect x=36 y=6 width=1 height=1 /> + <rect x=9 y=7 width=1 height=1 /> + <rect x=11 y=7 width=1 height=1 /> + <rect x=12 y=7 width=1 height=1 /> + <rect x=16 y=7 width=1 height=1 /> + <rect x=20 y=7 width=1 height=1 /> + <rect x=23 y=7 width=1 height=1 /> + <rect x=25 y=7 width=1 height=1 /> + <rect x=0 y=8 width=1 height=1 /> + <rect x=3 y=8 width=1 height=1 /> + <rect x=4 y=8 width=1 height=1 /> + <rect x=5 y=8 width=1 height=1 /> + <rect x=6 y=8 width=1 height=1 /> + <rect x=7 y=8 width=1 height=1 /> + <rect x=8 y=8 width=1 height=1 /> + <rect x=10 y=8 width=1 height=1 /> + <rect x=13 y=8 width=1 height=1 /> + <rect x=14 y=8 width=1 height=1 /> + <rect x=16 y=8 width=1 height=1 /> + <rect x=17 y=8 width=1 height=1 /> + <rect x=18 y=8 width=1 height=1 /> + <rect x=19 y=8 width=1 height=1 /> + <rect x=20 y=8 width=1 height=1 /> + <rect x=21 y=8 width=1 height=1 /> + <rect x=23 y=8 width=1 height=1 /> + <rect x=25 y=8 width=1 height=1 /> + <rect x=26 y=8 width=1 height=1 /> + <rect x=27 y=8 width=1 height=1 /> + <rect x=29 y=8 width=1 height=1 /> + <rect x=32 y=8 width=1 height=1 /> + <rect x=34 y=8 width=1 height=1 /> + <rect x=35 y=8 width=1 height=1 /> + <rect x=36 y=8 width=1 height=1 /> + <rect x=0 y=9 width=1 height=1 /> + <rect x=1 y=9 width=1 height=1 /> + <rect x=3 y=9 width=1 height=1 /> + <rect x=4 y=9 width=1 height=1 /> + <rect x=9 y=9 width=1 height=1 /> + <rect x=10 y=9 width=1 height=1 /> + <rect x=12 y=9 width=1 height=1 /> + <rect x=13 y=9 width=1 height=1 /> + <rect x=14 y=9 width=1 height=1 /> + <rect x=16 y=9 width=1 height=1 /> + <rect x=25 y=9 width=1 height=1 /> + <rect x=26 y=9 width=1 height=1 /> + <rect x=27 y=9 width=1 height=1 /> + <rect x=28 y=9 width=1 height=1 /> + <rect x=30 y=9 width=1 height=1 /> + <rect x=31 y=9 width=1 height=1 /> + <rect x=32 y=9 width=1 height=1 /> + <rect x=34 y=9 width=1 height=1 /> + <rect x=0 y=10 width=1 height=1 /> + <rect x=2 y=10 width=1 height=1 /> + <rect x=6 y=10 width=1 height=1 /> + <rect x=7 y=10 width=1 height=1 /> + <rect x=8 y=10 width=1 height=1 /> + <rect x=10 y=10 width=1 height=1 /> + <rect x=11 y=10 width=1 height=1 /> + <rect x=12 y=10 width=1 height=1 /> + <rect x=13 y=10 width=1 height=1 /> + <rect x=15 y=10 width=1 height=1 /> + <rect x=16 y=10 width=1 height=1 /> + <rect x=18 y=10 width=1 height=1 /> + <rect x=20 y=10 width=1 height=1 /> + <rect x=21 y=10 width=1 height=1 /> + <rect x=22 y=10 width=1 height=1 /> + <rect x=23 y=10 width=1 height=1 /> + <rect x=25 y=10 width=1 height=1 /> + <rect x=27 y=10 width=1 height=1 /> + <rect x=28 y=10 width=1 height=1 /> + <rect x=30 y=10 width=1 height=1 /> + <rect x=31 y=10 width=1 height=1 /> + <rect x=32 y=10 width=1 height=1 /> + <rect x=33 y=10 width=1 height=1 /> + <rect x=34 y=10 width=1 height=1 /> + <rect x=36 y=10 width=1 height=1 /> + <rect x=1 y=11 width=1 height=1 /> + <rect x=2 y=11 width=1 height=1 /> + <rect x=4 y=11 width=1 height=1 /> + <rect x=5 y=11 width=1 height=1 /> + <rect x=8 y=11 width=1 height=1 /> + <rect x=9 y=11 width=1 height=1 /> + <rect x=12 y=11 width=1 height=1 /> + <rect x=13 y=11 width=1 height=1 /> + <rect x=17 y=11 width=1 height=1 /> + <rect x=18 y=11 width=1 height=1 /> + <rect x=20 y=11 width=1 height=1 /> + <rect x=22 y=11 width=1 height=1 /> + <rect x=24 y=11 width=1 height=1 /> + <rect x=26 y=11 width=1 height=1 /> + <rect x=27 y=11 width=1 height=1 /> + <rect x=28 y=11 width=1 height=1 /> + <rect x=29 y=11 width=1 height=1 /> + <rect x=30 y=11 width=1 height=1 /> + <rect x=31 y=11 width=1 height=1 /> + <rect x=33 y=11 width=1 height=1 /> + <rect x=34 y=11 width=1 height=1 /> + <rect x=36 y=11 width=1 height=1 /> + <rect x=0 y=12 width=1 height=1 /> + <rect x=1 y=12 width=1 height=1 /> + <rect x=6 y=12 width=1 height=1 /> + <rect x=7 y=12 width=1 height=1 /> + <rect x=8 y=12 width=1 height=1 /> + <rect x=9 y=12 width=1 height=1 /> + <rect x=10 y=12 width=1 height=1 /> + <rect x=11 y=12 width=1 height=1 /> + <rect x=18 y=12 width=1 height=1 /> + <rect x=19 y=12 width=1 height=1 /> + <rect x=22 y=12 width=1 height=1 /> + <rect x=23 y=12 width=1 height=1 /> + <rect x=24 y=12 width=1 height=1 /> + <rect x=27 y=12 width=1 height=1 /> + <rect x=28 y=12 width=1 height=1 /> + <rect x=30 y=12 width=1 height=1 /> + <rect x=34 y=12 width=1 height=1 /> + <rect x=35 y=12 width=1 height=1 /> + <rect x=36 y=12 width=1 height=1 /> + <rect x=0 y=13 width=1 height=1 /> + <rect x=1 y=13 width=1 height=1 /> + <rect x=2 y=13 width=1 height=1 /> + <rect x=8 y=13 width=1 height=1 /> + <rect x=9 y=13 width=1 height=1 /> + <rect x=10 y=13 width=1 height=1 /> + <rect x=13 y=13 width=1 height=1 /> + <rect x=14 y=13 width=1 height=1 /> + <rect x=15 y=13 width=1 height=1 /> + <rect x=20 y=13 width=1 height=1 /> + <rect x=21 y=13 width=1 height=1 /> + <rect x=22 y=13 width=1 height=1 /> + <rect x=23 y=13 width=1 height=1 /> + <rect x=26 y=13 width=1 height=1 /> + <rect x=27 y=13 width=1 height=1 /> + <rect x=28 y=13 width=1 height=1 /> + <rect x=29 y=13 width=1 height=1 /> + <rect x=32 y=13 width=1 height=1 /> + <rect x=33 y=13 width=1 height=1 /> + <rect x=34 y=13 width=1 height=1 /> + <rect x=36 y=13 width=1 height=1 /> + <rect x=0 y=14 width=1 height=1 /> + <rect x=1 y=14 width=1 height=1 /> + <rect x=2 y=14 width=1 height=1 /> + <rect x=4 y=14 width=1 height=1 /> + <rect x=6 y=14 width=1 height=1 /> + <rect x=7 y=14 width=1 height=1 /> + <rect x=9 y=14 width=1 height=1 /> + <rect x=11 y=14 width=1 height=1 /> + <rect x=14 y=14 width=1 height=1 /> + <rect x=15 y=14 width=1 height=1 /> + <rect x=19 y=14 width=1 height=1 /> + <rect x=20 y=14 width=1 height=1 /> + <rect x=21 y=14 width=1 height=1 /> + <rect x=22 y=14 width=1 height=1 /> + <rect x=24 y=14 width=1 height=1 /> + <rect x=27 y=14 width=1 height=1 /> + <rect x=28 y=14 width=1 height=1 /> + <rect x=29 y=14 width=1 height=1 /> + <rect x=30 y=14 width=1 height=1 /> + <rect x=31 y=14 width=1 height=1 /> + <rect x=33 y=14 width=1 height=1 /> + <rect x=34 y=14 width=1 height=1 /> + <rect x=35 y=14 width=1 height=1 /> + <rect x=36 y=14 width=1 height=1 /> + <rect x=0 y=15 width=1 height=1 /> + <rect x=4 y=15 width=1 height=1 /> + <rect x=9 y=15 width=1 height=1 /> + <rect x=13 y=15 width=1 height=1 /> + <rect x=14 y=15 width=1 height=1 /> + <rect x=19 y=15 width=1 height=1 /> + <rect x=22 y=15 width=1 height=1 /> + <rect x=24 y=15 width=1 height=1 /> + <rect x=28 y=15 width=1 height=1 /> + <rect x=31 y=15 width=1 height=1 /> + <rect x=32 y=15 width=1 height=1 /> + <rect x=33 y=15 width=1 height=1 /> + <rect x=34 y=15 width=1 height=1 /> + <rect x=36 y=15 width=1 height=1 /> + <rect x=0 y=16 width=1 height=1 /> + <rect x=2 y=16 width=1 height=1 /> + <rect x=6 y=16 width=1 height=1 /> + <rect x=8 y=16 width=1 height=1 /> + <rect x=9 y=16 width=1 height=1 /> + <rect x=10 y=16 width=1 height=1 /> + <rect x=11 y=16 width=1 height=1 /> + <rect x=14 y=16 width=1 height=1 /> + <rect x=17 y=16 width=1 height=1 /> + <rect x=19 y=16 width=1 height=1 /> + <rect x=20 y=16 width=1 height=1 /> + <rect x=21 y=16 width=1 height=1 /> + <rect x=22 y=16 width=1 height=1 /> + <rect x=24 y=16 width=1 height=1 /> + <rect x=25 y=16 width=1 height=1 /> + <rect x=26 y=16 width=1 height=1 /> + <rect x=27 y=16 width=1 height=1 /> + <rect x=30 y=16 width=1 height=1 /> + <rect x=31 y=16 width=1 height=1 /> + <rect x=33 y=16 width=1 height=1 /> + <rect x=34 y=16 width=1 height=1 /> + <rect x=35 y=16 width=1 height=1 /> + <rect x=0 y=17 width=1 height=1 /> + <rect x=1 y=17 width=1 height=1 /> + <rect x=3 y=17 width=1 height=1 /> + <rect x=4 y=17 width=1 height=1 /> + <rect x=7 y=17 width=1 height=1 /> + <rect x=8 y=17 width=1 height=1 /> + <rect x=9 y=17 width=1 height=1 /> + <rect x=11 y=17 width=1 height=1 /> + <rect x=12 y=17 width=1 height=1 /> + <rect x=14 y=17 width=1 height=1 /> + <rect x=17 y=17 width=1 height=1 /> + <rect x=20 y=17 width=1 height=1 /> + <rect x=21 y=17 width=1 height=1 /> + <rect x=23 y=17 width=1 height=1 /> + <rect x=25 y=17 width=1 height=1 /> + <rect x=26 y=17 width=1 height=1 /> + <rect x=27 y=17 width=1 height=1 /> + <rect x=29 y=17 width=1 height=1 /> + <rect x=30 y=17 width=1 height=1 /> + <rect x=34 y=17 width=1 height=1 /> + <rect x=35 y=17 width=1 height=1 /> + <rect x=3 y=18 width=1 height=1 /> + <rect x=4 y=18 width=1 height=1 /> + <rect x=5 y=18 width=1 height=1 /> + <rect x=6 y=18 width=1 height=1 /> + <rect x=7 y=18 width=1 height=1 /> + <rect x=8 y=18 width=1 height=1 /> + <rect x=9 y=18 width=1 height=1 /> + <rect x=10 y=18 width=1 height=1 /> + <rect x=11 y=18 width=1 height=1 /> + <rect x=12 y=18 width=1 height=1 /> + <rect x=14 y=18 width=1 height=1 /> + <rect x=15 y=18 width=1 height=1 /> + <rect x=16 y=18 width=1 height=1 /> + <rect x=17 y=18 width=1 height=1 /> + <rect x=19 y=18 width=1 height=1 /> + <rect x=20 y=18 width=1 height=1 /> + <rect x=22 y=18 width=1 height=1 /> + <rect x=23 y=18 width=1 height=1 /> + <rect x=25 y=18 width=1 height=1 /> + <rect x=27 y=18 width=1 height=1 /> + <rect x=29 y=18 width=1 height=1 /> + <rect x=30 y=18 width=1 height=1 /> + <rect x=31 y=18 width=1 height=1 /> + <rect x=32 y=18 width=1 height=1 /> + <rect x=36 y=18 width=1 height=1 /> + <rect x=0 y=19 width=1 height=1 /> + <rect x=4 y=19 width=1 height=1 /> + <rect x=8 y=19 width=1 height=1 /> + <rect x=9 y=19 width=1 height=1 /> + <rect x=12 y=19 width=1 height=1 /> + <rect x=13 y=19 width=1 height=1 /> + <rect x=18 y=19 width=1 height=1 /> + <rect x=19 y=19 width=1 height=1 /> + <rect x=20 y=19 width=1 height=1 /> + <rect x=25 y=19 width=1 height=1 /> + <rect x=26 y=19 width=1 height=1 /> + <rect x=27 y=19 width=1 height=1 /> + <rect x=28 y=19 width=1 height=1 /> + <rect x=30 y=19 width=1 height=1 /> + <rect x=32 y=19 width=1 height=1 /> + <rect x=36 y=19 width=1 height=1 /> + <rect x=0 y=20 width=1 height=1 /> + <rect x=1 y=20 width=1 height=1 /> + <rect x=4 y=20 width=1 height=1 /> + <rect x=5 y=20 width=1 height=1 /> + <rect x=6 y=20 width=1 height=1 /> + <rect x=7 y=20 width=1 height=1 /> + <rect x=8 y=20 width=1 height=1 /> + <rect x=10 y=20 width=1 height=1 /> + <rect x=15 y=20 width=1 height=1 /> + <rect x=16 y=20 width=1 height=1 /> + <rect x=17 y=20 width=1 height=1 /> + <rect x=18 y=20 width=1 height=1 /> + <rect x=22 y=20 width=1 height=1 /> + <rect x=24 y=20 width=1 height=1 /> + <rect x=26 y=20 width=1 height=1 /> + <rect x=30 y=20 width=1 height=1 /> + <rect x=32 y=20 width=1 height=1 /> + <rect x=35 y=20 width=1 height=1 /> + <rect x=36 y=20 width=1 height=1 /> + <rect x=2 y=21 width=1 height=1 /> + <rect x=8 y=21 width=1 height=1 /> + <rect x=9 y=21 width=1 height=1 /> + <rect x=13 y=21 width=1 height=1 /> + <rect x=15 y=21 width=1 height=1 /> + <rect x=16 y=21 width=1 height=1 /> + <rect x=18 y=21 width=1 height=1 /> + <rect x=19 y=21 width=1 height=1 /> + <rect x=20 y=21 width=1 height=1 /> + <rect x=21 y=21 width=1 height=1 /> + <rect x=23 y=21 width=1 height=1 /> + <rect x=25 y=21 width=1 height=1 /> + <rect x=26 y=21 width=1 height=1 /> + <rect x=27 y=21 width=1 height=1 /> + <rect x=29 y=21 width=1 height=1 /> + <rect x=31 y=21 width=1 height=1 /> + <rect x=32 y=21 width=1 height=1 /> + <rect x=33 y=21 width=1 height=1 /> + <rect x=34 y=21 width=1 height=1 /> + <rect x=35 y=21 width=1 height=1 /> + <rect x=1 y=22 width=1 height=1 /> + <rect x=3 y=22 width=1 height=1 /> + <rect x=5 y=22 width=1 height=1 /> + <rect x=6 y=22 width=1 height=1 /> + <rect x=7 y=22 width=1 height=1 /> + <rect x=9 y=22 width=1 height=1 /> + <rect x=10 y=22 width=1 height=1 /> + <rect x=13 y=22 width=1 height=1 /> + <rect x=15 y=22 width=1 height=1 /> + <rect x=16 y=22 width=1 height=1 /> + <rect x=21 y=22 width=1 height=1 /> + <rect x=23 y=22 width=1 height=1 /> + <rect x=24 y=22 width=1 height=1 /> + <rect x=26 y=22 width=1 height=1 /> + <rect x=27 y=22 width=1 height=1 /> + <rect x=28 y=22 width=1 height=1 /> + <rect x=30 y=22 width=1 height=1 /> + <rect x=32 y=22 width=1 height=1 /> + <rect x=35 y=22 width=1 height=1 /> + <rect x=36 y=22 width=1 height=1 /> + <rect x=0 y=23 width=1 height=1 /> + <rect x=1 y=23 width=1 height=1 /> + <rect x=2 y=23 width=1 height=1 /> + <rect x=3 y=23 width=1 height=1 /> + <rect x=11 y=23 width=1 height=1 /> + <rect x=12 y=23 width=1 height=1 /> + <rect x=17 y=23 width=1 height=1 /> + <rect x=18 y=23 width=1 height=1 /> + <rect x=19 y=23 width=1 height=1 /> + <rect x=23 y=23 width=1 height=1 /> + <rect x=26 y=23 width=1 height=1 /> + <rect x=27 y=23 width=1 height=1 /> + <rect x=29 y=23 width=1 height=1 /> + <rect x=30 y=23 width=1 height=1 /> + <rect x=32 y=23 width=1 height=1 /> + <rect x=33 y=23 width=1 height=1 /> + <rect x=34 y=23 width=1 height=1 /> + <rect x=0 y=24 width=1 height=1 /> + <rect x=1 y=24 width=1 height=1 /> + <rect x=2 y=24 width=1 height=1 /> + <rect x=5 y=24 width=1 height=1 /> + <rect x=6 y=24 width=1 height=1 /> + <rect x=10 y=24 width=1 height=1 /> + <rect x=13 y=24 width=1 height=1 /> + <rect x=14 y=24 width=1 height=1 /> + <rect x=15 y=24 width=1 height=1 /> + <rect x=17 y=24 width=1 height=1 /> + <rect x=19 y=24 width=1 height=1 /> + <rect x=21 y=24 width=1 height=1 /> + <rect x=26 y=24 width=1 height=1 /> + <rect x=29 y=24 width=1 height=1 /> + <rect x=30 y=24 width=1 height=1 /> + <rect x=31 y=24 width=1 height=1 /> + <rect x=32 y=24 width=1 height=1 /> + <rect x=35 y=24 width=1 height=1 /> + <rect x=36 y=24 width=1 height=1 /> + <rect x=0 y=25 width=1 height=1 /> + <rect x=1 y=25 width=1 height=1 /> + <rect x=3 y=25 width=1 height=1 /> + <rect x=5 y=25 width=1 height=1 /> + <rect x=7 y=25 width=1 height=1 /> + <rect x=8 y=25 width=1 height=1 /> + <rect x=15 y=25 width=1 height=1 /> + <rect x=17 y=25 width=1 height=1 /> + <rect x=20 y=25 width=1 height=1 /> + <rect x=21 y=25 width=1 height=1 /> + <rect x=23 y=25 width=1 height=1 /> + <rect x=24 y=25 width=1 height=1 /> + <rect x=27 y=25 width=1 height=1 /> + <rect x=29 y=25 width=1 height=1 /> + <rect x=32 y=25 width=1 height=1 /> + <rect x=34 y=25 width=1 height=1 /> + <rect x=35 y=25 width=1 height=1 /> + <rect x=0 y=26 width=1 height=1 /> + <rect x=1 y=26 width=1 height=1 /> + <rect x=2 y=26 width=1 height=1 /> + <rect x=4 y=26 width=1 height=1 /> + <rect x=5 y=26 width=1 height=1 /> + <rect x=6 y=26 width=1 height=1 /> + <rect x=7 y=26 width=1 height=1 /> + <rect x=8 y=26 width=1 height=1 /> + <rect x=9 y=26 width=1 height=1 /> + <rect x=10 y=26 width=1 height=1 /> + <rect x=14 y=26 width=1 height=1 /> + <rect x=15 y=26 width=1 height=1 /> + <rect x=17 y=26 width=1 height=1 /> + <rect x=19 y=26 width=1 height=1 /> + <rect x=21 y=26 width=1 height=1 /> + <rect x=22 y=26 width=1 height=1 /> + <rect x=26 y=26 width=1 height=1 /> + <rect x=27 y=26 width=1 height=1 /> + <rect x=32 y=26 width=1 height=1 /> + <rect x=34 y=26 width=1 height=1 /> + <rect x=35 y=26 width=1 height=1 /> + <rect x=36 y=26 width=1 height=1 /> + <rect x=0 y=27 width=1 height=1 /> + <rect x=4 y=27 width=1 height=1 /> + <rect x=5 y=27 width=1 height=1 /> + <rect x=8 y=27 width=1 height=1 /> + <rect x=10 y=27 width=1 height=1 /> + <rect x=11 y=27 width=1 height=1 /> + <rect x=13 y=27 width=1 height=1 /> + <rect x=16 y=27 width=1 height=1 /> + <rect x=18 y=27 width=1 height=1 /> + <rect x=22 y=27 width=1 height=1 /> + <rect x=24 y=27 width=1 height=1 /> + <rect x=27 y=27 width=1 height=1 /> + <rect x=34 y=27 width=1 height=1 /> + <rect x=36 y=27 width=1 height=1 /> + <rect x=0 y=28 width=1 height=1 /> + <rect x=6 y=28 width=1 height=1 /> + <rect x=10 y=28 width=1 height=1 /> + <rect x=11 y=28 width=1 height=1 /> + <rect x=14 y=28 width=1 height=1 /> + <rect x=16 y=28 width=1 height=1 /> + <rect x=18 y=28 width=1 height=1 /> + <rect x=23 y=28 width=1 height=1 /> + <rect x=24 y=28 width=1 height=1 /> + <rect x=25 y=28 width=1 height=1 /> + <rect x=28 y=28 width=1 height=1 /> + <rect x=29 y=28 width=1 height=1 /> + <rect x=30 y=28 width=1 height=1 /> + <rect x=31 y=28 width=1 height=1 /> + <rect x=32 y=28 width=1 height=1 /> + <rect x=34 y=28 width=1 height=1 /> + <rect x=36 y=28 width=1 height=1 /> + <rect x=8 y=29 width=1 height=1 /> + <rect x=12 y=29 width=1 height=1 /> + <rect x=13 y=29 width=1 height=1 /> + <rect x=15 y=29 width=1 height=1 /> + <rect x=16 y=29 width=1 height=1 /> + <rect x=19 y=29 width=1 height=1 /> + <rect x=25 y=29 width=1 height=1 /> + <rect x=28 y=29 width=1 height=1 /> + <rect x=32 y=29 width=1 height=1 /> + <rect x=34 y=29 width=1 height=1 /> + <rect x=0 y=30 width=1 height=1 /> + <rect x=1 y=30 width=1 height=1 /> + <rect x=2 y=30 width=1 height=1 /> + <rect x=3 y=30 width=1 height=1 /> + <rect x=4 y=30 width=1 height=1 /> + <rect x=5 y=30 width=1 height=1 /> + <rect x=6 y=30 width=1 height=1 /> + <rect x=8 y=30 width=1 height=1 /> + <rect x=10 y=30 width=1 height=1 /> + <rect x=15 y=30 width=1 height=1 /> + <rect x=17 y=30 width=1 height=1 /> + <rect x=18 y=30 width=1 height=1 /> + <rect x=19 y=30 width=1 height=1 /> + <rect x=20 y=30 width=1 height=1 /> + <rect x=21 y=30 width=1 height=1 /> + <rect x=23 y=30 width=1 height=1 /> + <rect x=25 y=30 width=1 height=1 /> + <rect x=26 y=30 width=1 height=1 /> + <rect x=28 y=30 width=1 height=1 /> + <rect x=30 y=30 width=1 height=1 /> + <rect x=32 y=30 width=1 height=1 /> + <rect x=33 y=30 width=1 height=1 /> + <rect x=35 y=30 width=1 height=1 /> + <rect x=36 y=30 width=1 height=1 /> + <rect x=0 y=31 width=1 height=1 /> + <rect x=6 y=31 width=1 height=1 /> + <rect x=8 y=31 width=1 height=1 /> + <rect x=9 y=31 width=1 height=1 /> + <rect x=13 y=31 width=1 height=1 /> + <rect x=14 y=31 width=1 height=1 /> + <rect x=18 y=31 width=1 height=1 /> + <rect x=19 y=31 width=1 height=1 /> + <rect x=20 y=31 width=1 height=1 /> + <rect x=22 y=31 width=1 height=1 /> + <rect x=24 y=31 width=1 height=1 /> + <rect x=25 y=31 width=1 height=1 /> + <rect x=28 y=31 width=1 height=1 /> + <rect x=32 y=31 width=1 height=1 /> + <rect x=36 y=31 width=1 height=1 /> + <rect x=0 y=32 width=1 height=1 /> + <rect x=2 y=32 width=1 height=1 /> + <rect x=3 y=32 width=1 height=1 /> + <rect x=4 y=32 width=1 height=1 /> + <rect x=6 y=32 width=1 height=1 /> + <rect x=8 y=32 width=1 height=1 /> + <rect x=9 y=32 width=1 height=1 /> + <rect x=10 y=32 width=1 height=1 /> + <rect x=13 y=32 width=1 height=1 /> + <rect x=14 y=32 width=1 height=1 /> + <rect x=20 y=32 width=1 height=1 /> + <rect x=21 y=32 width=1 height=1 /> + <rect x=25 y=32 width=1 height=1 /> + <rect x=26 y=32 width=1 height=1 /> + <rect x=27 y=32 width=1 height=1 /> + <rect x=28 y=32 width=1 height=1 /> + <rect x=29 y=32 width=1 height=1 /> + <rect x=30 y=32 width=1 height=1 /> + <rect x=31 y=32 width=1 height=1 /> + <rect x=32 y=32 width=1 height=1 /> + <rect x=33 y=32 width=1 height=1 /> + <rect x=36 y=32 width=1 height=1 /> + <rect x=0 y=33 width=1 height=1 /> + <rect x=2 y=33 width=1 height=1 /> + <rect x=3 y=33 width=1 height=1 /> + <rect x=4 y=33 width=1 height=1 /> + <rect x=6 y=33 width=1 height=1 /> + <rect x=8 y=33 width=1 height=1 /> + <rect x=10 y=33 width=1 height=1 /> + <rect x=11 y=33 width=1 height=1 /> + <rect x=12 y=33 width=1 height=1 /> + <rect x=15 y=33 width=1 height=1 /> + <rect x=16 y=33 width=1 height=1 /> + <rect x=18 y=33 width=1 height=1 /> + <rect x=23 y=33 width=1 height=1 /> + <rect x=24 y=33 width=1 height=1 /> + <rect x=27 y=33 width=1 height=1 /> + <rect x=30 y=33 width=1 height=1 /> + <rect x=34 y=33 width=1 height=1 /> + <rect x=35 y=33 width=1 height=1 /> + <rect x=36 y=33 width=1 height=1 /> + <rect x=0 y=34 width=1 height=1 /> + <rect x=2 y=34 width=1 height=1 /> + <rect x=3 y=34 width=1 height=1 /> + <rect x=4 y=34 width=1 height=1 /> + <rect x=6 y=34 width=1 height=1 /> + <rect x=10 y=34 width=1 height=1 /> + <rect x=11 y=34 width=1 height=1 /> + <rect x=15 y=34 width=1 height=1 /> + <rect x=16 y=34 width=1 height=1 /> + <rect x=18 y=34 width=1 height=1 /> + <rect x=21 y=34 width=1 height=1 /> + <rect x=23 y=34 width=1 height=1 /> + <rect x=25 y=34 width=1 height=1 /> + <rect x=26 y=34 width=1 height=1 /> + <rect x=28 y=34 width=1 height=1 /> + <rect x=29 y=34 width=1 height=1 /> + <rect x=31 y=34 width=1 height=1 /> + <rect x=32 y=34 width=1 height=1 /> + <rect x=33 y=34 width=1 height=1 /> + <rect x=36 y=34 width=1 height=1 /> + <rect x=0 y=35 width=1 height=1 /> + <rect x=6 y=35 width=1 height=1 /> + <rect x=10 y=35 width=1 height=1 /> + <rect x=13 y=35 width=1 height=1 /> + <rect x=17 y=35 width=1 height=1 /> + <rect x=18 y=35 width=1 height=1 /> + <rect x=22 y=35 width=1 height=1 /> + <rect x=24 y=35 width=1 height=1 /> + <rect x=26 y=35 width=1 height=1 /> + <rect x=30 y=35 width=1 height=1 /> + <rect x=31 y=35 width=1 height=1 /> + <rect x=32 y=35 width=1 height=1 /> + <rect x=33 y=35 width=1 height=1 /> + <rect x=34 y=35 width=1 height=1 /> + <rect x=35 y=35 width=1 height=1 /> + <rect x=36 y=35 width=1 height=1 /> + <rect x=0 y=36 width=1 height=1 /> + <rect x=1 y=36 width=1 height=1 /> + <rect x=2 y=36 width=1 height=1 /> + <rect x=3 y=36 width=1 height=1 /> + <rect x=4 y=36 width=1 height=1 /> + <rect x=5 y=36 width=1 height=1 /> + <rect x=6 y=36 width=1 height=1 /> + <rect x=8 y=36 width=1 height=1 /> + <rect x=10 y=36 width=1 height=1 /> + <rect x=12 y=36 width=1 height=1 /> + <rect x=13 y=36 width=1 height=1 /> + <rect x=15 y=36 width=1 height=1 /> + <rect x=18 y=36 width=1 height=1 /> + <rect x=19 y=36 width=1 height=1 /> + <rect x=22 y=36 width=1 height=1 /> + <rect x=23 y=36 width=1 height=1 /> + <rect x=24 y=36 width=1 height=1 /> + <rect x=27 y=36 width=1 height=1 /> + <rect x=28 y=36 width=1 height=1 /> + <rect x=29 y=36 width=1 height=1 /> + <rect x=30 y=36 width=1 height=1 /> + <rect x=31 y=36 width=1 height=1 /> + <rect x=33 y=36 width=1 height=1 /> + <rect x=34 y=36 width=1 height=1 /> + <rect x=36 y=36 width=1 height=1 /> +</svg></div><p><a href="taler+http://pay/localhost:8083/2024.295-038BS90KD5FD4/?c=9K99S15CQRXYEQT8DV35VXE90M" style="--wpwjmk-0: none;" class="wpwjmk">Or open your Taler wallet</a></p><p><a href="https://wallet.taler.net/">Don't have a Taler wallet yet? Install it!</a></p></section><footer class="fef0x5t"><p><a href="https://taler.net/">Learn more about GNU Taler on our website.</a><p>Copyright © 2014—2021 Taler Systems SA</p></p></footer></div> + <script>"use strict"; +var page = (() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod + )); + var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + + // ../../node_modules/.pnpm/qrcode-generator@1.4.4/node_modules/qrcode-generator/qrcode.js + var require_qrcode = __commonJS({ + "../../node_modules/.pnpm/qrcode-generator@1.4.4/node_modules/qrcode-generator/qrcode.js"(exports, module) { + var qrcode2 = function() { + var qrcode3 = function(typeNumber, errorCorrectionLevel) { + var PAD0 = 236; + var PAD1 = 17; + var _typeNumber = typeNumber; + var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel]; + var _modules = null; + var _moduleCount = 0; + var _dataCache = null; + var _dataList = []; + var _this = {}; + var makeImpl = function(test, maskPattern) { + _moduleCount = _typeNumber * 4 + 17; + _modules = function(moduleCount) { + var modules = new Array(moduleCount); + for (var row = 0; row < moduleCount; row += 1) { + modules[row] = new Array(moduleCount); + for (var col = 0; col < moduleCount; col += 1) { + modules[row][col] = null; + } + } + return modules; + }(_moduleCount); + setupPositionProbePattern(0, 0); + setupPositionProbePattern(_moduleCount - 7, 0); + setupPositionProbePattern(0, _moduleCount - 7); + setupPositionAdjustPattern(); + setupTimingPattern(); + setupTypeInfo(test, maskPattern); + if (_typeNumber >= 7) { + setupTypeNumber(test); + } + if (_dataCache == null) { + _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList); + } + mapData(_dataCache, maskPattern); + }; + var setupPositionProbePattern = function(row, col) { + for (var r3 = -1; r3 <= 7; r3 += 1) { + if (row + r3 <= -1 || _moduleCount <= row + r3) + continue; + for (var c4 = -1; c4 <= 7; c4 += 1) { + if (col + c4 <= -1 || _moduleCount <= col + c4) + continue; + if (0 <= r3 && r3 <= 6 && (c4 == 0 || c4 == 6) || 0 <= c4 && c4 <= 6 && (r3 == 0 || r3 == 6) || 2 <= r3 && r3 <= 4 && 2 <= c4 && c4 <= 4) { + _modules[row + r3][col + c4] = true; + } else { + _modules[row + r3][col + c4] = false; + } + } + } + }; + var getBestMaskPattern = function() { + var minLostPoint = 0; + var pattern = 0; + for (var i4 = 0; i4 < 8; i4 += 1) { + makeImpl(true, i4); + var lostPoint = QRUtil.getLostPoint(_this); + if (i4 == 0 || minLostPoint > lostPoint) { + minLostPoint = lostPoint; + pattern = i4; + } + } + return pattern; + }; + var setupTimingPattern = function() { + for (var r3 = 8; r3 < _moduleCount - 8; r3 += 1) { + if (_modules[r3][6] != null) { + continue; + } + _modules[r3][6] = r3 % 2 == 0; + } + for (var c4 = 8; c4 < _moduleCount - 8; c4 += 1) { + if (_modules[6][c4] != null) { + continue; + } + _modules[6][c4] = c4 % 2 == 0; + } + }; + var setupPositionAdjustPattern = function() { + var pos = QRUtil.getPatternPosition(_typeNumber); + for (var i4 = 0; i4 < pos.length; i4 += 1) { + for (var j5 = 0; j5 < pos.length; j5 += 1) { + var row = pos[i4]; + var col = pos[j5]; + if (_modules[row][col] != null) { + continue; + } + for (var r3 = -2; r3 <= 2; r3 += 1) { + for (var c4 = -2; c4 <= 2; c4 += 1) { + if (r3 == -2 || r3 == 2 || c4 == -2 || c4 == 2 || r3 == 0 && c4 == 0) { + _modules[row + r3][col + c4] = true; + } else { + _modules[row + r3][col + c4] = false; + } + } + } + } + } + }; + var setupTypeNumber = function(test) { + var bits = QRUtil.getBCHTypeNumber(_typeNumber); + for (var i4 = 0; i4 < 18; i4 += 1) { + var mod = !test && (bits >> i4 & 1) == 1; + _modules[Math.floor(i4 / 3)][i4 % 3 + _moduleCount - 8 - 3] = mod; + } + for (var i4 = 0; i4 < 18; i4 += 1) { + var mod = !test && (bits >> i4 & 1) == 1; + _modules[i4 % 3 + _moduleCount - 8 - 3][Math.floor(i4 / 3)] = mod; + } + }; + var setupTypeInfo = function(test, maskPattern) { + var data = _errorCorrectionLevel << 3 | maskPattern; + var bits = QRUtil.getBCHTypeInfo(data); + for (var i4 = 0; i4 < 15; i4 += 1) { + var mod = !test && (bits >> i4 & 1) == 1; + if (i4 < 6) { + _modules[i4][8] = mod; + } else if (i4 < 8) { + _modules[i4 + 1][8] = mod; + } else { + _modules[_moduleCount - 15 + i4][8] = mod; + } + } + for (var i4 = 0; i4 < 15; i4 += 1) { + var mod = !test && (bits >> i4 & 1) == 1; + if (i4 < 8) { + _modules[8][_moduleCount - i4 - 1] = mod; + } else if (i4 < 9) { + _modules[8][15 - i4 - 1 + 1] = mod; + } else { + _modules[8][15 - i4 - 1] = mod; + } + } + _modules[_moduleCount - 8][8] = !test; + }; + var mapData = function(data, maskPattern) { + var inc = -1; + var row = _moduleCount - 1; + var bitIndex = 7; + var byteIndex = 0; + var maskFunc = QRUtil.getMaskFunction(maskPattern); + for (var col = _moduleCount - 1; col > 0; col -= 2) { + if (col == 6) + col -= 1; + while (true) { + for (var c4 = 0; c4 < 2; c4 += 1) { + if (_modules[row][col - c4] == null) { + var dark = false; + if (byteIndex < data.length) { + dark = (data[byteIndex] >>> bitIndex & 1) == 1; + } + var mask = maskFunc(row, col - c4); + if (mask) { + dark = !dark; + } + _modules[row][col - c4] = dark; + bitIndex -= 1; + if (bitIndex == -1) { + byteIndex += 1; + bitIndex = 7; + } + } + } + row += inc; + if (row < 0 || _moduleCount <= row) { + row -= inc; + inc = -inc; + break; + } + } + } + }; + var createBytes = function(buffer, rsBlocks) { + var offset = 0; + var maxDcCount = 0; + var maxEcCount = 0; + var dcdata = new Array(rsBlocks.length); + var ecdata = new Array(rsBlocks.length); + for (var r3 = 0; r3 < rsBlocks.length; r3 += 1) { + var dcCount = rsBlocks[r3].dataCount; + var ecCount = rsBlocks[r3].totalCount - dcCount; + maxDcCount = Math.max(maxDcCount, dcCount); + maxEcCount = Math.max(maxEcCount, ecCount); + dcdata[r3] = new Array(dcCount); + for (var i4 = 0; i4 < dcdata[r3].length; i4 += 1) { + dcdata[r3][i4] = 255 & buffer.getBuffer()[i4 + offset]; + } + offset += dcCount; + var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount); + var rawPoly = qrPolynomial(dcdata[r3], rsPoly.getLength() - 1); + var modPoly = rawPoly.mod(rsPoly); + ecdata[r3] = new Array(rsPoly.getLength() - 1); + for (var i4 = 0; i4 < ecdata[r3].length; i4 += 1) { + var modIndex = i4 + modPoly.getLength() - ecdata[r3].length; + ecdata[r3][i4] = modIndex >= 0 ? modPoly.getAt(modIndex) : 0; + } + } + var totalCodeCount = 0; + for (var i4 = 0; i4 < rsBlocks.length; i4 += 1) { + totalCodeCount += rsBlocks[i4].totalCount; + } + var data = new Array(totalCodeCount); + var index2 = 0; + for (var i4 = 0; i4 < maxDcCount; i4 += 1) { + for (var r3 = 0; r3 < rsBlocks.length; r3 += 1) { + if (i4 < dcdata[r3].length) { + data[index2] = dcdata[r3][i4]; + index2 += 1; + } + } + } + for (var i4 = 0; i4 < maxEcCount; i4 += 1) { + for (var r3 = 0; r3 < rsBlocks.length; r3 += 1) { + if (i4 < ecdata[r3].length) { + data[index2] = ecdata[r3][i4]; + index2 += 1; + } + } + } + return data; + }; + var createData = function(typeNumber2, errorCorrectionLevel2, dataList) { + var rsBlocks = QRRSBlock.getRSBlocks(typeNumber2, errorCorrectionLevel2); + var buffer = qrBitBuffer(); + for (var i4 = 0; i4 < dataList.length; i4 += 1) { + var data = dataList[i4]; + buffer.put(data.getMode(), 4); + buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber2)); + data.write(buffer); + } + var totalDataCount = 0; + for (var i4 = 0; i4 < rsBlocks.length; i4 += 1) { + totalDataCount += rsBlocks[i4].dataCount; + } + if (buffer.getLengthInBits() > totalDataCount * 8) { + throw "code length overflow. (" + buffer.getLengthInBits() + ">" + totalDataCount * 8 + ")"; + } + if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) { + buffer.put(0, 4); + } + while (buffer.getLengthInBits() % 8 != 0) { + buffer.putBit(false); + } + while (true) { + if (buffer.getLengthInBits() >= totalDataCount * 8) { + break; + } + buffer.put(PAD0, 8); + if (buffer.getLengthInBits() >= totalDataCount * 8) { + break; + } + buffer.put(PAD1, 8); + } + return createBytes(buffer, rsBlocks); + }; + _this.addData = function(data, mode) { + mode = mode || "Byte"; + var newData = null; + switch (mode) { + case "Numeric": + newData = qrNumber(data); + break; + case "Alphanumeric": + newData = qrAlphaNum(data); + break; + case "Byte": + newData = qr8BitByte(data); + break; + case "Kanji": + newData = qrKanji(data); + break; + default: + throw "mode:" + mode; + } + _dataList.push(newData); + _dataCache = null; + }; + _this.isDark = function(row, col) { + if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) { + throw row + "," + col; + } + return _modules[row][col]; + }; + _this.getModuleCount = function() { + return _moduleCount; + }; + _this.make = function() { + if (_typeNumber < 1) { + var typeNumber2 = 1; + for (; typeNumber2 < 40; typeNumber2++) { + var rsBlocks = QRRSBlock.getRSBlocks(typeNumber2, _errorCorrectionLevel); + var buffer = qrBitBuffer(); + for (var i4 = 0; i4 < _dataList.length; i4++) { + var data = _dataList[i4]; + buffer.put(data.getMode(), 4); + buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber2)); + data.write(buffer); + } + var totalDataCount = 0; + for (var i4 = 0; i4 < rsBlocks.length; i4++) { + totalDataCount += rsBlocks[i4].dataCount; + } + if (buffer.getLengthInBits() <= totalDataCount * 8) { + break; + } + } + _typeNumber = typeNumber2; + } + makeImpl(false, getBestMaskPattern()); + }; + _this.createTableTag = function(cellSize, margin) { + cellSize = cellSize || 2; + margin = typeof margin == "undefined" ? cellSize * 4 : margin; + var qrHtml = ""; + qrHtml += '<table style="'; + qrHtml += " border-width: 0px; border-style: none;"; + qrHtml += " border-collapse: collapse;"; + qrHtml += " padding: 0px; margin: " + margin + "px;"; + qrHtml += '">'; + qrHtml += "<tbody>"; + for (var r3 = 0; r3 < _this.getModuleCount(); r3 += 1) { + qrHtml += "<tr>"; + for (var c4 = 0; c4 < _this.getModuleCount(); c4 += 1) { + qrHtml += '<td style="'; + qrHtml += " border-width: 0px; border-style: none;"; + qrHtml += " border-collapse: collapse;"; + qrHtml += " padding: 0px; margin: 0px;"; + qrHtml += " width: " + cellSize + "px;"; + qrHtml += " height: " + cellSize + "px;"; + qrHtml += " background-color: "; + qrHtml += _this.isDark(r3, c4) ? "#000000" : "#ffffff"; + qrHtml += ";"; + qrHtml += '"/>'; + } + qrHtml += "</tr>"; + } + qrHtml += "</tbody>"; + qrHtml += "</table>"; + return qrHtml; + }; + _this.createSvgTag = function(cellSize, margin, alt, title) { + var opts = {}; + if (typeof arguments[0] == "object") { + opts = arguments[0]; + cellSize = opts.cellSize; + margin = opts.margin; + alt = opts.alt; + title = opts.title; + } + cellSize = cellSize || 2; + margin = typeof margin == "undefined" ? cellSize * 4 : margin; + alt = typeof alt === "string" ? { text: alt } : alt || {}; + alt.text = alt.text || null; + alt.id = alt.text ? alt.id || "qrcode-description" : null; + title = typeof title === "string" ? { text: title } : title || {}; + title.text = title.text || null; + title.id = title.text ? title.id || "qrcode-title" : null; + var size = _this.getModuleCount() * cellSize + margin * 2; + var c4, mc, r3, mr, qrSvg = "", rect; + rect = "l" + cellSize + ",0 0," + cellSize + " -" + cellSize + ",0 0,-" + cellSize + "z "; + qrSvg += '<svg version="1.1" xmlns="http://www.w3.org/2000/svg"'; + qrSvg += !opts.scalable ? ' width="' + size + 'px" height="' + size + 'px"' : ""; + qrSvg += ' viewBox="0 0 ' + size + " " + size + '" '; + qrSvg += ' preserveAspectRatio="xMinYMin meet"'; + qrSvg += title.text || alt.text ? ' role="img" aria-labelledby="' + escapeXml([title.id, alt.id].join(" ").trim()) + '"' : ""; + qrSvg += ">"; + qrSvg += title.text ? '<title id="' + escapeXml(title.id) + '">' + escapeXml(title.text) + "</title>" : ""; + qrSvg += alt.text ? '<description id="' + escapeXml(alt.id) + '">' + escapeXml(alt.text) + "</description>" : ""; + qrSvg += '<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>'; + qrSvg += '<path d="'; + for (r3 = 0; r3 < _this.getModuleCount(); r3 += 1) { + mr = r3 * cellSize + margin; + for (c4 = 0; c4 < _this.getModuleCount(); c4 += 1) { + if (_this.isDark(r3, c4)) { + mc = c4 * cellSize + margin; + qrSvg += "M" + mc + "," + mr + rect; + } + } + } + qrSvg += '" stroke="transparent" fill="black"/>'; + qrSvg += "</svg>"; + return qrSvg; + }; + _this.createDataURL = function(cellSize, margin) { + cellSize = cellSize || 2; + margin = typeof margin == "undefined" ? cellSize * 4 : margin; + var size = _this.getModuleCount() * cellSize + margin * 2; + var min = margin; + var max = size - margin; + return createDataURL(size, size, function(x5, y4) { + if (min <= x5 && x5 < max && min <= y4 && y4 < max) { + var c4 = Math.floor((x5 - min) / cellSize); + var r3 = Math.floor((y4 - min) / cellSize); + return _this.isDark(r3, c4) ? 0 : 1; + } else { + return 1; + } + }); + }; + _this.createImgTag = function(cellSize, margin, alt) { + cellSize = cellSize || 2; + margin = typeof margin == "undefined" ? cellSize * 4 : margin; + var size = _this.getModuleCount() * cellSize + margin * 2; + var img = ""; + img += "<img"; + img += ' src="'; + img += _this.createDataURL(cellSize, margin); + img += '"'; + img += ' width="'; + img += size; + img += '"'; + img += ' height="'; + img += size; + img += '"'; + if (alt) { + img += ' alt="'; + img += escapeXml(alt); + img += '"'; + } + img += "/>"; + return img; + }; + var escapeXml = function(s4) { + var escaped = ""; + for (var i4 = 0; i4 < s4.length; i4 += 1) { + var c4 = s4.charAt(i4); + switch (c4) { + case "<": + escaped += "<"; + break; + case ">": + escaped += ">"; + break; + case "&": + escaped += "&"; + break; + case '"': + escaped += """; + break; + default: + escaped += c4; + break; + } + } + return escaped; + }; + var _createHalfASCII = function(margin) { + var cellSize = 1; + margin = typeof margin == "undefined" ? cellSize * 2 : margin; + var size = _this.getModuleCount() * cellSize + margin * 2; + var min = margin; + var max = size - margin; + var y4, x5, r1, r22, p4; + var blocks = { + "\u2588\u2588": "\u2588", + "\u2588 ": "\u2580", + " \u2588": "\u2584", + " ": " " + }; + var blocksLastLineNoMargin = { + "\u2588\u2588": "\u2580", + "\u2588 ": "\u2580", + " \u2588": " ", + " ": " " + }; + var ascii = ""; + for (y4 = 0; y4 < size; y4 += 2) { + r1 = Math.floor((y4 - min) / cellSize); + r22 = Math.floor((y4 + 1 - min) / cellSize); + for (x5 = 0; x5 < size; x5 += 1) { + p4 = "\u2588"; + if (min <= x5 && x5 < max && min <= y4 && y4 < max && _this.isDark(r1, Math.floor((x5 - min) / cellSize))) { + p4 = " "; + } + if (min <= x5 && x5 < max && min <= y4 + 1 && y4 + 1 < max && _this.isDark(r22, Math.floor((x5 - min) / cellSize))) { + p4 += " "; + } else { + p4 += "\u2588"; + } + ascii += margin < 1 && y4 + 1 >= max ? blocksLastLineNoMargin[p4] : blocks[p4]; + } + ascii += "\n"; + } + if (size % 2 && margin > 0) { + return ascii.substring(0, ascii.length - size - 1) + Array(size + 1).join("\u2580"); + } + return ascii.substring(0, ascii.length - 1); + }; + _this.createASCII = function(cellSize, margin) { + cellSize = cellSize || 1; + if (cellSize < 2) { + return _createHalfASCII(margin); + } + cellSize -= 1; + margin = typeof margin == "undefined" ? cellSize * 2 : margin; + var size = _this.getModuleCount() * cellSize + margin * 2; + var min = margin; + var max = size - margin; + var y4, x5, r3, p4; + var white = Array(cellSize + 1).join("\u2588\u2588"); + var black = Array(cellSize + 1).join(" "); + var ascii = ""; + var line = ""; + for (y4 = 0; y4 < size; y4 += 1) { + r3 = Math.floor((y4 - min) / cellSize); + line = ""; + for (x5 = 0; x5 < size; x5 += 1) { + p4 = 1; + if (min <= x5 && x5 < max && min <= y4 && y4 < max && _this.isDark(r3, Math.floor((x5 - min) / cellSize))) { + p4 = 0; + } + line += p4 ? white : black; + } + for (r3 = 0; r3 < cellSize; r3 += 1) { + ascii += line + "\n"; + } + } + return ascii.substring(0, ascii.length - 1); + }; + _this.renderTo2dContext = function(context, cellSize) { + cellSize = cellSize || 2; + var length = _this.getModuleCount(); + for (var row = 0; row < length; row++) { + for (var col = 0; col < length; col++) { + context.fillStyle = _this.isDark(row, col) ? "black" : "white"; + context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize); + } + } + }; + return _this; + }; + qrcode3.stringToBytesFuncs = { + "default": function(s4) { + var bytes = []; + for (var i4 = 0; i4 < s4.length; i4 += 1) { + var c4 = s4.charCodeAt(i4); + bytes.push(c4 & 255); + } + return bytes; + } + }; + qrcode3.stringToBytes = qrcode3.stringToBytesFuncs["default"]; + qrcode3.createStringToBytes = function(unicodeData, numChars) { + var unicodeMap = function() { + var bin = base64DecodeInputStream(unicodeData); + var read = function() { + var b4 = bin.read(); + if (b4 == -1) + throw "eof"; + return b4; + }; + var count = 0; + var unicodeMap2 = {}; + while (true) { + var b0 = bin.read(); + if (b0 == -1) + break; + var b1 = read(); + var b22 = read(); + var b32 = read(); + var k5 = String.fromCharCode(b0 << 8 | b1); + var v4 = b22 << 8 | b32; + unicodeMap2[k5] = v4; + count += 1; + } + if (count != numChars) { + throw count + " != " + numChars; + } + return unicodeMap2; + }(); + var unknownChar = "?".charCodeAt(0); + return function(s4) { + var bytes = []; + for (var i4 = 0; i4 < s4.length; i4 += 1) { + var c4 = s4.charCodeAt(i4); + if (c4 < 128) { + bytes.push(c4); + } else { + var b4 = unicodeMap[s4.charAt(i4)]; + if (typeof b4 == "number") { + if ((b4 & 255) == b4) { + bytes.push(b4); + } else { + bytes.push(b4 >>> 8); + bytes.push(b4 & 255); + } + } else { + bytes.push(unknownChar); + } + } + } + return bytes; + }; + }; + var QRMode = { + MODE_NUMBER: 1 << 0, + MODE_ALPHA_NUM: 1 << 1, + MODE_8BIT_BYTE: 1 << 2, + MODE_KANJI: 1 << 3 + }; + var QRErrorCorrectionLevel = { + L: 1, + M: 0, + Q: 3, + H: 2 + }; + var QRMaskPattern = { + PATTERN000: 0, + PATTERN001: 1, + PATTERN010: 2, + PATTERN011: 3, + PATTERN100: 4, + PATTERN101: 5, + PATTERN110: 6, + PATTERN111: 7 + }; + var QRUtil = function() { + var PATTERN_POSITION_TABLE = [ + [], + [6, 18], + [6, 22], + [6, 26], + [6, 30], + [6, 34], + [6, 22, 38], + [6, 24, 42], + [6, 26, 46], + [6, 28, 50], + [6, 30, 54], + [6, 32, 58], + [6, 34, 62], + [6, 26, 46, 66], + [6, 26, 48, 70], + [6, 26, 50, 74], + [6, 30, 54, 78], + [6, 30, 56, 82], + [6, 30, 58, 86], + [6, 34, 62, 90], + [6, 28, 50, 72, 94], + [6, 26, 50, 74, 98], + [6, 30, 54, 78, 102], + [6, 28, 54, 80, 106], + [6, 32, 58, 84, 110], + [6, 30, 58, 86, 114], + [6, 34, 62, 90, 118], + [6, 26, 50, 74, 98, 122], + [6, 30, 54, 78, 102, 126], + [6, 26, 52, 78, 104, 130], + [6, 30, 56, 82, 108, 134], + [6, 34, 60, 86, 112, 138], + [6, 30, 58, 86, 114, 142], + [6, 34, 62, 90, 118, 146], + [6, 30, 54, 78, 102, 126, 150], + [6, 24, 50, 76, 102, 128, 154], + [6, 28, 54, 80, 106, 132, 158], + [6, 32, 58, 84, 110, 136, 162], + [6, 26, 54, 82, 110, 138, 166], + [6, 30, 58, 86, 114, 142, 170] + ]; + var G15 = 1 << 10 | 1 << 8 | 1 << 5 | 1 << 4 | 1 << 2 | 1 << 1 | 1 << 0; + var G18 = 1 << 12 | 1 << 11 | 1 << 10 | 1 << 9 | 1 << 8 | 1 << 5 | 1 << 2 | 1 << 0; + var G15_MASK = 1 << 14 | 1 << 12 | 1 << 10 | 1 << 4 | 1 << 1; + var _this = {}; + var getBCHDigit = function(data) { + var digit = 0; + while (data != 0) { + digit += 1; + data >>>= 1; + } + return digit; + }; + _this.getBCHTypeInfo = function(data) { + var d4 = data << 10; + while (getBCHDigit(d4) - getBCHDigit(G15) >= 0) { + d4 ^= G15 << getBCHDigit(d4) - getBCHDigit(G15); + } + return (data << 10 | d4) ^ G15_MASK; + }; + _this.getBCHTypeNumber = function(data) { + var d4 = data << 12; + while (getBCHDigit(d4) - getBCHDigit(G18) >= 0) { + d4 ^= G18 << getBCHDigit(d4) - getBCHDigit(G18); + } + return data << 12 | d4; + }; + _this.getPatternPosition = function(typeNumber) { + return PATTERN_POSITION_TABLE[typeNumber - 1]; + }; + _this.getMaskFunction = function(maskPattern) { + switch (maskPattern) { + case QRMaskPattern.PATTERN000: + return function(i4, j5) { + return (i4 + j5) % 2 == 0; + }; + case QRMaskPattern.PATTERN001: + return function(i4, j5) { + return i4 % 2 == 0; + }; + case QRMaskPattern.PATTERN010: + return function(i4, j5) { + return j5 % 3 == 0; + }; + case QRMaskPattern.PATTERN011: + return function(i4, j5) { + return (i4 + j5) % 3 == 0; + }; + case QRMaskPattern.PATTERN100: + return function(i4, j5) { + return (Math.floor(i4 / 2) + Math.floor(j5 / 3)) % 2 == 0; + }; + case QRMaskPattern.PATTERN101: + return function(i4, j5) { + return i4 * j5 % 2 + i4 * j5 % 3 == 0; + }; + case QRMaskPattern.PATTERN110: + return function(i4, j5) { + return (i4 * j5 % 2 + i4 * j5 % 3) % 2 == 0; + }; + case QRMaskPattern.PATTERN111: + return function(i4, j5) { + return (i4 * j5 % 3 + (i4 + j5) % 2) % 2 == 0; + }; + default: + throw "bad maskPattern:" + maskPattern; + } + }; + _this.getErrorCorrectPolynomial = function(errorCorrectLength) { + var a4 = qrPolynomial([1], 0); + for (var i4 = 0; i4 < errorCorrectLength; i4 += 1) { + a4 = a4.multiply(qrPolynomial([1, QRMath.gexp(i4)], 0)); + } + return a4; + }; + _this.getLengthInBits = function(mode, type) { + if (1 <= type && type < 10) { + switch (mode) { + case QRMode.MODE_NUMBER: + return 10; + case QRMode.MODE_ALPHA_NUM: + return 9; + case QRMode.MODE_8BIT_BYTE: + return 8; + case QRMode.MODE_KANJI: + return 8; + default: + throw "mode:" + mode; + } + } else if (type < 27) { + switch (mode) { + case QRMode.MODE_NUMBER: + return 12; + case QRMode.MODE_ALPHA_NUM: + return 11; + case QRMode.MODE_8BIT_BYTE: + return 16; + case QRMode.MODE_KANJI: + return 10; + default: + throw "mode:" + mode; + } + } else if (type < 41) { + switch (mode) { + case QRMode.MODE_NUMBER: + return 14; + case QRMode.MODE_ALPHA_NUM: + return 13; + case QRMode.MODE_8BIT_BYTE: + return 16; + case QRMode.MODE_KANJI: + return 12; + default: + throw "mode:" + mode; + } + } else { + throw "type:" + type; + } + }; + _this.getLostPoint = function(qrcode4) { + var moduleCount = qrcode4.getModuleCount(); + var lostPoint = 0; + for (var row = 0; row < moduleCount; row += 1) { + for (var col = 0; col < moduleCount; col += 1) { + var sameCount = 0; + var dark = qrcode4.isDark(row, col); + for (var r3 = -1; r3 <= 1; r3 += 1) { + if (row + r3 < 0 || moduleCount <= row + r3) { + continue; + } + for (var c4 = -1; c4 <= 1; c4 += 1) { + if (col + c4 < 0 || moduleCount <= col + c4) { + continue; + } + if (r3 == 0 && c4 == 0) { + continue; + } + if (dark == qrcode4.isDark(row + r3, col + c4)) { + sameCount += 1; + } + } + } + if (sameCount > 5) { + lostPoint += 3 + sameCount - 5; + } + } + } + ; + for (var row = 0; row < moduleCount - 1; row += 1) { + for (var col = 0; col < moduleCount - 1; col += 1) { + var count = 0; + if (qrcode4.isDark(row, col)) + count += 1; + if (qrcode4.isDark(row + 1, col)) + count += 1; + if (qrcode4.isDark(row, col + 1)) + count += 1; + if (qrcode4.isDark(row + 1, col + 1)) + count += 1; + if (count == 0 || count == 4) { + lostPoint += 3; + } + } + } + for (var row = 0; row < moduleCount; row += 1) { + for (var col = 0; col < moduleCount - 6; col += 1) { + if (qrcode4.isDark(row, col) && !qrcode4.isDark(row, col + 1) && qrcode4.isDark(row, col + 2) && qrcode4.isDark(row, col + 3) && qrcode4.isDark(row, col + 4) && !qrcode4.isDark(row, col + 5) && qrcode4.isDark(row, col + 6)) { + lostPoint += 40; + } + } + } + for (var col = 0; col < moduleCount; col += 1) { + for (var row = 0; row < moduleCount - 6; row += 1) { + if (qrcode4.isDark(row, col) && !qrcode4.isDark(row + 1, col) && qrcode4.isDark(row + 2, col) && qrcode4.isDark(row + 3, col) && qrcode4.isDark(row + 4, col) && !qrcode4.isDark(row + 5, col) && qrcode4.isDark(row + 6, col)) { + lostPoint += 40; + } + } + } + var darkCount = 0; + for (var col = 0; col < moduleCount; col += 1) { + for (var row = 0; row < moduleCount; row += 1) { + if (qrcode4.isDark(row, col)) { + darkCount += 1; + } + } + } + var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5; + lostPoint += ratio * 10; + return lostPoint; + }; + return _this; + }(); + var QRMath = function() { + var EXP_TABLE = new Array(256); + var LOG_TABLE = new Array(256); + for (var i4 = 0; i4 < 8; i4 += 1) { + EXP_TABLE[i4] = 1 << i4; + } + for (var i4 = 8; i4 < 256; i4 += 1) { + EXP_TABLE[i4] = EXP_TABLE[i4 - 4] ^ EXP_TABLE[i4 - 5] ^ EXP_TABLE[i4 - 6] ^ EXP_TABLE[i4 - 8]; + } + for (var i4 = 0; i4 < 255; i4 += 1) { + LOG_TABLE[EXP_TABLE[i4]] = i4; + } + var _this = {}; + _this.glog = function(n3) { + if (n3 < 1) { + throw "glog(" + n3 + ")"; + } + return LOG_TABLE[n3]; + }; + _this.gexp = function(n3) { + while (n3 < 0) { + n3 += 255; + } + while (n3 >= 256) { + n3 -= 255; + } + return EXP_TABLE[n3]; + }; + return _this; + }(); + function qrPolynomial(num, shift) { + if (typeof num.length == "undefined") { + throw num.length + "/" + shift; + } + var _num = function() { + var offset = 0; + while (offset < num.length && num[offset] == 0) { + offset += 1; + } + var _num2 = new Array(num.length - offset + shift); + for (var i4 = 0; i4 < num.length - offset; i4 += 1) { + _num2[i4] = num[i4 + offset]; + } + return _num2; + }(); + var _this = {}; + _this.getAt = function(index2) { + return _num[index2]; + }; + _this.getLength = function() { + return _num.length; + }; + _this.multiply = function(e3) { + var num2 = new Array(_this.getLength() + e3.getLength() - 1); + for (var i4 = 0; i4 < _this.getLength(); i4 += 1) { + for (var j5 = 0; j5 < e3.getLength(); j5 += 1) { + num2[i4 + j5] ^= QRMath.gexp(QRMath.glog(_this.getAt(i4)) + QRMath.glog(e3.getAt(j5))); + } + } + return qrPolynomial(num2, 0); + }; + _this.mod = function(e3) { + if (_this.getLength() - e3.getLength() < 0) { + return _this; + } + var ratio = QRMath.glog(_this.getAt(0)) - QRMath.glog(e3.getAt(0)); + var num2 = new Array(_this.getLength()); + for (var i4 = 0; i4 < _this.getLength(); i4 += 1) { + num2[i4] = _this.getAt(i4); + } + for (var i4 = 0; i4 < e3.getLength(); i4 += 1) { + num2[i4] ^= QRMath.gexp(QRMath.glog(e3.getAt(i4)) + ratio); + } + return qrPolynomial(num2, 0).mod(e3); + }; + return _this; + } + ; + var QRRSBlock = function() { + var RS_BLOCK_TABLE = [ + // L + // M + // Q + // H + // 1 + [1, 26, 19], + [1, 26, 16], + [1, 26, 13], + [1, 26, 9], + // 2 + [1, 44, 34], + [1, 44, 28], + [1, 44, 22], + [1, 44, 16], + // 3 + [1, 70, 55], + [1, 70, 44], + [2, 35, 17], + [2, 35, 13], + // 4 + [1, 100, 80], + [2, 50, 32], + [2, 50, 24], + [4, 25, 9], + // 5 + [1, 134, 108], + [2, 67, 43], + [2, 33, 15, 2, 34, 16], + [2, 33, 11, 2, 34, 12], + // 6 + [2, 86, 68], + [4, 43, 27], + [4, 43, 19], + [4, 43, 15], + // 7 + [2, 98, 78], + [4, 49, 31], + [2, 32, 14, 4, 33, 15], + [4, 39, 13, 1, 40, 14], + // 8 + [2, 121, 97], + [2, 60, 38, 2, 61, 39], + [4, 40, 18, 2, 41, 19], + [4, 40, 14, 2, 41, 15], + // 9 + [2, 146, 116], + [3, 58, 36, 2, 59, 37], + [4, 36, 16, 4, 37, 17], + [4, 36, 12, 4, 37, 13], + // 10 + [2, 86, 68, 2, 87, 69], + [4, 69, 43, 1, 70, 44], + [6, 43, 19, 2, 44, 20], + [6, 43, 15, 2, 44, 16], + // 11 + [4, 101, 81], + [1, 80, 50, 4, 81, 51], + [4, 50, 22, 4, 51, 23], + [3, 36, 12, 8, 37, 13], + // 12 + [2, 116, 92, 2, 117, 93], + [6, 58, 36, 2, 59, 37], + [4, 46, 20, 6, 47, 21], + [7, 42, 14, 4, 43, 15], + // 13 + [4, 133, 107], + [8, 59, 37, 1, 60, 38], + [8, 44, 20, 4, 45, 21], + [12, 33, 11, 4, 34, 12], + // 14 + [3, 145, 115, 1, 146, 116], + [4, 64, 40, 5, 65, 41], + [11, 36, 16, 5, 37, 17], + [11, 36, 12, 5, 37, 13], + // 15 + [5, 109, 87, 1, 110, 88], + [5, 65, 41, 5, 66, 42], + [5, 54, 24, 7, 55, 25], + [11, 36, 12, 7, 37, 13], + // 16 + [5, 122, 98, 1, 123, 99], + [7, 73, 45, 3, 74, 46], + [15, 43, 19, 2, 44, 20], + [3, 45, 15, 13, 46, 16], + // 17 + [1, 135, 107, 5, 136, 108], + [10, 74, 46, 1, 75, 47], + [1, 50, 22, 15, 51, 23], + [2, 42, 14, 17, 43, 15], + // 18 + [5, 150, 120, 1, 151, 121], + [9, 69, 43, 4, 70, 44], + [17, 50, 22, 1, 51, 23], + [2, 42, 14, 19, 43, 15], + // 19 + [3, 141, 113, 4, 142, 114], + [3, 70, 44, 11, 71, 45], + [17, 47, 21, 4, 48, 22], + [9, 39, 13, 16, 40, 14], + // 20 + [3, 135, 107, 5, 136, 108], + [3, 67, 41, 13, 68, 42], + [15, 54, 24, 5, 55, 25], + [15, 43, 15, 10, 44, 16], + // 21 + [4, 144, 116, 4, 145, 117], + [17, 68, 42], + [17, 50, 22, 6, 51, 23], + [19, 46, 16, 6, 47, 17], + // 22 + [2, 139, 111, 7, 140, 112], + [17, 74, 46], + [7, 54, 24, 16, 55, 25], + [34, 37, 13], + // 23 + [4, 151, 121, 5, 152, 122], + [4, 75, 47, 14, 76, 48], + [11, 54, 24, 14, 55, 25], + [16, 45, 15, 14, 46, 16], + // 24 + [6, 147, 117, 4, 148, 118], + [6, 73, 45, 14, 74, 46], + [11, 54, 24, 16, 55, 25], + [30, 46, 16, 2, 47, 17], + // 25 + [8, 132, 106, 4, 133, 107], + [8, 75, 47, 13, 76, 48], + [7, 54, 24, 22, 55, 25], + [22, 45, 15, 13, 46, 16], + // 26 + [10, 142, 114, 2, 143, 115], + [19, 74, 46, 4, 75, 47], + [28, 50, 22, 6, 51, 23], + [33, 46, 16, 4, 47, 17], + // 27 + [8, 152, 122, 4, 153, 123], + [22, 73, 45, 3, 74, 46], + [8, 53, 23, 26, 54, 24], + [12, 45, 15, 28, 46, 16], + // 28 + [3, 147, 117, 10, 148, 118], + [3, 73, 45, 23, 74, 46], + [4, 54, 24, 31, 55, 25], + [11, 45, 15, 31, 46, 16], + // 29 + [7, 146, 116, 7, 147, 117], + [21, 73, 45, 7, 74, 46], + [1, 53, 23, 37, 54, 24], + [19, 45, 15, 26, 46, 16], + // 30 + [5, 145, 115, 10, 146, 116], + [19, 75, 47, 10, 76, 48], + [15, 54, 24, 25, 55, 25], + [23, 45, 15, 25, 46, 16], + // 31 + [13, 145, 115, 3, 146, 116], + [2, 74, 46, 29, 75, 47], + [42, 54, 24, 1, 55, 25], + [23, 45, 15, 28, 46, 16], + // 32 + [17, 145, 115], + [10, 74, 46, 23, 75, 47], + [10, 54, 24, 35, 55, 25], + [19, 45, 15, 35, 46, 16], + // 33 + [17, 145, 115, 1, 146, 116], + [14, 74, 46, 21, 75, 47], + [29, 54, 24, 19, 55, 25], + [11, 45, 15, 46, 46, 16], + // 34 + [13, 145, 115, 6, 146, 116], + [14, 74, 46, 23, 75, 47], + [44, 54, 24, 7, 55, 25], + [59, 46, 16, 1, 47, 17], + // 35 + [12, 151, 121, 7, 152, 122], + [12, 75, 47, 26, 76, 48], + [39, 54, 24, 14, 55, 25], + [22, 45, 15, 41, 46, 16], + // 36 + [6, 151, 121, 14, 152, 122], + [6, 75, 47, 34, 76, 48], + [46, 54, 24, 10, 55, 25], + [2, 45, 15, 64, 46, 16], + // 37 + [17, 152, 122, 4, 153, 123], + [29, 74, 46, 14, 75, 47], + [49, 54, 24, 10, 55, 25], + [24, 45, 15, 46, 46, 16], + // 38 + [4, 152, 122, 18, 153, 123], + [13, 74, 46, 32, 75, 47], + [48, 54, 24, 14, 55, 25], + [42, 45, 15, 32, 46, 16], + // 39 + [20, 147, 117, 4, 148, 118], + [40, 75, 47, 7, 76, 48], + [43, 54, 24, 22, 55, 25], + [10, 45, 15, 67, 46, 16], + // 40 + [19, 148, 118, 6, 149, 119], + [18, 75, 47, 31, 76, 48], + [34, 54, 24, 34, 55, 25], + [20, 45, 15, 61, 46, 16] + ]; + var qrRSBlock = function(totalCount, dataCount) { + var _this2 = {}; + _this2.totalCount = totalCount; + _this2.dataCount = dataCount; + return _this2; + }; + var _this = {}; + var getRsBlockTable = function(typeNumber, errorCorrectionLevel) { + switch (errorCorrectionLevel) { + case QRErrorCorrectionLevel.L: + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0]; + case QRErrorCorrectionLevel.M: + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1]; + case QRErrorCorrectionLevel.Q: + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2]; + case QRErrorCorrectionLevel.H: + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3]; + default: + return void 0; + } + }; + _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) { + var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel); + if (typeof rsBlock == "undefined") { + throw "bad rs block @ typeNumber:" + typeNumber + "/errorCorrectionLevel:" + errorCorrectionLevel; + } + var length = rsBlock.length / 3; + var list = []; + for (var i4 = 0; i4 < length; i4 += 1) { + var count = rsBlock[i4 * 3 + 0]; + var totalCount = rsBlock[i4 * 3 + 1]; + var dataCount = rsBlock[i4 * 3 + 2]; + for (var j5 = 0; j5 < count; j5 += 1) { + list.push(qrRSBlock(totalCount, dataCount)); + } + } + return list; + }; + return _this; + }(); + var qrBitBuffer = function() { + var _buffer = []; + var _length = 0; + var _this = {}; + _this.getBuffer = function() { + return _buffer; + }; + _this.getAt = function(index2) { + var bufIndex = Math.floor(index2 / 8); + return (_buffer[bufIndex] >>> 7 - index2 % 8 & 1) == 1; + }; + _this.put = function(num, length) { + for (var i4 = 0; i4 < length; i4 += 1) { + _this.putBit((num >>> length - i4 - 1 & 1) == 1); + } + }; + _this.getLengthInBits = function() { + return _length; + }; + _this.putBit = function(bit) { + var bufIndex = Math.floor(_length / 8); + if (_buffer.length <= bufIndex) { + _buffer.push(0); + } + if (bit) { + _buffer[bufIndex] |= 128 >>> _length % 8; + } + _length += 1; + }; + return _this; + }; + var qrNumber = function(data) { + var _mode = QRMode.MODE_NUMBER; + var _data = data; + var _this = {}; + _this.getMode = function() { + return _mode; + }; + _this.getLength = function(buffer) { + return _data.length; + }; + _this.write = function(buffer) { + var data2 = _data; + var i4 = 0; + while (i4 + 2 < data2.length) { + buffer.put(strToNum(data2.substring(i4, i4 + 3)), 10); + i4 += 3; + } + if (i4 < data2.length) { + if (data2.length - i4 == 1) { + buffer.put(strToNum(data2.substring(i4, i4 + 1)), 4); + } else if (data2.length - i4 == 2) { + buffer.put(strToNum(data2.substring(i4, i4 + 2)), 7); + } + } + }; + var strToNum = function(s4) { + var num = 0; + for (var i4 = 0; i4 < s4.length; i4 += 1) { + num = num * 10 + chatToNum(s4.charAt(i4)); + } + return num; + }; + var chatToNum = function(c4) { + if ("0" <= c4 && c4 <= "9") { + return c4.charCodeAt(0) - "0".charCodeAt(0); + } + throw "illegal char :" + c4; + }; + return _this; + }; + var qrAlphaNum = function(data) { + var _mode = QRMode.MODE_ALPHA_NUM; + var _data = data; + var _this = {}; + _this.getMode = function() { + return _mode; + }; + _this.getLength = function(buffer) { + return _data.length; + }; + _this.write = function(buffer) { + var s4 = _data; + var i4 = 0; + while (i4 + 1 < s4.length) { + buffer.put( + getCode(s4.charAt(i4)) * 45 + getCode(s4.charAt(i4 + 1)), + 11 + ); + i4 += 2; + } + if (i4 < s4.length) { + buffer.put(getCode(s4.charAt(i4)), 6); + } + }; + var getCode = function(c4) { + if ("0" <= c4 && c4 <= "9") { + return c4.charCodeAt(0) - "0".charCodeAt(0); + } else if ("A" <= c4 && c4 <= "Z") { + return c4.charCodeAt(0) - "A".charCodeAt(0) + 10; + } else { + switch (c4) { + case " ": + return 36; + case "$": + return 37; + case "%": + return 38; + case "*": + return 39; + case "+": + return 40; + case "-": + return 41; + case ".": + return 42; + case "/": + return 43; + case ":": + return 44; + default: + throw "illegal char :" + c4; + } + } + }; + return _this; + }; + var qr8BitByte = function(data) { + var _mode = QRMode.MODE_8BIT_BYTE; + var _data = data; + var _bytes = qrcode3.stringToBytes(data); + var _this = {}; + _this.getMode = function() { + return _mode; + }; + _this.getLength = function(buffer) { + return _bytes.length; + }; + _this.write = function(buffer) { + for (var i4 = 0; i4 < _bytes.length; i4 += 1) { + buffer.put(_bytes[i4], 8); + } + }; + return _this; + }; + var qrKanji = function(data) { + var _mode = QRMode.MODE_KANJI; + var _data = data; + var stringToBytes = qrcode3.stringToBytesFuncs["SJIS"]; + if (!stringToBytes) { + throw "sjis not supported."; + } + !function(c4, code) { + var test = stringToBytes(c4); + if (test.length != 2 || (test[0] << 8 | test[1]) != code) { + throw "sjis not supported."; + } + }("\u53CB", 38726); + var _bytes = stringToBytes(data); + var _this = {}; + _this.getMode = function() { + return _mode; + }; + _this.getLength = function(buffer) { + return ~~(_bytes.length / 2); + }; + _this.write = function(buffer) { + var data2 = _bytes; + var i4 = 0; + while (i4 + 1 < data2.length) { + var c4 = (255 & data2[i4]) << 8 | 255 & data2[i4 + 1]; + if (33088 <= c4 && c4 <= 40956) { + c4 -= 33088; + } else if (57408 <= c4 && c4 <= 60351) { + c4 -= 49472; + } else { + throw "illegal char at " + (i4 + 1) + "/" + c4; + } + c4 = (c4 >>> 8 & 255) * 192 + (c4 & 255); + buffer.put(c4, 13); + i4 += 2; + } + if (i4 < data2.length) { + throw "illegal char at " + (i4 + 1); + } + }; + return _this; + }; + var byteArrayOutputStream = function() { + var _bytes = []; + var _this = {}; + _this.writeByte = function(b4) { + _bytes.push(b4 & 255); + }; + _this.writeShort = function(i4) { + _this.writeByte(i4); + _this.writeByte(i4 >>> 8); + }; + _this.writeBytes = function(b4, off, len) { + off = off || 0; + len = len || b4.length; + for (var i4 = 0; i4 < len; i4 += 1) { + _this.writeByte(b4[i4 + off]); + } + }; + _this.writeString = function(s4) { + for (var i4 = 0; i4 < s4.length; i4 += 1) { + _this.writeByte(s4.charCodeAt(i4)); + } + }; + _this.toByteArray = function() { + return _bytes; + }; + _this.toString = function() { + var s4 = ""; + s4 += "["; + for (var i4 = 0; i4 < _bytes.length; i4 += 1) { + if (i4 > 0) { + s4 += ","; + } + s4 += _bytes[i4]; + } + s4 += "]"; + return s4; + }; + return _this; + }; + var base64EncodeOutputStream = function() { + var _buffer = 0; + var _buflen = 0; + var _length = 0; + var _base64 = ""; + var _this = {}; + var writeEncoded = function(b4) { + _base64 += String.fromCharCode(encode(b4 & 63)); + }; + var encode = function(n3) { + if (n3 < 0) { + } else if (n3 < 26) { + return 65 + n3; + } else if (n3 < 52) { + return 97 + (n3 - 26); + } else if (n3 < 62) { + return 48 + (n3 - 52); + } else if (n3 == 62) { + return 43; + } else if (n3 == 63) { + return 47; + } + throw "n:" + n3; + }; + _this.writeByte = function(n3) { + _buffer = _buffer << 8 | n3 & 255; + _buflen += 8; + _length += 1; + while (_buflen >= 6) { + writeEncoded(_buffer >>> _buflen - 6); + _buflen -= 6; + } + }; + _this.flush = function() { + if (_buflen > 0) { + writeEncoded(_buffer << 6 - _buflen); + _buffer = 0; + _buflen = 0; + } + if (_length % 3 != 0) { + var padlen = 3 - _length % 3; + for (var i4 = 0; i4 < padlen; i4 += 1) { + _base64 += "="; + } + } + }; + _this.toString = function() { + return _base64; + }; + return _this; + }; + var base64DecodeInputStream = function(str) { + var _str = str; + var _pos = 0; + var _buffer = 0; + var _buflen = 0; + var _this = {}; + _this.read = function() { + while (_buflen < 8) { + if (_pos >= _str.length) { + if (_buflen == 0) { + return -1; + } + throw "unexpected end of file./" + _buflen; + } + var c4 = _str.charAt(_pos); + _pos += 1; + if (c4 == "=") { + _buflen = 0; + return -1; + } else if (c4.match(/^\s$/)) { + continue; + } + _buffer = _buffer << 6 | decode(c4.charCodeAt(0)); + _buflen += 6; + } + var n3 = _buffer >>> _buflen - 8 & 255; + _buflen -= 8; + return n3; + }; + var decode = function(c4) { + if (65 <= c4 && c4 <= 90) { + return c4 - 65; + } else if (97 <= c4 && c4 <= 122) { + return c4 - 97 + 26; + } else if (48 <= c4 && c4 <= 57) { + return c4 - 48 + 52; + } else if (c4 == 43) { + return 62; + } else if (c4 == 47) { + return 63; + } else { + throw "c:" + c4; + } + }; + return _this; + }; + var gifImage = function(width, height) { + var _width = width; + var _height = height; + var _data = new Array(width * height); + var _this = {}; + _this.setPixel = function(x5, y4, pixel) { + _data[y4 * _width + x5] = pixel; + }; + _this.write = function(out) { + out.writeString("GIF87a"); + out.writeShort(_width); + out.writeShort(_height); + out.writeByte(128); + out.writeByte(0); + out.writeByte(0); + out.writeByte(0); + out.writeByte(0); + out.writeByte(0); + out.writeByte(255); + out.writeByte(255); + out.writeByte(255); + out.writeString(","); + out.writeShort(0); + out.writeShort(0); + out.writeShort(_width); + out.writeShort(_height); + out.writeByte(0); + var lzwMinCodeSize = 2; + var raster = getLZWRaster(lzwMinCodeSize); + out.writeByte(lzwMinCodeSize); + var offset = 0; + while (raster.length - offset > 255) { + out.writeByte(255); + out.writeBytes(raster, offset, 255); + offset += 255; + } + out.writeByte(raster.length - offset); + out.writeBytes(raster, offset, raster.length - offset); + out.writeByte(0); + out.writeString(";"); + }; + var bitOutputStream = function(out) { + var _out = out; + var _bitLength = 0; + var _bitBuffer = 0; + var _this2 = {}; + _this2.write = function(data, length) { + if (data >>> length != 0) { + throw "length over"; + } + while (_bitLength + length >= 8) { + _out.writeByte(255 & (data << _bitLength | _bitBuffer)); + length -= 8 - _bitLength; + data >>>= 8 - _bitLength; + _bitBuffer = 0; + _bitLength = 0; + } + _bitBuffer = data << _bitLength | _bitBuffer; + _bitLength = _bitLength + length; + }; + _this2.flush = function() { + if (_bitLength > 0) { + _out.writeByte(_bitBuffer); + } + }; + return _this2; + }; + var getLZWRaster = function(lzwMinCodeSize) { + var clearCode = 1 << lzwMinCodeSize; + var endCode = (1 << lzwMinCodeSize) + 1; + var bitLength = lzwMinCodeSize + 1; + var table = lzwTable(); + for (var i4 = 0; i4 < clearCode; i4 += 1) { + table.add(String.fromCharCode(i4)); + } + table.add(String.fromCharCode(clearCode)); + table.add(String.fromCharCode(endCode)); + var byteOut = byteArrayOutputStream(); + var bitOut = bitOutputStream(byteOut); + bitOut.write(clearCode, bitLength); + var dataIndex = 0; + var s4 = String.fromCharCode(_data[dataIndex]); + dataIndex += 1; + while (dataIndex < _data.length) { + var c4 = String.fromCharCode(_data[dataIndex]); + dataIndex += 1; + if (table.contains(s4 + c4)) { + s4 = s4 + c4; + } else { + bitOut.write(table.indexOf(s4), bitLength); + if (table.size() < 4095) { + if (table.size() == 1 << bitLength) { + bitLength += 1; + } + table.add(s4 + c4); + } + s4 = c4; + } + } + bitOut.write(table.indexOf(s4), bitLength); + bitOut.write(endCode, bitLength); + bitOut.flush(); + return byteOut.toByteArray(); + }; + var lzwTable = function() { + var _map = {}; + var _size = 0; + var _this2 = {}; + _this2.add = function(key) { + if (_this2.contains(key)) { + throw "dup key:" + key; + } + _map[key] = _size; + _size += 1; + }; + _this2.size = function() { + return _size; + }; + _this2.indexOf = function(key) { + return _map[key]; + }; + _this2.contains = function(key) { + return typeof _map[key] != "undefined"; + }; + return _this2; + }; + return _this; + }; + var createDataURL = function(width, height, getPixel) { + var gif = gifImage(width, height); + for (var y4 = 0; y4 < height; y4 += 1) { + for (var x5 = 0; x5 < width; x5 += 1) { + gif.setPixel(x5, y4, getPixel(x5, y4)); + } + } + var b4 = byteArrayOutputStream(); + gif.write(b4); + var base64 = base64EncodeOutputStream(); + var bytes = b4.toByteArray(); + for (var i4 = 0; i4 < bytes.length; i4 += 1) { + base64.writeByte(bytes[i4]); + } + base64.flush(); + return "data:image/gif;base64," + base64; + }; + return qrcode3; + }(); + !function() { + qrcode2.stringToBytesFuncs["UTF-8"] = function(s4) { + function toUTF8Array(str) { + var utf8 = []; + for (var i4 = 0; i4 < str.length; i4++) { + var charcode = str.charCodeAt(i4); + if (charcode < 128) + utf8.push(charcode); + else if (charcode < 2048) { + utf8.push( + 192 | charcode >> 6, + 128 | charcode & 63 + ); + } else if (charcode < 55296 || charcode >= 57344) { + utf8.push( + 224 | charcode >> 12, + 128 | charcode >> 6 & 63, + 128 | charcode & 63 + ); + } else { + i4++; + charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i4) & 1023); + utf8.push( + 240 | charcode >> 18, + 128 | charcode >> 12 & 63, + 128 | charcode >> 6 & 63, + 128 | charcode & 63 + ); + } + } + return utf8; + } + return toUTF8Array(s4); + }; + }(); + (function(factory) { + if (typeof define === "function" && define.amd) { + define([], factory); + } else if (typeof exports === "object") { + module.exports = factory(); + } + })(function() { + return qrcode2; + }); + } + }); + + // src/pages/RequestPayment.tsx + var RequestPayment_exports = {}; + __export(RequestPayment_exports, { + RequestPayment: () => RequestPayment, + buildTimeRendering: () => buildTimeRendering, + mount: () => mount + }); + + // ../../node_modules/.pnpm/preact@10.11.3/node_modules/preact/dist/preact.module.js + var n; + var l; + var u; + var i; + var t; + var o; + var r; + var f = {}; + var e = []; + var c = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i; + function s(n3, l4) { + for (var u4 in l4) + n3[u4] = l4[u4]; + return n3; + } + function a(n3) { + var l4 = n3.parentNode; + l4 && l4.removeChild(n3); + } + function h(l4, u4, i4) { + var t3, o4, r3, f4 = {}; + for (r3 in u4) + "key" == r3 ? t3 = u4[r3] : "ref" == r3 ? o4 = u4[r3] : f4[r3] = u4[r3]; + if (arguments.length > 2 && (f4.children = arguments.length > 3 ? n.call(arguments, 2) : i4), "function" == typeof l4 && null != l4.defaultProps) + for (r3 in l4.defaultProps) + void 0 === f4[r3] && (f4[r3] = l4.defaultProps[r3]); + return v(l4, f4, t3, o4, null); + } + function v(n3, i4, t3, o4, r3) { + var f4 = { type: n3, props: i4, key: t3, ref: o4, __k: null, __: null, __b: 0, __e: null, __d: void 0, __c: null, __h: null, constructor: void 0, __v: null == r3 ? ++u : r3 }; + return null == r3 && null != l.vnode && l.vnode(f4), f4; + } + function y() { + return { current: null }; + } + function p(n3) { + return n3.children; + } + function d(n3, l4) { + this.props = n3, this.context = l4; + } + function _(n3, l4) { + if (null == l4) + return n3.__ ? _(n3.__, n3.__.__k.indexOf(n3) + 1) : null; + for (var u4; l4 < n3.__k.length; l4++) + if (null != (u4 = n3.__k[l4]) && null != u4.__e) + return u4.__e; + return "function" == typeof n3.type ? _(n3) : null; + } + function k(n3) { + var l4, u4; + if (null != (n3 = n3.__) && null != n3.__c) { + for (n3.__e = n3.__c.base = null, l4 = 0; l4 < n3.__k.length; l4++) + if (null != (u4 = n3.__k[l4]) && null != u4.__e) { + n3.__e = n3.__c.base = u4.__e; + break; + } + return k(n3); + } + } + function b(n3) { + (!n3.__d && (n3.__d = true) && t.push(n3) && !g.__r++ || o !== l.debounceRendering) && ((o = l.debounceRendering) || setTimeout)(g); + } + function g() { + for (var n3; g.__r = t.length; ) + n3 = t.sort(function(n4, l4) { + return n4.__v.__b - l4.__v.__b; + }), t = [], n3.some(function(n4) { + var l4, u4, i4, t3, o4, r3; + n4.__d && (o4 = (t3 = (l4 = n4).__v).__e, (r3 = l4.__P) && (u4 = [], (i4 = s({}, t3)).__v = t3.__v + 1, j(r3, t3, i4, l4.__n, void 0 !== r3.ownerSVGElement, null != t3.__h ? [o4] : null, u4, null == o4 ? _(t3) : o4, t3.__h), z(u4, t3), t3.__e != o4 && k(t3))); + }); + } + function w(n3, l4, u4, i4, t3, o4, r3, c4, s4, a4) { + var h4, y4, d4, k5, b4, g5, w5, x5 = i4 && i4.__k || e, C4 = x5.length; + for (u4.__k = [], h4 = 0; h4 < l4.length; h4++) + if (null != (k5 = u4.__k[h4] = null == (k5 = l4[h4]) || "boolean" == typeof k5 ? null : "string" == typeof k5 || "number" == typeof k5 || "bigint" == typeof k5 ? v(null, k5, null, null, k5) : Array.isArray(k5) ? v(p, { children: k5 }, null, null, null) : k5.__b > 0 ? v(k5.type, k5.props, k5.key, k5.ref ? k5.ref : null, k5.__v) : k5)) { + if (k5.__ = u4, k5.__b = u4.__b + 1, null === (d4 = x5[h4]) || d4 && k5.key == d4.key && k5.type === d4.type) + x5[h4] = void 0; + else + for (y4 = 0; y4 < C4; y4++) { + if ((d4 = x5[y4]) && k5.key == d4.key && k5.type === d4.type) { + x5[y4] = void 0; + break; + } + d4 = null; + } + j(n3, k5, d4 = d4 || f, t3, o4, r3, c4, s4, a4), b4 = k5.__e, (y4 = k5.ref) && d4.ref != y4 && (w5 || (w5 = []), d4.ref && w5.push(d4.ref, null, k5), w5.push(y4, k5.__c || b4, k5)), null != b4 ? (null == g5 && (g5 = b4), "function" == typeof k5.type && k5.__k === d4.__k ? k5.__d = s4 = m(k5, s4, n3) : s4 = A(n3, k5, d4, x5, b4, s4), "function" == typeof u4.type && (u4.__d = s4)) : s4 && d4.__e == s4 && s4.parentNode != n3 && (s4 = _(d4)); + } + for (u4.__e = g5, h4 = C4; h4--; ) + null != x5[h4] && N(x5[h4], x5[h4]); + if (w5) + for (h4 = 0; h4 < w5.length; h4++) + M(w5[h4], w5[++h4], w5[++h4]); + } + function m(n3, l4, u4) { + for (var i4, t3 = n3.__k, o4 = 0; t3 && o4 < t3.length; o4++) + (i4 = t3[o4]) && (i4.__ = n3, l4 = "function" == typeof i4.type ? m(i4, l4, u4) : A(u4, i4, i4, t3, i4.__e, l4)); + return l4; + } + function x(n3, l4) { + return l4 = l4 || [], null == n3 || "boolean" == typeof n3 || (Array.isArray(n3) ? n3.some(function(n4) { + x(n4, l4); + }) : l4.push(n3)), l4; + } + function A(n3, l4, u4, i4, t3, o4) { + var r3, f4, e3; + if (void 0 !== l4.__d) + r3 = l4.__d, l4.__d = void 0; + else if (null == u4 || t3 != o4 || null == t3.parentNode) + n: + if (null == o4 || o4.parentNode !== n3) + n3.appendChild(t3), r3 = null; + else { + for (f4 = o4, e3 = 0; (f4 = f4.nextSibling) && e3 < i4.length; e3 += 1) + if (f4 == t3) + break n; + n3.insertBefore(t3, o4), r3 = o4; + } + return void 0 !== r3 ? r3 : t3.nextSibling; + } + function C(n3, l4, u4, i4, t3) { + var o4; + for (o4 in u4) + "children" === o4 || "key" === o4 || o4 in l4 || H(n3, o4, null, u4[o4], i4); + for (o4 in l4) + t3 && "function" != typeof l4[o4] || "children" === o4 || "key" === o4 || "value" === o4 || "checked" === o4 || u4[o4] === l4[o4] || H(n3, o4, l4[o4], u4[o4], i4); + } + function $(n3, l4, u4) { + "-" === l4[0] ? n3.setProperty(l4, u4) : n3[l4] = null == u4 ? "" : "number" != typeof u4 || c.test(l4) ? u4 : u4 + "px"; + } + function H(n3, l4, u4, i4, t3) { + var o4; + n: + if ("style" === l4) + if ("string" == typeof u4) + n3.style.cssText = u4; + else { + if ("string" == typeof i4 && (n3.style.cssText = i4 = ""), i4) + for (l4 in i4) + u4 && l4 in u4 || $(n3.style, l4, ""); + if (u4) + for (l4 in u4) + i4 && u4[l4] === i4[l4] || $(n3.style, l4, u4[l4]); + } + else if ("o" === l4[0] && "n" === l4[1]) + o4 = l4 !== (l4 = l4.replace(/Capture$/, "")), l4 = l4.toLowerCase() in n3 ? l4.toLowerCase().slice(2) : l4.slice(2), n3.l || (n3.l = {}), n3.l[l4 + o4] = u4, u4 ? i4 || n3.addEventListener(l4, o4 ? T : I, o4) : n3.removeEventListener(l4, o4 ? T : I, o4); + else if ("dangerouslySetInnerHTML" !== l4) { + if (t3) + l4 = l4.replace(/xlink(H|:h)/, "h").replace(/sName$/, "s"); + else if ("href" !== l4 && "list" !== l4 && "form" !== l4 && "tabIndex" !== l4 && "download" !== l4 && l4 in n3) + try { + n3[l4] = null == u4 ? "" : u4; + break n; + } catch (n4) { + } + "function" == typeof u4 || (null == u4 || false === u4 && -1 == l4.indexOf("-") ? n3.removeAttribute(l4) : n3.setAttribute(l4, u4)); + } + } + function I(n3) { + this.l[n3.type + false](l.event ? l.event(n3) : n3); + } + function T(n3) { + this.l[n3.type + true](l.event ? l.event(n3) : n3); + } + function j(n3, u4, i4, t3, o4, r3, f4, e3, c4) { + var a4, h4, v4, y4, _4, k5, b4, g5, m4, x5, A5, C4, $3, H3, I3, T4 = u4.type; + if (void 0 !== u4.constructor) + return null; + null != i4.__h && (c4 = i4.__h, e3 = u4.__e = i4.__e, u4.__h = null, r3 = [e3]), (a4 = l.__b) && a4(u4); + try { + n: + if ("function" == typeof T4) { + if (g5 = u4.props, m4 = (a4 = T4.contextType) && t3[a4.__c], x5 = a4 ? m4 ? m4.props.value : a4.__ : t3, i4.__c ? b4 = (h4 = u4.__c = i4.__c).__ = h4.__E : ("prototype" in T4 && T4.prototype.render ? u4.__c = h4 = new T4(g5, x5) : (u4.__c = h4 = new d(g5, x5), h4.constructor = T4, h4.render = O), m4 && m4.sub(h4), h4.props = g5, h4.state || (h4.state = {}), h4.context = x5, h4.__n = t3, v4 = h4.__d = true, h4.__h = [], h4._sb = []), null == h4.__s && (h4.__s = h4.state), null != T4.getDerivedStateFromProps && (h4.__s == h4.state && (h4.__s = s({}, h4.__s)), s(h4.__s, T4.getDerivedStateFromProps(g5, h4.__s))), y4 = h4.props, _4 = h4.state, v4) + null == T4.getDerivedStateFromProps && null != h4.componentWillMount && h4.componentWillMount(), null != h4.componentDidMount && h4.__h.push(h4.componentDidMount); + else { + if (null == T4.getDerivedStateFromProps && g5 !== y4 && null != h4.componentWillReceiveProps && h4.componentWillReceiveProps(g5, x5), !h4.__e && null != h4.shouldComponentUpdate && false === h4.shouldComponentUpdate(g5, h4.__s, x5) || u4.__v === i4.__v) { + for (h4.props = g5, h4.state = h4.__s, u4.__v !== i4.__v && (h4.__d = false), h4.__v = u4, u4.__e = i4.__e, u4.__k = i4.__k, u4.__k.forEach(function(n4) { + n4 && (n4.__ = u4); + }), A5 = 0; A5 < h4._sb.length; A5++) + h4.__h.push(h4._sb[A5]); + h4._sb = [], h4.__h.length && f4.push(h4); + break n; + } + null != h4.componentWillUpdate && h4.componentWillUpdate(g5, h4.__s, x5), null != h4.componentDidUpdate && h4.__h.push(function() { + h4.componentDidUpdate(y4, _4, k5); + }); + } + if (h4.context = x5, h4.props = g5, h4.__v = u4, h4.__P = n3, C4 = l.__r, $3 = 0, "prototype" in T4 && T4.prototype.render) { + for (h4.state = h4.__s, h4.__d = false, C4 && C4(u4), a4 = h4.render(h4.props, h4.state, h4.context), H3 = 0; H3 < h4._sb.length; H3++) + h4.__h.push(h4._sb[H3]); + h4._sb = []; + } else + do { + h4.__d = false, C4 && C4(u4), a4 = h4.render(h4.props, h4.state, h4.context), h4.state = h4.__s; + } while (h4.__d && ++$3 < 25); + h4.state = h4.__s, null != h4.getChildContext && (t3 = s(s({}, t3), h4.getChildContext())), v4 || null == h4.getSnapshotBeforeUpdate || (k5 = h4.getSnapshotBeforeUpdate(y4, _4)), I3 = null != a4 && a4.type === p && null == a4.key ? a4.props.children : a4, w(n3, Array.isArray(I3) ? I3 : [I3], u4, i4, t3, o4, r3, f4, e3, c4), h4.base = u4.__e, u4.__h = null, h4.__h.length && f4.push(h4), b4 && (h4.__E = h4.__ = null), h4.__e = false; + } else + null == r3 && u4.__v === i4.__v ? (u4.__k = i4.__k, u4.__e = i4.__e) : u4.__e = L(i4.__e, u4, i4, t3, o4, r3, f4, c4); + (a4 = l.diffed) && a4(u4); + } catch (n4) { + u4.__v = null, (c4 || null != r3) && (u4.__e = e3, u4.__h = !!c4, r3[r3.indexOf(e3)] = null), l.__e(n4, u4, i4); + } + } + function z(n3, u4) { + l.__c && l.__c(u4, n3), n3.some(function(u5) { + try { + n3 = u5.__h, u5.__h = [], n3.some(function(n4) { + n4.call(u5); + }); + } catch (n4) { + l.__e(n4, u5.__v); + } + }); + } + function L(l4, u4, i4, t3, o4, r3, e3, c4) { + var s4, h4, v4, y4 = i4.props, p4 = u4.props, d4 = u4.type, k5 = 0; + if ("svg" === d4 && (o4 = true), null != r3) { + for (; k5 < r3.length; k5++) + if ((s4 = r3[k5]) && "setAttribute" in s4 == !!d4 && (d4 ? s4.localName === d4 : 3 === s4.nodeType)) { + l4 = s4, r3[k5] = null; + break; + } + } + if (null == l4) { + if (null === d4) + return document.createTextNode(p4); + l4 = o4 ? document.createElementNS("http://www.w3.org/2000/svg", d4) : document.createElement(d4, p4.is && p4), r3 = null, c4 = false; + } + if (null === d4) + y4 === p4 || c4 && l4.data === p4 || (l4.data = p4); + else { + if (r3 = r3 && n.call(l4.childNodes), h4 = (y4 = i4.props || f).dangerouslySetInnerHTML, v4 = p4.dangerouslySetInnerHTML, !c4) { + if (null != r3) + for (y4 = {}, k5 = 0; k5 < l4.attributes.length; k5++) + y4[l4.attributes[k5].name] = l4.attributes[k5].value; + (v4 || h4) && (v4 && (h4 && v4.__html == h4.__html || v4.__html === l4.innerHTML) || (l4.innerHTML = v4 && v4.__html || "")); + } + if (C(l4, p4, y4, o4, c4), v4) + u4.__k = []; + else if (k5 = u4.props.children, w(l4, Array.isArray(k5) ? k5 : [k5], u4, i4, t3, o4 && "foreignObject" !== d4, r3, e3, r3 ? r3[0] : i4.__k && _(i4, 0), c4), null != r3) + for (k5 = r3.length; k5--; ) + null != r3[k5] && a(r3[k5]); + c4 || ("value" in p4 && void 0 !== (k5 = p4.value) && (k5 !== l4.value || "progress" === d4 && !k5 || "option" === d4 && k5 !== y4.value) && H(l4, "value", k5, y4.value, false), "checked" in p4 && void 0 !== (k5 = p4.checked) && k5 !== l4.checked && H(l4, "checked", k5, y4.checked, false)); + } + return l4; + } + function M(n3, u4, i4) { + try { + "function" == typeof n3 ? n3(u4) : n3.current = u4; + } catch (n4) { + l.__e(n4, i4); + } + } + function N(n3, u4, i4) { + var t3, o4; + if (l.unmount && l.unmount(n3), (t3 = n3.ref) && (t3.current && t3.current !== n3.__e || M(t3, null, u4)), null != (t3 = n3.__c)) { + if (t3.componentWillUnmount) + try { + t3.componentWillUnmount(); + } catch (n4) { + l.__e(n4, u4); + } + t3.base = t3.__P = null, n3.__c = void 0; + } + if (t3 = n3.__k) + for (o4 = 0; o4 < t3.length; o4++) + t3[o4] && N(t3[o4], u4, i4 || "function" != typeof n3.type); + i4 || null == n3.__e || a(n3.__e), n3.__ = n3.__e = n3.__d = void 0; + } + function O(n3, l4, u4) { + return this.constructor(n3, u4); + } + function P(u4, i4, t3) { + var o4, r3, e3; + l.__ && l.__(u4, i4), r3 = (o4 = "function" == typeof t3) ? null : t3 && t3.__k || i4.__k, e3 = [], j(i4, u4 = (!o4 && t3 || i4).__k = h(p, null, [u4]), r3 || f, f, void 0 !== i4.ownerSVGElement, !o4 && t3 ? [t3] : r3 ? null : i4.firstChild ? n.call(i4.childNodes) : null, e3, !o4 && t3 ? t3 : r3 ? r3.__e : i4.firstChild, o4), z(e3, u4); + } + function S(n3, l4) { + P(n3, l4, S); + } + function q(l4, u4, i4) { + var t3, o4, r3, f4 = s({}, l4.props); + for (r3 in u4) + "key" == r3 ? t3 = u4[r3] : "ref" == r3 ? o4 = u4[r3] : f4[r3] = u4[r3]; + return arguments.length > 2 && (f4.children = arguments.length > 3 ? n.call(arguments, 2) : i4), v(l4.type, f4, t3 || l4.key, o4 || l4.ref, null); + } + function B(n3, l4) { + var u4 = { __c: l4 = "__cC" + r++, __: n3, Consumer: function(n4, l5) { + return n4.children(l5); + }, Provider: function(n4) { + var u5, i4; + return this.getChildContext || (u5 = [], (i4 = {})[l4] = this, this.getChildContext = function() { + return i4; + }, this.shouldComponentUpdate = function(n5) { + this.props.value !== n5.value && u5.some(b); + }, this.sub = function(n5) { + u5.push(n5); + var l5 = n5.componentWillUnmount; + n5.componentWillUnmount = function() { + u5.splice(u5.indexOf(n5), 1), l5 && l5.call(n5); + }; + }), n4.children; + } }; + return u4.Provider.__ = u4.Consumer.contextType = u4; + } + n = e.slice, l = { __e: function(n3, l4, u4, i4) { + for (var t3, o4, r3; l4 = l4.__; ) + if ((t3 = l4.__c) && !t3.__) + try { + if ((o4 = t3.constructor) && null != o4.getDerivedStateFromError && (t3.setState(o4.getDerivedStateFromError(n3)), r3 = t3.__d), null != t3.componentDidCatch && (t3.componentDidCatch(n3, i4 || {}), r3 = t3.__d), r3) + return t3.__E = t3; + } catch (l5) { + n3 = l5; + } + throw n3; + } }, u = 0, i = function(n3) { + return null != n3 && void 0 === n3.constructor; + }, d.prototype.setState = function(n3, l4) { + var u4; + u4 = null != this.__s && this.__s !== this.state ? this.__s : this.__s = s({}, this.state), "function" == typeof n3 && (n3 = n3(s({}, u4), this.props)), n3 && s(u4, n3), null != n3 && this.__v && (l4 && this._sb.push(l4), b(this)); + }, d.prototype.forceUpdate = function(n3) { + this.__v && (this.__e = true, n3 && this.__h.push(n3), b(this)); + }, d.prototype.render = p, t = [], g.__r = 0, r = 0; + + // ../../node_modules/.pnpm/preact-render-to-string@5.2.6_preact@10.11.3/node_modules/preact-render-to-string/dist/index.mjs + var n2 = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i; + var o2 = /^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/; + var i2 = /[\s\n\\/='"\0<>]/; + var l2 = /^xlink:?./; + var a2 = /["&<]/; + function s2(e3) { + if (false === a2.test(e3 += "")) + return e3; + for (var t3 = 0, r3 = 0, n3 = "", o4 = ""; r3 < e3.length; r3++) { + switch (e3.charCodeAt(r3)) { + case 34: + o4 = """; + break; + case 38: + o4 = "&"; + break; + case 60: + o4 = "<"; + break; + default: + continue; + } + r3 !== t3 && (n3 += e3.slice(t3, r3)), n3 += o4, t3 = r3 + 1; + } + return r3 !== t3 && (n3 += e3.slice(t3, r3)), n3; + } + var f2 = function(e3, t3) { + return String(e3).replace(/(\n+)/g, "$1" + (t3 || " ")); + }; + var u2 = function(e3, t3, r3) { + return String(e3).length > (t3 || 40) || !r3 && -1 !== String(e3).indexOf("\n") || -1 !== String(e3).indexOf("<"); + }; + var c2 = {}; + var _2 = /([A-Z])/g; + function p2(e3) { + var t3 = ""; + for (var r3 in e3) { + var o4 = e3[r3]; + null != o4 && "" !== o4 && (t3 && (t3 += " "), t3 += "-" == r3[0] ? r3 : c2[r3] || (c2[r3] = r3.replace(_2, "-$1").toLowerCase()), t3 = "number" == typeof o4 && false === n2.test(r3) ? t3 + ": " + o4 + "px;" : t3 + ": " + o4 + ";"); + } + return t3 || void 0; + } + function d2(e3, t3) { + return Array.isArray(t3) ? t3.reduce(d2, e3) : null != t3 && false !== t3 && e3.push(t3), e3; + } + function v2() { + this.__d = true; + } + function h2(e3, t3) { + return { __v: e3, context: t3, props: e3.props, setState: v2, forceUpdate: v2, __d: true, __h: [] }; + } + function g2(e3, t3) { + var r3 = e3.contextType, n3 = r3 && t3[r3.__c]; + return null != r3 ? n3 ? n3.props.value : r3.__ : t3; + } + var y2 = []; + function m2(r3, n3, a4, c4, _4, v4) { + if (null == r3 || "boolean" == typeof r3) + return ""; + if ("object" != typeof r3) + return "function" == typeof r3 ? "" : s2(r3); + var b4 = a4.pretty, x5 = b4 && "string" == typeof b4 ? b4 : " "; + if (Array.isArray(r3)) { + for (var k5 = "", S3 = 0; S3 < r3.length; S3++) + b4 && S3 > 0 && (k5 += "\n"), k5 += m2(r3[S3], n3, a4, c4, _4, v4); + return k5; + } + if (void 0 !== r3.constructor) + return ""; + var w5, C4 = r3.type, O4 = r3.props, j5 = false; + if ("function" == typeof C4) { + if (j5 = true, !a4.shallow || !c4 && false !== a4.renderRootComponent) { + if (C4 === p) { + var A5 = []; + return d2(A5, r3.props.children), m2(A5, n3, a4, false !== a4.shallowHighOrder, _4, v4); + } + var F4, H3 = r3.__c = h2(r3, n3); + l.__b && l.__b(r3); + var M3 = l.__r; + if (C4.prototype && "function" == typeof C4.prototype.render) { + var L3 = g2(C4, n3); + (H3 = r3.__c = new C4(O4, L3)).__v = r3, H3._dirty = H3.__d = true, H3.props = O4, null == H3.state && (H3.state = {}), null == H3._nextState && null == H3.__s && (H3._nextState = H3.__s = H3.state), H3.context = L3, C4.getDerivedStateFromProps ? H3.state = Object.assign({}, H3.state, C4.getDerivedStateFromProps(H3.props, H3.state)) : H3.componentWillMount && (H3.componentWillMount(), H3.state = H3._nextState !== H3.state ? H3._nextState : H3.__s !== H3.state ? H3.__s : H3.state), M3 && M3(r3), F4 = H3.render(H3.props, H3.state, H3.context); + } else + for (var T4 = g2(C4, n3), E2 = 0; H3.__d && E2++ < 25; ) + H3.__d = false, M3 && M3(r3), F4 = C4.call(r3.__c, O4, T4); + return H3.getChildContext && (n3 = Object.assign({}, n3, H3.getChildContext())), l.diffed && l.diffed(r3), m2(F4, n3, a4, false !== a4.shallowHighOrder, _4, v4); + } + C4 = (w5 = C4).displayName || w5 !== Function && w5.name || function(e3) { + var t3 = (Function.prototype.toString.call(e3).match(/^\s*function\s+([^( ]+)/) || "")[1]; + if (!t3) { + for (var r4 = -1, n4 = y2.length; n4--; ) + if (y2[n4] === e3) { + r4 = n4; + break; + } + r4 < 0 && (r4 = y2.push(e3) - 1), t3 = "UnnamedComponent" + r4; + } + return t3; + }(w5); + } + var $3, D2, N3 = "<" + C4; + if (O4) { + var P3 = Object.keys(O4); + a4 && true === a4.sortAttributes && P3.sort(); + for (var W2 = 0; W2 < P3.length; W2++) { + var I3 = P3[W2], R2 = O4[I3]; + if ("children" !== I3) { + if (!i2.test(I3) && (a4 && a4.allAttributes || "key" !== I3 && "ref" !== I3 && "__self" !== I3 && "__source" !== I3)) { + if ("defaultValue" === I3) + I3 = "value"; + else if ("defaultChecked" === I3) + I3 = "checked"; + else if ("defaultSelected" === I3) + I3 = "selected"; + else if ("className" === I3) { + if (void 0 !== O4.class) + continue; + I3 = "class"; + } else + _4 && l2.test(I3) && (I3 = I3.toLowerCase().replace(/^xlink:?/, "xlink:")); + if ("htmlFor" === I3) { + if (O4.for) + continue; + I3 = "for"; + } + "style" === I3 && R2 && "object" == typeof R2 && (R2 = p2(R2)), "a" === I3[0] && "r" === I3[1] && "boolean" == typeof R2 && (R2 = String(R2)); + var U2 = a4.attributeHook && a4.attributeHook(I3, R2, n3, a4, j5); + if (U2 || "" === U2) + N3 += U2; + else if ("dangerouslySetInnerHTML" === I3) + D2 = R2 && R2.__html; + else if ("textarea" === C4 && "value" === I3) + $3 = R2; + else if ((R2 || 0 === R2 || "" === R2) && "function" != typeof R2) { + if (!(true !== R2 && "" !== R2 || (R2 = I3, a4 && a4.xml))) { + N3 = N3 + " " + I3; + continue; + } + if ("value" === I3) { + if ("select" === C4) { + v4 = R2; + continue; + } + "option" === C4 && v4 == R2 && void 0 === O4.selected && (N3 += " selected"); + } + N3 = N3 + " " + I3 + '="' + s2(R2) + '"'; + } + } + } else + $3 = R2; + } + } + if (b4) { + var V3 = N3.replace(/\n\s*/, " "); + V3 === N3 || ~V3.indexOf("\n") ? b4 && ~N3.indexOf("\n") && (N3 += "\n") : N3 = V3; + } + if (N3 += ">", i2.test(C4)) + throw new Error(C4 + " is not a valid HTML tag name in " + N3); + var q4, z4 = o2.test(C4) || a4.voidElements && a4.voidElements.test(C4), Z2 = []; + if (D2) + b4 && u2(D2) && (D2 = "\n" + x5 + f2(D2, x5)), N3 += D2; + else if (null != $3 && d2(q4 = [], $3).length) { + for (var B4 = b4 && ~N3.indexOf("\n"), G2 = false, J2 = 0; J2 < q4.length; J2++) { + var K2 = q4[J2]; + if (null != K2 && false !== K2) { + var Q2 = m2(K2, n3, a4, true, "svg" === C4 || "foreignObject" !== C4 && _4, v4); + if (b4 && !B4 && u2(Q2) && (B4 = true), Q2) + if (b4) { + var X2 = Q2.length > 0 && "<" != Q2[0]; + G2 && X2 ? Z2[Z2.length - 1] += Q2 : Z2.push(Q2), G2 = X2; + } else + Z2.push(Q2); + } + } + if (b4 && B4) + for (var Y2 = Z2.length; Y2--; ) + Z2[Y2] = "\n" + x5 + f2(Z2[Y2], x5); + } + if (Z2.length || D2) + N3 += Z2.join(""); + else if (a4 && a4.xml) + return N3.substring(0, N3.length - 1) + " />"; + return !z4 || q4 || D2 ? (b4 && ~N3.indexOf("\n") && (N3 += "\n"), N3 = N3 + "</" + C4 + ">") : N3 = N3.replace(/>$/, " />"), N3; + } + var b2 = { shallow: true }; + S2.render = S2; + var x2 = function(e3, t3) { + return S2(e3, t3, b2); + }; + var k2 = []; + function S2(n3, o4, i4) { + o4 = o4 || {}; + var l4 = l.__s; + l.__s = true; + var a4, s4 = h(p, null); + return s4.__k = [n3], a4 = i4 && (i4.pretty || i4.voidElements || i4.sortAttributes || i4.shallow || i4.allAttributes || i4.xml || i4.attributeHook) ? m2(n3, o4, i4) : F(n3, o4, false, void 0, s4), l.__c && l.__c(n3, k2), l.__s = l4, k2.length = 0, a4; + } + function w2(e3) { + return null == e3 || "boolean" == typeof e3 ? null : "string" == typeof e3 || "number" == typeof e3 || "bigint" == typeof e3 ? h(null, null, e3) : e3; + } + function C2(e3, t3) { + return "className" === e3 ? "class" : "htmlFor" === e3 ? "for" : "defaultValue" === e3 ? "value" : "defaultChecked" === e3 ? "checked" : "defaultSelected" === e3 ? "selected" : t3 && l2.test(e3) ? e3.toLowerCase().replace(/^xlink:?/, "xlink:") : e3; + } + function O2(e3, t3) { + return "style" === e3 && null != t3 && "object" == typeof t3 ? p2(t3) : "a" === e3[0] && "r" === e3[1] && "boolean" == typeof t3 ? String(t3) : t3; + } + var j2 = Array.isArray; + var A2 = Object.assign; + function F(r3, n3, l4, a4, f4) { + if (null == r3 || true === r3 || false === r3 || "" === r3) + return ""; + if ("object" != typeof r3) + return "function" == typeof r3 ? "" : s2(r3); + if (j2(r3)) { + var u4 = ""; + f4.__k = r3; + for (var c4 = 0; c4 < r3.length; c4++) + u4 += F(r3[c4], n3, l4, a4, f4), r3[c4] = w2(r3[c4]); + return u4; + } + if (void 0 !== r3.constructor) + return ""; + r3.__ = f4, l.__b && l.__b(r3); + var _4 = r3.type, p4 = r3.props; + if ("function" == typeof _4) { + var d4; + if (_4 === p) + d4 = p4.children; + else { + d4 = _4.prototype && "function" == typeof _4.prototype.render ? function(e3, r4) { + var n4 = e3.type, o4 = g2(n4, r4), i4 = new n4(e3.props, o4); + e3.__c = i4, i4.__v = e3, i4.__d = true, i4.props = e3.props, null == i4.state && (i4.state = {}), null == i4.__s && (i4.__s = i4.state), i4.context = o4, n4.getDerivedStateFromProps ? i4.state = A2({}, i4.state, n4.getDerivedStateFromProps(i4.props, i4.state)) : i4.componentWillMount && (i4.componentWillMount(), i4.state = i4.__s !== i4.state ? i4.__s : i4.state); + var l5 = l.__r; + return l5 && l5(e3), i4.render(i4.props, i4.state, i4.context); + }(r3, n3) : function(e3, r4) { + var n4, o4 = h2(e3, r4), i4 = g2(e3.type, r4); + e3.__c = o4; + for (var l5 = l.__r, a5 = 0; o4.__d && a5++ < 25; ) + o4.__d = false, l5 && l5(e3), n4 = e3.type.call(o4, e3.props, i4); + return n4; + }(r3, n3); + var v4 = r3.__c; + v4.getChildContext && (n3 = A2({}, n3, v4.getChildContext())); + } + var y4 = F(d4 = null != d4 && d4.type === p && null == d4.key ? d4.props.children : d4, n3, l4, a4, r3); + return l.diffed && l.diffed(r3), r3.__ = void 0, l.unmount && l.unmount(r3), y4; + } + var m4, b4, x5 = "<"; + if (x5 += _4, p4) + for (var k5 in m4 = p4.children, p4) { + var S3 = p4[k5]; + if (!("key" === k5 || "ref" === k5 || "__self" === k5 || "__source" === k5 || "children" === k5 || "className" === k5 && "class" in p4 || "htmlFor" === k5 && "for" in p4 || i2.test(k5))) { + if (S3 = O2(k5 = C2(k5, l4), S3), "dangerouslySetInnerHTML" === k5) + b4 = S3 && S3.__html; + else if ("textarea" === _4 && "value" === k5) + m4 = S3; + else if ((S3 || 0 === S3 || "" === S3) && "function" != typeof S3) { + if (true === S3 || "" === S3) { + S3 = k5, x5 = x5 + " " + k5; + continue; + } + if ("value" === k5) { + if ("select" === _4) { + a4 = S3; + continue; + } + "option" !== _4 || a4 != S3 || "selected" in p4 || (x5 += " selected"); + } + x5 = x5 + " " + k5 + '="' + s2(S3) + '"'; + } + } + } + var H3 = x5; + if (x5 += ">", i2.test(_4)) + throw new Error(_4 + " is not a valid HTML tag name in " + x5); + var M3 = "", L3 = false; + if (b4) + M3 += b4, L3 = true; + else if ("string" == typeof m4) + M3 += s2(m4), L3 = true; + else if (j2(m4)) { + r3.__k = m4; + for (var T4 = 0; T4 < m4.length; T4++) { + var E2 = m4[T4]; + if (m4[T4] = w2(E2), null != E2 && false !== E2) { + var $3 = F(E2, n3, "svg" === _4 || "foreignObject" !== _4 && l4, a4, r3); + $3 && (M3 += $3, L3 = true); + } + } + } else if (null != m4 && false !== m4 && true !== m4) { + r3.__k = [w2(m4)]; + var D2 = F(m4, n3, "svg" === _4 || "foreignObject" !== _4 && l4, a4, r3); + D2 && (M3 += D2, L3 = true); + } + if (l.diffed && l.diffed(r3), r3.__ = void 0, l.unmount && l.unmount(r3), L3) + x5 += M3; + else if (o2.test(_4)) + return H3 + " />"; + return x5 + "</" + _4 + ">"; + } + S2.shallowRender = x2; + + // ../../node_modules/.pnpm/preact@10.11.3/node_modules/preact/hooks/dist/hooks.module.js + var t2; + var r2; + var u3; + var i3; + var o3 = 0; + var f3 = []; + var c3 = []; + var e2 = l.__b; + var a3 = l.__r; + var v3 = l.diffed; + var l3 = l.__c; + var m3 = l.unmount; + function d3(t3, u4) { + l.__h && l.__h(r2, t3, o3 || u4), o3 = 0; + var i4 = r2.__H || (r2.__H = { __: [], __h: [] }); + return t3 >= i4.__.length && i4.__.push({ __V: c3 }), i4.__[t3]; + } + function p3(n3) { + return o3 = 1, y3(B2, n3); + } + function y3(n3, u4, i4) { + var o4 = d3(t2++, 2); + if (o4.t = n3, !o4.__c && (o4.__ = [i4 ? i4(u4) : B2(void 0, u4), function(n4) { + var t3 = o4.__N ? o4.__N[0] : o4.__[0], r3 = o4.t(t3, n4); + t3 !== r3 && (o4.__N = [r3, o4.__[1]], o4.__c.setState({})); + }], o4.__c = r2, !r2.u)) { + r2.u = true; + var f4 = r2.shouldComponentUpdate; + r2.shouldComponentUpdate = function(n4, t3, r3) { + if (!o4.__c.__H) + return true; + var u5 = o4.__c.__H.__.filter(function(n5) { + return n5.__c; + }); + if (u5.every(function(n5) { + return !n5.__N; + })) + return !f4 || f4.call(this, n4, t3, r3); + var i5 = false; + return u5.forEach(function(n5) { + if (n5.__N) { + var t4 = n5.__[0]; + n5.__ = n5.__N, n5.__N = void 0, t4 !== n5.__[0] && (i5 = true); + } + }), !(!i5 && o4.__c.props === n4) && (!f4 || f4.call(this, n4, t3, r3)); + }; + } + return o4.__N || o4.__; + } + function h3(u4, i4) { + var o4 = d3(t2++, 3); + !l.__s && z2(o4.__H, i4) && (o4.__ = u4, o4.i = i4, r2.__H.__h.push(o4)); + } + function s3(u4, i4) { + var o4 = d3(t2++, 4); + !l.__s && z2(o4.__H, i4) && (o4.__ = u4, o4.i = i4, r2.__h.push(o4)); + } + function _3(n3) { + return o3 = 5, F2(function() { + return { current: n3 }; + }, []); + } + function A3(n3, t3, r3) { + o3 = 6, s3(function() { + return "function" == typeof n3 ? (n3(t3()), function() { + return n3(null); + }) : n3 ? (n3.current = t3(), function() { + return n3.current = null; + }) : void 0; + }, null == r3 ? r3 : r3.concat(n3)); + } + function F2(n3, r3) { + var u4 = d3(t2++, 7); + return z2(u4.__H, r3) ? (u4.__V = n3(), u4.i = r3, u4.__h = n3, u4.__V) : u4.__; + } + function T2(n3, t3) { + return o3 = 8, F2(function() { + return n3; + }, t3); + } + function q2(n3) { + var u4 = r2.context[n3.__c], i4 = d3(t2++, 9); + return i4.c = n3, u4 ? (null == i4.__ && (i4.__ = true, u4.sub(r2)), u4.props.value) : n3.__; + } + function x3(t3, r3) { + l.useDebugValue && l.useDebugValue(r3 ? r3(t3) : t3); + } + function V() { + var n3 = d3(t2++, 11); + if (!n3.__) { + for (var u4 = r2.__v; null !== u4 && !u4.__m && null !== u4.__; ) + u4 = u4.__; + var i4 = u4.__m || (u4.__m = [0, 0]); + n3.__ = "P" + i4[0] + "-" + i4[1]++; + } + return n3.__; + } + function b3() { + for (var t3; t3 = f3.shift(); ) + if (t3.__P && t3.__H) + try { + t3.__H.__h.forEach(k3), t3.__H.__h.forEach(w3), t3.__H.__h = []; + } catch (r3) { + t3.__H.__h = [], l.__e(r3, t3.__v); + } + } + l.__b = function(n3) { + r2 = null, e2 && e2(n3); + }, l.__r = function(n3) { + a3 && a3(n3), t2 = 0; + var i4 = (r2 = n3.__c).__H; + i4 && (u3 === r2 ? (i4.__h = [], r2.__h = [], i4.__.forEach(function(n4) { + n4.__N && (n4.__ = n4.__N), n4.__V = c3, n4.__N = n4.i = void 0; + })) : (i4.__h.forEach(k3), i4.__h.forEach(w3), i4.__h = [])), u3 = r2; + }, l.diffed = function(t3) { + v3 && v3(t3); + var o4 = t3.__c; + o4 && o4.__H && (o4.__H.__h.length && (1 !== f3.push(o4) && i3 === l.requestAnimationFrame || ((i3 = l.requestAnimationFrame) || j3)(b3)), o4.__H.__.forEach(function(n3) { + n3.i && (n3.__H = n3.i), n3.__V !== c3 && (n3.__ = n3.__V), n3.i = void 0, n3.__V = c3; + })), u3 = r2 = null; + }, l.__c = function(t3, r3) { + r3.some(function(t4) { + try { + t4.__h.forEach(k3), t4.__h = t4.__h.filter(function(n3) { + return !n3.__ || w3(n3); + }); + } catch (u4) { + r3.some(function(n3) { + n3.__h && (n3.__h = []); + }), r3 = [], l.__e(u4, t4.__v); + } + }), l3 && l3(t3, r3); + }, l.unmount = function(t3) { + m3 && m3(t3); + var r3, u4 = t3.__c; + u4 && u4.__H && (u4.__H.__.forEach(function(n3) { + try { + k3(n3); + } catch (n4) { + r3 = n4; + } + }), u4.__H = void 0, r3 && l.__e(r3, u4.__v)); + }; + var g3 = "function" == typeof requestAnimationFrame; + function j3(n3) { + var t3, r3 = function() { + clearTimeout(u4), g3 && cancelAnimationFrame(t3), setTimeout(n3); + }, u4 = setTimeout(r3, 100); + g3 && (t3 = requestAnimationFrame(r3)); + } + function k3(n3) { + var t3 = r2, u4 = n3.__c; + "function" == typeof u4 && (n3.__c = void 0, u4()), r2 = t3; + } + function w3(n3) { + var t3 = r2; + n3.__c = n3.__(), r2 = t3; + } + function z2(n3, t3) { + return !n3 || n3.length !== t3.length || t3.some(function(t4, r3) { + return t4 !== n3[r3]; + }); + } + function B2(n3, t3) { + return "function" == typeof t3 ? t3(n3) : t3; + } + + // ../../node_modules/.pnpm/@emotion+memoize@0.7.4/node_modules/@emotion/memoize/dist/memoize.browser.esm.js + function memoize(fn2) { + var cache = {}; + return function(arg) { + if (cache[arg] === void 0) + cache[arg] = fn2(arg); + return cache[arg]; + }; + } + var memoize_browser_esm_default = memoize; + + // ../../node_modules/.pnpm/@emotion+is-prop-valid@0.8.8/node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js + var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; + var index = memoize_browser_esm_default( + function(prop) { + return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91; + } + /* Z+1 */ + ); + var is_prop_valid_browser_esm_default = index; + + // node_modules/preact/compat/dist/compat.module.js + function g4(n3, t3) { + for (var e3 in t3) + n3[e3] = t3[e3]; + return n3; + } + function C3(n3, t3) { + for (var e3 in n3) + if ("__source" !== e3 && !(e3 in t3)) + return true; + for (var r3 in t3) + if ("__source" !== r3 && n3[r3] !== t3[r3]) + return true; + return false; + } + function E(n3, t3) { + return n3 === t3 && (0 !== n3 || 1 / n3 == 1 / t3) || n3 != n3 && t3 != t3; + } + function w4(n3) { + this.props = n3; + } + function R(n3, e3) { + function r3(n4) { + var t3 = this.props.ref, r4 = t3 == n4.ref; + return !r4 && t3 && (t3.call ? t3(null) : t3.current = null), e3 ? !e3(this.props, n4) || !r4 : C3(this.props, n4); + } + function u4(e4) { + return this.shouldComponentUpdate = r3, h(n3, e4); + } + return u4.displayName = "Memo(" + (n3.displayName || n3.name) + ")", u4.prototype.isReactComponent = true, u4.__f = true, u4; + } + (w4.prototype = new d()).isPureReactComponent = true, w4.prototype.shouldComponentUpdate = function(n3, t3) { + return C3(this.props, n3) || C3(this.state, t3); + }; + var x4 = l.__b; + l.__b = function(n3) { + n3.type && n3.type.__f && n3.ref && (n3.props.ref = n3.ref, n3.ref = null), x4 && x4(n3); + }; + var N2 = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.forward_ref") || 3911; + function k4(n3) { + function t3(t4) { + var e3 = g4({}, t4); + return delete e3.ref, n3(e3, t4.ref || null); + } + return t3.$$typeof = N2, t3.render = t3, t3.prototype.isReactComponent = t3.__f = true, t3.displayName = "ForwardRef(" + (n3.displayName || n3.name) + ")", t3; + } + var A4 = function(n3, t3) { + return null == n3 ? null : x(x(n3).map(t3)); + }; + var O3 = { map: A4, forEach: A4, count: function(n3) { + return n3 ? x(n3).length : 0; + }, only: function(n3) { + var t3 = x(n3); + if (1 !== t3.length) + throw "Children.only"; + return t3[0]; + }, toArray: x }; + var T3 = l.__e; + l.__e = function(n3, t3, e3, r3) { + if (n3.then) { + for (var u4, o4 = t3; o4 = o4.__; ) + if ((u4 = o4.__c) && u4.__c) + return null == t3.__e && (t3.__e = e3.__e, t3.__k = e3.__k), u4.__c(n3, t3); + } + T3(n3, t3, e3, r3); + }; + var I2 = l.unmount; + function L2(n3, t3, e3) { + return n3 && (n3.__c && n3.__c.__H && (n3.__c.__H.__.forEach(function(n4) { + "function" == typeof n4.__c && n4.__c(); + }), n3.__c.__H = null), null != (n3 = g4({}, n3)).__c && (n3.__c.__P === e3 && (n3.__c.__P = t3), n3.__c = null), n3.__k = n3.__k && n3.__k.map(function(n4) { + return L2(n4, t3, e3); + })), n3; + } + function U(n3, t3, e3) { + return n3 && (n3.__v = null, n3.__k = n3.__k && n3.__k.map(function(n4) { + return U(n4, t3, e3); + }), n3.__c && n3.__c.__P === t3 && (n3.__e && e3.insertBefore(n3.__e, n3.__d), n3.__c.__e = true, n3.__c.__P = e3)), n3; + } + function D() { + this.__u = 0, this.t = null, this.__b = null; + } + function F3(n3) { + var t3 = n3.__.__c; + return t3 && t3.__a && t3.__a(n3); + } + function M2(n3) { + var e3, r3, u4; + function o4(o5) { + if (e3 || (e3 = n3()).then(function(n4) { + r3 = n4.default || n4; + }, function(n4) { + u4 = n4; + }), u4) + throw u4; + if (!r3) + throw e3; + return h(r3, o5); + } + return o4.displayName = "Lazy", o4.__f = true, o4; + } + function V2() { + this.u = null, this.o = null; + } + l.unmount = function(n3) { + var t3 = n3.__c; + t3 && t3.__R && t3.__R(), t3 && true === n3.__h && (n3.type = null), I2 && I2(n3); + }, (D.prototype = new d()).__c = function(n3, t3) { + var e3 = t3.__c, r3 = this; + null == r3.t && (r3.t = []), r3.t.push(e3); + var u4 = F3(r3.__v), o4 = false, i4 = function() { + o4 || (o4 = true, e3.__R = null, u4 ? u4(l4) : l4()); + }; + e3.__R = i4; + var l4 = function() { + if (!--r3.__u) { + if (r3.state.__a) { + var n4 = r3.state.__a; + r3.__v.__k[0] = U(n4, n4.__c.__P, n4.__c.__O); + } + var t4; + for (r3.setState({ __a: r3.__b = null }); t4 = r3.t.pop(); ) + t4.forceUpdate(); + } + }, c4 = true === t3.__h; + r3.__u++ || c4 || r3.setState({ __a: r3.__b = r3.__v.__k[0] }), n3.then(i4, i4); + }, D.prototype.componentWillUnmount = function() { + this.t = []; + }, D.prototype.render = function(n3, e3) { + if (this.__b) { + if (this.__v.__k) { + var r3 = document.createElement("div"), o4 = this.__v.__k[0].__c; + this.__v.__k[0] = L2(this.__b, r3, o4.__O = o4.__P); + } + this.__b = null; + } + var i4 = e3.__a && h(p, null, n3.fallback); + return i4 && (i4.__h = null), [h(p, null, e3.__a ? null : n3.children), i4]; + }; + var W = function(n3, t3, e3) { + if (++e3[1] === e3[0] && n3.o.delete(t3), n3.props.revealOrder && ("t" !== n3.props.revealOrder[0] || !n3.o.size)) + for (e3 = n3.u; e3; ) { + for (; e3.length > 3; ) + e3.pop()(); + if (e3[1] < e3[0]) + break; + n3.u = e3 = e3[2]; + } + }; + function P2(n3) { + return this.getChildContext = function() { + return n3.context; + }, n3.children; + } + function $2(n3) { + var e3 = this, r3 = n3.i; + e3.componentWillUnmount = function() { + P(null, e3.l), e3.l = null, e3.i = null; + }, e3.i && e3.i !== r3 && e3.componentWillUnmount(), n3.__v ? (e3.l || (e3.i = r3, e3.l = { nodeType: 1, parentNode: r3, childNodes: [], appendChild: function(n4) { + this.childNodes.push(n4), e3.i.appendChild(n4); + }, insertBefore: function(n4, t3) { + this.childNodes.push(n4), e3.i.appendChild(n4); + }, removeChild: function(n4) { + this.childNodes.splice(this.childNodes.indexOf(n4) >>> 1, 1), e3.i.removeChild(n4); + } }), P(h(P2, { context: e3.context }, n3.__v), e3.l)) : e3.l && e3.componentWillUnmount(); + } + function j4(n3, e3) { + var r3 = h($2, { __v: n3, i: e3 }); + return r3.containerInfo = e3, r3; + } + (V2.prototype = new d()).__a = function(n3) { + var t3 = this, e3 = F3(t3.__v), r3 = t3.o.get(n3); + return r3[0]++, function(u4) { + var o4 = function() { + t3.props.revealOrder ? (r3.push(u4), W(t3, n3, r3)) : u4(); + }; + e3 ? e3(o4) : o4(); + }; + }, V2.prototype.render = function(n3) { + this.u = null, this.o = /* @__PURE__ */ new Map(); + var t3 = x(n3.children); + n3.revealOrder && "b" === n3.revealOrder[0] && t3.reverse(); + for (var e3 = t3.length; e3--; ) + this.o.set(t3[e3], this.u = [1, 0, this.u]); + return n3.children; + }, V2.prototype.componentDidUpdate = V2.prototype.componentDidMount = function() { + var n3 = this; + this.o.forEach(function(t3, e3) { + W(n3, e3, t3); + }); + }; + var z3 = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103; + var B3 = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/; + var H2 = "undefined" != typeof document; + var Z = function(n3) { + return ("undefined" != typeof Symbol && "symbol" == typeof Symbol() ? /fil|che|rad/i : /fil|che|ra/i).test(n3); + }; + function Y(n3, t3, e3) { + return null == t3.__k && (t3.textContent = ""), P(n3, t3), "function" == typeof e3 && e3(), n3 ? n3.__c : null; + } + function q3(n3, t3, e3) { + return S(n3, t3), "function" == typeof e3 && e3(), n3 ? n3.__c : null; + } + d.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach(function(t3) { + Object.defineProperty(d.prototype, t3, { configurable: true, get: function() { + return this["UNSAFE_" + t3]; + }, set: function(n3) { + Object.defineProperty(this, t3, { configurable: true, writable: true, value: n3 }); + } }); + }); + var G = l.event; + function J() { + } + function K() { + return this.cancelBubble; + } + function Q() { + return this.defaultPrevented; + } + l.event = function(n3) { + return G && (n3 = G(n3)), n3.persist = J, n3.isPropagationStopped = K, n3.isDefaultPrevented = Q, n3.nativeEvent = n3; + }; + var X; + var nn = { configurable: true, get: function() { + return this.class; + } }; + var tn = l.vnode; + l.vnode = function(n3) { + var t3 = n3.type, e3 = n3.props, u4 = e3; + if ("string" == typeof t3) { + var o4 = -1 === t3.indexOf("-"); + for (var i4 in u4 = {}, e3) { + var l4 = e3[i4]; + H2 && "children" === i4 && "noscript" === t3 || "value" === i4 && "defaultValue" in e3 && null == l4 || ("defaultValue" === i4 && "value" in e3 && null == e3.value ? i4 = "value" : "download" === i4 && true === l4 ? l4 = "" : /ondoubleclick/i.test(i4) ? i4 = "ondblclick" : /^onchange(textarea|input)/i.test(i4 + t3) && !Z(e3.type) ? i4 = "oninput" : /^onfocus$/i.test(i4) ? i4 = "onfocusin" : /^onblur$/i.test(i4) ? i4 = "onfocusout" : /^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(i4) ? i4 = i4.toLowerCase() : o4 && B3.test(i4) ? i4 = i4.replace(/[A-Z0-9]/g, "-$&").toLowerCase() : null === l4 && (l4 = void 0), /^oninput$/i.test(i4) && (i4 = i4.toLowerCase(), u4[i4] && (i4 = "oninputCapture")), u4[i4] = l4); + } + "select" == t3 && u4.multiple && Array.isArray(u4.value) && (u4.value = x(e3.children).forEach(function(n4) { + n4.props.selected = -1 != u4.value.indexOf(n4.props.value); + })), "select" == t3 && null != u4.defaultValue && (u4.value = x(e3.children).forEach(function(n4) { + n4.props.selected = u4.multiple ? -1 != u4.defaultValue.indexOf(n4.props.value) : u4.defaultValue == n4.props.value; + })), n3.props = u4, e3.class != e3.className && (nn.enumerable = "className" in e3, null != e3.className && (u4.class = e3.className), Object.defineProperty(u4, "className", nn)); + } + n3.$$typeof = z3, tn && tn(n3); + }; + var en = l.__r; + l.__r = function(n3) { + en && en(n3), X = n3.__c; + }; + var rn = { ReactCurrentDispatcher: { current: { readContext: function(n3) { + return X.__n[n3.__c].props.value; + } } } }; + function on(n3) { + return h.bind(null, n3); + } + function ln(n3) { + return !!n3 && n3.$$typeof === z3; + } + function cn(n3) { + return ln(n3) ? q.apply(null, arguments) : n3; + } + function fn(n3) { + return !!n3.__k && (P(null, n3), true); + } + function an(n3) { + return n3 && (n3.base || 1 === n3.nodeType && n3) || null; + } + var sn = function(n3, t3) { + return n3(t3); + }; + var hn = function(n3, t3) { + return n3(t3); + }; + var vn = p; + function dn(n3) { + n3(); + } + function pn(n3) { + return n3; + } + function mn() { + return [false, dn]; + } + var yn = s3; + function _n(n3, t3) { + var e3 = t3(), r3 = p3({ h: { __: e3, v: t3 } }), u4 = r3[0].h, o4 = r3[1]; + return s3(function() { + u4.__ = e3, u4.v = t3, E(u4.__, t3()) || o4({ h: u4 }); + }, [n3, e3, t3]), h3(function() { + return E(u4.__, u4.v()) || o4({ h: u4 }), n3(function() { + E(u4.__, u4.v()) || o4({ h: u4 }); + }); + }, [n3]), e3; + } + var bn = { useState: p3, useId: V, useReducer: y3, useEffect: h3, useLayoutEffect: s3, useInsertionEffect: yn, useTransition: mn, useDeferredValue: pn, useSyncExternalStore: _n, startTransition: dn, useRef: _3, useImperativeHandle: A3, useMemo: F2, useCallback: T2, useContext: q2, useDebugValue: x3, version: "17.0.2", Children: O3, render: Y, hydrate: q3, unmountComponentAtNode: fn, createPortal: j4, createElement: h, createContext: B, createFactory: on, cloneElement: cn, createRef: y, Fragment: p, isValidElement: ln, findDOMNode: an, Component: d, PureComponent: w4, memo: R, forwardRef: k4, flushSync: hn, unstable_batchedUpdates: sn, StrictMode: vn, Suspense: D, SuspenseList: V2, lazy: M2, __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: rn }; + + // ../../node_modules/.pnpm/@linaria+core@3.0.0-beta.22/node_modules/@linaria/core/esm/cx.js + var cx = function cx2() { + const presentClassNames = Array.prototype.slice.call(arguments).filter(Boolean); + const atomicClasses = {}; + const nonAtomicClasses = []; + presentClassNames.forEach((arg) => { + const individualClassNames = arg ? arg.split(" ") : []; + individualClassNames.forEach((className) => { + if (className.startsWith("atm_")) { + const [, keyHash] = className.split("_"); + atomicClasses[keyHash] = className; + } else { + nonAtomicClasses.push(className); + } + }); + }); + const result = []; + for (const keyHash in atomicClasses) { + if (Object.prototype.hasOwnProperty.call(atomicClasses, keyHash)) { + result.push(atomicClasses[keyHash]); + } + } + result.push(...nonAtomicClasses); + return result.join(" "); + }; + var cx_default = cx; + + // ../../node_modules/.pnpm/@linaria+react@3.0.0-beta.22_react@18.3.1/node_modules/@linaria/react/esm/styled.js + var isCapital = (ch) => ch.toUpperCase() === ch; + var filterKey = (keys) => (key) => keys.indexOf(key) === -1; + var omit = (obj, keys) => { + const res = {}; + Object.keys(obj).filter(filterKey(keys)).forEach((key) => { + res[key] = obj[key]; + }); + return res; + }; + function filterProps(component, props, omitKeys) { + const filteredProps = omit(props, omitKeys); + if (typeof component === "string" && component.indexOf("-") === -1 && !isCapital(component[0])) { + Object.keys(filteredProps).forEach((key) => { + if (!is_prop_valid_browser_esm_default(key)) { + delete filteredProps[key]; + } + }); + } + return filteredProps; + } + var warnIfInvalid = (value, componentName) => { + if (true) { + if (typeof value === "string" || // eslint-disable-next-line no-self-compare,no-restricted-globals + typeof value === "number" && isFinite(value)) { + return; + } + const stringified = typeof value === "object" ? JSON.stringify(value) : String(value); + console.warn(`An interpolation evaluated to '${stringified}' in the component '${componentName}', which is probably a mistake. You should explicitly cast or transform the value to a string.`); + } + }; + function styled(tag) { + return (options) => { + if (true) { + if (Array.isArray(options)) { + throw new Error('Using the "styled" tag in runtime is not supported. Make sure you have set up the Babel plugin correctly. See https://github.com/callstack/linaria#setup'); + } + } + const render = (props, ref) => { + const { + as: component = tag, + class: className + } = props; + const filteredProps = filterProps(component, props, ["as", "class"]); + filteredProps.ref = ref; + filteredProps.className = options.atomic ? cx_default(options.class, filteredProps.className || className) : cx_default(filteredProps.className || className, options.class); + const { + vars + } = options; + if (vars) { + const style = {}; + for (const name in vars) { + const variable = vars[name]; + const result = variable[0]; + const unit = variable[1] || ""; + const value = typeof result === "function" ? result(props) : result; + warnIfInvalid(value, options.name); + style[`--${name}`] = `${value}${unit}`; + } + const ownStyle = filteredProps.style || {}; + const keys = Object.keys(ownStyle); + if (keys.length > 0) { + keys.forEach((key) => { + style[key] = ownStyle[key]; + }); + } + filteredProps.style = style; + } + if (tag.__linaria && tag !== component) { + filteredProps.as = component; + return /* @__PURE__ */ bn.createElement(tag, filteredProps); + } + return /* @__PURE__ */ bn.createElement(component, filteredProps); + }; + const Result = bn.forwardRef ? /* @__PURE__ */ bn.forwardRef(render) : ( + // React.forwardRef won't available on older React versions and in Preact + // Fallback to a innerRef prop in that case + (props) => { + const rest = omit(props, ["innerRef"]); + return render(rest, props.innerRef); + } + ); + Result.displayName = options.name; + Result.__linaria = { + className: options.class, + extends: tag + }; + return Result; + }; + } + var styled_default = true ? new Proxy(styled, { + get(o4, prop) { + return o4(prop); + } + }) : styled; + + // src/styled/index.tsx + var QRPlaceholder = /* @__PURE__ */ styled_default("div")({ + name: "QRPlaceholder", + class: "q1ma0zxq" + }); + var FooterBar = /* @__PURE__ */ styled_default("footer")({ + name: "FooterBar", + class: "fef0x5t" + }); + var Page = /* @__PURE__ */ styled_default("div")({ + name: "Page", + class: "p1b3vqup" + }); + var WalletLink = /* @__PURE__ */ styled_default("a")({ + name: "WalletLink", + class: "wpwjmk", + vars: { + "wpwjmk-0": [({ + upperCased + }) => upperCased ? "uppercase" : "none"] + } + }); + + // src/components/Footer.tsx + function Footer() { + return /* @__PURE__ */ h(FooterBar, null, /* @__PURE__ */ h("p", null, /* @__PURE__ */ h("a", { + href: "https://taler.net/" + }, "Learn more about GNU Taler on our website."), /* @__PURE__ */ h("p", null, "Copyright \xA9 2014\u20142021 Taler Systems SA"))); + } + + // src/components/QR.tsx + var import_qrcode_generator = __toESM(require_qrcode()); + function createSVG(text) { + const qr = (0, import_qrcode_generator.default)(0, "L"); + qr.addData(text); + qr.make(); + return qr.createSvgTag({ + scalable: true, + margin: 0 + }); + } + function QR({ text }) { + const divRef = _3(null); + h3(() => { + if (divRef.current) { + divRef.current.innerHTML = createSVG(text); + } + }); + return /* @__PURE__ */ h("div", { + style: { + width: "100%", + display: "flex", + flexDirection: "column", + alignItems: "center" + } + }, /* @__PURE__ */ h("div", { + style: { width: "50%", minWidth: 200, maxWidth: 300 }, + ref: divRef + })); + } + + // src/pages/RequestPayment.tsx + function Head({ order_summary }) { + return /* @__PURE__ */ h(p, null, /* @__PURE__ */ h("meta", { + charSet: "UTF-8" + }), /* @__PURE__ */ h("meta", { + name: "viewport", + content: "width=device-width, initial-scale=1.0" + }), /* @__PURE__ */ h("meta", { + name: "taler-support", + content: "uri" + }), /* @__PURE__ */ h("meta", { + name: "taler-uri", + content: "taler+http://pay/localhost:8083/2024.295-038BS90KD5FD4/?c=9K99S15CQRXYEQT8DV35VXE90M" + }), /* @__PURE__ */ h("noscript", null, /* @__PURE__ */ h("meta", { + "http-equiv": "refresh", + content: "1" + })), /* @__PURE__ */ h("title", null, "Payment requested for", " ", order_summary ? order_summary : `Buy me!`)); + } + function RequestPayment({ + payURI, + qr_code, + order_status_url + }) { + h3(() => { + const longpollDelayMs = 60 * 1e3; + let checkUrl; + try { + checkUrl = new URL(order_status_url ? order_status_url : "http://localhost:8083/orders/2024.295-038BS90KD5FD4?token=9K99S15CQRXYEQT8DV35VXE90M"); + } catch (e3) { + return; + } + checkUrl.searchParams.set("timeout_ms", longpollDelayMs.toString()); + const delayMs = 500; + function check() { + let retried = false; + function retryOnce() { + if (!retried) { + retried = true; + check(); + } + } + const req = new XMLHttpRequest(); + req.onreadystatechange = function() { + if (req.readyState === XMLHttpRequest.DONE) { + if (req.status === 200) { + try { + const resp = JSON.parse(req.responseText); + if (resp.fulfillment_url) { + window.location.replace(resp.fulfillment_url); + } else { + window.location.reload(); + } + } catch (e3) { + console.error("could not parse response:", e3); + } + } + if (req.status === 202) { + try { + const resp = JSON.parse(req.responseText); + if (resp.fulfillment_url) { + window.location.replace(resp.fulfillment_url); + } else { + window.location.reload(); + } + } catch (e3) { + console.error("could not parse response:", e3); + } + } + if (req.status === 402) { + try { + const resp = JSON.parse(req.responseText); + if (resp.already_paid_order_id && resp.fulfillment_url) { + window.location.replace(resp.fulfillment_url); + } + } catch (e3) { + console.error("could not parse response:", e3); + } + } + setTimeout(retryOnce, delayMs); + } + }; + req.onerror = function() { + setTimeout(retryOnce, delayMs); + }; + req.ontimeout = function() { + setTimeout(retryOnce, delayMs); + }; + req.timeout = longpollDelayMs; + req.open("GET", checkUrl.href); + req.send(); + } + setTimeout(check, delayMs); + }); + return /* @__PURE__ */ h(Page, null, /* @__PURE__ */ h("section", null, /* @__PURE__ */ h("h1", null, "Pay with Taler"), /* @__PURE__ */ h("p", null, "Scan this QR code with your mobile wallet:"), /* @__PURE__ */ h(QRPlaceholder, { + dangerouslySetInnerHTML: { + __html: qr_code ? qr_code : `<svg width='100mm' height='100mm' viewBox='0 0 37 37' version='1.1' xmlns='http://www.w3.org/2000/svg' style='shape-rendering: crispedges;'> + <rect x=0 y=0 width=1 height=1 /> + <rect x=1 y=0 width=1 height=1 /> + <rect x=2 y=0 width=1 height=1 /> + <rect x=3 y=0 width=1 height=1 /> + <rect x=4 y=0 width=1 height=1 /> + <rect x=5 y=0 width=1 height=1 /> + <rect x=6 y=0 width=1 height=1 /> + <rect x=8 y=0 width=1 height=1 /> + <rect x=11 y=0 width=1 height=1 /> + <rect x=12 y=0 width=1 height=1 /> + <rect x=13 y=0 width=1 height=1 /> + <rect x=17 y=0 width=1 height=1 /> + <rect x=20 y=0 width=1 height=1 /> + <rect x=21 y=0 width=1 height=1 /> + <rect x=23 y=0 width=1 height=1 /> + <rect x=28 y=0 width=1 height=1 /> + <rect x=30 y=0 width=1 height=1 /> + <rect x=31 y=0 width=1 height=1 /> + <rect x=32 y=0 width=1 height=1 /> + <rect x=33 y=0 width=1 height=1 /> + <rect x=34 y=0 width=1 height=1 /> + <rect x=35 y=0 width=1 height=1 /> + <rect x=36 y=0 width=1 height=1 /> + <rect x=0 y=1 width=1 height=1 /> + <rect x=6 y=1 width=1 height=1 /> + <rect x=8 y=1 width=1 height=1 /> + <rect x=11 y=1 width=1 height=1 /> + <rect x=12 y=1 width=1 height=1 /> + <rect x=13 y=1 width=1 height=1 /> + <rect x=18 y=1 width=1 height=1 /> + <rect x=19 y=1 width=1 height=1 /> + <rect x=20 y=1 width=1 height=1 /> + <rect x=21 y=1 width=1 height=1 /> + <rect x=25 y=1 width=1 height=1 /> + <rect x=26 y=1 width=1 height=1 /> + <rect x=28 y=1 width=1 height=1 /> + <rect x=30 y=1 width=1 height=1 /> + <rect x=36 y=1 width=1 height=1 /> + <rect x=0 y=2 width=1 height=1 /> + <rect x=2 y=2 width=1 height=1 /> + <rect x=3 y=2 width=1 height=1 /> + <rect x=4 y=2 width=1 height=1 /> + <rect x=6 y=2 width=1 height=1 /> + <rect x=8 y=2 width=1 height=1 /> + <rect x=9 y=2 width=1 height=1 /> + <rect x=14 y=2 width=1 height=1 /> + <rect x=15 y=2 width=1 height=1 /> + <rect x=16 y=2 width=1 height=1 /> + <rect x=18 y=2 width=1 height=1 /> + <rect x=20 y=2 width=1 height=1 /> + <rect x=21 y=2 width=1 height=1 /> + <rect x=24 y=2 width=1 height=1 /> + <rect x=25 y=2 width=1 height=1 /> + <rect x=26 y=2 width=1 height=1 /> + <rect x=27 y=2 width=1 height=1 /> + <rect x=30 y=2 width=1 height=1 /> + <rect x=32 y=2 width=1 height=1 /> + <rect x=33 y=2 width=1 height=1 /> + <rect x=34 y=2 width=1 height=1 /> + <rect x=36 y=2 width=1 height=1 /> + <rect x=0 y=3 width=1 height=1 /> + <rect x=2 y=3 width=1 height=1 /> + <rect x=3 y=3 width=1 height=1 /> + <rect x=4 y=3 width=1 height=1 /> + <rect x=6 y=3 width=1 height=1 /> + <rect x=10 y=3 width=1 height=1 /> + <rect x=11 y=3 width=1 height=1 /> + <rect x=13 y=3 width=1 height=1 /> + <rect x=14 y=3 width=1 height=1 /> + <rect x=16 y=3 width=1 height=1 /> + <rect x=17 y=3 width=1 height=1 /> + <rect x=18 y=3 width=1 height=1 /> + <rect x=21 y=3 width=1 height=1 /> + <rect x=25 y=3 width=1 height=1 /> + <rect x=26 y=3 width=1 height=1 /> + <rect x=27 y=3 width=1 height=1 /> + <rect x=30 y=3 width=1 height=1 /> + <rect x=32 y=3 width=1 height=1 /> + <rect x=33 y=3 width=1 height=1 /> + <rect x=34 y=3 width=1 height=1 /> + <rect x=36 y=3 width=1 height=1 /> + <rect x=0 y=4 width=1 height=1 /> + <rect x=2 y=4 width=1 height=1 /> + <rect x=3 y=4 width=1 height=1 /> + <rect x=4 y=4 width=1 height=1 /> + <rect x=6 y=4 width=1 height=1 /> + <rect x=8 y=4 width=1 height=1 /> + <rect x=13 y=4 width=1 height=1 /> + <rect x=15 y=4 width=1 height=1 /> + <rect x=16 y=4 width=1 height=1 /> + <rect x=17 y=4 width=1 height=1 /> + <rect x=19 y=4 width=1 height=1 /> + <rect x=20 y=4 width=1 height=1 /> + <rect x=21 y=4 width=1 height=1 /> + <rect x=22 y=4 width=1 height=1 /> + <rect x=25 y=4 width=1 height=1 /> + <rect x=26 y=4 width=1 height=1 /> + <rect x=28 y=4 width=1 height=1 /> + <rect x=30 y=4 width=1 height=1 /> + <rect x=32 y=4 width=1 height=1 /> + <rect x=33 y=4 width=1 height=1 /> + <rect x=34 y=4 width=1 height=1 /> + <rect x=36 y=4 width=1 height=1 /> + <rect x=0 y=5 width=1 height=1 /> + <rect x=6 y=5 width=1 height=1 /> + <rect x=10 y=5 width=1 height=1 /> + <rect x=11 y=5 width=1 height=1 /> + <rect x=13 y=5 width=1 height=1 /> + <rect x=14 y=5 width=1 height=1 /> + <rect x=16 y=5 width=1 height=1 /> + <rect x=18 y=5 width=1 height=1 /> + <rect x=21 y=5 width=1 height=1 /> + <rect x=22 y=5 width=1 height=1 /> + <rect x=23 y=5 width=1 height=1 /> + <rect x=30 y=5 width=1 height=1 /> + <rect x=36 y=5 width=1 height=1 /> + <rect x=0 y=6 width=1 height=1 /> + <rect x=1 y=6 width=1 height=1 /> + <rect x=2 y=6 width=1 height=1 /> + <rect x=3 y=6 width=1 height=1 /> + <rect x=4 y=6 width=1 height=1 /> + <rect x=5 y=6 width=1 height=1 /> + <rect x=6 y=6 width=1 height=1 /> + <rect x=8 y=6 width=1 height=1 /> + <rect x=10 y=6 width=1 height=1 /> + <rect x=12 y=6 width=1 height=1 /> + <rect x=14 y=6 width=1 height=1 /> + <rect x=16 y=6 width=1 height=1 /> + <rect x=18 y=6 width=1 height=1 /> + <rect x=20 y=6 width=1 height=1 /> + <rect x=22 y=6 width=1 height=1 /> + <rect x=24 y=6 width=1 height=1 /> + <rect x=26 y=6 width=1 height=1 /> + <rect x=28 y=6 width=1 height=1 /> + <rect x=30 y=6 width=1 height=1 /> + <rect x=31 y=6 width=1 height=1 /> + <rect x=32 y=6 width=1 height=1 /> + <rect x=33 y=6 width=1 height=1 /> + <rect x=34 y=6 width=1 height=1 /> + <rect x=35 y=6 width=1 height=1 /> + <rect x=36 y=6 width=1 height=1 /> + <rect x=9 y=7 width=1 height=1 /> + <rect x=11 y=7 width=1 height=1 /> + <rect x=12 y=7 width=1 height=1 /> + <rect x=16 y=7 width=1 height=1 /> + <rect x=20 y=7 width=1 height=1 /> + <rect x=23 y=7 width=1 height=1 /> + <rect x=25 y=7 width=1 height=1 /> + <rect x=0 y=8 width=1 height=1 /> + <rect x=3 y=8 width=1 height=1 /> + <rect x=4 y=8 width=1 height=1 /> + <rect x=5 y=8 width=1 height=1 /> + <rect x=6 y=8 width=1 height=1 /> + <rect x=7 y=8 width=1 height=1 /> + <rect x=8 y=8 width=1 height=1 /> + <rect x=10 y=8 width=1 height=1 /> + <rect x=13 y=8 width=1 height=1 /> + <rect x=14 y=8 width=1 height=1 /> + <rect x=16 y=8 width=1 height=1 /> + <rect x=17 y=8 width=1 height=1 /> + <rect x=18 y=8 width=1 height=1 /> + <rect x=19 y=8 width=1 height=1 /> + <rect x=20 y=8 width=1 height=1 /> + <rect x=21 y=8 width=1 height=1 /> + <rect x=23 y=8 width=1 height=1 /> + <rect x=25 y=8 width=1 height=1 /> + <rect x=26 y=8 width=1 height=1 /> + <rect x=27 y=8 width=1 height=1 /> + <rect x=29 y=8 width=1 height=1 /> + <rect x=32 y=8 width=1 height=1 /> + <rect x=34 y=8 width=1 height=1 /> + <rect x=35 y=8 width=1 height=1 /> + <rect x=36 y=8 width=1 height=1 /> + <rect x=0 y=9 width=1 height=1 /> + <rect x=1 y=9 width=1 height=1 /> + <rect x=3 y=9 width=1 height=1 /> + <rect x=4 y=9 width=1 height=1 /> + <rect x=9 y=9 width=1 height=1 /> + <rect x=10 y=9 width=1 height=1 /> + <rect x=12 y=9 width=1 height=1 /> + <rect x=13 y=9 width=1 height=1 /> + <rect x=14 y=9 width=1 height=1 /> + <rect x=16 y=9 width=1 height=1 /> + <rect x=25 y=9 width=1 height=1 /> + <rect x=26 y=9 width=1 height=1 /> + <rect x=27 y=9 width=1 height=1 /> + <rect x=28 y=9 width=1 height=1 /> + <rect x=30 y=9 width=1 height=1 /> + <rect x=31 y=9 width=1 height=1 /> + <rect x=32 y=9 width=1 height=1 /> + <rect x=34 y=9 width=1 height=1 /> + <rect x=0 y=10 width=1 height=1 /> + <rect x=2 y=10 width=1 height=1 /> + <rect x=6 y=10 width=1 height=1 /> + <rect x=7 y=10 width=1 height=1 /> + <rect x=8 y=10 width=1 height=1 /> + <rect x=10 y=10 width=1 height=1 /> + <rect x=11 y=10 width=1 height=1 /> + <rect x=12 y=10 width=1 height=1 /> + <rect x=13 y=10 width=1 height=1 /> + <rect x=15 y=10 width=1 height=1 /> + <rect x=16 y=10 width=1 height=1 /> + <rect x=18 y=10 width=1 height=1 /> + <rect x=20 y=10 width=1 height=1 /> + <rect x=21 y=10 width=1 height=1 /> + <rect x=22 y=10 width=1 height=1 /> + <rect x=23 y=10 width=1 height=1 /> + <rect x=25 y=10 width=1 height=1 /> + <rect x=27 y=10 width=1 height=1 /> + <rect x=28 y=10 width=1 height=1 /> + <rect x=30 y=10 width=1 height=1 /> + <rect x=31 y=10 width=1 height=1 /> + <rect x=32 y=10 width=1 height=1 /> + <rect x=33 y=10 width=1 height=1 /> + <rect x=34 y=10 width=1 height=1 /> + <rect x=36 y=10 width=1 height=1 /> + <rect x=1 y=11 width=1 height=1 /> + <rect x=2 y=11 width=1 height=1 /> + <rect x=4 y=11 width=1 height=1 /> + <rect x=5 y=11 width=1 height=1 /> + <rect x=8 y=11 width=1 height=1 /> + <rect x=9 y=11 width=1 height=1 /> + <rect x=12 y=11 width=1 height=1 /> + <rect x=13 y=11 width=1 height=1 /> + <rect x=17 y=11 width=1 height=1 /> + <rect x=18 y=11 width=1 height=1 /> + <rect x=20 y=11 width=1 height=1 /> + <rect x=22 y=11 width=1 height=1 /> + <rect x=24 y=11 width=1 height=1 /> + <rect x=26 y=11 width=1 height=1 /> + <rect x=27 y=11 width=1 height=1 /> + <rect x=28 y=11 width=1 height=1 /> + <rect x=29 y=11 width=1 height=1 /> + <rect x=30 y=11 width=1 height=1 /> + <rect x=31 y=11 width=1 height=1 /> + <rect x=33 y=11 width=1 height=1 /> + <rect x=34 y=11 width=1 height=1 /> + <rect x=36 y=11 width=1 height=1 /> + <rect x=0 y=12 width=1 height=1 /> + <rect x=1 y=12 width=1 height=1 /> + <rect x=6 y=12 width=1 height=1 /> + <rect x=7 y=12 width=1 height=1 /> + <rect x=8 y=12 width=1 height=1 /> + <rect x=9 y=12 width=1 height=1 /> + <rect x=10 y=12 width=1 height=1 /> + <rect x=11 y=12 width=1 height=1 /> + <rect x=18 y=12 width=1 height=1 /> + <rect x=19 y=12 width=1 height=1 /> + <rect x=22 y=12 width=1 height=1 /> + <rect x=23 y=12 width=1 height=1 /> + <rect x=24 y=12 width=1 height=1 /> + <rect x=27 y=12 width=1 height=1 /> + <rect x=28 y=12 width=1 height=1 /> + <rect x=30 y=12 width=1 height=1 /> + <rect x=34 y=12 width=1 height=1 /> + <rect x=35 y=12 width=1 height=1 /> + <rect x=36 y=12 width=1 height=1 /> + <rect x=0 y=13 width=1 height=1 /> + <rect x=1 y=13 width=1 height=1 /> + <rect x=2 y=13 width=1 height=1 /> + <rect x=8 y=13 width=1 height=1 /> + <rect x=9 y=13 width=1 height=1 /> + <rect x=10 y=13 width=1 height=1 /> + <rect x=13 y=13 width=1 height=1 /> + <rect x=14 y=13 width=1 height=1 /> + <rect x=15 y=13 width=1 height=1 /> + <rect x=20 y=13 width=1 height=1 /> + <rect x=21 y=13 width=1 height=1 /> + <rect x=22 y=13 width=1 height=1 /> + <rect x=23 y=13 width=1 height=1 /> + <rect x=26 y=13 width=1 height=1 /> + <rect x=27 y=13 width=1 height=1 /> + <rect x=28 y=13 width=1 height=1 /> + <rect x=29 y=13 width=1 height=1 /> + <rect x=32 y=13 width=1 height=1 /> + <rect x=33 y=13 width=1 height=1 /> + <rect x=34 y=13 width=1 height=1 /> + <rect x=36 y=13 width=1 height=1 /> + <rect x=0 y=14 width=1 height=1 /> + <rect x=1 y=14 width=1 height=1 /> + <rect x=2 y=14 width=1 height=1 /> + <rect x=4 y=14 width=1 height=1 /> + <rect x=6 y=14 width=1 height=1 /> + <rect x=7 y=14 width=1 height=1 /> + <rect x=9 y=14 width=1 height=1 /> + <rect x=11 y=14 width=1 height=1 /> + <rect x=14 y=14 width=1 height=1 /> + <rect x=15 y=14 width=1 height=1 /> + <rect x=19 y=14 width=1 height=1 /> + <rect x=20 y=14 width=1 height=1 /> + <rect x=21 y=14 width=1 height=1 /> + <rect x=22 y=14 width=1 height=1 /> + <rect x=24 y=14 width=1 height=1 /> + <rect x=27 y=14 width=1 height=1 /> + <rect x=28 y=14 width=1 height=1 /> + <rect x=29 y=14 width=1 height=1 /> + <rect x=30 y=14 width=1 height=1 /> + <rect x=31 y=14 width=1 height=1 /> + <rect x=33 y=14 width=1 height=1 /> + <rect x=34 y=14 width=1 height=1 /> + <rect x=35 y=14 width=1 height=1 /> + <rect x=36 y=14 width=1 height=1 /> + <rect x=0 y=15 width=1 height=1 /> + <rect x=4 y=15 width=1 height=1 /> + <rect x=9 y=15 width=1 height=1 /> + <rect x=13 y=15 width=1 height=1 /> + <rect x=14 y=15 width=1 height=1 /> + <rect x=19 y=15 width=1 height=1 /> + <rect x=22 y=15 width=1 height=1 /> + <rect x=24 y=15 width=1 height=1 /> + <rect x=28 y=15 width=1 height=1 /> + <rect x=31 y=15 width=1 height=1 /> + <rect x=32 y=15 width=1 height=1 /> + <rect x=33 y=15 width=1 height=1 /> + <rect x=34 y=15 width=1 height=1 /> + <rect x=36 y=15 width=1 height=1 /> + <rect x=0 y=16 width=1 height=1 /> + <rect x=2 y=16 width=1 height=1 /> + <rect x=6 y=16 width=1 height=1 /> + <rect x=8 y=16 width=1 height=1 /> + <rect x=9 y=16 width=1 height=1 /> + <rect x=10 y=16 width=1 height=1 /> + <rect x=11 y=16 width=1 height=1 /> + <rect x=14 y=16 width=1 height=1 /> + <rect x=17 y=16 width=1 height=1 /> + <rect x=19 y=16 width=1 height=1 /> + <rect x=20 y=16 width=1 height=1 /> + <rect x=21 y=16 width=1 height=1 /> + <rect x=22 y=16 width=1 height=1 /> + <rect x=24 y=16 width=1 height=1 /> + <rect x=25 y=16 width=1 height=1 /> + <rect x=26 y=16 width=1 height=1 /> + <rect x=27 y=16 width=1 height=1 /> + <rect x=30 y=16 width=1 height=1 /> + <rect x=31 y=16 width=1 height=1 /> + <rect x=33 y=16 width=1 height=1 /> + <rect x=34 y=16 width=1 height=1 /> + <rect x=35 y=16 width=1 height=1 /> + <rect x=0 y=17 width=1 height=1 /> + <rect x=1 y=17 width=1 height=1 /> + <rect x=3 y=17 width=1 height=1 /> + <rect x=4 y=17 width=1 height=1 /> + <rect x=7 y=17 width=1 height=1 /> + <rect x=8 y=17 width=1 height=1 /> + <rect x=9 y=17 width=1 height=1 /> + <rect x=11 y=17 width=1 height=1 /> + <rect x=12 y=17 width=1 height=1 /> + <rect x=14 y=17 width=1 height=1 /> + <rect x=17 y=17 width=1 height=1 /> + <rect x=20 y=17 width=1 height=1 /> + <rect x=21 y=17 width=1 height=1 /> + <rect x=23 y=17 width=1 height=1 /> + <rect x=25 y=17 width=1 height=1 /> + <rect x=26 y=17 width=1 height=1 /> + <rect x=27 y=17 width=1 height=1 /> + <rect x=29 y=17 width=1 height=1 /> + <rect x=30 y=17 width=1 height=1 /> + <rect x=34 y=17 width=1 height=1 /> + <rect x=35 y=17 width=1 height=1 /> + <rect x=3 y=18 width=1 height=1 /> + <rect x=4 y=18 width=1 height=1 /> + <rect x=5 y=18 width=1 height=1 /> + <rect x=6 y=18 width=1 height=1 /> + <rect x=7 y=18 width=1 height=1 /> + <rect x=8 y=18 width=1 height=1 /> + <rect x=9 y=18 width=1 height=1 /> + <rect x=10 y=18 width=1 height=1 /> + <rect x=11 y=18 width=1 height=1 /> + <rect x=12 y=18 width=1 height=1 /> + <rect x=14 y=18 width=1 height=1 /> + <rect x=15 y=18 width=1 height=1 /> + <rect x=16 y=18 width=1 height=1 /> + <rect x=17 y=18 width=1 height=1 /> + <rect x=19 y=18 width=1 height=1 /> + <rect x=20 y=18 width=1 height=1 /> + <rect x=22 y=18 width=1 height=1 /> + <rect x=23 y=18 width=1 height=1 /> + <rect x=25 y=18 width=1 height=1 /> + <rect x=27 y=18 width=1 height=1 /> + <rect x=29 y=18 width=1 height=1 /> + <rect x=30 y=18 width=1 height=1 /> + <rect x=31 y=18 width=1 height=1 /> + <rect x=32 y=18 width=1 height=1 /> + <rect x=36 y=18 width=1 height=1 /> + <rect x=0 y=19 width=1 height=1 /> + <rect x=4 y=19 width=1 height=1 /> + <rect x=8 y=19 width=1 height=1 /> + <rect x=9 y=19 width=1 height=1 /> + <rect x=12 y=19 width=1 height=1 /> + <rect x=13 y=19 width=1 height=1 /> + <rect x=18 y=19 width=1 height=1 /> + <rect x=19 y=19 width=1 height=1 /> + <rect x=20 y=19 width=1 height=1 /> + <rect x=25 y=19 width=1 height=1 /> + <rect x=26 y=19 width=1 height=1 /> + <rect x=27 y=19 width=1 height=1 /> + <rect x=28 y=19 width=1 height=1 /> + <rect x=30 y=19 width=1 height=1 /> + <rect x=32 y=19 width=1 height=1 /> + <rect x=36 y=19 width=1 height=1 /> + <rect x=0 y=20 width=1 height=1 /> + <rect x=1 y=20 width=1 height=1 /> + <rect x=4 y=20 width=1 height=1 /> + <rect x=5 y=20 width=1 height=1 /> + <rect x=6 y=20 width=1 height=1 /> + <rect x=7 y=20 width=1 height=1 /> + <rect x=8 y=20 width=1 height=1 /> + <rect x=10 y=20 width=1 height=1 /> + <rect x=15 y=20 width=1 height=1 /> + <rect x=16 y=20 width=1 height=1 /> + <rect x=17 y=20 width=1 height=1 /> + <rect x=18 y=20 width=1 height=1 /> + <rect x=22 y=20 width=1 height=1 /> + <rect x=24 y=20 width=1 height=1 /> + <rect x=26 y=20 width=1 height=1 /> + <rect x=30 y=20 width=1 height=1 /> + <rect x=32 y=20 width=1 height=1 /> + <rect x=35 y=20 width=1 height=1 /> + <rect x=36 y=20 width=1 height=1 /> + <rect x=2 y=21 width=1 height=1 /> + <rect x=8 y=21 width=1 height=1 /> + <rect x=9 y=21 width=1 height=1 /> + <rect x=13 y=21 width=1 height=1 /> + <rect x=15 y=21 width=1 height=1 /> + <rect x=16 y=21 width=1 height=1 /> + <rect x=18 y=21 width=1 height=1 /> + <rect x=19 y=21 width=1 height=1 /> + <rect x=20 y=21 width=1 height=1 /> + <rect x=21 y=21 width=1 height=1 /> + <rect x=23 y=21 width=1 height=1 /> + <rect x=25 y=21 width=1 height=1 /> + <rect x=26 y=21 width=1 height=1 /> + <rect x=27 y=21 width=1 height=1 /> + <rect x=29 y=21 width=1 height=1 /> + <rect x=31 y=21 width=1 height=1 /> + <rect x=32 y=21 width=1 height=1 /> + <rect x=33 y=21 width=1 height=1 /> + <rect x=34 y=21 width=1 height=1 /> + <rect x=35 y=21 width=1 height=1 /> + <rect x=1 y=22 width=1 height=1 /> + <rect x=3 y=22 width=1 height=1 /> + <rect x=5 y=22 width=1 height=1 /> + <rect x=6 y=22 width=1 height=1 /> + <rect x=7 y=22 width=1 height=1 /> + <rect x=9 y=22 width=1 height=1 /> + <rect x=10 y=22 width=1 height=1 /> + <rect x=13 y=22 width=1 height=1 /> + <rect x=15 y=22 width=1 height=1 /> + <rect x=16 y=22 width=1 height=1 /> + <rect x=21 y=22 width=1 height=1 /> + <rect x=23 y=22 width=1 height=1 /> + <rect x=24 y=22 width=1 height=1 /> + <rect x=26 y=22 width=1 height=1 /> + <rect x=27 y=22 width=1 height=1 /> + <rect x=28 y=22 width=1 height=1 /> + <rect x=30 y=22 width=1 height=1 /> + <rect x=32 y=22 width=1 height=1 /> + <rect x=35 y=22 width=1 height=1 /> + <rect x=36 y=22 width=1 height=1 /> + <rect x=0 y=23 width=1 height=1 /> + <rect x=1 y=23 width=1 height=1 /> + <rect x=2 y=23 width=1 height=1 /> + <rect x=3 y=23 width=1 height=1 /> + <rect x=11 y=23 width=1 height=1 /> + <rect x=12 y=23 width=1 height=1 /> + <rect x=17 y=23 width=1 height=1 /> + <rect x=18 y=23 width=1 height=1 /> + <rect x=19 y=23 width=1 height=1 /> + <rect x=23 y=23 width=1 height=1 /> + <rect x=26 y=23 width=1 height=1 /> + <rect x=27 y=23 width=1 height=1 /> + <rect x=29 y=23 width=1 height=1 /> + <rect x=30 y=23 width=1 height=1 /> + <rect x=32 y=23 width=1 height=1 /> + <rect x=33 y=23 width=1 height=1 /> + <rect x=34 y=23 width=1 height=1 /> + <rect x=0 y=24 width=1 height=1 /> + <rect x=1 y=24 width=1 height=1 /> + <rect x=2 y=24 width=1 height=1 /> + <rect x=5 y=24 width=1 height=1 /> + <rect x=6 y=24 width=1 height=1 /> + <rect x=10 y=24 width=1 height=1 /> + <rect x=13 y=24 width=1 height=1 /> + <rect x=14 y=24 width=1 height=1 /> + <rect x=15 y=24 width=1 height=1 /> + <rect x=17 y=24 width=1 height=1 /> + <rect x=19 y=24 width=1 height=1 /> + <rect x=21 y=24 width=1 height=1 /> + <rect x=26 y=24 width=1 height=1 /> + <rect x=29 y=24 width=1 height=1 /> + <rect x=30 y=24 width=1 height=1 /> + <rect x=31 y=24 width=1 height=1 /> + <rect x=32 y=24 width=1 height=1 /> + <rect x=35 y=24 width=1 height=1 /> + <rect x=36 y=24 width=1 height=1 /> + <rect x=0 y=25 width=1 height=1 /> + <rect x=1 y=25 width=1 height=1 /> + <rect x=3 y=25 width=1 height=1 /> + <rect x=5 y=25 width=1 height=1 /> + <rect x=7 y=25 width=1 height=1 /> + <rect x=8 y=25 width=1 height=1 /> + <rect x=15 y=25 width=1 height=1 /> + <rect x=17 y=25 width=1 height=1 /> + <rect x=20 y=25 width=1 height=1 /> + <rect x=21 y=25 width=1 height=1 /> + <rect x=23 y=25 width=1 height=1 /> + <rect x=24 y=25 width=1 height=1 /> + <rect x=27 y=25 width=1 height=1 /> + <rect x=29 y=25 width=1 height=1 /> + <rect x=32 y=25 width=1 height=1 /> + <rect x=34 y=25 width=1 height=1 /> + <rect x=35 y=25 width=1 height=1 /> + <rect x=0 y=26 width=1 height=1 /> + <rect x=1 y=26 width=1 height=1 /> + <rect x=2 y=26 width=1 height=1 /> + <rect x=4 y=26 width=1 height=1 /> + <rect x=5 y=26 width=1 height=1 /> + <rect x=6 y=26 width=1 height=1 /> + <rect x=7 y=26 width=1 height=1 /> + <rect x=8 y=26 width=1 height=1 /> + <rect x=9 y=26 width=1 height=1 /> + <rect x=10 y=26 width=1 height=1 /> + <rect x=14 y=26 width=1 height=1 /> + <rect x=15 y=26 width=1 height=1 /> + <rect x=17 y=26 width=1 height=1 /> + <rect x=19 y=26 width=1 height=1 /> + <rect x=21 y=26 width=1 height=1 /> + <rect x=22 y=26 width=1 height=1 /> + <rect x=26 y=26 width=1 height=1 /> + <rect x=27 y=26 width=1 height=1 /> + <rect x=32 y=26 width=1 height=1 /> + <rect x=34 y=26 width=1 height=1 /> + <rect x=35 y=26 width=1 height=1 /> + <rect x=36 y=26 width=1 height=1 /> + <rect x=0 y=27 width=1 height=1 /> + <rect x=4 y=27 width=1 height=1 /> + <rect x=5 y=27 width=1 height=1 /> + <rect x=8 y=27 width=1 height=1 /> + <rect x=10 y=27 width=1 height=1 /> + <rect x=11 y=27 width=1 height=1 /> + <rect x=13 y=27 width=1 height=1 /> + <rect x=16 y=27 width=1 height=1 /> + <rect x=18 y=27 width=1 height=1 /> + <rect x=22 y=27 width=1 height=1 /> + <rect x=24 y=27 width=1 height=1 /> + <rect x=27 y=27 width=1 height=1 /> + <rect x=34 y=27 width=1 height=1 /> + <rect x=36 y=27 width=1 height=1 /> + <rect x=0 y=28 width=1 height=1 /> + <rect x=6 y=28 width=1 height=1 /> + <rect x=10 y=28 width=1 height=1 /> + <rect x=11 y=28 width=1 height=1 /> + <rect x=14 y=28 width=1 height=1 /> + <rect x=16 y=28 width=1 height=1 /> + <rect x=18 y=28 width=1 height=1 /> + <rect x=23 y=28 width=1 height=1 /> + <rect x=24 y=28 width=1 height=1 /> + <rect x=25 y=28 width=1 height=1 /> + <rect x=28 y=28 width=1 height=1 /> + <rect x=29 y=28 width=1 height=1 /> + <rect x=30 y=28 width=1 height=1 /> + <rect x=31 y=28 width=1 height=1 /> + <rect x=32 y=28 width=1 height=1 /> + <rect x=34 y=28 width=1 height=1 /> + <rect x=36 y=28 width=1 height=1 /> + <rect x=8 y=29 width=1 height=1 /> + <rect x=12 y=29 width=1 height=1 /> + <rect x=13 y=29 width=1 height=1 /> + <rect x=15 y=29 width=1 height=1 /> + <rect x=16 y=29 width=1 height=1 /> + <rect x=19 y=29 width=1 height=1 /> + <rect x=25 y=29 width=1 height=1 /> + <rect x=28 y=29 width=1 height=1 /> + <rect x=32 y=29 width=1 height=1 /> + <rect x=34 y=29 width=1 height=1 /> + <rect x=0 y=30 width=1 height=1 /> + <rect x=1 y=30 width=1 height=1 /> + <rect x=2 y=30 width=1 height=1 /> + <rect x=3 y=30 width=1 height=1 /> + <rect x=4 y=30 width=1 height=1 /> + <rect x=5 y=30 width=1 height=1 /> + <rect x=6 y=30 width=1 height=1 /> + <rect x=8 y=30 width=1 height=1 /> + <rect x=10 y=30 width=1 height=1 /> + <rect x=15 y=30 width=1 height=1 /> + <rect x=17 y=30 width=1 height=1 /> + <rect x=18 y=30 width=1 height=1 /> + <rect x=19 y=30 width=1 height=1 /> + <rect x=20 y=30 width=1 height=1 /> + <rect x=21 y=30 width=1 height=1 /> + <rect x=23 y=30 width=1 height=1 /> + <rect x=25 y=30 width=1 height=1 /> + <rect x=26 y=30 width=1 height=1 /> + <rect x=28 y=30 width=1 height=1 /> + <rect x=30 y=30 width=1 height=1 /> + <rect x=32 y=30 width=1 height=1 /> + <rect x=33 y=30 width=1 height=1 /> + <rect x=35 y=30 width=1 height=1 /> + <rect x=36 y=30 width=1 height=1 /> + <rect x=0 y=31 width=1 height=1 /> + <rect x=6 y=31 width=1 height=1 /> + <rect x=8 y=31 width=1 height=1 /> + <rect x=9 y=31 width=1 height=1 /> + <rect x=13 y=31 width=1 height=1 /> + <rect x=14 y=31 width=1 height=1 /> + <rect x=18 y=31 width=1 height=1 /> + <rect x=19 y=31 width=1 height=1 /> + <rect x=20 y=31 width=1 height=1 /> + <rect x=22 y=31 width=1 height=1 /> + <rect x=24 y=31 width=1 height=1 /> + <rect x=25 y=31 width=1 height=1 /> + <rect x=28 y=31 width=1 height=1 /> + <rect x=32 y=31 width=1 height=1 /> + <rect x=36 y=31 width=1 height=1 /> + <rect x=0 y=32 width=1 height=1 /> + <rect x=2 y=32 width=1 height=1 /> + <rect x=3 y=32 width=1 height=1 /> + <rect x=4 y=32 width=1 height=1 /> + <rect x=6 y=32 width=1 height=1 /> + <rect x=8 y=32 width=1 height=1 /> + <rect x=9 y=32 width=1 height=1 /> + <rect x=10 y=32 width=1 height=1 /> + <rect x=13 y=32 width=1 height=1 /> + <rect x=14 y=32 width=1 height=1 /> + <rect x=20 y=32 width=1 height=1 /> + <rect x=21 y=32 width=1 height=1 /> + <rect x=25 y=32 width=1 height=1 /> + <rect x=26 y=32 width=1 height=1 /> + <rect x=27 y=32 width=1 height=1 /> + <rect x=28 y=32 width=1 height=1 /> + <rect x=29 y=32 width=1 height=1 /> + <rect x=30 y=32 width=1 height=1 /> + <rect x=31 y=32 width=1 height=1 /> + <rect x=32 y=32 width=1 height=1 /> + <rect x=33 y=32 width=1 height=1 /> + <rect x=36 y=32 width=1 height=1 /> + <rect x=0 y=33 width=1 height=1 /> + <rect x=2 y=33 width=1 height=1 /> + <rect x=3 y=33 width=1 height=1 /> + <rect x=4 y=33 width=1 height=1 /> + <rect x=6 y=33 width=1 height=1 /> + <rect x=8 y=33 width=1 height=1 /> + <rect x=10 y=33 width=1 height=1 /> + <rect x=11 y=33 width=1 height=1 /> + <rect x=12 y=33 width=1 height=1 /> + <rect x=15 y=33 width=1 height=1 /> + <rect x=16 y=33 width=1 height=1 /> + <rect x=18 y=33 width=1 height=1 /> + <rect x=23 y=33 width=1 height=1 /> + <rect x=24 y=33 width=1 height=1 /> + <rect x=27 y=33 width=1 height=1 /> + <rect x=30 y=33 width=1 height=1 /> + <rect x=34 y=33 width=1 height=1 /> + <rect x=35 y=33 width=1 height=1 /> + <rect x=36 y=33 width=1 height=1 /> + <rect x=0 y=34 width=1 height=1 /> + <rect x=2 y=34 width=1 height=1 /> + <rect x=3 y=34 width=1 height=1 /> + <rect x=4 y=34 width=1 height=1 /> + <rect x=6 y=34 width=1 height=1 /> + <rect x=10 y=34 width=1 height=1 /> + <rect x=11 y=34 width=1 height=1 /> + <rect x=15 y=34 width=1 height=1 /> + <rect x=16 y=34 width=1 height=1 /> + <rect x=18 y=34 width=1 height=1 /> + <rect x=21 y=34 width=1 height=1 /> + <rect x=23 y=34 width=1 height=1 /> + <rect x=25 y=34 width=1 height=1 /> + <rect x=26 y=34 width=1 height=1 /> + <rect x=28 y=34 width=1 height=1 /> + <rect x=29 y=34 width=1 height=1 /> + <rect x=31 y=34 width=1 height=1 /> + <rect x=32 y=34 width=1 height=1 /> + <rect x=33 y=34 width=1 height=1 /> + <rect x=36 y=34 width=1 height=1 /> + <rect x=0 y=35 width=1 height=1 /> + <rect x=6 y=35 width=1 height=1 /> + <rect x=10 y=35 width=1 height=1 /> + <rect x=13 y=35 width=1 height=1 /> + <rect x=17 y=35 width=1 height=1 /> + <rect x=18 y=35 width=1 height=1 /> + <rect x=22 y=35 width=1 height=1 /> + <rect x=24 y=35 width=1 height=1 /> + <rect x=26 y=35 width=1 height=1 /> + <rect x=30 y=35 width=1 height=1 /> + <rect x=31 y=35 width=1 height=1 /> + <rect x=32 y=35 width=1 height=1 /> + <rect x=33 y=35 width=1 height=1 /> + <rect x=34 y=35 width=1 height=1 /> + <rect x=35 y=35 width=1 height=1 /> + <rect x=36 y=35 width=1 height=1 /> + <rect x=0 y=36 width=1 height=1 /> + <rect x=1 y=36 width=1 height=1 /> + <rect x=2 y=36 width=1 height=1 /> + <rect x=3 y=36 width=1 height=1 /> + <rect x=4 y=36 width=1 height=1 /> + <rect x=5 y=36 width=1 height=1 /> + <rect x=6 y=36 width=1 height=1 /> + <rect x=8 y=36 width=1 height=1 /> + <rect x=10 y=36 width=1 height=1 /> + <rect x=12 y=36 width=1 height=1 /> + <rect x=13 y=36 width=1 height=1 /> + <rect x=15 y=36 width=1 height=1 /> + <rect x=18 y=36 width=1 height=1 /> + <rect x=19 y=36 width=1 height=1 /> + <rect x=22 y=36 width=1 height=1 /> + <rect x=23 y=36 width=1 height=1 /> + <rect x=24 y=36 width=1 height=1 /> + <rect x=27 y=36 width=1 height=1 /> + <rect x=28 y=36 width=1 height=1 /> + <rect x=29 y=36 width=1 height=1 /> + <rect x=30 y=36 width=1 height=1 /> + <rect x=31 y=36 width=1 height=1 /> + <rect x=33 y=36 width=1 height=1 /> + <rect x=34 y=36 width=1 height=1 /> + <rect x=36 y=36 width=1 height=1 /> +</svg>` + } + }), /* @__PURE__ */ h("p", null, /* @__PURE__ */ h(WalletLink, { + href: payURI ? payURI : `taler+http://pay/localhost:8083/2024.295-038BS90KD5FD4/?c=9K99S15CQRXYEQT8DV35VXE90M` + }, "Or open your Taler wallet")), /* @__PURE__ */ h("p", null, /* @__PURE__ */ h("a", { + href: "https://wallet.taler.net/" + }, "Don't have a Taler wallet yet? Install it!"))), /* @__PURE__ */ h(Footer, null)); + } + function mount() { + try { + const fromLocation = new URL(window.location.href).searchParams; + const os = fromLocation.get("order_summary") || void 0; + if (os) { + P(/* @__PURE__ */ h(Head, { + order_summary: os + }), document.head); + } + const uri = fromLocation.get("pay_uri") || void 0; + const osu = fromLocation.get("order_status_url") || void 0; + const qr_code = uri ? S2(/* @__PURE__ */ h(QR, { + text: uri + })) : void 0; + P(/* @__PURE__ */ h(RequestPayment, { + payURI: uri, + order_status_url: osu, + qr_code + }), document.body); + } catch (e3) { + console.error("got error", e3); + if (e3 instanceof Error) { + document.body.innerText = `Fatal error: "${e3.message}". Please report this bug at https://bugs.gnunet.org/.`; + } + } + } + function buildTimeRendering() { + return { + head: S2(/* @__PURE__ */ h(Head, null)), + body: S2(/* @__PURE__ */ h(RequestPayment, null)) + }; + } + return __toCommonJS(RequestPayment_exports); +})(); +</script> + <script>page.mount()</script> + </body> + </html> +{ + code: 2009, + hint: 'The order we found does not match the provided contract hash.' +} +{ + code: 2105, + hint: 'The claim token used to authenticate the client is invalid for this order.', + detail: 'authentication with claim token provided but wrong' +} +{ + taler_pay_uri: 'taler+http://pay/localhost:8083/2024.295-038BS90KD5FD4/?c=9K99S15CQRXYEQT8DV35VXE90M', + fulfillment_url: 'https://example.com/article42' +} +{ + taler_pay_uri: 'taler+http://pay/localhost:8083/2024.295-038BS90KD5FD4/', + fulfillment_url: 'https://example.com/article42' +} +{ public_reorder_url: 'https://example.com/article42-share' } +{ public_reorder_url: 'https://example.com/article42-share' } +{ + code: 2009, + hint: 'The order we found does not match the provided contract hash.' +} +{ + code: 2105, + hint: 'The claim token used to authenticate the client is invalid for this order.', + detail: 'authentication with claim token provided but wrong' +} +{ + fulfillment_url: 'https://example.com/article42', + refunded: false, + refund_pending: false, + refund_taken: 'TESTKUDOS:0', + refund_amount: 'TESTKUDOS:0' +} +{ + fulfillment_url: 'https://example.com/article42', + refunded: false, + refund_pending: false, + refund_taken: 'TESTKUDOS:0', + refund_amount: 'TESTKUDOS:0' +} +{ + taler_pay_uri: 'taler+http://pay/localhost:8083/2024.295-02W0M49HBP2RG/?c=48GRYD5GD1YJRKNWB7S3HX0EM8', + fulfillment_url: 'https://example.com/article42' +} +{ + taler_pay_uri: 'taler+http://pay/localhost:8083/2024.295-02W0M49HBP2RG/mysession?c=48GRYD5GD1YJRKNWB7S3HX0EM8', + fulfillment_url: 'https://example.com/article42', + already_paid_order_id: '2024.295-038BS90KD5FD4' +} +requesting GET http://localhost:8083/orders/2024.295-02W0M49HBP2RG?token=48GRYD5GD1YJRKNWB7S3HX0EM8&session_id=mysession, expected 302 got 302 +location header: https://example.com/article42 +2024-10-21T18:01:49.552Z harness.ts INFO spawning process (wallet-wnoct): taler-wallet-cli --wallet-db :memory: -LTRACE --no-throttle advanced serve --unix-path '/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wnoct.sock' --no-init +2024-10-21T18:01:49.553Z harness.ts INFO hint: connect to wallet using taler-wallet-cli --wallet-connection=/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wnoct.sock +2024-10-21T18:01:49.553Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wnoct.sock +2024-10-21T18:01:49.553Z harness.ts INFO waiting on wallet for 10ms +2024-10-21T18:01:49.563Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wnoct.sock +2024-10-21T18:01:49.564Z harness.ts INFO waiting on wallet for 15ms +2024-10-21T18:01:49.579Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wnoct.sock +2024-10-21T18:01:49.579Z harness.ts INFO waiting on wallet for 22ms +2024-10-21T18:01:49.602Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wnoct.sock +2024-10-21T18:01:49.602Z harness.ts INFO waiting on wallet for 33ms +2024-10-21T18:01:49.635Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wnoct.sock +2024-10-21T18:01:49.635Z harness.ts INFO waiting on wallet for 49ms +2024-10-21T18:01:49.686Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders/wnoct.sock +2024-10-21T18:01:49.686Z harness.ts INFO waiting on wallet for 73ms +2024-10-21T18:01:49.759Z harness.ts INFO connection to wallet-core succeeded +2024-10-21T18:01:49.760Z twrpc-impl.node.ts INFO connected! +user-jshmneqj9d5tdawq pw-jnm4rt7x7w6382xg +2024-10-21T18:01:50.101Z bank-api-client.ts INFO confirming withdrawal operation via http://localhost:8082/accounts/user-jshmneqj9d5tdawq/withdrawals/N346HB26QW9APHM450F1KXVP1ZX03AKK1NJ4V8K8WVP5EVZKE4D0/confirm +{ + taler_pay_uri: 'taler+http://pay/localhost:8083/2024.295-03N2YD9YYPBHM/', + fulfillment_url: 'https://example.com/article42' +} +{ + taler_pay_uri: 'taler+http://pay/localhost:8083/2024.295-03N2YD9YYPBHM/', + fulfillment_url: 'https://example.com/article42' +} + + <!doctype html> + <html> + <head> + <meta charSet="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="taler-support" content="uri" /><meta name="taler-uri" content="taler+http://pay/localhost:8083/2024.295-03N2YD9YYPBHM/" /><noscript><meta http-equiv="refresh" content="1" /></noscript><title>Payment requested for Buy me!</title> + <style>/* linaria:index_15ba2f5.linaria.css */ +.q1ma0zxq { + margin: auto; + text-align: center; + width: 340px; +} +.fef0x5t { + text-align: center; + background-color: #033; + color: white; + padding: 1em; + overflow: auto; +} +.fef0x5t > p > a:link, +.fef0x5t > p > a:visited, +.fef0x5t > p > a:hover, +.fef0x5t > p > a:active { + color: white; +} +.p1b3vqup { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + min-height: 100vh; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.p1b3vqup a:link, +.p1b3vqup a:visited, +.p1b3vqup a:hover, +.p1b3vqup a:active { + color: black; +} +.p1b3vqup section { + text-align: center; + width: 600px; + margin-bottom: auto; +} +.p1b3vqup section:not(:first-of-type) { + margin-top: 2em; +} +.p1b3vqup > header { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + text-align: center; +} +.p1b3vqup > footer { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: space-around; + -webkit-justify-content: space-around; + -ms-flex-pack: space-around; + justify-content: space-around; + width: 100%; + margin-bottom: 0px; +} +.c1gnd3xp { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; +} +.wpwjmk { + display: inline-block; + zoom: 1; + line-height: normal; + white-space: nowrap; + vertical-align: middle; + text-align: center; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + text-transform: var(--wpwjmk-0); + font-family: inherit; + font-size: 100%; + padding: 0.5em 1em; + color: #444; + color: rgba(0, 0, 0, 0.8); + border: 1px solid #999; + border: none rgba(0, 0, 0, 0); + background-color: "#e6e6e6"; + -webkit-text-decoration: none; + text-decoration: none; + border-radius: 2px; + background-color: #e6e6e6; + border-radius: 4px; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset, 0 0 6px rgba(0, 0, 0, 0.2) inset; + border-color: #000; +} +.wpwjmk:focus { + outline: 0; +} +.wpwjmk:disabled { + border: none; + background-image: none; + -webkit-filter: alpha(opacity=40); + filter: alpha(opacity=40); + opacity: 0.4; + cursor: not-allowed; + box-shadow: none; + pointer-events: none; +} +.wpwjmk:hover { + -webkit-filter: alpha(opacity=90); + filter: alpha(opacity=90); + background-image: + linear-gradient( + transparent, + rgba(0, 0, 0, 0.05) 40%, + rgba(0, 0, 0, 0.1)); +} +.i1pkgksb { + border-radius: 0.25em; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + padding: 1em; + border: solid 1px #b8daff; + background-color: #cce5ff; + color: #004085; +} +.t2c81u8 { + text-align: left; +} +.t2c81u8 dt { + font-weight: bold; + margin-top: 1em; +} +.t2c81u8 dd { + margin-inline-start: 0px; +} +.t1mav7fx { + text-align: left; +} +.t1mav7fx dt { + font-weight: bold; + display: inline-block; + width: 30%; +} +.t1mav7fx dd { + margin-inline-start: 0px; + display: inline-block; + width: 70%; +} + +/* src/css/pure-min.css */ +.talerbar { + text-align: center; +} +html { + line-height: 1.15; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +main { + display: block; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +hr { + -webkit-box-sizing: content-box; + box-sizing: content-box; + height: 0; + overflow: visible; +} +pre { + font-family: monospace, monospace; + font-size: 1em; +} +a { + background-color: transparent; +} +abbr[title] { + border-bottom: none; + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} +b, +strong { + font-weight: bolder; +} +code, +kbd, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.5em; +} +img { + border-style: none; +} +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + font-size: 100%; + line-height: 1.15; + margin: 0; +} +button, +input { + overflow: visible; +} +button, +select { + text-transform: none; +} +[type=button], +[type=reset], +[type=submit], +button { + -webkit-appearance: button; +} +[type=button]::-moz-focus-inner, +[type=reset]::-moz-focus-inner, +[type=submit]::-moz-focus-inner, +button::-moz-focus-inner { + border-style: none; + padding: 0; +} +[type=button]:-moz-focusring, +[type=reset]:-moz-focusring, +[type=submit]:-moz-focusring, +button:-moz-focusring { + outline: 1px dotted ButtonText; +} +fieldset { + padding: 0.35em 0.75em 0.625em; +} +legend { + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} +progress { + vertical-align: baseline; +} +textarea { + overflow: auto; +} +[type=checkbox], +[type=radio] { + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +[type=number]::-webkit-inner-spin-button, +[type=number]::-webkit-outer-spin-button { + height: auto; +} +[type=search] { + -webkit-appearance: textfield; + outline-offset: -2px; +} +[type=search]::-webkit-search-decoration { + -webkit-appearance: none; +} +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} +details { + display: block; +} +summary { + display: list-item; +} +template { + display: none; +} +[hidden] { + display: none; +} +html { + font-family: sans-serif; +} +.hidden, +[hidden] { + display: none !important; +} +.pure-img { + max-width: 100%; + height: auto; + display: block; +} +.pure-g { + letter-spacing: -0.31em; + text-rendering: optimizespeed; + font-family: + FreeSans, + Arimo, + "Droid Sans", + Helvetica, + Arial, + sans-serif; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -ms-flex-line-pack: start; + align-content: flex-start; +} +@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { + table .pure-g { + display: block; + } +} +.opera-only :-o-prefocus, +.pure-g { + word-spacing: -0.43em; +} +.pure-u { + display: inline-block; + letter-spacing: normal; + word-spacing: normal; + vertical-align: top; + text-rendering: auto; +} +.pure-g [class*=pure-u] { + font-family: sans-serif; +} +.pure-u-1, +.pure-u-1-1, +.pure-u-1-12, +.pure-u-1-2, +.pure-u-1-24, +.pure-u-1-3, +.pure-u-1-4, +.pure-u-1-5, +.pure-u-1-6, +.pure-u-1-8, +.pure-u-10-24, +.pure-u-11-12, +.pure-u-11-24, +.pure-u-12-24, +.pure-u-13-24, +.pure-u-14-24, +.pure-u-15-24, +.pure-u-16-24, +.pure-u-17-24, +.pure-u-18-24, +.pure-u-19-24, +.pure-u-2-24, +.pure-u-2-3, +.pure-u-2-5, +.pure-u-20-24, +.pure-u-21-24, +.pure-u-22-24, +.pure-u-23-24, +.pure-u-24-24, +.pure-u-3-24, +.pure-u-3-4, +.pure-u-3-5, +.pure-u-3-8, +.pure-u-4-24, +.pure-u-4-5, +.pure-u-5-12, +.pure-u-5-24, +.pure-u-5-5, +.pure-u-5-6, +.pure-u-5-8, +.pure-u-6-24, +.pure-u-7-12, +.pure-u-7-24, +.pure-u-7-8, +.pure-u-8-24, +.pure-u-9-24 { + display: inline-block; + letter-spacing: normal; + word-spacing: normal; + vertical-align: top; + text-rendering: auto; +} +.pure-u-1-24 { + width: 4.1667%; +} +.pure-u-1-12, +.pure-u-2-24 { + width: 8.3333%; +} +.pure-u-1-8, +.pure-u-3-24 { + width: 12.5%; +} +.pure-u-1-6, +.pure-u-4-24 { + width: 16.6667%; +} +.pure-u-1-5 { + width: 20%; +} +.pure-u-5-24 { + width: 20.8333%; +} +.pure-u-1-4, +.pure-u-6-24 { + width: 25%; +} +.pure-u-7-24 { + width: 29.1667%; +} +.pure-u-1-3, +.pure-u-8-24 { + width: 33.3333%; +} +.pure-u-3-8, +.pure-u-9-24 { + width: 37.5%; +} +.pure-u-2-5 { + width: 40%; +} +.pure-u-10-24, +.pure-u-5-12 { + width: 41.6667%; +} +.pure-u-11-24 { + width: 45.8333%; +} +.pure-u-1-2, +.pure-u-12-24 { + width: 50%; +} +.pure-u-13-24 { + width: 54.1667%; +} +.pure-u-14-24, +.pure-u-7-12 { + width: 58.3333%; +} +.pure-u-3-5 { + width: 60%; +} +.pure-u-15-24, +.pure-u-5-8 { + width: 62.5%; +} +.pure-u-16-24, +.pure-u-2-3 { + width: 66.6667%; +} +.pure-u-17-24 { + width: 70.8333%; +} +.pure-u-18-24, +.pure-u-3-4 { + width: 75%; +} +.pure-u-19-24 { + width: 79.1667%; +} +.pure-u-4-5 { + width: 80%; +} +.pure-u-20-24, +.pure-u-5-6 { + width: 83.3333%; +} +.pure-u-21-24, +.pure-u-7-8 { + width: 87.5%; +} +.pure-u-11-12, +.pure-u-22-24 { + width: 91.6667%; +} +.pure-u-23-24 { + width: 95.8333%; +} +.pure-u-1, +.pure-u-1-1, +.pure-u-24-24, +.pure-u-5-5 { + width: 100%; +} +.pure-button { + display: inline-block; + line-height: normal; + white-space: nowrap; + vertical-align: middle; + text-align: center; + cursor: pointer; + -webkit-user-drag: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.pure-button::-moz-focus-inner { + padding: 0; + border: 0; +} +.pure-button-group { + letter-spacing: -0.31em; + text-rendering: optimizespeed; +} +.opera-only :-o-prefocus, +.pure-button-group { + word-spacing: -0.43em; +} +.pure-button-group .pure-button { + letter-spacing: normal; + word-spacing: normal; + vertical-align: top; + text-rendering: auto; +} +.pure-button { + font-family: inherit; + font-size: 100%; + padding: 0.5em 1em; + color: rgba(0, 0, 0, 0.8); + border: none transparent; + background-color: #e6e6e6; + text-decoration: none; + border-radius: 2px; +} +.pure-button-hover, +.pure-button:focus, +.pure-button:hover { + background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(40%, rgba(0, 0, 0, 0.05)), to(rgba(0, 0, 0, 0.1))); + background-image: + linear-gradient( + transparent, + rgba(0, 0, 0, 0.05) 40%, + rgba(0, 0, 0, 0.1)); +} +.pure-button:focus { + outline: 0; +} +.pure-button-active, +.pure-button:active { + -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset, 0 0 6px rgba(0, 0, 0, 0.2) inset; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset, 0 0 6px rgba(0, 0, 0, 0.2) inset; + border-color: #000; +} +.pure-button-disabled, +.pure-button-disabled:active, +.pure-button-disabled:focus, +.pure-button-disabled:hover, +.pure-button[disabled] { + border: none; + background-image: none; + opacity: 0.4; + cursor: not-allowed; + -webkit-box-shadow: none; + box-shadow: none; + pointer-events: none; +} +.pure-button-hidden { + display: none; +} +.pure-button-primary, +.pure-button-selected, +a.pure-button-primary, +a.pure-button-selected { + background-color: #0078e7; + color: #fff; +} +.pure-button-group .pure-button { + margin: 0; + border-radius: 0; + border-right: 1px solid rgba(0, 0, 0, 0.2); +} +.pure-button-group .pure-button:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +.pure-button-group .pure-button:last-child { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-right: none; +} +.pure-form input[type=color], +.pure-form input[type=date], +.pure-form input[type=datetime-local], +.pure-form input[type=datetime], +.pure-form input[type=email], +.pure-form input[type=month], +.pure-form input[type=number], +.pure-form input[type=password], +.pure-form input[type=search], +.pure-form input[type=tel], +.pure-form input[type=text], +.pure-form input[type=time], +.pure-form input[type=url], +.pure-form input[type=week], +.pure-form select, +.pure-form textarea { + padding: 0.5em 0.6em; + display: inline-block; + border: 1px solid #ccc; + -webkit-box-shadow: inset 0 1px 3px #ddd; + box-shadow: inset 0 1px 3px #ddd; + border-radius: 4px; + vertical-align: middle; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.pure-form input:not([type]) { + padding: 0.5em 0.6em; + display: inline-block; + border: 1px solid #ccc; + -webkit-box-shadow: inset 0 1px 3px #ddd; + box-shadow: inset 0 1px 3px #ddd; + border-radius: 4px; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.pure-form input[type=color] { + padding: 0.2em 0.5em; +} +.pure-form input[type=color]:focus, +.pure-form input[type=date]:focus, +.pure-form input[type=datetime-local]:focus, +.pure-form input[type=datetime]:focus, +.pure-form input[type=email]:focus, +.pure-form input[type=month]:focus, +.pure-form input[type=number]:focus, +.pure-form input[type=password]:focus, +.pure-form input[type=search]:focus, +.pure-form input[type=tel]:focus, +.pure-form input[type=text]:focus, +.pure-form input[type=time]:focus, +.pure-form input[type=url]:focus, +.pure-form input[type=week]:focus, +.pure-form select:focus, +.pure-form textarea:focus { + outline: 0; + border-color: #129fea; +} +.pure-form input:not([type]):focus { + outline: 0; + border-color: #129fea; +} +.pure-form input[type=checkbox]:focus, +.pure-form input[type=file]:focus, +.pure-form input[type=radio]:focus { + outline: thin solid #129fea; + outline: 1px auto #129fea; +} +.pure-form .pure-checkbox, +.pure-form .pure-radio { + margin: 0.5em 0; + display: block; +} +.pure-form input[type=color][disabled], +.pure-form input[type=date][disabled], +.pure-form input[type=datetime-local][disabled], +.pure-form input[type=datetime][disabled], +.pure-form input[type=email][disabled], +.pure-form input[type=month][disabled], +.pure-form input[type=number][disabled], +.pure-form input[type=password][disabled], +.pure-form input[type=search][disabled], +.pure-form input[type=tel][disabled], +.pure-form input[type=text][disabled], +.pure-form input[type=time][disabled], +.pure-form input[type=url][disabled], +.pure-form input[type=week][disabled], +.pure-form select[disabled], +.pure-form textarea[disabled] { + cursor: not-allowed; + background-color: #eaeded; + color: #cad2d3; +} +.pure-form input:not([type])[disabled] { + cursor: not-allowed; + background-color: #eaeded; + color: #cad2d3; +} +.pure-form input[readonly], +.pure-form select[readonly], +.pure-form textarea[readonly] { + background-color: #eee; + color: #777; + border-color: #ccc; +} +.pure-form input:focus:invalid, +.pure-form select:focus:invalid, +.pure-form textarea:focus:invalid { + color: #b94a48; + border-color: #e9322d; +} +.pure-form input[type=checkbox]:focus:invalid:focus, +.pure-form input[type=file]:focus:invalid:focus, +.pure-form input[type=radio]:focus:invalid:focus { + outline-color: #e9322d; +} +.pure-form select { + height: 2.25em; + border: 1px solid #ccc; + background-color: #fff; +} +.pure-form select[multiple] { + height: auto; +} +.pure-form label { + margin: 0.5em 0 0.2em; +} +.pure-form fieldset { + margin: 0; + padding: 0.35em 0 0.75em; + border: 0; +} +.pure-form legend { + display: block; + width: 100%; + padding: 0.3em 0; + margin-bottom: 0.3em; + color: #333; + border-bottom: 1px solid #e5e5e5; +} +.pure-form-stacked input[type=color], +.pure-form-stacked input[type=date], +.pure-form-stacked input[type=datetime-local], +.pure-form-stacked input[type=datetime], +.pure-form-stacked input[type=email], +.pure-form-stacked input[type=file], +.pure-form-stacked input[type=month], +.pure-form-stacked input[type=number], +.pure-form-stacked input[type=password], +.pure-form-stacked input[type=search], +.pure-form-stacked input[type=tel], +.pure-form-stacked input[type=text], +.pure-form-stacked input[type=time], +.pure-form-stacked input[type=url], +.pure-form-stacked input[type=week], +.pure-form-stacked label, +.pure-form-stacked select, +.pure-form-stacked textarea { + display: block; + margin: 0.25em 0; +} +.pure-form-stacked input:not([type]) { + display: block; + margin: 0.25em 0; +} +.pure-form-aligned input, +.pure-form-aligned select, +.pure-form-aligned textarea, +.pure-form-message-inline { + display: inline-block; + vertical-align: middle; +} +.pure-form-aligned textarea { + vertical-align: top; +} +.pure-form-aligned .pure-control-group { + margin-bottom: 0.5em; +} +.pure-form-aligned .pure-control-group label { + text-align: right; + display: inline-block; + vertical-align: middle; + width: 10em; + margin: 0 1em 0 0; +} +.pure-form-aligned .pure-controls { + margin: 1.5em 0 0 11em; +} +.pure-form .pure-input-rounded, +.pure-form input.pure-input-rounded { + border-radius: 2em; + padding: 0.5em 1em; +} +.pure-form .pure-group fieldset { + margin-bottom: 10px; +} +.pure-form .pure-group input, +.pure-form .pure-group textarea { + display: block; + padding: 10px; + margin: 0 0 -1px; + border-radius: 0; + position: relative; + top: -1px; +} +.pure-form .pure-group input:focus, +.pure-form .pure-group textarea:focus { + z-index: 3; +} +.pure-form .pure-group input:first-child, +.pure-form .pure-group textarea:first-child { + top: 1px; + border-radius: 4px 4px 0 0; + margin: 0; +} +.pure-form .pure-group input:first-child:last-child, +.pure-form .pure-group textarea:first-child:last-child { + top: 1px; + border-radius: 4px; + margin: 0; +} +.pure-form .pure-group input:last-child, +.pure-form .pure-group textarea:last-child { + top: -2px; + border-radius: 0 0 4px 4px; + margin: 0; +} +.pure-form .pure-group button { + margin: 0.35em 0; +} +.pure-form .pure-input-1 { + width: 100%; +} +.pure-form .pure-input-3-4 { + width: 75%; +} +.pure-form .pure-input-2-3 { + width: 66%; +} +.pure-form .pure-input-1-2 { + width: 50%; +} +.pure-form .pure-input-1-3 { + width: 33%; +} +.pure-form .pure-input-1-4 { + width: 25%; +} +.pure-form-message-inline { + display: inline-block; + padding-left: 0.3em; + color: #666; + vertical-align: middle; + font-size: 0.875em; +} +.pure-form-message { + display: block; + color: #666; + font-size: 0.875em; +} +@media only screen and (max-width: 480px) { + .pure-form button[type=submit] { + margin: 0.7em 0 0; + } + .pure-form input:not([type]), + .pure-form input[type=color], + .pure-form input[type=date], + .pure-form input[type=datetime-local], + .pure-form input[type=datetime], + .pure-form input[type=email], + .pure-form input[type=month], + .pure-form input[type=number], + .pure-form input[type=password], + .pure-form input[type=search], + .pure-form input[type=tel], + .pure-form input[type=text], + .pure-form input[type=time], + .pure-form input[type=url], + .pure-form input[type=week], + .pure-form label { + margin-bottom: 0.3em; + display: block; + } + .pure-group input:not([type]), + .pure-group input[type=color], + .pure-group input[type=date], + .pure-group input[type=datetime-local], + .pure-group input[type=datetime], + .pure-group input[type=email], + .pure-group input[type=month], + .pure-group input[type=number], + .pure-group input[type=password], + .pure-group input[type=search], + .pure-group input[type=tel], + .pure-group input[type=text], + .pure-group input[type=time], + .pure-group input[type=url], + .pure-group input[type=week] { + margin-bottom: 0; + } + .pure-form-aligned .pure-control-group label { + margin-bottom: 0.3em; + text-align: left; + display: block; + width: 100%; + } + .pure-form-aligned .pure-controls { + margin: 1.5em 0 0 0; + } + .pure-form-message, + .pure-form-message-inline { + display: block; + font-size: 0.75em; + padding: 0.2em 0 0.8em; + } +} +.pure-menu { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.pure-menu-fixed { + position: fixed; + left: 0; + top: 0; + z-index: 3; +} +.pure-menu-item, +.pure-menu-list { + position: relative; +} +.pure-menu-list { + list-style: none; + margin: 0; + padding: 0; +} +.pure-menu-item { + padding: 0; + margin: 0; + height: 100%; +} +.pure-menu-heading, +.pure-menu-link { + display: block; + text-decoration: none; + white-space: nowrap; +} +.pure-menu-horizontal { + width: 100%; + white-space: nowrap; +} +.pure-menu-horizontal .pure-menu-list { + display: inline-block; +} +.pure-menu-horizontal .pure-menu-heading, +.pure-menu-horizontal .pure-menu-item, +.pure-menu-horizontal .pure-menu-separator { + display: inline-block; + vertical-align: middle; +} +.pure-menu-item .pure-menu-item { + display: block; +} +.pure-menu-children { + display: none; + position: absolute; + left: 100%; + top: 0; + margin: 0; + padding: 0; + z-index: 3; +} +.pure-menu-horizontal .pure-menu-children { + left: 0; + top: auto; + width: inherit; +} +.pure-menu-active > .pure-menu-children, +.pure-menu-allow-hover:hover > .pure-menu-children { + display: block; + position: absolute; +} +.pure-menu-has-children > .pure-menu-link:after { + padding-left: 0.5em; + content: "\25b8"; + font-size: small; +} +.pure-menu-horizontal .pure-menu-has-children > .pure-menu-link:after { + content: "\25be"; +} +.pure-menu-scrollable { + overflow-y: scroll; + overflow-x: hidden; +} +.pure-menu-scrollable .pure-menu-list { + display: block; +} +.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list { + display: inline-block; +} +.pure-menu-horizontal.pure-menu-scrollable { + white-space: nowrap; + overflow-y: hidden; + overflow-x: auto; + padding: 0.5em 0; +} +.pure-menu-horizontal .pure-menu-children .pure-menu-separator, +.pure-menu-separator { + background-color: #ccc; + height: 1px; + margin: 0.3em 0; +} +.pure-menu-horizontal .pure-menu-separator { + width: 1px; + height: 1.3em; + margin: 0 0.3em; +} +.pure-menu-horizontal .pure-menu-children .pure-menu-separator { + display: block; + width: auto; +} +.pure-menu-heading { + text-transform: uppercase; + color: #565d64; +} +.pure-menu-link { + color: #777; +} +.pure-menu-children { + background-color: #fff; +} +.pure-menu-disabled, +.pure-menu-heading, +.pure-menu-link { + padding: 0.5em 1em; +} +.pure-menu-disabled { + opacity: 0.5; +} +.pure-menu-disabled .pure-menu-link:hover { + background-color: transparent; +} +.pure-menu-active > .pure-menu-link, +.pure-menu-link:focus, +.pure-menu-link:hover { + background-color: #eee; +} +.pure-menu-selected > .pure-menu-link, +.pure-menu-selected > .pure-menu-link:visited { + color: #000; +} +.pure-table { + border-collapse: collapse; + border-spacing: 0; + empty-cells: show; + border: 1px solid #cbcbcb; +} +.pure-table caption { + color: #000; + font: italic 85%/1 arial, sans-serif; + padding: 1em 0; + text-align: center; +} +.pure-table td, +.pure-table th { + border-left: 1px solid #cbcbcb; + border-width: 0 0 0 1px; + font-size: inherit; + margin: 0; + overflow: visible; + padding: 0.5em 1em; +} +.pure-table thead { + background-color: #e0e0e0; + color: #000; + text-align: left; + vertical-align: bottom; +} +.pure-table td { + background-color: transparent; +} +.pure-table-odd td { + background-color: #f2f2f2; +} +.pure-table-striped tr:nth-child(2n-1) td { + background-color: #f2f2f2; +} +.pure-table-bordered td { + border-bottom: 1px solid #cbcbcb; +} +.pure-table-bordered tbody > tr:last-child > td { + border-bottom-width: 0; +} +.pure-table-horizontal td, +.pure-table-horizontal th { + border-width: 0 0 1px 0; + border-bottom: 1px solid #cbcbcb; +} +.pure-table-horizontal tbody > tr:last-child > td { + border-bottom-width: 0; +} + +/* src/css/style.css */ +.talerbar { + text-align: center; +} +.tt { + font-family: + "Lucida Console", + Monaco, + monospace; +} +.content { + overflow-x: auto; + padding-left: 15%; + padding-right: 15%; +} +.qr { + margin: auto; + text-align: center; +} +.qrtext { + width: max-content; + margin: auto; + transition: font-size 0.2s; + font-family: + "Lucida Console", + Monaco, + monospace; + font-size: 0.5em; +} +.qrtext:hover { + font-size: 1em; +} +.talerbar { + margin: 0; + bottom: 0; + background-color: #033; + color: white; + width: 100%; + padding: 1em; + overflow: auto; +} +body { + overflow-y: scroll; +} +@media (min-width: 500px) { + .content { + padding-bottom: 2em; + overflow-y: auto; + } +} +#main a:link, +#main a:visited, +#main a:hover, +#main a:active { + color: black; +} +/*! + Pure v2.0.3 + Copyright 2013 Yahoo! + Licensed under the BSD License. + https://github.com/pure-cs s/pure/blob/master/LICENSE.md +*/ +/*! + normalize.cs s v | MIT License | git.io/normalize + Copyright (c) Nicolas Gallagher and Jonathan Neal +*/ +/*! normalize.cs s v8.0.1 | MIT License | github.com/necolas/normalize.cs s */ +/*! + Pure v2.0.3 + Copyright 2013 Yahoo! + Licensed under the BSD License. + https://github.com/pure-ss/pure/blob/master/LICENSE.md +*/ +/*! + normalize.cs v | MIT License | git.io/normalize + Copyright (c) Nicolas Gallagher and Jonathan Neal +*/ +/*! normalize.ss v8.0.1 | MIT License | github.com/necolas/normalize.cs */ +</style> + </head> + <script id="built_time_data"> + </script> + <body> + <div class="p1b3vqup"><section><h1>Pay with Taler</h1><p>Scan this QR code with your mobile wallet:</p><div class="q1ma0zxq"><svg width='100mm' height='100mm' viewBox='0 0 33 33' version='1.1' xmlns='http://www.w3.org/2000/svg' style='shape-rendering: crispedges;'> + <rect x=0 y=0 width=1 height=1 /> + <rect x=1 y=0 width=1 height=1 /> + <rect x=2 y=0 width=1 height=1 /> + <rect x=3 y=0 width=1 height=1 /> + <rect x=4 y=0 width=1 height=1 /> + <rect x=5 y=0 width=1 height=1 /> + <rect x=6 y=0 width=1 height=1 /> + <rect x=9 y=0 width=1 height=1 /> + <rect x=12 y=0 width=1 height=1 /> + <rect x=14 y=0 width=1 height=1 /> + <rect x=17 y=0 width=1 height=1 /> + <rect x=18 y=0 width=1 height=1 /> + <rect x=19 y=0 width=1 height=1 /> + <rect x=20 y=0 width=1 height=1 /> + <rect x=21 y=0 width=1 height=1 /> + <rect x=22 y=0 width=1 height=1 /> + <rect x=23 y=0 width=1 height=1 /> + <rect x=26 y=0 width=1 height=1 /> + <rect x=27 y=0 width=1 height=1 /> + <rect x=28 y=0 width=1 height=1 /> + <rect x=29 y=0 width=1 height=1 /> + <rect x=30 y=0 width=1 height=1 /> + <rect x=31 y=0 width=1 height=1 /> + <rect x=32 y=0 width=1 height=1 /> + <rect x=0 y=1 width=1 height=1 /> + <rect x=6 y=1 width=1 height=1 /> + <rect x=9 y=1 width=1 height=1 /> + <rect x=11 y=1 width=1 height=1 /> + <rect x=12 y=1 width=1 height=1 /> + <rect x=15 y=1 width=1 height=1 /> + <rect x=18 y=1 width=1 height=1 /> + <rect x=20 y=1 width=1 height=1 /> + <rect x=26 y=1 width=1 height=1 /> + <rect x=32 y=1 width=1 height=1 /> + <rect x=0 y=2 width=1 height=1 /> + <rect x=2 y=2 width=1 height=1 /> + <rect x=3 y=2 width=1 height=1 /> + <rect x=4 y=2 width=1 height=1 /> + <rect x=6 y=2 width=1 height=1 /> + <rect x=8 y=2 width=1 height=1 /> + <rect x=11 y=2 width=1 height=1 /> + <rect x=14 y=2 width=1 height=1 /> + <rect x=15 y=2 width=1 height=1 /> + <rect x=18 y=2 width=1 height=1 /> + <rect x=21 y=2 width=1 height=1 /> + <rect x=23 y=2 width=1 height=1 /> + <rect x=26 y=2 width=1 height=1 /> + <rect x=28 y=2 width=1 height=1 /> + <rect x=29 y=2 width=1 height=1 /> + <rect x=30 y=2 width=1 height=1 /> + <rect x=32 y=2 width=1 height=1 /> + <rect x=0 y=3 width=1 height=1 /> + <rect x=2 y=3 width=1 height=1 /> + <rect x=3 y=3 width=1 height=1 /> + <rect x=4 y=3 width=1 height=1 /> + <rect x=6 y=3 width=1 height=1 /> + <rect x=8 y=3 width=1 height=1 /> + <rect x=9 y=3 width=1 height=1 /> + <rect x=10 y=3 width=1 height=1 /> + <rect x=11 y=3 width=1 height=1 /> + <rect x=15 y=3 width=1 height=1 /> + <rect x=21 y=3 width=1 height=1 /> + <rect x=22 y=3 width=1 height=1 /> + <rect x=23 y=3 width=1 height=1 /> + <rect x=26 y=3 width=1 height=1 /> + <rect x=28 y=3 width=1 height=1 /> + <rect x=29 y=3 width=1 height=1 /> + <rect x=30 y=3 width=1 height=1 /> + <rect x=32 y=3 width=1 height=1 /> + <rect x=0 y=4 width=1 height=1 /> + <rect x=2 y=4 width=1 height=1 /> + <rect x=3 y=4 width=1 height=1 /> + <rect x=4 y=4 width=1 height=1 /> + <rect x=6 y=4 width=1 height=1 /> + <rect x=8 y=4 width=1 height=1 /> + <rect x=13 y=4 width=1 height=1 /> + <rect x=14 y=4 width=1 height=1 /> + <rect x=15 y=4 width=1 height=1 /> + <rect x=16 y=4 width=1 height=1 /> + <rect x=17 y=4 width=1 height=1 /> + <rect x=18 y=4 width=1 height=1 /> + <rect x=20 y=4 width=1 height=1 /> + <rect x=21 y=4 width=1 height=1 /> + <rect x=22 y=4 width=1 height=1 /> + <rect x=23 y=4 width=1 height=1 /> + <rect x=24 y=4 width=1 height=1 /> + <rect x=26 y=4 width=1 height=1 /> + <rect x=28 y=4 width=1 height=1 /> + <rect x=29 y=4 width=1 height=1 /> + <rect x=30 y=4 width=1 height=1 /> + <rect x=32 y=4 width=1 height=1 /> + <rect x=0 y=5 width=1 height=1 /> + <rect x=6 y=5 width=1 height=1 /> + <rect x=8 y=5 width=1 height=1 /> + <rect x=9 y=5 width=1 height=1 /> + <rect x=10 y=5 width=1 height=1 /> + <rect x=21 y=5 width=1 height=1 /> + <rect x=24 y=5 width=1 height=1 /> + <rect x=26 y=5 width=1 height=1 /> + <rect x=32 y=5 width=1 height=1 /> + <rect x=0 y=6 width=1 height=1 /> + <rect x=1 y=6 width=1 height=1 /> + <rect x=2 y=6 width=1 height=1 /> + <rect x=3 y=6 width=1 height=1 /> + <rect x=4 y=6 width=1 height=1 /> + <rect x=5 y=6 width=1 height=1 /> + <rect x=6 y=6 width=1 height=1 /> + <rect x=8 y=6 width=1 height=1 /> + <rect x=10 y=6 width=1 height=1 /> + <rect x=12 y=6 width=1 height=1 /> + <rect x=14 y=6 width=1 height=1 /> + <rect x=16 y=6 width=1 height=1 /> + <rect x=18 y=6 width=1 height=1 /> + <rect x=20 y=6 width=1 height=1 /> + <rect x=22 y=6 width=1 height=1 /> + <rect x=24 y=6 width=1 height=1 /> + <rect x=26 y=6 width=1 height=1 /> + <rect x=27 y=6 width=1 height=1 /> + <rect x=28 y=6 width=1 height=1 /> + <rect x=29 y=6 width=1 height=1 /> + <rect x=30 y=6 width=1 height=1 /> + <rect x=31 y=6 width=1 height=1 /> + <rect x=32 y=6 width=1 height=1 /> + <rect x=8 y=7 width=1 height=1 /> + <rect x=12 y=7 width=1 height=1 /> + <rect x=16 y=7 width=1 height=1 /> + <rect x=18 y=7 width=1 height=1 /> + <rect x=19 y=7 width=1 height=1 /> + <rect x=21 y=7 width=1 height=1 /> + <rect x=23 y=7 width=1 height=1 /> + <rect x=0 y=8 width=1 height=1 /> + <rect x=2 y=8 width=1 height=1 /> + <rect x=3 y=8 width=1 height=1 /> + <rect x=4 y=8 width=1 height=1 /> + <rect x=5 y=8 width=1 height=1 /> + <rect x=6 y=8 width=1 height=1 /> + <rect x=9 y=8 width=1 height=1 /> + <rect x=10 y=8 width=1 height=1 /> + <rect x=12 y=8 width=1 height=1 /> + <rect x=13 y=8 width=1 height=1 /> + <rect x=16 y=8 width=1 height=1 /> + <rect x=17 y=8 width=1 height=1 /> + <rect x=22 y=8 width=1 height=1 /> + <rect x=23 y=8 width=1 height=1 /> + <rect x=24 y=8 width=1 height=1 /> + <rect x=26 y=8 width=1 height=1 /> + <rect x=27 y=8 width=1 height=1 /> + <rect x=28 y=8 width=1 height=1 /> + <rect x=29 y=8 width=1 height=1 /> + <rect x=30 y=8 width=1 height=1 /> + <rect x=2 y=9 width=1 height=1 /> + <rect x=3 y=9 width=1 height=1 /> + <rect x=4 y=9 width=1 height=1 /> + <rect x=5 y=9 width=1 height=1 /> + <rect x=7 y=9 width=1 height=1 /> + <rect x=8 y=9 width=1 height=1 /> + <rect x=9 y=9 width=1 height=1 /> + <rect x=11 y=9 width=1 height=1 /> + <rect x=12 y=9 width=1 height=1 /> + <rect x=13 y=9 width=1 height=1 /> + <rect x=14 y=9 width=1 height=1 /> + <rect x=17 y=9 width=1 height=1 /> + <rect x=18 y=9 width=1 height=1 /> + <rect x=19 y=9 width=1 height=1 /> + <rect x=20 y=9 width=1 height=1 /> + <rect x=23 y=9 width=1 height=1 /> + <rect x=24 y=9 width=1 height=1 /> + <rect x=25 y=9 width=1 height=1 /> + <rect x=26 y=9 width=1 height=1 /> + <rect x=30 y=9 width=1 height=1 /> + <rect x=31 y=9 width=1 height=1 /> + <rect x=32 y=9 width=1 height=1 /> + <rect x=0 y=10 width=1 height=1 /> + <rect x=1 y=10 width=1 height=1 /> + <rect x=2 y=10 width=1 height=1 /> + <rect x=5 y=10 width=1 height=1 /> + <rect x=6 y=10 width=1 height=1 /> + <rect x=7 y=10 width=1 height=1 /> + <rect x=8 y=10 width=1 height=1 /> + <rect x=13 y=10 width=1 height=1 /> + <rect x=14 y=10 width=1 height=1 /> + <rect x=15 y=10 width=1 height=1 /> + <rect x=20 y=10 width=1 height=1 /> + <rect x=21 y=10 width=1 height=1 /> + <rect x=26 y=10 width=1 height=1 /> + <rect x=27 y=10 width=1 height=1 /> + <rect x=29 y=10 width=1 height=1 /> + <rect x=30 y=10 width=1 height=1 /> + <rect x=0 y=11 width=1 height=1 /> + <rect x=3 y=11 width=1 height=1 /> + <rect x=4 y=11 width=1 height=1 /> + <rect x=7 y=11 width=1 height=1 /> + <rect x=9 y=11 width=1 height=1 /> + <rect x=10 y=11 width=1 height=1 /> + <rect x=12 y=11 width=1 height=1 /> + <rect x=13 y=11 width=1 height=1 /> + <rect x=15 y=11 width=1 height=1 /> + <rect x=19 y=11 width=1 height=1 /> + <rect x=21 y=11 width=1 height=1 /> + <rect x=22 y=11 width=1 height=1 /> + <rect x=23 y=11 width=1 height=1 /> + <rect x=25 y=11 width=1 height=1 /> + <rect x=27 y=11 width=1 height=1 /> + <rect x=28 y=11 width=1 height=1 /> + <rect x=29 y=11 width=1 height=1 /> + <rect x=30 y=11 width=1 height=1 /> + <rect x=32 y=11 width=1 height=1 /> + <rect x=0 y=12 width=1 height=1 /> + <rect x=2 y=12 width=1 height=1 /> + <rect x=3 y=12 width=1 height=1 /> + <rect x=4 y=12 width=1 height=1 /> + <rect x=5 y=12 width=1 height=1 /> + <rect x=6 y=12 width=1 height=1 /> + <rect x=9 y=12 width=1 height=1 /> + <rect x=10 y=12 width=1 height=1 /> + <rect x=14 y=12 width=1 height=1 /> + <rect x=16 y=12 width=1 height=1 /> + <rect x=17 y=12 width=1 height=1 /> + <rect x=18 y=12 width=1 height=1 /> + <rect x=21 y=12 width=1 height=1 /> + <rect x=22 y=12 width=1 height=1 /> + <rect x=23 y=12 width=1 height=1 /> + <rect x=24 y=12 width=1 height=1 /> + <rect x=28 y=12 width=1 height=1 /> + <rect x=4 y=13 width=1 height=1 /> + <rect x=8 y=13 width=1 height=1 /> + <rect x=11 y=13 width=1 height=1 /> + <rect x=12 y=13 width=1 height=1 /> + <rect x=13 y=13 width=1 height=1 /> + <rect x=15 y=13 width=1 height=1 /> + <rect x=17 y=13 width=1 height=1 /> + <rect x=18 y=13 width=1 height=1 /> + <rect x=20 y=13 width=1 height=1 /> + <rect x=21 y=13 width=1 height=1 /> + <rect x=25 y=13 width=1 height=1 /> + <rect x=26 y=13 width=1 height=1 /> + <rect x=27 y=13 width=1 height=1 /> + <rect x=30 y=13 width=1 height=1 /> + <rect x=32 y=13 width=1 height=1 /> + <rect x=2 y=14 width=1 height=1 /> + <rect x=3 y=14 width=1 height=1 /> + <rect x=4 y=14 width=1 height=1 /> + <rect x=5 y=14 width=1 height=1 /> + <rect x=6 y=14 width=1 height=1 /> + <rect x=7 y=14 width=1 height=1 /> + <rect x=8 y=14 width=1 height=1 /> + <rect x=9 y=14 width=1 height=1 /> + <rect x=13 y=14 width=1 height=1 /> + <rect x=15 y=14 width=1 height=1 /> + <rect x=16 y=14 width=1 height=1 /> + <rect x=18 y=14 width=1 height=1 /> + <rect x=21 y=14 width=1 height=1 /> + <rect x=25 y=14 width=1 height=1 /> + <rect x=27 y=14 width=1 height=1 /> + <rect x=28 y=14 width=1 height=1 /> + <rect x=30 y=14 width=1 height=1 /> + <rect x=31 y=14 width=1 height=1 /> + <rect x=1 y=15 width=1 height=1 /> + <rect x=2 y=15 width=1 height=1 /> + <rect x=5 y=15 width=1 height=1 /> + <rect x=9 y=15 width=1 height=1 /> + <rect x=10 y=15 width=1 height=1 /> + <rect x=11 y=15 width=1 height=1 /> + <rect x=14 y=15 width=1 height=1 /> + <rect x=15 y=15 width=1 height=1 /> + <rect x=18 y=15 width=1 height=1 /> + <rect x=21 y=15 width=1 height=1 /> + <rect x=22 y=15 width=1 height=1 /> + <rect x=23 y=15 width=1 height=1 /> + <rect x=24 y=15 width=1 height=1 /> + <rect x=27 y=15 width=1 height=1 /> + <rect x=30 y=15 width=1 height=1 /> + <rect x=3 y=16 width=1 height=1 /> + <rect x=4 y=16 width=1 height=1 /> + <rect x=6 y=16 width=1 height=1 /> + <rect x=9 y=16 width=1 height=1 /> + <rect x=12 y=16 width=1 height=1 /> + <rect x=13 y=16 width=1 height=1 /> + <rect x=15 y=16 width=1 height=1 /> + <rect x=16 y=16 width=1 height=1 /> + <rect x=17 y=16 width=1 height=1 /> + <rect x=22 y=16 width=1 height=1 /> + <rect x=24 y=16 width=1 height=1 /> + <rect x=25 y=16 width=1 height=1 /> + <rect x=27 y=16 width=1 height=1 /> + <rect x=28 y=16 width=1 height=1 /> + <rect x=29 y=16 width=1 height=1 /> + <rect x=31 y=16 width=1 height=1 /> + <rect x=0 y=17 width=1 height=1 /> + <rect x=8 y=17 width=1 height=1 /> + <rect x=9 y=17 width=1 height=1 /> + <rect x=13 y=17 width=1 height=1 /> + <rect x=17 y=17 width=1 height=1 /> + <rect x=18 y=17 width=1 height=1 /> + <rect x=19 y=17 width=1 height=1 /> + <rect x=20 y=17 width=1 height=1 /> + <rect x=21 y=17 width=1 height=1 /> + <rect x=22 y=17 width=1 height=1 /> + <rect x=23 y=17 width=1 height=1 /> + <rect x=24 y=17 width=1 height=1 /> + <rect x=25 y=17 width=1 height=1 /> + <rect x=26 y=17 width=1 height=1 /> + <rect x=29 y=17 width=1 height=1 /> + <rect x=31 y=17 width=1 height=1 /> + <rect x=32 y=17 width=1 height=1 /> + <rect x=3 y=18 width=1 height=1 /> + <rect x=6 y=18 width=1 height=1 /> + <rect x=8 y=18 width=1 height=1 /> + <rect x=9 y=18 width=1 height=1 /> + <rect x=12 y=18 width=1 height=1 /> + <rect x=13 y=18 width=1 height=1 /> + <rect x=14 y=18 width=1 height=1 /> + <rect x=15 y=18 width=1 height=1 /> + <rect x=17 y=18 width=1 height=1 /> + <rect x=20 y=18 width=1 height=1 /> + <rect x=21 y=18 width=1 height=1 /> + <rect x=22 y=18 width=1 height=1 /> + <rect x=24 y=18 width=1 height=1 /> + <rect x=25 y=18 width=1 height=1 /> + <rect x=28 y=18 width=1 height=1 /> + <rect x=30 y=18 width=1 height=1 /> + <rect x=2 y=19 width=1 height=1 /> + <rect x=4 y=19 width=1 height=1 /> + <rect x=5 y=19 width=1 height=1 /> + <rect x=7 y=19 width=1 height=1 /> + <rect x=9 y=19 width=1 height=1 /> + <rect x=13 y=19 width=1 height=1 /> + <rect x=14 y=19 width=1 height=1 /> + <rect x=19 y=19 width=1 height=1 /> + <rect x=20 y=19 width=1 height=1 /> + <rect x=21 y=19 width=1 height=1 /> + <rect x=23 y=19 width=1 height=1 /> + <rect x=24 y=19 width=1 height=1 /> + <rect x=25 y=19 width=1 height=1 /> + <rect x=27 y=19 width=1 height=1 /> + <rect x=28 y=19 width=1 height=1 /> + <rect x=29 y=19 width=1 height=1 /> + <rect x=30 y=19 width=1 height=1 /> + <rect x=31 y=19 width=1 height=1 /> + <rect x=32 y=19 width=1 height=1 /> + <rect x=0 y=20 width=1 height=1 /> + <rect x=2 y=20 width=1 height=1 /> + <rect x=5 y=20 width=1 height=1 /> + <rect x=6 y=20 width=1 height=1 /> + <rect x=9 y=20 width=1 height=1 /> + <rect x=10 y=20 width=1 height=1 /> + <rect x=11 y=20 width=1 height=1 /> + <rect x=12 y=20 width=1 height=1 /> + <rect x=13 y=20 width=1 height=1 /> + <rect x=18 y=20 width=1 height=1 /> + <rect x=19 y=20 width=1 height=1 /> + <rect x=20 y=20 width=1 height=1 /> + <rect x=23 y=20 width=1 height=1 /> + <rect x=28 y=20 width=1 height=1 /> + <rect x=31 y=20 width=1 height=1 /> + <rect x=32 y=20 width=1 height=1 /> + <rect x=0 y=21 width=1 height=1 /> + <rect x=1 y=21 width=1 height=1 /> + <rect x=2 y=21 width=1 height=1 /> + <rect x=4 y=21 width=1 height=1 /> + <rect x=11 y=21 width=1 height=1 /> + <rect x=13 y=21 width=1 height=1 /> + <rect x=14 y=21 width=1 height=1 /> + <rect x=15 y=21 width=1 height=1 /> + <rect x=16 y=21 width=1 height=1 /> + <rect x=17 y=21 width=1 height=1 /> + <rect x=18 y=21 width=1 height=1 /> + <rect x=20 y=21 width=1 height=1 /> + <rect x=22 y=21 width=1 height=1 /> + <rect x=23 y=21 width=1 height=1 /> + <rect x=24 y=21 width=1 height=1 /> + <rect x=26 y=21 width=1 height=1 /> + <rect x=27 y=21 width=1 height=1 /> + <rect x=30 y=21 width=1 height=1 /> + <rect x=31 y=21 width=1 height=1 /> + <rect x=32 y=21 width=1 height=1 /> + <rect x=0 y=22 width=1 height=1 /> + <rect x=5 y=22 width=1 height=1 /> + <rect x=6 y=22 width=1 height=1 /> + <rect x=7 y=22 width=1 height=1 /> + <rect x=13 y=22 width=1 height=1 /> + <rect x=17 y=22 width=1 height=1 /> + <rect x=20 y=22 width=1 height=1 /> + <rect x=21 y=22 width=1 height=1 /> + <rect x=24 y=22 width=1 height=1 /> + <rect x=25 y=22 width=1 height=1 /> + <rect x=27 y=22 width=1 height=1 /> + <rect x=28 y=22 width=1 height=1 /> + <rect x=31 y=22 width=1 height=1 /> + <rect x=0 y=23 width=1 height=1 /> + <rect x=2 y=23 width=1 height=1 /> + <rect x=3 y=23 width=1 height=1 /> + <rect x=5 y=23 width=1 height=1 /> + <rect x=8 y=23 width=1 height=1 /> + <rect x=9 y=23 width=1 height=1 /> + <rect x=10 y=23 width=1 height=1 /> + <rect x=11 y=23 width=1 height=1 /> + <rect x=13 y=23 width=1 height=1 /> + <rect x=14 y=23 width=1 height=1 /> + <rect x=16 y=23 width=1 height=1 /> + <rect x=21 y=23 width=1 height=1 /> + <rect x=22 y=23 width=1 height=1 /> + <rect x=24 y=23 width=1 height=1 /> + <rect x=28 y=23 width=1 height=1 /> + <rect x=30 y=23 width=1 height=1 /> + <rect x=31 y=23 width=1 height=1 /> + <rect x=32 y=23 width=1 height=1 /> + <rect x=0 y=24 width=1 height=1 /> + <rect x=3 y=24 width=1 height=1 /> + <rect x=6 y=24 width=1 height=1 /> + <rect x=7 y=24 width=1 height=1 /> + <rect x=10 y=24 width=1 height=1 /> + <rect x=11 y=24 width=1 height=1 /> + <rect x=12 y=24 width=1 height=1 /> + <rect x=14 y=24 width=1 height=1 /> + <rect x=16 y=24 width=1 height=1 /> + <rect x=17 y=24 width=1 height=1 /> + <rect x=19 y=24 width=1 height=1 /> + <rect x=24 y=24 width=1 height=1 /> + <rect x=25 y=24 width=1 height=1 /> + <rect x=26 y=24 width=1 height=1 /> + <rect x=27 y=24 width=1 height=1 /> + <rect x=28 y=24 width=1 height=1 /> + <rect x=29 y=24 width=1 height=1 /> + <rect x=31 y=24 width=1 height=1 /> + <rect x=8 y=25 width=1 height=1 /> + <rect x=10 y=25 width=1 height=1 /> + <rect x=12 y=25 width=1 height=1 /> + <rect x=13 y=25 width=1 height=1 /> + <rect x=17 y=25 width=1 height=1 /> + <rect x=19 y=25 width=1 height=1 /> + <rect x=20 y=25 width=1 height=1 /> + <rect x=23 y=25 width=1 height=1 /> + <rect x=24 y=25 width=1 height=1 /> + <rect x=28 y=25 width=1 height=1 /> + <rect x=29 y=25 width=1 height=1 /> + <rect x=30 y=25 width=1 height=1 /> + <rect x=32 y=25 width=1 height=1 /> + <rect x=0 y=26 width=1 height=1 /> + <rect x=1 y=26 width=1 height=1 /> + <rect x=2 y=26 width=1 height=1 /> + <rect x=3 y=26 width=1 height=1 /> + <rect x=4 y=26 width=1 height=1 /> + <rect x=5 y=26 width=1 height=1 /> + <rect x=6 y=26 width=1 height=1 /> + <rect x=9 y=26 width=1 height=1 /> + <rect x=11 y=26 width=1 height=1 /> + <rect x=15 y=26 width=1 height=1 /> + <rect x=17 y=26 width=1 height=1 /> + <rect x=21 y=26 width=1 height=1 /> + <rect x=23 y=26 width=1 height=1 /> + <rect x=24 y=26 width=1 height=1 /> + <rect x=26 y=26 width=1 height=1 /> + <rect x=28 y=26 width=1 height=1 /> + <rect x=29 y=26 width=1 height=1 /> + <rect x=30 y=26 width=1 height=1 /> + <rect x=0 y=27 width=1 height=1 /> + <rect x=6 y=27 width=1 height=1 /> + <rect x=8 y=27 width=1 height=1 /> + <rect x=9 y=27 width=1 height=1 /> + <rect x=10 y=27 width=1 height=1 /> + <rect x=12 y=27 width=1 height=1 /> + <rect x=13 y=27 width=1 height=1 /> + <rect x=14 y=27 width=1 height=1 /> + <rect x=15 y=27 width=1 height=1 /> + <rect x=16 y=27 width=1 height=1 /> + <rect x=17 y=27 width=1 height=1 /> + <rect x=18 y=27 width=1 height=1 /> + <rect x=20 y=27 width=1 height=1 /> + <rect x=21 y=27 width=1 height=1 /> + <rect x=22 y=27 width=1 height=1 /> + <rect x=24 y=27 width=1 height=1 /> + <rect x=28 y=27 width=1 height=1 /> + <rect x=29 y=27 width=1 height=1 /> + <rect x=30 y=27 width=1 height=1 /> + <rect x=31 y=27 width=1 height=1 /> + <rect x=32 y=27 width=1 height=1 /> + <rect x=0 y=28 width=1 height=1 /> + <rect x=2 y=28 width=1 height=1 /> + <rect x=3 y=28 width=1 height=1 /> + <rect x=4 y=28 width=1 height=1 /> + <rect x=6 y=28 width=1 height=1 /> + <rect x=8 y=28 width=1 height=1 /> + <rect x=10 y=28 width=1 height=1 /> + <rect x=11 y=28 width=1 height=1 /> + <rect x=12 y=28 width=1 height=1 /> + <rect x=14 y=28 width=1 height=1 /> + <rect x=15 y=28 width=1 height=1 /> + <rect x=16 y=28 width=1 height=1 /> + <rect x=19 y=28 width=1 height=1 /> + <rect x=20 y=28 width=1 height=1 /> + <rect x=21 y=28 width=1 height=1 /> + <rect x=22 y=28 width=1 height=1 /> + <rect x=24 y=28 width=1 height=1 /> + <rect x=25 y=28 width=1 height=1 /> + <rect x=26 y=28 width=1 height=1 /> + <rect x=27 y=28 width=1 height=1 /> + <rect x=28 y=28 width=1 height=1 /> + <rect x=29 y=28 width=1 height=1 /> + <rect x=0 y=29 width=1 height=1 /> + <rect x=2 y=29 width=1 height=1 /> + <rect x=3 y=29 width=1 height=1 /> + <rect x=4 y=29 width=1 height=1 /> + <rect x=6 y=29 width=1 height=1 /> + <rect x=8 y=29 width=1 height=1 /> + <rect x=9 y=29 width=1 height=1 /> + <rect x=11 y=29 width=1 height=1 /> + <rect x=13 y=29 width=1 height=1 /> + <rect x=14 y=29 width=1 height=1 /> + <rect x=15 y=29 width=1 height=1 /> + <rect x=18 y=29 width=1 height=1 /> + <rect x=20 y=29 width=1 height=1 /> + <rect x=22 y=29 width=1 height=1 /> + <rect x=24 y=29 width=1 height=1 /> + <rect x=25 y=29 width=1 height=1 /> + <rect x=27 y=29 width=1 height=1 /> + <rect x=28 y=29 width=1 height=1 /> + <rect x=29 y=29 width=1 height=1 /> + <rect x=30 y=29 width=1 height=1 /> + <rect x=31 y=29 width=1 height=1 /> + <rect x=32 y=29 width=1 height=1 /> + <rect x=0 y=30 width=1 height=1 /> + <rect x=2 y=30 width=1 height=1 /> + <rect x=3 y=30 width=1 height=1 /> + <rect x=4 y=30 width=1 height=1 /> + <rect x=6 y=30 width=1 height=1 /> + <rect x=8 y=30 width=1 height=1 /> + <rect x=10 y=30 width=1 height=1 /> + <rect x=11 y=30 width=1 height=1 /> + <rect x=15 y=30 width=1 height=1 /> + <rect x=16 y=30 width=1 height=1 /> + <rect x=17 y=30 width=1 height=1 /> + <rect x=18 y=30 width=1 height=1 /> + <rect x=20 y=30 width=1 height=1 /> + <rect x=22 y=30 width=1 height=1 /> + <rect x=24 y=30 width=1 height=1 /> + <rect x=25 y=30 width=1 height=1 /> + <rect x=26 y=30 width=1 height=1 /> + <rect x=27 y=30 width=1 height=1 /> + <rect x=30 y=30 width=1 height=1 /> + <rect x=0 y=31 width=1 height=1 /> + <rect x=6 y=31 width=1 height=1 /> + <rect x=10 y=31 width=1 height=1 /> + <rect x=12 y=31 width=1 height=1 /> + <rect x=14 y=31 width=1 height=1 /> + <rect x=15 y=31 width=1 height=1 /> + <rect x=21 y=31 width=1 height=1 /> + <rect x=22 y=31 width=1 height=1 /> + <rect x=23 y=31 width=1 height=1 /> + <rect x=25 y=31 width=1 height=1 /> + <rect x=26 y=31 width=1 height=1 /> + <rect x=27 y=31 width=1 height=1 /> + <rect x=28 y=31 width=1 height=1 /> + <rect x=30 y=31 width=1 height=1 /> + <rect x=0 y=32 width=1 height=1 /> + <rect x=1 y=32 width=1 height=1 /> + <rect x=2 y=32 width=1 height=1 /> + <rect x=3 y=32 width=1 height=1 /> + <rect x=4 y=32 width=1 height=1 /> + <rect x=5 y=32 width=1 height=1 /> + <rect x=6 y=32 width=1 height=1 /> + <rect x=8 y=32 width=1 height=1 /> + <rect x=9 y=32 width=1 height=1 /> + <rect x=11 y=32 width=1 height=1 /> + <rect x=12 y=32 width=1 height=1 /> + <rect x=13 y=32 width=1 height=1 /> + <rect x=15 y=32 width=1 height=1 /> + <rect x=16 y=32 width=1 height=1 /> + <rect x=17 y=32 width=1 height=1 /> + <rect x=19 y=32 width=1 height=1 /> + <rect x=22 y=32 width=1 height=1 /> + <rect x=24 y=32 width=1 height=1 /> + <rect x=25 y=32 width=1 height=1 /> + <rect x=27 y=32 width=1 height=1 /> + <rect x=31 y=32 width=1 height=1 /> +</svg></div><p><a href="taler+http://pay/localhost:8083/2024.295-03N2YD9YYPBHM/" style="--wpwjmk-0: none;" class="wpwjmk">Or open your Taler wallet</a></p><p><a href="https://wallet.taler.net/">Don't have a Taler wallet yet? Install it!</a></p></section><footer class="fef0x5t"><p><a href="https://taler.net/">Learn more about GNU Taler on our website.</a><p>Copyright © 2014—2021 Taler Systems SA</p></p></footer></div> + <script>"use strict"; +var page = (() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod + )); + var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + + // ../../node_modules/.pnpm/qrcode-generator@1.4.4/node_modules/qrcode-generator/qrcode.js + var require_qrcode = __commonJS({ + "../../node_modules/.pnpm/qrcode-generator@1.4.4/node_modules/qrcode-generator/qrcode.js"(exports, module) { + var qrcode2 = function() { + var qrcode3 = function(typeNumber, errorCorrectionLevel) { + var PAD0 = 236; + var PAD1 = 17; + var _typeNumber = typeNumber; + var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel]; + var _modules = null; + var _moduleCount = 0; + var _dataCache = null; + var _dataList = []; + var _this = {}; + var makeImpl = function(test, maskPattern) { + _moduleCount = _typeNumber * 4 + 17; + _modules = function(moduleCount) { + var modules = new Array(moduleCount); + for (var row = 0; row < moduleCount; row += 1) { + modules[row] = new Array(moduleCount); + for (var col = 0; col < moduleCount; col += 1) { + modules[row][col] = null; + } + } + return modules; + }(_moduleCount); + setupPositionProbePattern(0, 0); + setupPositionProbePattern(_moduleCount - 7, 0); + setupPositionProbePattern(0, _moduleCount - 7); + setupPositionAdjustPattern(); + setupTimingPattern(); + setupTypeInfo(test, maskPattern); + if (_typeNumber >= 7) { + setupTypeNumber(test); + } + if (_dataCache == null) { + _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList); + } + mapData(_dataCache, maskPattern); + }; + var setupPositionProbePattern = function(row, col) { + for (var r3 = -1; r3 <= 7; r3 += 1) { + if (row + r3 <= -1 || _moduleCount <= row + r3) + continue; + for (var c4 = -1; c4 <= 7; c4 += 1) { + if (col + c4 <= -1 || _moduleCount <= col + c4) + continue; + if (0 <= r3 && r3 <= 6 && (c4 == 0 || c4 == 6) || 0 <= c4 && c4 <= 6 && (r3 == 0 || r3 == 6) || 2 <= r3 && r3 <= 4 && 2 <= c4 && c4 <= 4) { + _modules[row + r3][col + c4] = true; + } else { + _modules[row + r3][col + c4] = false; + } + } + } + }; + var getBestMaskPattern = function() { + var minLostPoint = 0; + var pattern = 0; + for (var i4 = 0; i4 < 8; i4 += 1) { + makeImpl(true, i4); + var lostPoint = QRUtil.getLostPoint(_this); + if (i4 == 0 || minLostPoint > lostPoint) { + minLostPoint = lostPoint; + pattern = i4; + } + } + return pattern; + }; + var setupTimingPattern = function() { + for (var r3 = 8; r3 < _moduleCount - 8; r3 += 1) { + if (_modules[r3][6] != null) { + continue; + } + _modules[r3][6] = r3 % 2 == 0; + } + for (var c4 = 8; c4 < _moduleCount - 8; c4 += 1) { + if (_modules[6][c4] != null) { + continue; + } + _modules[6][c4] = c4 % 2 == 0; + } + }; + var setupPositionAdjustPattern = function() { + var pos = QRUtil.getPatternPosition(_typeNumber); + for (var i4 = 0; i4 < pos.length; i4 += 1) { + for (var j5 = 0; j5 < pos.length; j5 += 1) { + var row = pos[i4]; + var col = pos[j5]; + if (_modules[row][col] != null) { + continue; + } + for (var r3 = -2; r3 <= 2; r3 += 1) { + for (var c4 = -2; c4 <= 2; c4 += 1) { + if (r3 == -2 || r3 == 2 || c4 == -2 || c4 == 2 || r3 == 0 && c4 == 0) { + _modules[row + r3][col + c4] = true; + } else { + _modules[row + r3][col + c4] = false; + } + } + } + } + } + }; + var setupTypeNumber = function(test) { + var bits = QRUtil.getBCHTypeNumber(_typeNumber); + for (var i4 = 0; i4 < 18; i4 += 1) { + var mod = !test && (bits >> i4 & 1) == 1; + _modules[Math.floor(i4 / 3)][i4 % 3 + _moduleCount - 8 - 3] = mod; + } + for (var i4 = 0; i4 < 18; i4 += 1) { + var mod = !test && (bits >> i4 & 1) == 1; + _modules[i4 % 3 + _moduleCount - 8 - 3][Math.floor(i4 / 3)] = mod; + } + }; + var setupTypeInfo = function(test, maskPattern) { + var data = _errorCorrectionLevel << 3 | maskPattern; + var bits = QRUtil.getBCHTypeInfo(data); + for (var i4 = 0; i4 < 15; i4 += 1) { + var mod = !test && (bits >> i4 & 1) == 1; + if (i4 < 6) { + _modules[i4][8] = mod; + } else if (i4 < 8) { + _modules[i4 + 1][8] = mod; + } else { + _modules[_moduleCount - 15 + i4][8] = mod; + } + } + for (var i4 = 0; i4 < 15; i4 += 1) { + var mod = !test && (bits >> i4 & 1) == 1; + if (i4 < 8) { + _modules[8][_moduleCount - i4 - 1] = mod; + } else if (i4 < 9) { + _modules[8][15 - i4 - 1 + 1] = mod; + } else { + _modules[8][15 - i4 - 1] = mod; + } + } + _modules[_moduleCount - 8][8] = !test; + }; + var mapData = function(data, maskPattern) { + var inc = -1; + var row = _moduleCount - 1; + var bitIndex = 7; + var byteIndex = 0; + var maskFunc = QRUtil.getMaskFunction(maskPattern); + for (var col = _moduleCount - 1; col > 0; col -= 2) { + if (col == 6) + col -= 1; + while (true) { + for (var c4 = 0; c4 < 2; c4 += 1) { + if (_modules[row][col - c4] == null) { + var dark = false; + if (byteIndex < data.length) { + dark = (data[byteIndex] >>> bitIndex & 1) == 1; + } + var mask = maskFunc(row, col - c4); + if (mask) { + dark = !dark; + } + _modules[row][col - c4] = dark; + bitIndex -= 1; + if (bitIndex == -1) { + byteIndex += 1; + bitIndex = 7; + } + } + } + row += inc; + if (row < 0 || _moduleCount <= row) { + row -= inc; + inc = -inc; + break; + } + } + } + }; + var createBytes = function(buffer, rsBlocks) { + var offset = 0; + var maxDcCount = 0; + var maxEcCount = 0; + var dcdata = new Array(rsBlocks.length); + var ecdata = new Array(rsBlocks.length); + for (var r3 = 0; r3 < rsBlocks.length; r3 += 1) { + var dcCount = rsBlocks[r3].dataCount; + var ecCount = rsBlocks[r3].totalCount - dcCount; + maxDcCount = Math.max(maxDcCount, dcCount); + maxEcCount = Math.max(maxEcCount, ecCount); + dcdata[r3] = new Array(dcCount); + for (var i4 = 0; i4 < dcdata[r3].length; i4 += 1) { + dcdata[r3][i4] = 255 & buffer.getBuffer()[i4 + offset]; + } + offset += dcCount; + var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount); + var rawPoly = qrPolynomial(dcdata[r3], rsPoly.getLength() - 1); + var modPoly = rawPoly.mod(rsPoly); + ecdata[r3] = new Array(rsPoly.getLength() - 1); + for (var i4 = 0; i4 < ecdata[r3].length; i4 += 1) { + var modIndex = i4 + modPoly.getLength() - ecdata[r3].length; + ecdata[r3][i4] = modIndex >= 0 ? modPoly.getAt(modIndex) : 0; + } + } + var totalCodeCount = 0; + for (var i4 = 0; i4 < rsBlocks.length; i4 += 1) { + totalCodeCount += rsBlocks[i4].totalCount; + } + var data = new Array(totalCodeCount); + var index2 = 0; + for (var i4 = 0; i4 < maxDcCount; i4 += 1) { + for (var r3 = 0; r3 < rsBlocks.length; r3 += 1) { + if (i4 < dcdata[r3].length) { + data[index2] = dcdata[r3][i4]; + index2 += 1; + } + } + } + for (var i4 = 0; i4 < maxEcCount; i4 += 1) { + for (var r3 = 0; r3 < rsBlocks.length; r3 += 1) { + if (i4 < ecdata[r3].length) { + data[index2] = ecdata[r3][i4]; + index2 += 1; + } + } + } + return data; + }; + var createData = function(typeNumber2, errorCorrectionLevel2, dataList) { + var rsBlocks = QRRSBlock.getRSBlocks(typeNumber2, errorCorrectionLevel2); + var buffer = qrBitBuffer(); + for (var i4 = 0; i4 < dataList.length; i4 += 1) { + var data = dataList[i4]; + buffer.put(data.getMode(), 4); + buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber2)); + data.write(buffer); + } + var totalDataCount = 0; + for (var i4 = 0; i4 < rsBlocks.length; i4 += 1) { + totalDataCount += rsBlocks[i4].dataCount; + } + if (buffer.getLengthInBits() > totalDataCount * 8) { + throw "code length overflow. (" + buffer.getLengthInBits() + ">" + totalDataCount * 8 + ")"; + } + if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) { + buffer.put(0, 4); + } + while (buffer.getLengthInBits() % 8 != 0) { + buffer.putBit(false); + } + while (true) { + if (buffer.getLengthInBits() >= totalDataCount * 8) { + break; + } + buffer.put(PAD0, 8); + if (buffer.getLengthInBits() >= totalDataCount * 8) { + break; + } + buffer.put(PAD1, 8); + } + return createBytes(buffer, rsBlocks); + }; + _this.addData = function(data, mode) { + mode = mode || "Byte"; + var newData = null; + switch (mode) { + case "Numeric": + newData = qrNumber(data); + break; + case "Alphanumeric": + newData = qrAlphaNum(data); + break; + case "Byte": + newData = qr8BitByte(data); + break; + case "Kanji": + newData = qrKanji(data); + break; + default: + throw "mode:" + mode; + } + _dataList.push(newData); + _dataCache = null; + }; + _this.isDark = function(row, col) { + if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) { + throw row + "," + col; + } + return _modules[row][col]; + }; + _this.getModuleCount = function() { + return _moduleCount; + }; + _this.make = function() { + if (_typeNumber < 1) { + var typeNumber2 = 1; + for (; typeNumber2 < 40; typeNumber2++) { + var rsBlocks = QRRSBlock.getRSBlocks(typeNumber2, _errorCorrectionLevel); + var buffer = qrBitBuffer(); + for (var i4 = 0; i4 < _dataList.length; i4++) { + var data = _dataList[i4]; + buffer.put(data.getMode(), 4); + buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber2)); + data.write(buffer); + } + var totalDataCount = 0; + for (var i4 = 0; i4 < rsBlocks.length; i4++) { + totalDataCount += rsBlocks[i4].dataCount; + } + if (buffer.getLengthInBits() <= totalDataCount * 8) { + break; + } + } + _typeNumber = typeNumber2; + } + makeImpl(false, getBestMaskPattern()); + }; + _this.createTableTag = function(cellSize, margin) { + cellSize = cellSize || 2; + margin = typeof margin == "undefined" ? cellSize * 4 : margin; + var qrHtml = ""; + qrHtml += '<table style="'; + qrHtml += " border-width: 0px; border-style: none;"; + qrHtml += " border-collapse: collapse;"; + qrHtml += " padding: 0px; margin: " + margin + "px;"; + qrHtml += '">'; + qrHtml += "<tbody>"; + for (var r3 = 0; r3 < _this.getModuleCount(); r3 += 1) { + qrHtml += "<tr>"; + for (var c4 = 0; c4 < _this.getModuleCount(); c4 += 1) { + qrHtml += '<td style="'; + qrHtml += " border-width: 0px; border-style: none;"; + qrHtml += " border-collapse: collapse;"; + qrHtml += " padding: 0px; margin: 0px;"; + qrHtml += " width: " + cellSize + "px;"; + qrHtml += " height: " + cellSize + "px;"; + qrHtml += " background-color: "; + qrHtml += _this.isDark(r3, c4) ? "#000000" : "#ffffff"; + qrHtml += ";"; + qrHtml += '"/>'; + } + qrHtml += "</tr>"; + } + qrHtml += "</tbody>"; + qrHtml += "</table>"; + return qrHtml; + }; + _this.createSvgTag = function(cellSize, margin, alt, title) { + var opts = {}; + if (typeof arguments[0] == "object") { + opts = arguments[0]; + cellSize = opts.cellSize; + margin = opts.margin; + alt = opts.alt; + title = opts.title; + } + cellSize = cellSize || 2; + margin = typeof margin == "undefined" ? cellSize * 4 : margin; + alt = typeof alt === "string" ? { text: alt } : alt || {}; + alt.text = alt.text || null; + alt.id = alt.text ? alt.id || "qrcode-description" : null; + title = typeof title === "string" ? { text: title } : title || {}; + title.text = title.text || null; + title.id = title.text ? title.id || "qrcode-title" : null; + var size = _this.getModuleCount() * cellSize + margin * 2; + var c4, mc, r3, mr, qrSvg = "", rect; + rect = "l" + cellSize + ",0 0," + cellSize + " -" + cellSize + ",0 0,-" + cellSize + "z "; + qrSvg += '<svg version="1.1" xmlns="http://www.w3.org/2000/svg"'; + qrSvg += !opts.scalable ? ' width="' + size + 'px" height="' + size + 'px"' : ""; + qrSvg += ' viewBox="0 0 ' + size + " " + size + '" '; + qrSvg += ' preserveAspectRatio="xMinYMin meet"'; + qrSvg += title.text || alt.text ? ' role="img" aria-labelledby="' + escapeXml([title.id, alt.id].join(" ").trim()) + '"' : ""; + qrSvg += ">"; + qrSvg += title.text ? '<title id="' + escapeXml(title.id) + '">' + escapeXml(title.text) + "</title>" : ""; + qrSvg += alt.text ? '<description id="' + escapeXml(alt.id) + '">' + escapeXml(alt.text) + "</description>" : ""; + qrSvg += '<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>'; + qrSvg += '<path d="'; + for (r3 = 0; r3 < _this.getModuleCount(); r3 += 1) { + mr = r3 * cellSize + margin; + for (c4 = 0; c4 < _this.getModuleCount(); c4 += 1) { + if (_this.isDark(r3, c4)) { + mc = c4 * cellSize + margin; + qrSvg += "M" + mc + "," + mr + rect; + } + } + } + qrSvg += '" stroke="transparent" fill="black"/>'; + qrSvg += "</svg>"; + return qrSvg; + }; + _this.createDataURL = function(cellSize, margin) { + cellSize = cellSize || 2; + margin = typeof margin == "undefined" ? cellSize * 4 : margin; + var size = _this.getModuleCount() * cellSize + margin * 2; + var min = margin; + var max = size - margin; + return createDataURL(size, size, function(x5, y4) { + if (min <= x5 && x5 < max && min <= y4 && y4 < max) { + var c4 = Math.floor((x5 - min) / cellSize); + var r3 = Math.floor((y4 - min) / cellSize); + return _this.isDark(r3, c4) ? 0 : 1; + } else { + return 1; + } + }); + }; + _this.createImgTag = function(cellSize, margin, alt) { + cellSize = cellSize || 2; + margin = typeof margin == "undefined" ? cellSize * 4 : margin; + var size = _this.getModuleCount() * cellSize + margin * 2; + var img = ""; + img += "<img"; + img += ' src="'; + img += _this.createDataURL(cellSize, margin); + img += '"'; + img += ' width="'; + img += size; + img += '"'; + img += ' height="'; + img += size; + img += '"'; + if (alt) { + img += ' alt="'; + img += escapeXml(alt); + img += '"'; + } + img += "/>"; + return img; + }; + var escapeXml = function(s4) { + var escaped = ""; + for (var i4 = 0; i4 < s4.length; i4 += 1) { + var c4 = s4.charAt(i4); + switch (c4) { + case "<": + escaped += "<"; + break; + case ">": + escaped += ">"; + break; + case "&": + escaped += "&"; + break; + case '"': + escaped += """; + break; + default: + escaped += c4; + break; + } + } + return escaped; + }; + var _createHalfASCII = function(margin) { + var cellSize = 1; + margin = typeof margin == "undefined" ? cellSize * 2 : margin; + var size = _this.getModuleCount() * cellSize + margin * 2; + var min = margin; + var max = size - margin; + var y4, x5, r1, r22, p4; + var blocks = { + "\u2588\u2588": "\u2588", + "\u2588 ": "\u2580", + " \u2588": "\u2584", + " ": " " + }; + var blocksLastLineNoMargin = { + "\u2588\u2588": "\u2580", + "\u2588 ": "\u2580", + " \u2588": " ", + " ": " " + }; + var ascii = ""; + for (y4 = 0; y4 < size; y4 += 2) { + r1 = Math.floor((y4 - min) / cellSize); + r22 = Math.floor((y4 + 1 - min) / cellSize); + for (x5 = 0; x5 < size; x5 += 1) { + p4 = "\u2588"; + if (min <= x5 && x5 < max && min <= y4 && y4 < max && _this.isDark(r1, Math.floor((x5 - min) / cellSize))) { + p4 = " "; + } + if (min <= x5 && x5 < max && min <= y4 + 1 && y4 + 1 < max && _this.isDark(r22, Math.floor((x5 - min) / cellSize))) { + p4 += " "; + } else { + p4 += "\u2588"; + } + ascii += margin < 1 && y4 + 1 >= max ? blocksLastLineNoMargin[p4] : blocks[p4]; + } + ascii += "\n"; + } + if (size % 2 && margin > 0) { + return ascii.substring(0, ascii.length - size - 1) + Array(size + 1).join("\u2580"); + } + return ascii.substring(0, ascii.length - 1); + }; + _this.createASCII = function(cellSize, margin) { + cellSize = cellSize || 1; + if (cellSize < 2) { + return _createHalfASCII(margin); + } + cellSize -= 1; + margin = typeof margin == "undefined" ? cellSize * 2 : margin; + var size = _this.getModuleCount() * cellSize + margin * 2; + var min = margin; + var max = size - margin; + var y4, x5, r3, p4; + var white = Array(cellSize + 1).join("\u2588\u2588"); + var black = Array(cellSize + 1).join(" "); + var ascii = ""; + var line = ""; + for (y4 = 0; y4 < size; y4 += 1) { + r3 = Math.floor((y4 - min) / cellSize); + line = ""; + for (x5 = 0; x5 < size; x5 += 1) { + p4 = 1; + if (min <= x5 && x5 < max && min <= y4 && y4 < max && _this.isDark(r3, Math.floor((x5 - min) / cellSize))) { + p4 = 0; + } + line += p4 ? white : black; + } + for (r3 = 0; r3 < cellSize; r3 += 1) { + ascii += line + "\n"; + } + } + return ascii.substring(0, ascii.length - 1); + }; + _this.renderTo2dContext = function(context, cellSize) { + cellSize = cellSize || 2; + var length = _this.getModuleCount(); + for (var row = 0; row < length; row++) { + for (var col = 0; col < length; col++) { + context.fillStyle = _this.isDark(row, col) ? "black" : "white"; + context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize); + } + } + }; + return _this; + }; + qrcode3.stringToBytesFuncs = { + "default": function(s4) { + var bytes = []; + for (var i4 = 0; i4 < s4.length; i4 += 1) { + var c4 = s4.charCodeAt(i4); + bytes.push(c4 & 255); + } + return bytes; + } + }; + qrcode3.stringToBytes = qrcode3.stringToBytesFuncs["default"]; + qrcode3.createStringToBytes = function(unicodeData, numChars) { + var unicodeMap = function() { + var bin = base64DecodeInputStream(unicodeData); + var read = function() { + var b4 = bin.read(); + if (b4 == -1) + throw "eof"; + return b4; + }; + var count = 0; + var unicodeMap2 = {}; + while (true) { + var b0 = bin.read(); + if (b0 == -1) + break; + var b1 = read(); + var b22 = read(); + var b32 = read(); + var k5 = String.fromCharCode(b0 << 8 | b1); + var v4 = b22 << 8 | b32; + unicodeMap2[k5] = v4; + count += 1; + } + if (count != numChars) { + throw count + " != " + numChars; + } + return unicodeMap2; + }(); + var unknownChar = "?".charCodeAt(0); + return function(s4) { + var bytes = []; + for (var i4 = 0; i4 < s4.length; i4 += 1) { + var c4 = s4.charCodeAt(i4); + if (c4 < 128) { + bytes.push(c4); + } else { + var b4 = unicodeMap[s4.charAt(i4)]; + if (typeof b4 == "number") { + if ((b4 & 255) == b4) { + bytes.push(b4); + } else { + bytes.push(b4 >>> 8); + bytes.push(b4 & 255); + } + } else { + bytes.push(unknownChar); + } + } + } + return bytes; + }; + }; + var QRMode = { + MODE_NUMBER: 1 << 0, + MODE_ALPHA_NUM: 1 << 1, + MODE_8BIT_BYTE: 1 << 2, + MODE_KANJI: 1 << 3 + }; + var QRErrorCorrectionLevel = { + L: 1, + M: 0, + Q: 3, + H: 2 + }; + var QRMaskPattern = { + PATTERN000: 0, + PATTERN001: 1, + PATTERN010: 2, + PATTERN011: 3, + PATTERN100: 4, + PATTERN101: 5, + PATTERN110: 6, + PATTERN111: 7 + }; + var QRUtil = function() { + var PATTERN_POSITION_TABLE = [ + [], + [6, 18], + [6, 22], + [6, 26], + [6, 30], + [6, 34], + [6, 22, 38], + [6, 24, 42], + [6, 26, 46], + [6, 28, 50], + [6, 30, 54], + [6, 32, 58], + [6, 34, 62], + [6, 26, 46, 66], + [6, 26, 48, 70], + [6, 26, 50, 74], + [6, 30, 54, 78], + [6, 30, 56, 82], + [6, 30, 58, 86], + [6, 34, 62, 90], + [6, 28, 50, 72, 94], + [6, 26, 50, 74, 98], + [6, 30, 54, 78, 102], + [6, 28, 54, 80, 106], + [6, 32, 58, 84, 110], + [6, 30, 58, 86, 114], + [6, 34, 62, 90, 118], + [6, 26, 50, 74, 98, 122], + [6, 30, 54, 78, 102, 126], + [6, 26, 52, 78, 104, 130], + [6, 30, 56, 82, 108, 134], + [6, 34, 60, 86, 112, 138], + [6, 30, 58, 86, 114, 142], + [6, 34, 62, 90, 118, 146], + [6, 30, 54, 78, 102, 126, 150], + [6, 24, 50, 76, 102, 128, 154], + [6, 28, 54, 80, 106, 132, 158], + [6, 32, 58, 84, 110, 136, 162], + [6, 26, 54, 82, 110, 138, 166], + [6, 30, 58, 86, 114, 142, 170] + ]; + var G15 = 1 << 10 | 1 << 8 | 1 << 5 | 1 << 4 | 1 << 2 | 1 << 1 | 1 << 0; + var G18 = 1 << 12 | 1 << 11 | 1 << 10 | 1 << 9 | 1 << 8 | 1 << 5 | 1 << 2 | 1 << 0; + var G15_MASK = 1 << 14 | 1 << 12 | 1 << 10 | 1 << 4 | 1 << 1; + var _this = {}; + var getBCHDigit = function(data) { + var digit = 0; + while (data != 0) { + digit += 1; + data >>>= 1; + } + return digit; + }; + _this.getBCHTypeInfo = function(data) { + var d4 = data << 10; + while (getBCHDigit(d4) - getBCHDigit(G15) >= 0) { + d4 ^= G15 << getBCHDigit(d4) - getBCHDigit(G15); + } + return (data << 10 | d4) ^ G15_MASK; + }; + _this.getBCHTypeNumber = function(data) { + var d4 = data << 12; + while (getBCHDigit(d4) - getBCHDigit(G18) >= 0) { + d4 ^= G18 << getBCHDigit(d4) - getBCHDigit(G18); + } + return data << 12 | d4; + }; + _this.getPatternPosition = function(typeNumber) { + return PATTERN_POSITION_TABLE[typeNumber - 1]; + }; + _this.getMaskFunction = function(maskPattern) { + switch (maskPattern) { + case QRMaskPattern.PATTERN000: + return function(i4, j5) { + return (i4 + j5) % 2 == 0; + }; + case QRMaskPattern.PATTERN001: + return function(i4, j5) { + return i4 % 2 == 0; + }; + case QRMaskPattern.PATTERN010: + return function(i4, j5) { + return j5 % 3 == 0; + }; + case QRMaskPattern.PATTERN011: + return function(i4, j5) { + return (i4 + j5) % 3 == 0; + }; + case QRMaskPattern.PATTERN100: + return function(i4, j5) { + return (Math.floor(i4 / 2) + Math.floor(j5 / 3)) % 2 == 0; + }; + case QRMaskPattern.PATTERN101: + return function(i4, j5) { + return i4 * j5 % 2 + i4 * j5 % 3 == 0; + }; + case QRMaskPattern.PATTERN110: + return function(i4, j5) { + return (i4 * j5 % 2 + i4 * j5 % 3) % 2 == 0; + }; + case QRMaskPattern.PATTERN111: + return function(i4, j5) { + return (i4 * j5 % 3 + (i4 + j5) % 2) % 2 == 0; + }; + default: + throw "bad maskPattern:" + maskPattern; + } + }; + _this.getErrorCorrectPolynomial = function(errorCorrectLength) { + var a4 = qrPolynomial([1], 0); + for (var i4 = 0; i4 < errorCorrectLength; i4 += 1) { + a4 = a4.multiply(qrPolynomial([1, QRMath.gexp(i4)], 0)); + } + return a4; + }; + _this.getLengthInBits = function(mode, type) { + if (1 <= type && type < 10) { + switch (mode) { + case QRMode.MODE_NUMBER: + return 10; + case QRMode.MODE_ALPHA_NUM: + return 9; + case QRMode.MODE_8BIT_BYTE: + return 8; + case QRMode.MODE_KANJI: + return 8; + default: + throw "mode:" + mode; + } + } else if (type < 27) { + switch (mode) { + case QRMode.MODE_NUMBER: + return 12; + case QRMode.MODE_ALPHA_NUM: + return 11; + case QRMode.MODE_8BIT_BYTE: + return 16; + case QRMode.MODE_KANJI: + return 10; + default: + throw "mode:" + mode; + } + } else if (type < 41) { + switch (mode) { + case QRMode.MODE_NUMBER: + return 14; + case QRMode.MODE_ALPHA_NUM: + return 13; + case QRMode.MODE_8BIT_BYTE: + return 16; + case QRMode.MODE_KANJI: + return 12; + default: + throw "mode:" + mode; + } + } else { + throw "type:" + type; + } + }; + _this.getLostPoint = function(qrcode4) { + var moduleCount = qrcode4.getModuleCount(); + var lostPoint = 0; + for (var row = 0; row < moduleCount; row += 1) { + for (var col = 0; col < moduleCount; col += 1) { + var sameCount = 0; + var dark = qrcode4.isDark(row, col); + for (var r3 = -1; r3 <= 1; r3 += 1) { + if (row + r3 < 0 || moduleCount <= row + r3) { + continue; + } + for (var c4 = -1; c4 <= 1; c4 += 1) { + if (col + c4 < 0 || moduleCount <= col + c4) { + continue; + } + if (r3 == 0 && c4 == 0) { + continue; + } + if (dark == qrcode4.isDark(row + r3, col + c4)) { + sameCount += 1; + } + } + } + if (sameCount > 5) { + lostPoint += 3 + sameCount - 5; + } + } + } + ; + for (var row = 0; row < moduleCount - 1; row += 1) { + for (var col = 0; col < moduleCount - 1; col += 1) { + var count = 0; + if (qrcode4.isDark(row, col)) + count += 1; + if (qrcode4.isDark(row + 1, col)) + count += 1; + if (qrcode4.isDark(row, col + 1)) + count += 1; + if (qrcode4.isDark(row + 1, col + 1)) + count += 1; + if (count == 0 || count == 4) { + lostPoint += 3; + } + } + } + for (var row = 0; row < moduleCount; row += 1) { + for (var col = 0; col < moduleCount - 6; col += 1) { + if (qrcode4.isDark(row, col) && !qrcode4.isDark(row, col + 1) && qrcode4.isDark(row, col + 2) && qrcode4.isDark(row, col + 3) && qrcode4.isDark(row, col + 4) && !qrcode4.isDark(row, col + 5) && qrcode4.isDark(row, col + 6)) { + lostPoint += 40; + } + } + } + for (var col = 0; col < moduleCount; col += 1) { + for (var row = 0; row < moduleCount - 6; row += 1) { + if (qrcode4.isDark(row, col) && !qrcode4.isDark(row + 1, col) && qrcode4.isDark(row + 2, col) && qrcode4.isDark(row + 3, col) && qrcode4.isDark(row + 4, col) && !qrcode4.isDark(row + 5, col) && qrcode4.isDark(row + 6, col)) { + lostPoint += 40; + } + } + } + var darkCount = 0; + for (var col = 0; col < moduleCount; col += 1) { + for (var row = 0; row < moduleCount; row += 1) { + if (qrcode4.isDark(row, col)) { + darkCount += 1; + } + } + } + var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5; + lostPoint += ratio * 10; + return lostPoint; + }; + return _this; + }(); + var QRMath = function() { + var EXP_TABLE = new Array(256); + var LOG_TABLE = new Array(256); + for (var i4 = 0; i4 < 8; i4 += 1) { + EXP_TABLE[i4] = 1 << i4; + } + for (var i4 = 8; i4 < 256; i4 += 1) { + EXP_TABLE[i4] = EXP_TABLE[i4 - 4] ^ EXP_TABLE[i4 - 5] ^ EXP_TABLE[i4 - 6] ^ EXP_TABLE[i4 - 8]; + } + for (var i4 = 0; i4 < 255; i4 += 1) { + LOG_TABLE[EXP_TABLE[i4]] = i4; + } + var _this = {}; + _this.glog = function(n3) { + if (n3 < 1) { + throw "glog(" + n3 + ")"; + } + return LOG_TABLE[n3]; + }; + _this.gexp = function(n3) { + while (n3 < 0) { + n3 += 255; + } + while (n3 >= 256) { + n3 -= 255; + } + return EXP_TABLE[n3]; + }; + return _this; + }(); + function qrPolynomial(num, shift) { + if (typeof num.length == "undefined") { + throw num.length + "/" + shift; + } + var _num = function() { + var offset = 0; + while (offset < num.length && num[offset] == 0) { + offset += 1; + } + var _num2 = new Array(num.length - offset + shift); + for (var i4 = 0; i4 < num.length - offset; i4 += 1) { + _num2[i4] = num[i4 + offset]; + } + return _num2; + }(); + var _this = {}; + _this.getAt = function(index2) { + return _num[index2]; + }; + _this.getLength = function() { + return _num.length; + }; + _this.multiply = function(e3) { + var num2 = new Array(_this.getLength() + e3.getLength() - 1); + for (var i4 = 0; i4 < _this.getLength(); i4 += 1) { + for (var j5 = 0; j5 < e3.getLength(); j5 += 1) { + num2[i4 + j5] ^= QRMath.gexp(QRMath.glog(_this.getAt(i4)) + QRMath.glog(e3.getAt(j5))); + } + } + return qrPolynomial(num2, 0); + }; + _this.mod = function(e3) { + if (_this.getLength() - e3.getLength() < 0) { + return _this; + } + var ratio = QRMath.glog(_this.getAt(0)) - QRMath.glog(e3.getAt(0)); + var num2 = new Array(_this.getLength()); + for (var i4 = 0; i4 < _this.getLength(); i4 += 1) { + num2[i4] = _this.getAt(i4); + } + for (var i4 = 0; i4 < e3.getLength(); i4 += 1) { + num2[i4] ^= QRMath.gexp(QRMath.glog(e3.getAt(i4)) + ratio); + } + return qrPolynomial(num2, 0).mod(e3); + }; + return _this; + } + ; + var QRRSBlock = function() { + var RS_BLOCK_TABLE = [ + // L + // M + // Q + // H + // 1 + [1, 26, 19], + [1, 26, 16], + [1, 26, 13], + [1, 26, 9], + // 2 + [1, 44, 34], + [1, 44, 28], + [1, 44, 22], + [1, 44, 16], + // 3 + [1, 70, 55], + [1, 70, 44], + [2, 35, 17], + [2, 35, 13], + // 4 + [1, 100, 80], + [2, 50, 32], + [2, 50, 24], + [4, 25, 9], + // 5 + [1, 134, 108], + [2, 67, 43], + [2, 33, 15, 2, 34, 16], + [2, 33, 11, 2, 34, 12], + // 6 + [2, 86, 68], + [4, 43, 27], + [4, 43, 19], + [4, 43, 15], + // 7 + [2, 98, 78], + [4, 49, 31], + [2, 32, 14, 4, 33, 15], + [4, 39, 13, 1, 40, 14], + // 8 + [2, 121, 97], + [2, 60, 38, 2, 61, 39], + [4, 40, 18, 2, 41, 19], + [4, 40, 14, 2, 41, 15], + // 9 + [2, 146, 116], + [3, 58, 36, 2, 59, 37], + [4, 36, 16, 4, 37, 17], + [4, 36, 12, 4, 37, 13], + // 10 + [2, 86, 68, 2, 87, 69], + [4, 69, 43, 1, 70, 44], + [6, 43, 19, 2, 44, 20], + [6, 43, 15, 2, 44, 16], + // 11 + [4, 101, 81], + [1, 80, 50, 4, 81, 51], + [4, 50, 22, 4, 51, 23], + [3, 36, 12, 8, 37, 13], + // 12 + [2, 116, 92, 2, 117, 93], + [6, 58, 36, 2, 59, 37], + [4, 46, 20, 6, 47, 21], + [7, 42, 14, 4, 43, 15], + // 13 + [4, 133, 107], + [8, 59, 37, 1, 60, 38], + [8, 44, 20, 4, 45, 21], + [12, 33, 11, 4, 34, 12], + // 14 + [3, 145, 115, 1, 146, 116], + [4, 64, 40, 5, 65, 41], + [11, 36, 16, 5, 37, 17], + [11, 36, 12, 5, 37, 13], + // 15 + [5, 109, 87, 1, 110, 88], + [5, 65, 41, 5, 66, 42], + [5, 54, 24, 7, 55, 25], + [11, 36, 12, 7, 37, 13], + // 16 + [5, 122, 98, 1, 123, 99], + [7, 73, 45, 3, 74, 46], + [15, 43, 19, 2, 44, 20], + [3, 45, 15, 13, 46, 16], + // 17 + [1, 135, 107, 5, 136, 108], + [10, 74, 46, 1, 75, 47], + [1, 50, 22, 15, 51, 23], + [2, 42, 14, 17, 43, 15], + // 18 + [5, 150, 120, 1, 151, 121], + [9, 69, 43, 4, 70, 44], + [17, 50, 22, 1, 51, 23], + [2, 42, 14, 19, 43, 15], + // 19 + [3, 141, 113, 4, 142, 114], + [3, 70, 44, 11, 71, 45], + [17, 47, 21, 4, 48, 22], + [9, 39, 13, 16, 40, 14], + // 20 + [3, 135, 107, 5, 136, 108], + [3, 67, 41, 13, 68, 42], + [15, 54, 24, 5, 55, 25], + [15, 43, 15, 10, 44, 16], + // 21 + [4, 144, 116, 4, 145, 117], + [17, 68, 42], + [17, 50, 22, 6, 51, 23], + [19, 46, 16, 6, 47, 17], + // 22 + [2, 139, 111, 7, 140, 112], + [17, 74, 46], + [7, 54, 24, 16, 55, 25], + [34, 37, 13], + // 23 + [4, 151, 121, 5, 152, 122], + [4, 75, 47, 14, 76, 48], + [11, 54, 24, 14, 55, 25], + [16, 45, 15, 14, 46, 16], + // 24 + [6, 147, 117, 4, 148, 118], + [6, 73, 45, 14, 74, 46], + [11, 54, 24, 16, 55, 25], + [30, 46, 16, 2, 47, 17], + // 25 + [8, 132, 106, 4, 133, 107], + [8, 75, 47, 13, 76, 48], + [7, 54, 24, 22, 55, 25], + [22, 45, 15, 13, 46, 16], + // 26 + [10, 142, 114, 2, 143, 115], + [19, 74, 46, 4, 75, 47], + [28, 50, 22, 6, 51, 23], + [33, 46, 16, 4, 47, 17], + // 27 + [8, 152, 122, 4, 153, 123], + [22, 73, 45, 3, 74, 46], + [8, 53, 23, 26, 54, 24], + [12, 45, 15, 28, 46, 16], + // 28 + [3, 147, 117, 10, 148, 118], + [3, 73, 45, 23, 74, 46], + [4, 54, 24, 31, 55, 25], + [11, 45, 15, 31, 46, 16], + // 29 + [7, 146, 116, 7, 147, 117], + [21, 73, 45, 7, 74, 46], + [1, 53, 23, 37, 54, 24], + [19, 45, 15, 26, 46, 16], + // 30 + [5, 145, 115, 10, 146, 116], + [19, 75, 47, 10, 76, 48], + [15, 54, 24, 25, 55, 25], + [23, 45, 15, 25, 46, 16], + // 31 + [13, 145, 115, 3, 146, 116], + [2, 74, 46, 29, 75, 47], + [42, 54, 24, 1, 55, 25], + [23, 45, 15, 28, 46, 16], + // 32 + [17, 145, 115], + [10, 74, 46, 23, 75, 47], + [10, 54, 24, 35, 55, 25], + [19, 45, 15, 35, 46, 16], + // 33 + [17, 145, 115, 1, 146, 116], + [14, 74, 46, 21, 75, 47], + [29, 54, 24, 19, 55, 25], + [11, 45, 15, 46, 46, 16], + // 34 + [13, 145, 115, 6, 146, 116], + [14, 74, 46, 23, 75, 47], + [44, 54, 24, 7, 55, 25], + [59, 46, 16, 1, 47, 17], + // 35 + [12, 151, 121, 7, 152, 122], + [12, 75, 47, 26, 76, 48], + [39, 54, 24, 14, 55, 25], + [22, 45, 15, 41, 46, 16], + // 36 + [6, 151, 121, 14, 152, 122], + [6, 75, 47, 34, 76, 48], + [46, 54, 24, 10, 55, 25], + [2, 45, 15, 64, 46, 16], + // 37 + [17, 152, 122, 4, 153, 123], + [29, 74, 46, 14, 75, 47], + [49, 54, 24, 10, 55, 25], + [24, 45, 15, 46, 46, 16], + // 38 + [4, 152, 122, 18, 153, 123], + [13, 74, 46, 32, 75, 47], + [48, 54, 24, 14, 55, 25], + [42, 45, 15, 32, 46, 16], + // 39 + [20, 147, 117, 4, 148, 118], + [40, 75, 47, 7, 76, 48], + [43, 54, 24, 22, 55, 25], + [10, 45, 15, 67, 46, 16], + // 40 + [19, 148, 118, 6, 149, 119], + [18, 75, 47, 31, 76, 48], + [34, 54, 24, 34, 55, 25], + [20, 45, 15, 61, 46, 16] + ]; + var qrRSBlock = function(totalCount, dataCount) { + var _this2 = {}; + _this2.totalCount = totalCount; + _this2.dataCount = dataCount; + return _this2; + }; + var _this = {}; + var getRsBlockTable = function(typeNumber, errorCorrectionLevel) { + switch (errorCorrectionLevel) { + case QRErrorCorrectionLevel.L: + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0]; + case QRErrorCorrectionLevel.M: + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1]; + case QRErrorCorrectionLevel.Q: + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2]; + case QRErrorCorrectionLevel.H: + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3]; + default: + return void 0; + } + }; + _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) { + var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel); + if (typeof rsBlock == "undefined") { + throw "bad rs block @ typeNumber:" + typeNumber + "/errorCorrectionLevel:" + errorCorrectionLevel; + } + var length = rsBlock.length / 3; + var list = []; + for (var i4 = 0; i4 < length; i4 += 1) { + var count = rsBlock[i4 * 3 + 0]; + var totalCount = rsBlock[i4 * 3 + 1]; + var dataCount = rsBlock[i4 * 3 + 2]; + for (var j5 = 0; j5 < count; j5 += 1) { + list.push(qrRSBlock(totalCount, dataCount)); + } + } + return list; + }; + return _this; + }(); + var qrBitBuffer = function() { + var _buffer = []; + var _length = 0; + var _this = {}; + _this.getBuffer = function() { + return _buffer; + }; + _this.getAt = function(index2) { + var bufIndex = Math.floor(index2 / 8); + return (_buffer[bufIndex] >>> 7 - index2 % 8 & 1) == 1; + }; + _this.put = function(num, length) { + for (var i4 = 0; i4 < length; i4 += 1) { + _this.putBit((num >>> length - i4 - 1 & 1) == 1); + } + }; + _this.getLengthInBits = function() { + return _length; + }; + _this.putBit = function(bit) { + var bufIndex = Math.floor(_length / 8); + if (_buffer.length <= bufIndex) { + _buffer.push(0); + } + if (bit) { + _buffer[bufIndex] |= 128 >>> _length % 8; + } + _length += 1; + }; + return _this; + }; + var qrNumber = function(data) { + var _mode = QRMode.MODE_NUMBER; + var _data = data; + var _this = {}; + _this.getMode = function() { + return _mode; + }; + _this.getLength = function(buffer) { + return _data.length; + }; + _this.write = function(buffer) { + var data2 = _data; + var i4 = 0; + while (i4 + 2 < data2.length) { + buffer.put(strToNum(data2.substring(i4, i4 + 3)), 10); + i4 += 3; + } + if (i4 < data2.length) { + if (data2.length - i4 == 1) { + buffer.put(strToNum(data2.substring(i4, i4 + 1)), 4); + } else if (data2.length - i4 == 2) { + buffer.put(strToNum(data2.substring(i4, i4 + 2)), 7); + } + } + }; + var strToNum = function(s4) { + var num = 0; + for (var i4 = 0; i4 < s4.length; i4 += 1) { + num = num * 10 + chatToNum(s4.charAt(i4)); + } + return num; + }; + var chatToNum = function(c4) { + if ("0" <= c4 && c4 <= "9") { + return c4.charCodeAt(0) - "0".charCodeAt(0); + } + throw "illegal char :" + c4; + }; + return _this; + }; + var qrAlphaNum = function(data) { + var _mode = QRMode.MODE_ALPHA_NUM; + var _data = data; + var _this = {}; + _this.getMode = function() { + return _mode; + }; + _this.getLength = function(buffer) { + return _data.length; + }; + _this.write = function(buffer) { + var s4 = _data; + var i4 = 0; + while (i4 + 1 < s4.length) { + buffer.put( + getCode(s4.charAt(i4)) * 45 + getCode(s4.charAt(i4 + 1)), + 11 + ); + i4 += 2; + } + if (i4 < s4.length) { + buffer.put(getCode(s4.charAt(i4)), 6); + } + }; + var getCode = function(c4) { + if ("0" <= c4 && c4 <= "9") { + return c4.charCodeAt(0) - "0".charCodeAt(0); + } else if ("A" <= c4 && c4 <= "Z") { + return c4.charCodeAt(0) - "A".charCodeAt(0) + 10; + } else { + switch (c4) { + case " ": + return 36; + case "$": + return 37; + case "%": + return 38; + case "*": + return 39; + case "+": + return 40; + case "-": + return 41; + case ".": + return 42; + case "/": + return 43; + case ":": + return 44; + default: + throw "illegal char :" + c4; + } + } + }; + return _this; + }; + var qr8BitByte = function(data) { + var _mode = QRMode.MODE_8BIT_BYTE; + var _data = data; + var _bytes = qrcode3.stringToBytes(data); + var _this = {}; + _this.getMode = function() { + return _mode; + }; + _this.getLength = function(buffer) { + return _bytes.length; + }; + _this.write = function(buffer) { + for (var i4 = 0; i4 < _bytes.length; i4 += 1) { + buffer.put(_bytes[i4], 8); + } + }; + return _this; + }; + var qrKanji = function(data) { + var _mode = QRMode.MODE_KANJI; + var _data = data; + var stringToBytes = qrcode3.stringToBytesFuncs["SJIS"]; + if (!stringToBytes) { + throw "sjis not supported."; + } + !function(c4, code) { + var test = stringToBytes(c4); + if (test.length != 2 || (test[0] << 8 | test[1]) != code) { + throw "sjis not supported."; + } + }("\u53CB", 38726); + var _bytes = stringToBytes(data); + var _this = {}; + _this.getMode = function() { + return _mode; + }; + _this.getLength = function(buffer) { + return ~~(_bytes.length / 2); + }; + _this.write = function(buffer) { + var data2 = _bytes; + var i4 = 0; + while (i4 + 1 < data2.length) { + var c4 = (255 & data2[i4]) << 8 | 255 & data2[i4 + 1]; + if (33088 <= c4 && c4 <= 40956) { + c4 -= 33088; + } else if (57408 <= c4 && c4 <= 60351) { + c4 -= 49472; + } else { + throw "illegal char at " + (i4 + 1) + "/" + c4; + } + c4 = (c4 >>> 8 & 255) * 192 + (c4 & 255); + buffer.put(c4, 13); + i4 += 2; + } + if (i4 < data2.length) { + throw "illegal char at " + (i4 + 1); + } + }; + return _this; + }; + var byteArrayOutputStream = function() { + var _bytes = []; + var _this = {}; + _this.writeByte = function(b4) { + _bytes.push(b4 & 255); + }; + _this.writeShort = function(i4) { + _this.writeByte(i4); + _this.writeByte(i4 >>> 8); + }; + _this.writeBytes = function(b4, off, len) { + off = off || 0; + len = len || b4.length; + for (var i4 = 0; i4 < len; i4 += 1) { + _this.writeByte(b4[i4 + off]); + } + }; + _this.writeString = function(s4) { + for (var i4 = 0; i4 < s4.length; i4 += 1) { + _this.writeByte(s4.charCodeAt(i4)); + } + }; + _this.toByteArray = function() { + return _bytes; + }; + _this.toString = function() { + var s4 = ""; + s4 += "["; + for (var i4 = 0; i4 < _bytes.length; i4 += 1) { + if (i4 > 0) { + s4 += ","; + } + s4 += _bytes[i4]; + } + s4 += "]"; + return s4; + }; + return _this; + }; + var base64EncodeOutputStream = function() { + var _buffer = 0; + var _buflen = 0; + var _length = 0; + var _base64 = ""; + var _this = {}; + var writeEncoded = function(b4) { + _base64 += String.fromCharCode(encode(b4 & 63)); + }; + var encode = function(n3) { + if (n3 < 0) { + } else if (n3 < 26) { + return 65 + n3; + } else if (n3 < 52) { + return 97 + (n3 - 26); + } else if (n3 < 62) { + return 48 + (n3 - 52); + } else if (n3 == 62) { + return 43; + } else if (n3 == 63) { + return 47; + } + throw "n:" + n3; + }; + _this.writeByte = function(n3) { + _buffer = _buffer << 8 | n3 & 255; + _buflen += 8; + _length += 1; + while (_buflen >= 6) { + writeEncoded(_buffer >>> _buflen - 6); + _buflen -= 6; + } + }; + _this.flush = function() { + if (_buflen > 0) { + writeEncoded(_buffer << 6 - _buflen); + _buffer = 0; + _buflen = 0; + } + if (_length % 3 != 0) { + var padlen = 3 - _length % 3; + for (var i4 = 0; i4 < padlen; i4 += 1) { + _base64 += "="; + } + } + }; + _this.toString = function() { + return _base64; + }; + return _this; + }; + var base64DecodeInputStream = function(str) { + var _str = str; + var _pos = 0; + var _buffer = 0; + var _buflen = 0; + var _this = {}; + _this.read = function() { + while (_buflen < 8) { + if (_pos >= _str.length) { + if (_buflen == 0) { + return -1; + } + throw "unexpected end of file./" + _buflen; + } + var c4 = _str.charAt(_pos); + _pos += 1; + if (c4 == "=") { + _buflen = 0; + return -1; + } else if (c4.match(/^\s$/)) { + continue; + } + _buffer = _buffer << 6 | decode(c4.charCodeAt(0)); + _buflen += 6; + } + var n3 = _buffer >>> _buflen - 8 & 255; + _buflen -= 8; + return n3; + }; + var decode = function(c4) { + if (65 <= c4 && c4 <= 90) { + return c4 - 65; + } else if (97 <= c4 && c4 <= 122) { + return c4 - 97 + 26; + } else if (48 <= c4 && c4 <= 57) { + return c4 - 48 + 52; + } else if (c4 == 43) { + return 62; + } else if (c4 == 47) { + return 63; + } else { + throw "c:" + c4; + } + }; + return _this; + }; + var gifImage = function(width, height) { + var _width = width; + var _height = height; + var _data = new Array(width * height); + var _this = {}; + _this.setPixel = function(x5, y4, pixel) { + _data[y4 * _width + x5] = pixel; + }; + _this.write = function(out) { + out.writeString("GIF87a"); + out.writeShort(_width); + out.writeShort(_height); + out.writeByte(128); + out.writeByte(0); + out.writeByte(0); + out.writeByte(0); + out.writeByte(0); + out.writeByte(0); + out.writeByte(255); + out.writeByte(255); + out.writeByte(255); + out.writeString(","); + out.writeShort(0); + out.writeShort(0); + out.writeShort(_width); + out.writeShort(_height); + out.writeByte(0); + var lzwMinCodeSize = 2; + var raster = getLZWRaster(lzwMinCodeSize); + out.writeByte(lzwMinCodeSize); + var offset = 0; + while (raster.length - offset > 255) { + out.writeByte(255); + out.writeBytes(raster, offset, 255); + offset += 255; + } + out.writeByte(raster.length - offset); + out.writeBytes(raster, offset, raster.length - offset); + out.writeByte(0); + out.writeString(";"); + }; + var bitOutputStream = function(out) { + var _out = out; + var _bitLength = 0; + var _bitBuffer = 0; + var _this2 = {}; + _this2.write = function(data, length) { + if (data >>> length != 0) { + throw "length over"; + } + while (_bitLength + length >= 8) { + _out.writeByte(255 & (data << _bitLength | _bitBuffer)); + length -= 8 - _bitLength; + data >>>= 8 - _bitLength; + _bitBuffer = 0; + _bitLength = 0; + } + _bitBuffer = data << _bitLength | _bitBuffer; + _bitLength = _bitLength + length; + }; + _this2.flush = function() { + if (_bitLength > 0) { + _out.writeByte(_bitBuffer); + } + }; + return _this2; + }; + var getLZWRaster = function(lzwMinCodeSize) { + var clearCode = 1 << lzwMinCodeSize; + var endCode = (1 << lzwMinCodeSize) + 1; + var bitLength = lzwMinCodeSize + 1; + var table = lzwTable(); + for (var i4 = 0; i4 < clearCode; i4 += 1) { + table.add(String.fromCharCode(i4)); + } + table.add(String.fromCharCode(clearCode)); + table.add(String.fromCharCode(endCode)); + var byteOut = byteArrayOutputStream(); + var bitOut = bitOutputStream(byteOut); + bitOut.write(clearCode, bitLength); + var dataIndex = 0; + var s4 = String.fromCharCode(_data[dataIndex]); + dataIndex += 1; + while (dataIndex < _data.length) { + var c4 = String.fromCharCode(_data[dataIndex]); + dataIndex += 1; + if (table.contains(s4 + c4)) { + s4 = s4 + c4; + } else { + bitOut.write(table.indexOf(s4), bitLength); + if (table.size() < 4095) { + if (table.size() == 1 << bitLength) { + bitLength += 1; + } + table.add(s4 + c4); + } + s4 = c4; + } + } + bitOut.write(table.indexOf(s4), bitLength); + bitOut.write(endCode, bitLength); + bitOut.flush(); + return byteOut.toByteArray(); + }; + var lzwTable = function() { + var _map = {}; + var _size = 0; + var _this2 = {}; + _this2.add = function(key) { + if (_this2.contains(key)) { + throw "dup key:" + key; + } + _map[key] = _size; + _size += 1; + }; + _this2.size = function() { + return _size; + }; + _this2.indexOf = function(key) { + return _map[key]; + }; + _this2.contains = function(key) { + return typeof _map[key] != "undefined"; + }; + return _this2; + }; + return _this; + }; + var createDataURL = function(width, height, getPixel) { + var gif = gifImage(width, height); + for (var y4 = 0; y4 < height; y4 += 1) { + for (var x5 = 0; x5 < width; x5 += 1) { + gif.setPixel(x5, y4, getPixel(x5, y4)); + } + } + var b4 = byteArrayOutputStream(); + gif.write(b4); + var base64 = base64EncodeOutputStream(); + var bytes = b4.toByteArray(); + for (var i4 = 0; i4 < bytes.length; i4 += 1) { + base64.writeByte(bytes[i4]); + } + base64.flush(); + return "data:image/gif;base64," + base64; + }; + return qrcode3; + }(); + !function() { + qrcode2.stringToBytesFuncs["UTF-8"] = function(s4) { + function toUTF8Array(str) { + var utf8 = []; + for (var i4 = 0; i4 < str.length; i4++) { + var charcode = str.charCodeAt(i4); + if (charcode < 128) + utf8.push(charcode); + else if (charcode < 2048) { + utf8.push( + 192 | charcode >> 6, + 128 | charcode & 63 + ); + } else if (charcode < 55296 || charcode >= 57344) { + utf8.push( + 224 | charcode >> 12, + 128 | charcode >> 6 & 63, + 128 | charcode & 63 + ); + } else { + i4++; + charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i4) & 1023); + utf8.push( + 240 | charcode >> 18, + 128 | charcode >> 12 & 63, + 128 | charcode >> 6 & 63, + 128 | charcode & 63 + ); + } + } + return utf8; + } + return toUTF8Array(s4); + }; + }(); + (function(factory) { + if (typeof define === "function" && define.amd) { + define([], factory); + } else if (typeof exports === "object") { + module.exports = factory(); + } + })(function() { + return qrcode2; + }); + } + }); + + // src/pages/RequestPayment.tsx + var RequestPayment_exports = {}; + __export(RequestPayment_exports, { + RequestPayment: () => RequestPayment, + buildTimeRendering: () => buildTimeRendering, + mount: () => mount + }); + + // ../../node_modules/.pnpm/preact@10.11.3/node_modules/preact/dist/preact.module.js + var n; + var l; + var u; + var i; + var t; + var o; + var r; + var f = {}; + var e = []; + var c = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i; + function s(n3, l4) { + for (var u4 in l4) + n3[u4] = l4[u4]; + return n3; + } + function a(n3) { + var l4 = n3.parentNode; + l4 && l4.removeChild(n3); + } + function h(l4, u4, i4) { + var t3, o4, r3, f4 = {}; + for (r3 in u4) + "key" == r3 ? t3 = u4[r3] : "ref" == r3 ? o4 = u4[r3] : f4[r3] = u4[r3]; + if (arguments.length > 2 && (f4.children = arguments.length > 3 ? n.call(arguments, 2) : i4), "function" == typeof l4 && null != l4.defaultProps) + for (r3 in l4.defaultProps) + void 0 === f4[r3] && (f4[r3] = l4.defaultProps[r3]); + return v(l4, f4, t3, o4, null); + } + function v(n3, i4, t3, o4, r3) { + var f4 = { type: n3, props: i4, key: t3, ref: o4, __k: null, __: null, __b: 0, __e: null, __d: void 0, __c: null, __h: null, constructor: void 0, __v: null == r3 ? ++u : r3 }; + return null == r3 && null != l.vnode && l.vnode(f4), f4; + } + function y() { + return { current: null }; + } + function p(n3) { + return n3.children; + } + function d(n3, l4) { + this.props = n3, this.context = l4; + } + function _(n3, l4) { + if (null == l4) + return n3.__ ? _(n3.__, n3.__.__k.indexOf(n3) + 1) : null; + for (var u4; l4 < n3.__k.length; l4++) + if (null != (u4 = n3.__k[l4]) && null != u4.__e) + return u4.__e; + return "function" == typeof n3.type ? _(n3) : null; + } + function k(n3) { + var l4, u4; + if (null != (n3 = n3.__) && null != n3.__c) { + for (n3.__e = n3.__c.base = null, l4 = 0; l4 < n3.__k.length; l4++) + if (null != (u4 = n3.__k[l4]) && null != u4.__e) { + n3.__e = n3.__c.base = u4.__e; + break; + } + return k(n3); + } + } + function b(n3) { + (!n3.__d && (n3.__d = true) && t.push(n3) && !g.__r++ || o !== l.debounceRendering) && ((o = l.debounceRendering) || setTimeout)(g); + } + function g() { + for (var n3; g.__r = t.length; ) + n3 = t.sort(function(n4, l4) { + return n4.__v.__b - l4.__v.__b; + }), t = [], n3.some(function(n4) { + var l4, u4, i4, t3, o4, r3; + n4.__d && (o4 = (t3 = (l4 = n4).__v).__e, (r3 = l4.__P) && (u4 = [], (i4 = s({}, t3)).__v = t3.__v + 1, j(r3, t3, i4, l4.__n, void 0 !== r3.ownerSVGElement, null != t3.__h ? [o4] : null, u4, null == o4 ? _(t3) : o4, t3.__h), z(u4, t3), t3.__e != o4 && k(t3))); + }); + } + function w(n3, l4, u4, i4, t3, o4, r3, c4, s4, a4) { + var h4, y4, d4, k5, b4, g5, w5, x5 = i4 && i4.__k || e, C4 = x5.length; + for (u4.__k = [], h4 = 0; h4 < l4.length; h4++) + if (null != (k5 = u4.__k[h4] = null == (k5 = l4[h4]) || "boolean" == typeof k5 ? null : "string" == typeof k5 || "number" == typeof k5 || "bigint" == typeof k5 ? v(null, k5, null, null, k5) : Array.isArray(k5) ? v(p, { children: k5 }, null, null, null) : k5.__b > 0 ? v(k5.type, k5.props, k5.key, k5.ref ? k5.ref : null, k5.__v) : k5)) { + if (k5.__ = u4, k5.__b = u4.__b + 1, null === (d4 = x5[h4]) || d4 && k5.key == d4.key && k5.type === d4.type) + x5[h4] = void 0; + else + for (y4 = 0; y4 < C4; y4++) { + if ((d4 = x5[y4]) && k5.key == d4.key && k5.type === d4.type) { + x5[y4] = void 0; + break; + } + d4 = null; + } + j(n3, k5, d4 = d4 || f, t3, o4, r3, c4, s4, a4), b4 = k5.__e, (y4 = k5.ref) && d4.ref != y4 && (w5 || (w5 = []), d4.ref && w5.push(d4.ref, null, k5), w5.push(y4, k5.__c || b4, k5)), null != b4 ? (null == g5 && (g5 = b4), "function" == typeof k5.type && k5.__k === d4.__k ? k5.__d = s4 = m(k5, s4, n3) : s4 = A(n3, k5, d4, x5, b4, s4), "function" == typeof u4.type && (u4.__d = s4)) : s4 && d4.__e == s4 && s4.parentNode != n3 && (s4 = _(d4)); + } + for (u4.__e = g5, h4 = C4; h4--; ) + null != x5[h4] && N(x5[h4], x5[h4]); + if (w5) + for (h4 = 0; h4 < w5.length; h4++) + M(w5[h4], w5[++h4], w5[++h4]); + } + function m(n3, l4, u4) { + for (var i4, t3 = n3.__k, o4 = 0; t3 && o4 < t3.length; o4++) + (i4 = t3[o4]) && (i4.__ = n3, l4 = "function" == typeof i4.type ? m(i4, l4, u4) : A(u4, i4, i4, t3, i4.__e, l4)); + return l4; + } + function x(n3, l4) { + return l4 = l4 || [], null == n3 || "boolean" == typeof n3 || (Array.isArray(n3) ? n3.some(function(n4) { + x(n4, l4); + }) : l4.push(n3)), l4; + } + function A(n3, l4, u4, i4, t3, o4) { + var r3, f4, e3; + if (void 0 !== l4.__d) + r3 = l4.__d, l4.__d = void 0; + else if (null == u4 || t3 != o4 || null == t3.parentNode) + n: + if (null == o4 || o4.parentNode !== n3) + n3.appendChild(t3), r3 = null; + else { + for (f4 = o4, e3 = 0; (f4 = f4.nextSibling) && e3 < i4.length; e3 += 1) + if (f4 == t3) + break n; + n3.insertBefore(t3, o4), r3 = o4; + } + return void 0 !== r3 ? r3 : t3.nextSibling; + } + function C(n3, l4, u4, i4, t3) { + var o4; + for (o4 in u4) + "children" === o4 || "key" === o4 || o4 in l4 || H(n3, o4, null, u4[o4], i4); + for (o4 in l4) + t3 && "function" != typeof l4[o4] || "children" === o4 || "key" === o4 || "value" === o4 || "checked" === o4 || u4[o4] === l4[o4] || H(n3, o4, l4[o4], u4[o4], i4); + } + function $(n3, l4, u4) { + "-" === l4[0] ? n3.setProperty(l4, u4) : n3[l4] = null == u4 ? "" : "number" != typeof u4 || c.test(l4) ? u4 : u4 + "px"; + } + function H(n3, l4, u4, i4, t3) { + var o4; + n: + if ("style" === l4) + if ("string" == typeof u4) + n3.style.cssText = u4; + else { + if ("string" == typeof i4 && (n3.style.cssText = i4 = ""), i4) + for (l4 in i4) + u4 && l4 in u4 || $(n3.style, l4, ""); + if (u4) + for (l4 in u4) + i4 && u4[l4] === i4[l4] || $(n3.style, l4, u4[l4]); + } + else if ("o" === l4[0] && "n" === l4[1]) + o4 = l4 !== (l4 = l4.replace(/Capture$/, "")), l4 = l4.toLowerCase() in n3 ? l4.toLowerCase().slice(2) : l4.slice(2), n3.l || (n3.l = {}), n3.l[l4 + o4] = u4, u4 ? i4 || n3.addEventListener(l4, o4 ? T : I, o4) : n3.removeEventListener(l4, o4 ? T : I, o4); + else if ("dangerouslySetInnerHTML" !== l4) { + if (t3) + l4 = l4.replace(/xlink(H|:h)/, "h").replace(/sName$/, "s"); + else if ("href" !== l4 && "list" !== l4 && "form" !== l4 && "tabIndex" !== l4 && "download" !== l4 && l4 in n3) + try { + n3[l4] = null == u4 ? "" : u4; + break n; + } catch (n4) { + } + "function" == typeof u4 || (null == u4 || false === u4 && -1 == l4.indexOf("-") ? n3.removeAttribute(l4) : n3.setAttribute(l4, u4)); + } + } + function I(n3) { + this.l[n3.type + false](l.event ? l.event(n3) : n3); + } + function T(n3) { + this.l[n3.type + true](l.event ? l.event(n3) : n3); + } + function j(n3, u4, i4, t3, o4, r3, f4, e3, c4) { + var a4, h4, v4, y4, _4, k5, b4, g5, m4, x5, A5, C4, $3, H3, I3, T4 = u4.type; + if (void 0 !== u4.constructor) + return null; + null != i4.__h && (c4 = i4.__h, e3 = u4.__e = i4.__e, u4.__h = null, r3 = [e3]), (a4 = l.__b) && a4(u4); + try { + n: + if ("function" == typeof T4) { + if (g5 = u4.props, m4 = (a4 = T4.contextType) && t3[a4.__c], x5 = a4 ? m4 ? m4.props.value : a4.__ : t3, i4.__c ? b4 = (h4 = u4.__c = i4.__c).__ = h4.__E : ("prototype" in T4 && T4.prototype.render ? u4.__c = h4 = new T4(g5, x5) : (u4.__c = h4 = new d(g5, x5), h4.constructor = T4, h4.render = O), m4 && m4.sub(h4), h4.props = g5, h4.state || (h4.state = {}), h4.context = x5, h4.__n = t3, v4 = h4.__d = true, h4.__h = [], h4._sb = []), null == h4.__s && (h4.__s = h4.state), null != T4.getDerivedStateFromProps && (h4.__s == h4.state && (h4.__s = s({}, h4.__s)), s(h4.__s, T4.getDerivedStateFromProps(g5, h4.__s))), y4 = h4.props, _4 = h4.state, v4) + null == T4.getDerivedStateFromProps && null != h4.componentWillMount && h4.componentWillMount(), null != h4.componentDidMount && h4.__h.push(h4.componentDidMount); + else { + if (null == T4.getDerivedStateFromProps && g5 !== y4 && null != h4.componentWillReceiveProps && h4.componentWillReceiveProps(g5, x5), !h4.__e && null != h4.shouldComponentUpdate && false === h4.shouldComponentUpdate(g5, h4.__s, x5) || u4.__v === i4.__v) { + for (h4.props = g5, h4.state = h4.__s, u4.__v !== i4.__v && (h4.__d = false), h4.__v = u4, u4.__e = i4.__e, u4.__k = i4.__k, u4.__k.forEach(function(n4) { + n4 && (n4.__ = u4); + }), A5 = 0; A5 < h4._sb.length; A5++) + h4.__h.push(h4._sb[A5]); + h4._sb = [], h4.__h.length && f4.push(h4); + break n; + } + null != h4.componentWillUpdate && h4.componentWillUpdate(g5, h4.__s, x5), null != h4.componentDidUpdate && h4.__h.push(function() { + h4.componentDidUpdate(y4, _4, k5); + }); + } + if (h4.context = x5, h4.props = g5, h4.__v = u4, h4.__P = n3, C4 = l.__r, $3 = 0, "prototype" in T4 && T4.prototype.render) { + for (h4.state = h4.__s, h4.__d = false, C4 && C4(u4), a4 = h4.render(h4.props, h4.state, h4.context), H3 = 0; H3 < h4._sb.length; H3++) + h4.__h.push(h4._sb[H3]); + h4._sb = []; + } else + do { + h4.__d = false, C4 && C4(u4), a4 = h4.render(h4.props, h4.state, h4.context), h4.state = h4.__s; + } while (h4.__d && ++$3 < 25); + h4.state = h4.__s, null != h4.getChildContext && (t3 = s(s({}, t3), h4.getChildContext())), v4 || null == h4.getSnapshotBeforeUpdate || (k5 = h4.getSnapshotBeforeUpdate(y4, _4)), I3 = null != a4 && a4.type === p && null == a4.key ? a4.props.children : a4, w(n3, Array.isArray(I3) ? I3 : [I3], u4, i4, t3, o4, r3, f4, e3, c4), h4.base = u4.__e, u4.__h = null, h4.__h.length && f4.push(h4), b4 && (h4.__E = h4.__ = null), h4.__e = false; + } else + null == r3 && u4.__v === i4.__v ? (u4.__k = i4.__k, u4.__e = i4.__e) : u4.__e = L(i4.__e, u4, i4, t3, o4, r3, f4, c4); + (a4 = l.diffed) && a4(u4); + } catch (n4) { + u4.__v = null, (c4 || null != r3) && (u4.__e = e3, u4.__h = !!c4, r3[r3.indexOf(e3)] = null), l.__e(n4, u4, i4); + } + } + function z(n3, u4) { + l.__c && l.__c(u4, n3), n3.some(function(u5) { + try { + n3 = u5.__h, u5.__h = [], n3.some(function(n4) { + n4.call(u5); + }); + } catch (n4) { + l.__e(n4, u5.__v); + } + }); + } + function L(l4, u4, i4, t3, o4, r3, e3, c4) { + var s4, h4, v4, y4 = i4.props, p4 = u4.props, d4 = u4.type, k5 = 0; + if ("svg" === d4 && (o4 = true), null != r3) { + for (; k5 < r3.length; k5++) + if ((s4 = r3[k5]) && "setAttribute" in s4 == !!d4 && (d4 ? s4.localName === d4 : 3 === s4.nodeType)) { + l4 = s4, r3[k5] = null; + break; + } + } + if (null == l4) { + if (null === d4) + return document.createTextNode(p4); + l4 = o4 ? document.createElementNS("http://www.w3.org/2000/svg", d4) : document.createElement(d4, p4.is && p4), r3 = null, c4 = false; + } + if (null === d4) + y4 === p4 || c4 && l4.data === p4 || (l4.data = p4); + else { + if (r3 = r3 && n.call(l4.childNodes), h4 = (y4 = i4.props || f).dangerouslySetInnerHTML, v4 = p4.dangerouslySetInnerHTML, !c4) { + if (null != r3) + for (y4 = {}, k5 = 0; k5 < l4.attributes.length; k5++) + y4[l4.attributes[k5].name] = l4.attributes[k5].value; + (v4 || h4) && (v4 && (h4 && v4.__html == h4.__html || v4.__html === l4.innerHTML) || (l4.innerHTML = v4 && v4.__html || "")); + } + if (C(l4, p4, y4, o4, c4), v4) + u4.__k = []; + else if (k5 = u4.props.children, w(l4, Array.isArray(k5) ? k5 : [k5], u4, i4, t3, o4 && "foreignObject" !== d4, r3, e3, r3 ? r3[0] : i4.__k && _(i4, 0), c4), null != r3) + for (k5 = r3.length; k5--; ) + null != r3[k5] && a(r3[k5]); + c4 || ("value" in p4 && void 0 !== (k5 = p4.value) && (k5 !== l4.value || "progress" === d4 && !k5 || "option" === d4 && k5 !== y4.value) && H(l4, "value", k5, y4.value, false), "checked" in p4 && void 0 !== (k5 = p4.checked) && k5 !== l4.checked && H(l4, "checked", k5, y4.checked, false)); + } + return l4; + } + function M(n3, u4, i4) { + try { + "function" == typeof n3 ? n3(u4) : n3.current = u4; + } catch (n4) { + l.__e(n4, i4); + } + } + function N(n3, u4, i4) { + var t3, o4; + if (l.unmount && l.unmount(n3), (t3 = n3.ref) && (t3.current && t3.current !== n3.__e || M(t3, null, u4)), null != (t3 = n3.__c)) { + if (t3.componentWillUnmount) + try { + t3.componentWillUnmount(); + } catch (n4) { + l.__e(n4, u4); + } + t3.base = t3.__P = null, n3.__c = void 0; + } + if (t3 = n3.__k) + for (o4 = 0; o4 < t3.length; o4++) + t3[o4] && N(t3[o4], u4, i4 || "function" != typeof n3.type); + i4 || null == n3.__e || a(n3.__e), n3.__ = n3.__e = n3.__d = void 0; + } + function O(n3, l4, u4) { + return this.constructor(n3, u4); + } + function P(u4, i4, t3) { + var o4, r3, e3; + l.__ && l.__(u4, i4), r3 = (o4 = "function" == typeof t3) ? null : t3 && t3.__k || i4.__k, e3 = [], j(i4, u4 = (!o4 && t3 || i4).__k = h(p, null, [u4]), r3 || f, f, void 0 !== i4.ownerSVGElement, !o4 && t3 ? [t3] : r3 ? null : i4.firstChild ? n.call(i4.childNodes) : null, e3, !o4 && t3 ? t3 : r3 ? r3.__e : i4.firstChild, o4), z(e3, u4); + } + function S(n3, l4) { + P(n3, l4, S); + } + function q(l4, u4, i4) { + var t3, o4, r3, f4 = s({}, l4.props); + for (r3 in u4) + "key" == r3 ? t3 = u4[r3] : "ref" == r3 ? o4 = u4[r3] : f4[r3] = u4[r3]; + return arguments.length > 2 && (f4.children = arguments.length > 3 ? n.call(arguments, 2) : i4), v(l4.type, f4, t3 || l4.key, o4 || l4.ref, null); + } + function B(n3, l4) { + var u4 = { __c: l4 = "__cC" + r++, __: n3, Consumer: function(n4, l5) { + return n4.children(l5); + }, Provider: function(n4) { + var u5, i4; + return this.getChildContext || (u5 = [], (i4 = {})[l4] = this, this.getChildContext = function() { + return i4; + }, this.shouldComponentUpdate = function(n5) { + this.props.value !== n5.value && u5.some(b); + }, this.sub = function(n5) { + u5.push(n5); + var l5 = n5.componentWillUnmount; + n5.componentWillUnmount = function() { + u5.splice(u5.indexOf(n5), 1), l5 && l5.call(n5); + }; + }), n4.children; + } }; + return u4.Provider.__ = u4.Consumer.contextType = u4; + } + n = e.slice, l = { __e: function(n3, l4, u4, i4) { + for (var t3, o4, r3; l4 = l4.__; ) + if ((t3 = l4.__c) && !t3.__) + try { + if ((o4 = t3.constructor) && null != o4.getDerivedStateFromError && (t3.setState(o4.getDerivedStateFromError(n3)), r3 = t3.__d), null != t3.componentDidCatch && (t3.componentDidCatch(n3, i4 || {}), r3 = t3.__d), r3) + return t3.__E = t3; + } catch (l5) { + n3 = l5; + } + throw n3; + } }, u = 0, i = function(n3) { + return null != n3 && void 0 === n3.constructor; + }, d.prototype.setState = function(n3, l4) { + var u4; + u4 = null != this.__s && this.__s !== this.state ? this.__s : this.__s = s({}, this.state), "function" == typeof n3 && (n3 = n3(s({}, u4), this.props)), n3 && s(u4, n3), null != n3 && this.__v && (l4 && this._sb.push(l4), b(this)); + }, d.prototype.forceUpdate = function(n3) { + this.__v && (this.__e = true, n3 && this.__h.push(n3), b(this)); + }, d.prototype.render = p, t = [], g.__r = 0, r = 0; + + // ../../node_modules/.pnpm/preact-render-to-string@5.2.6_preact@10.11.3/node_modules/preact-render-to-string/dist/index.mjs + var n2 = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i; + var o2 = /^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/; + var i2 = /[\s\n\\/='"\0<>]/; + var l2 = /^xlink:?./; + var a2 = /["&<]/; + function s2(e3) { + if (false === a2.test(e3 += "")) + return e3; + for (var t3 = 0, r3 = 0, n3 = "", o4 = ""; r3 < e3.length; r3++) { + switch (e3.charCodeAt(r3)) { + case 34: + o4 = """; + break; + case 38: + o4 = "&"; + break; + case 60: + o4 = "<"; + break; + default: + continue; + } + r3 !== t3 && (n3 += e3.slice(t3, r3)), n3 += o4, t3 = r3 + 1; + } + return r3 !== t3 && (n3 += e3.slice(t3, r3)), n3; + } + var f2 = function(e3, t3) { + return String(e3).replace(/(\n+)/g, "$1" + (t3 || " ")); + }; + var u2 = function(e3, t3, r3) { + return String(e3).length > (t3 || 40) || !r3 && -1 !== String(e3).indexOf("\n") || -1 !== String(e3).indexOf("<"); + }; + var c2 = {}; + var _2 = /([A-Z])/g; + function p2(e3) { + var t3 = ""; + for (var r3 in e3) { + var o4 = e3[r3]; + null != o4 && "" !== o4 && (t3 && (t3 += " "), t3 += "-" == r3[0] ? r3 : c2[r3] || (c2[r3] = r3.replace(_2, "-$1").toLowerCase()), t3 = "number" == typeof o4 && false === n2.test(r3) ? t3 + ": " + o4 + "px;" : t3 + ": " + o4 + ";"); + } + return t3 || void 0; + } + function d2(e3, t3) { + return Array.isArray(t3) ? t3.reduce(d2, e3) : null != t3 && false !== t3 && e3.push(t3), e3; + } + function v2() { + this.__d = true; + } + function h2(e3, t3) { + return { __v: e3, context: t3, props: e3.props, setState: v2, forceUpdate: v2, __d: true, __h: [] }; + } + function g2(e3, t3) { + var r3 = e3.contextType, n3 = r3 && t3[r3.__c]; + return null != r3 ? n3 ? n3.props.value : r3.__ : t3; + } + var y2 = []; + function m2(r3, n3, a4, c4, _4, v4) { + if (null == r3 || "boolean" == typeof r3) + return ""; + if ("object" != typeof r3) + return "function" == typeof r3 ? "" : s2(r3); + var b4 = a4.pretty, x5 = b4 && "string" == typeof b4 ? b4 : " "; + if (Array.isArray(r3)) { + for (var k5 = "", S3 = 0; S3 < r3.length; S3++) + b4 && S3 > 0 && (k5 += "\n"), k5 += m2(r3[S3], n3, a4, c4, _4, v4); + return k5; + } + if (void 0 !== r3.constructor) + return ""; + var w5, C4 = r3.type, O4 = r3.props, j5 = false; + if ("function" == typeof C4) { + if (j5 = true, !a4.shallow || !c4 && false !== a4.renderRootComponent) { + if (C4 === p) { + var A5 = []; + return d2(A5, r3.props.children), m2(A5, n3, a4, false !== a4.shallowHighOrder, _4, v4); + } + var F4, H3 = r3.__c = h2(r3, n3); + l.__b && l.__b(r3); + var M3 = l.__r; + if (C4.prototype && "function" == typeof C4.prototype.render) { + var L3 = g2(C4, n3); + (H3 = r3.__c = new C4(O4, L3)).__v = r3, H3._dirty = H3.__d = true, H3.props = O4, null == H3.state && (H3.state = {}), null == H3._nextState && null == H3.__s && (H3._nextState = H3.__s = H3.state), H3.context = L3, C4.getDerivedStateFromProps ? H3.state = Object.assign({}, H3.state, C4.getDerivedStateFromProps(H3.props, H3.state)) : H3.componentWillMount && (H3.componentWillMount(), H3.state = H3._nextState !== H3.state ? H3._nextState : H3.__s !== H3.state ? H3.__s : H3.state), M3 && M3(r3), F4 = H3.render(H3.props, H3.state, H3.context); + } else + for (var T4 = g2(C4, n3), E2 = 0; H3.__d && E2++ < 25; ) + H3.__d = false, M3 && M3(r3), F4 = C4.call(r3.__c, O4, T4); + return H3.getChildContext && (n3 = Object.assign({}, n3, H3.getChildContext())), l.diffed && l.diffed(r3), m2(F4, n3, a4, false !== a4.shallowHighOrder, _4, v4); + } + C4 = (w5 = C4).displayName || w5 !== Function && w5.name || function(e3) { + var t3 = (Function.prototype.toString.call(e3).match(/^\s*function\s+([^( ]+)/) || "")[1]; + if (!t3) { + for (var r4 = -1, n4 = y2.length; n4--; ) + if (y2[n4] === e3) { + r4 = n4; + break; + } + r4 < 0 && (r4 = y2.push(e3) - 1), t3 = "UnnamedComponent" + r4; + } + return t3; + }(w5); + } + var $3, D2, N3 = "<" + C4; + if (O4) { + var P3 = Object.keys(O4); + a4 && true === a4.sortAttributes && P3.sort(); + for (var W2 = 0; W2 < P3.length; W2++) { + var I3 = P3[W2], R2 = O4[I3]; + if ("children" !== I3) { + if (!i2.test(I3) && (a4 && a4.allAttributes || "key" !== I3 && "ref" !== I3 && "__self" !== I3 && "__source" !== I3)) { + if ("defaultValue" === I3) + I3 = "value"; + else if ("defaultChecked" === I3) + I3 = "checked"; + else if ("defaultSelected" === I3) + I3 = "selected"; + else if ("className" === I3) { + if (void 0 !== O4.class) + continue; + I3 = "class"; + } else + _4 && l2.test(I3) && (I3 = I3.toLowerCase().replace(/^xlink:?/, "xlink:")); + if ("htmlFor" === I3) { + if (O4.for) + continue; + I3 = "for"; + } + "style" === I3 && R2 && "object" == typeof R2 && (R2 = p2(R2)), "a" === I3[0] && "r" === I3[1] && "boolean" == typeof R2 && (R2 = String(R2)); + var U2 = a4.attributeHook && a4.attributeHook(I3, R2, n3, a4, j5); + if (U2 || "" === U2) + N3 += U2; + else if ("dangerouslySetInnerHTML" === I3) + D2 = R2 && R2.__html; + else if ("textarea" === C4 && "value" === I3) + $3 = R2; + else if ((R2 || 0 === R2 || "" === R2) && "function" != typeof R2) { + if (!(true !== R2 && "" !== R2 || (R2 = I3, a4 && a4.xml))) { + N3 = N3 + " " + I3; + continue; + } + if ("value" === I3) { + if ("select" === C4) { + v4 = R2; + continue; + } + "option" === C4 && v4 == R2 && void 0 === O4.selected && (N3 += " selected"); + } + N3 = N3 + " " + I3 + '="' + s2(R2) + '"'; + } + } + } else + $3 = R2; + } + } + if (b4) { + var V3 = N3.replace(/\n\s*/, " "); + V3 === N3 || ~V3.indexOf("\n") ? b4 && ~N3.indexOf("\n") && (N3 += "\n") : N3 = V3; + } + if (N3 += ">", i2.test(C4)) + throw new Error(C4 + " is not a valid HTML tag name in " + N3); + var q4, z4 = o2.test(C4) || a4.voidElements && a4.voidElements.test(C4), Z2 = []; + if (D2) + b4 && u2(D2) && (D2 = "\n" + x5 + f2(D2, x5)), N3 += D2; + else if (null != $3 && d2(q4 = [], $3).length) { + for (var B4 = b4 && ~N3.indexOf("\n"), G2 = false, J2 = 0; J2 < q4.length; J2++) { + var K2 = q4[J2]; + if (null != K2 && false !== K2) { + var Q2 = m2(K2, n3, a4, true, "svg" === C4 || "foreignObject" !== C4 && _4, v4); + if (b4 && !B4 && u2(Q2) && (B4 = true), Q2) + if (b4) { + var X2 = Q2.length > 0 && "<" != Q2[0]; + G2 && X2 ? Z2[Z2.length - 1] += Q2 : Z2.push(Q2), G2 = X2; + } else + Z2.push(Q2); + } + } + if (b4 && B4) + for (var Y2 = Z2.length; Y2--; ) + Z2[Y2] = "\n" + x5 + f2(Z2[Y2], x5); + } + if (Z2.length || D2) + N3 += Z2.join(""); + else if (a4 && a4.xml) + return N3.substring(0, N3.length - 1) + " />"; + return !z4 || q4 || D2 ? (b4 && ~N3.indexOf("\n") && (N3 += "\n"), N3 = N3 + "</" + C4 + ">") : N3 = N3.replace(/>$/, " />"), N3; + } + var b2 = { shallow: true }; + S2.render = S2; + var x2 = function(e3, t3) { + return S2(e3, t3, b2); + }; + var k2 = []; + function S2(n3, o4, i4) { + o4 = o4 || {}; + var l4 = l.__s; + l.__s = true; + var a4, s4 = h(p, null); + return s4.__k = [n3], a4 = i4 && (i4.pretty || i4.voidElements || i4.sortAttributes || i4.shallow || i4.allAttributes || i4.xml || i4.attributeHook) ? m2(n3, o4, i4) : F(n3, o4, false, void 0, s4), l.__c && l.__c(n3, k2), l.__s = l4, k2.length = 0, a4; + } + function w2(e3) { + return null == e3 || "boolean" == typeof e3 ? null : "string" == typeof e3 || "number" == typeof e3 || "bigint" == typeof e3 ? h(null, null, e3) : e3; + } + function C2(e3, t3) { + return "className" === e3 ? "class" : "htmlFor" === e3 ? "for" : "defaultValue" === e3 ? "value" : "defaultChecked" === e3 ? "checked" : "defaultSelected" === e3 ? "selected" : t3 && l2.test(e3) ? e3.toLowerCase().replace(/^xlink:?/, "xlink:") : e3; + } + function O2(e3, t3) { + return "style" === e3 && null != t3 && "object" == typeof t3 ? p2(t3) : "a" === e3[0] && "r" === e3[1] && "boolean" == typeof t3 ? String(t3) : t3; + } + var j2 = Array.isArray; + var A2 = Object.assign; + function F(r3, n3, l4, a4, f4) { + if (null == r3 || true === r3 || false === r3 || "" === r3) + return ""; + if ("object" != typeof r3) + return "function" == typeof r3 ? "" : s2(r3); + if (j2(r3)) { + var u4 = ""; + f4.__k = r3; + for (var c4 = 0; c4 < r3.length; c4++) + u4 += F(r3[c4], n3, l4, a4, f4), r3[c4] = w2(r3[c4]); + return u4; + } + if (void 0 !== r3.constructor) + return ""; + r3.__ = f4, l.__b && l.__b(r3); + var _4 = r3.type, p4 = r3.props; + if ("function" == typeof _4) { + var d4; + if (_4 === p) + d4 = p4.children; + else { + d4 = _4.prototype && "function" == typeof _4.prototype.render ? function(e3, r4) { + var n4 = e3.type, o4 = g2(n4, r4), i4 = new n4(e3.props, o4); + e3.__c = i4, i4.__v = e3, i4.__d = true, i4.props = e3.props, null == i4.state && (i4.state = {}), null == i4.__s && (i4.__s = i4.state), i4.context = o4, n4.getDerivedStateFromProps ? i4.state = A2({}, i4.state, n4.getDerivedStateFromProps(i4.props, i4.state)) : i4.componentWillMount && (i4.componentWillMount(), i4.state = i4.__s !== i4.state ? i4.__s : i4.state); + var l5 = l.__r; + return l5 && l5(e3), i4.render(i4.props, i4.state, i4.context); + }(r3, n3) : function(e3, r4) { + var n4, o4 = h2(e3, r4), i4 = g2(e3.type, r4); + e3.__c = o4; + for (var l5 = l.__r, a5 = 0; o4.__d && a5++ < 25; ) + o4.__d = false, l5 && l5(e3), n4 = e3.type.call(o4, e3.props, i4); + return n4; + }(r3, n3); + var v4 = r3.__c; + v4.getChildContext && (n3 = A2({}, n3, v4.getChildContext())); + } + var y4 = F(d4 = null != d4 && d4.type === p && null == d4.key ? d4.props.children : d4, n3, l4, a4, r3); + return l.diffed && l.diffed(r3), r3.__ = void 0, l.unmount && l.unmount(r3), y4; + } + var m4, b4, x5 = "<"; + if (x5 += _4, p4) + for (var k5 in m4 = p4.children, p4) { + var S3 = p4[k5]; + if (!("key" === k5 || "ref" === k5 || "__self" === k5 || "__source" === k5 || "children" === k5 || "className" === k5 && "class" in p4 || "htmlFor" === k5 && "for" in p4 || i2.test(k5))) { + if (S3 = O2(k5 = C2(k5, l4), S3), "dangerouslySetInnerHTML" === k5) + b4 = S3 && S3.__html; + else if ("textarea" === _4 && "value" === k5) + m4 = S3; + else if ((S3 || 0 === S3 || "" === S3) && "function" != typeof S3) { + if (true === S3 || "" === S3) { + S3 = k5, x5 = x5 + " " + k5; + continue; + } + if ("value" === k5) { + if ("select" === _4) { + a4 = S3; + continue; + } + "option" !== _4 || a4 != S3 || "selected" in p4 || (x5 += " selected"); + } + x5 = x5 + " " + k5 + '="' + s2(S3) + '"'; + } + } + } + var H3 = x5; + if (x5 += ">", i2.test(_4)) + throw new Error(_4 + " is not a valid HTML tag name in " + x5); + var M3 = "", L3 = false; + if (b4) + M3 += b4, L3 = true; + else if ("string" == typeof m4) + M3 += s2(m4), L3 = true; + else if (j2(m4)) { + r3.__k = m4; + for (var T4 = 0; T4 < m4.length; T4++) { + var E2 = m4[T4]; + if (m4[T4] = w2(E2), null != E2 && false !== E2) { + var $3 = F(E2, n3, "svg" === _4 || "foreignObject" !== _4 && l4, a4, r3); + $3 && (M3 += $3, L3 = true); + } + } + } else if (null != m4 && false !== m4 && true !== m4) { + r3.__k = [w2(m4)]; + var D2 = F(m4, n3, "svg" === _4 || "foreignObject" !== _4 && l4, a4, r3); + D2 && (M3 += D2, L3 = true); + } + if (l.diffed && l.diffed(r3), r3.__ = void 0, l.unmount && l.unmount(r3), L3) + x5 += M3; + else if (o2.test(_4)) + return H3 + " />"; + return x5 + "</" + _4 + ">"; + } + S2.shallowRender = x2; + + // ../../node_modules/.pnpm/preact@10.11.3/node_modules/preact/hooks/dist/hooks.module.js + var t2; + var r2; + var u3; + var i3; + var o3 = 0; + var f3 = []; + var c3 = []; + var e2 = l.__b; + var a3 = l.__r; + var v3 = l.diffed; + var l3 = l.__c; + var m3 = l.unmount; + function d3(t3, u4) { + l.__h && l.__h(r2, t3, o3 || u4), o3 = 0; + var i4 = r2.__H || (r2.__H = { __: [], __h: [] }); + return t3 >= i4.__.length && i4.__.push({ __V: c3 }), i4.__[t3]; + } + function p3(n3) { + return o3 = 1, y3(B2, n3); + } + function y3(n3, u4, i4) { + var o4 = d3(t2++, 2); + if (o4.t = n3, !o4.__c && (o4.__ = [i4 ? i4(u4) : B2(void 0, u4), function(n4) { + var t3 = o4.__N ? o4.__N[0] : o4.__[0], r3 = o4.t(t3, n4); + t3 !== r3 && (o4.__N = [r3, o4.__[1]], o4.__c.setState({})); + }], o4.__c = r2, !r2.u)) { + r2.u = true; + var f4 = r2.shouldComponentUpdate; + r2.shouldComponentUpdate = function(n4, t3, r3) { + if (!o4.__c.__H) + return true; + var u5 = o4.__c.__H.__.filter(function(n5) { + return n5.__c; + }); + if (u5.every(function(n5) { + return !n5.__N; + })) + return !f4 || f4.call(this, n4, t3, r3); + var i5 = false; + return u5.forEach(function(n5) { + if (n5.__N) { + var t4 = n5.__[0]; + n5.__ = n5.__N, n5.__N = void 0, t4 !== n5.__[0] && (i5 = true); + } + }), !(!i5 && o4.__c.props === n4) && (!f4 || f4.call(this, n4, t3, r3)); + }; + } + return o4.__N || o4.__; + } + function h3(u4, i4) { + var o4 = d3(t2++, 3); + !l.__s && z2(o4.__H, i4) && (o4.__ = u4, o4.i = i4, r2.__H.__h.push(o4)); + } + function s3(u4, i4) { + var o4 = d3(t2++, 4); + !l.__s && z2(o4.__H, i4) && (o4.__ = u4, o4.i = i4, r2.__h.push(o4)); + } + function _3(n3) { + return o3 = 5, F2(function() { + return { current: n3 }; + }, []); + } + function A3(n3, t3, r3) { + o3 = 6, s3(function() { + return "function" == typeof n3 ? (n3(t3()), function() { + return n3(null); + }) : n3 ? (n3.current = t3(), function() { + return n3.current = null; + }) : void 0; + }, null == r3 ? r3 : r3.concat(n3)); + } + function F2(n3, r3) { + var u4 = d3(t2++, 7); + return z2(u4.__H, r3) ? (u4.__V = n3(), u4.i = r3, u4.__h = n3, u4.__V) : u4.__; + } + function T2(n3, t3) { + return o3 = 8, F2(function() { + return n3; + }, t3); + } + function q2(n3) { + var u4 = r2.context[n3.__c], i4 = d3(t2++, 9); + return i4.c = n3, u4 ? (null == i4.__ && (i4.__ = true, u4.sub(r2)), u4.props.value) : n3.__; + } + function x3(t3, r3) { + l.useDebugValue && l.useDebugValue(r3 ? r3(t3) : t3); + } + function V() { + var n3 = d3(t2++, 11); + if (!n3.__) { + for (var u4 = r2.__v; null !== u4 && !u4.__m && null !== u4.__; ) + u4 = u4.__; + var i4 = u4.__m || (u4.__m = [0, 0]); + n3.__ = "P" + i4[0] + "-" + i4[1]++; + } + return n3.__; + } + function b3() { + for (var t3; t3 = f3.shift(); ) + if (t3.__P && t3.__H) + try { + t3.__H.__h.forEach(k3), t3.__H.__h.forEach(w3), t3.__H.__h = []; + } catch (r3) { + t3.__H.__h = [], l.__e(r3, t3.__v); + } + } + l.__b = function(n3) { + r2 = null, e2 && e2(n3); + }, l.__r = function(n3) { + a3 && a3(n3), t2 = 0; + var i4 = (r2 = n3.__c).__H; + i4 && (u3 === r2 ? (i4.__h = [], r2.__h = [], i4.__.forEach(function(n4) { + n4.__N && (n4.__ = n4.__N), n4.__V = c3, n4.__N = n4.i = void 0; + })) : (i4.__h.forEach(k3), i4.__h.forEach(w3), i4.__h = [])), u3 = r2; + }, l.diffed = function(t3) { + v3 && v3(t3); + var o4 = t3.__c; + o4 && o4.__H && (o4.__H.__h.length && (1 !== f3.push(o4) && i3 === l.requestAnimationFrame || ((i3 = l.requestAnimationFrame) || j3)(b3)), o4.__H.__.forEach(function(n3) { + n3.i && (n3.__H = n3.i), n3.__V !== c3 && (n3.__ = n3.__V), n3.i = void 0, n3.__V = c3; + })), u3 = r2 = null; + }, l.__c = function(t3, r3) { + r3.some(function(t4) { + try { + t4.__h.forEach(k3), t4.__h = t4.__h.filter(function(n3) { + return !n3.__ || w3(n3); + }); + } catch (u4) { + r3.some(function(n3) { + n3.__h && (n3.__h = []); + }), r3 = [], l.__e(u4, t4.__v); + } + }), l3 && l3(t3, r3); + }, l.unmount = function(t3) { + m3 && m3(t3); + var r3, u4 = t3.__c; + u4 && u4.__H && (u4.__H.__.forEach(function(n3) { + try { + k3(n3); + } catch (n4) { + r3 = n4; + } + }), u4.__H = void 0, r3 && l.__e(r3, u4.__v)); + }; + var g3 = "function" == typeof requestAnimationFrame; + function j3(n3) { + var t3, r3 = function() { + clearTimeout(u4), g3 && cancelAnimationFrame(t3), setTimeout(n3); + }, u4 = setTimeout(r3, 100); + g3 && (t3 = requestAnimationFrame(r3)); + } + function k3(n3) { + var t3 = r2, u4 = n3.__c; + "function" == typeof u4 && (n3.__c = void 0, u4()), r2 = t3; + } + function w3(n3) { + var t3 = r2; + n3.__c = n3.__(), r2 = t3; + } + function z2(n3, t3) { + return !n3 || n3.length !== t3.length || t3.some(function(t4, r3) { + return t4 !== n3[r3]; + }); + } + function B2(n3, t3) { + return "function" == typeof t3 ? t3(n3) : t3; + } + + // ../../node_modules/.pnpm/@emotion+memoize@0.7.4/node_modules/@emotion/memoize/dist/memoize.browser.esm.js + function memoize(fn2) { + var cache = {}; + return function(arg) { + if (cache[arg] === void 0) + cache[arg] = fn2(arg); + return cache[arg]; + }; + } + var memoize_browser_esm_default = memoize; + + // ../../node_modules/.pnpm/@emotion+is-prop-valid@0.8.8/node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js + var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; + var index = memoize_browser_esm_default( + function(prop) { + return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91; + } + /* Z+1 */ + ); + var is_prop_valid_browser_esm_default = index; + + // node_modules/preact/compat/dist/compat.module.js + function g4(n3, t3) { + for (var e3 in t3) + n3[e3] = t3[e3]; + return n3; + } + function C3(n3, t3) { + for (var e3 in n3) + if ("__source" !== e3 && !(e3 in t3)) + return true; + for (var r3 in t3) + if ("__source" !== r3 && n3[r3] !== t3[r3]) + return true; + return false; + } + function E(n3, t3) { + return n3 === t3 && (0 !== n3 || 1 / n3 == 1 / t3) || n3 != n3 && t3 != t3; + } + function w4(n3) { + this.props = n3; + } + function R(n3, e3) { + function r3(n4) { + var t3 = this.props.ref, r4 = t3 == n4.ref; + return !r4 && t3 && (t3.call ? t3(null) : t3.current = null), e3 ? !e3(this.props, n4) || !r4 : C3(this.props, n4); + } + function u4(e4) { + return this.shouldComponentUpdate = r3, h(n3, e4); + } + return u4.displayName = "Memo(" + (n3.displayName || n3.name) + ")", u4.prototype.isReactComponent = true, u4.__f = true, u4; + } + (w4.prototype = new d()).isPureReactComponent = true, w4.prototype.shouldComponentUpdate = function(n3, t3) { + return C3(this.props, n3) || C3(this.state, t3); + }; + var x4 = l.__b; + l.__b = function(n3) { + n3.type && n3.type.__f && n3.ref && (n3.props.ref = n3.ref, n3.ref = null), x4 && x4(n3); + }; + var N2 = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.forward_ref") || 3911; + function k4(n3) { + function t3(t4) { + var e3 = g4({}, t4); + return delete e3.ref, n3(e3, t4.ref || null); + } + return t3.$$typeof = N2, t3.render = t3, t3.prototype.isReactComponent = t3.__f = true, t3.displayName = "ForwardRef(" + (n3.displayName || n3.name) + ")", t3; + } + var A4 = function(n3, t3) { + return null == n3 ? null : x(x(n3).map(t3)); + }; + var O3 = { map: A4, forEach: A4, count: function(n3) { + return n3 ? x(n3).length : 0; + }, only: function(n3) { + var t3 = x(n3); + if (1 !== t3.length) + throw "Children.only"; + return t3[0]; + }, toArray: x }; + var T3 = l.__e; + l.__e = function(n3, t3, e3, r3) { + if (n3.then) { + for (var u4, o4 = t3; o4 = o4.__; ) + if ((u4 = o4.__c) && u4.__c) + return null == t3.__e && (t3.__e = e3.__e, t3.__k = e3.__k), u4.__c(n3, t3); + } + T3(n3, t3, e3, r3); + }; + var I2 = l.unmount; + function L2(n3, t3, e3) { + return n3 && (n3.__c && n3.__c.__H && (n3.__c.__H.__.forEach(function(n4) { + "function" == typeof n4.__c && n4.__c(); + }), n3.__c.__H = null), null != (n3 = g4({}, n3)).__c && (n3.__c.__P === e3 && (n3.__c.__P = t3), n3.__c = null), n3.__k = n3.__k && n3.__k.map(function(n4) { + return L2(n4, t3, e3); + })), n3; + } + function U(n3, t3, e3) { + return n3 && (n3.__v = null, n3.__k = n3.__k && n3.__k.map(function(n4) { + return U(n4, t3, e3); + }), n3.__c && n3.__c.__P === t3 && (n3.__e && e3.insertBefore(n3.__e, n3.__d), n3.__c.__e = true, n3.__c.__P = e3)), n3; + } + function D() { + this.__u = 0, this.t = null, this.__b = null; + } + function F3(n3) { + var t3 = n3.__.__c; + return t3 && t3.__a && t3.__a(n3); + } + function M2(n3) { + var e3, r3, u4; + function o4(o5) { + if (e3 || (e3 = n3()).then(function(n4) { + r3 = n4.default || n4; + }, function(n4) { + u4 = n4; + }), u4) + throw u4; + if (!r3) + throw e3; + return h(r3, o5); + } + return o4.displayName = "Lazy", o4.__f = true, o4; + } + function V2() { + this.u = null, this.o = null; + } + l.unmount = function(n3) { + var t3 = n3.__c; + t3 && t3.__R && t3.__R(), t3 && true === n3.__h && (n3.type = null), I2 && I2(n3); + }, (D.prototype = new d()).__c = function(n3, t3) { + var e3 = t3.__c, r3 = this; + null == r3.t && (r3.t = []), r3.t.push(e3); + var u4 = F3(r3.__v), o4 = false, i4 = function() { + o4 || (o4 = true, e3.__R = null, u4 ? u4(l4) : l4()); + }; + e3.__R = i4; + var l4 = function() { + if (!--r3.__u) { + if (r3.state.__a) { + var n4 = r3.state.__a; + r3.__v.__k[0] = U(n4, n4.__c.__P, n4.__c.__O); + } + var t4; + for (r3.setState({ __a: r3.__b = null }); t4 = r3.t.pop(); ) + t4.forceUpdate(); + } + }, c4 = true === t3.__h; + r3.__u++ || c4 || r3.setState({ __a: r3.__b = r3.__v.__k[0] }), n3.then(i4, i4); + }, D.prototype.componentWillUnmount = function() { + this.t = []; + }, D.prototype.render = function(n3, e3) { + if (this.__b) { + if (this.__v.__k) { + var r3 = document.createElement("div"), o4 = this.__v.__k[0].__c; + this.__v.__k[0] = L2(this.__b, r3, o4.__O = o4.__P); + } + this.__b = null; + } + var i4 = e3.__a && h(p, null, n3.fallback); + return i4 && (i4.__h = null), [h(p, null, e3.__a ? null : n3.children), i4]; + }; + var W = function(n3, t3, e3) { + if (++e3[1] === e3[0] && n3.o.delete(t3), n3.props.revealOrder && ("t" !== n3.props.revealOrder[0] || !n3.o.size)) + for (e3 = n3.u; e3; ) { + for (; e3.length > 3; ) + e3.pop()(); + if (e3[1] < e3[0]) + break; + n3.u = e3 = e3[2]; + } + }; + function P2(n3) { + return this.getChildContext = function() { + return n3.context; + }, n3.children; + } + function $2(n3) { + var e3 = this, r3 = n3.i; + e3.componentWillUnmount = function() { + P(null, e3.l), e3.l = null, e3.i = null; + }, e3.i && e3.i !== r3 && e3.componentWillUnmount(), n3.__v ? (e3.l || (e3.i = r3, e3.l = { nodeType: 1, parentNode: r3, childNodes: [], appendChild: function(n4) { + this.childNodes.push(n4), e3.i.appendChild(n4); + }, insertBefore: function(n4, t3) { + this.childNodes.push(n4), e3.i.appendChild(n4); + }, removeChild: function(n4) { + this.childNodes.splice(this.childNodes.indexOf(n4) >>> 1, 1), e3.i.removeChild(n4); + } }), P(h(P2, { context: e3.context }, n3.__v), e3.l)) : e3.l && e3.componentWillUnmount(); + } + function j4(n3, e3) { + var r3 = h($2, { __v: n3, i: e3 }); + return r3.containerInfo = e3, r3; + } + (V2.prototype = new d()).__a = function(n3) { + var t3 = this, e3 = F3(t3.__v), r3 = t3.o.get(n3); + return r3[0]++, function(u4) { + var o4 = function() { + t3.props.revealOrder ? (r3.push(u4), W(t3, n3, r3)) : u4(); + }; + e3 ? e3(o4) : o4(); + }; + }, V2.prototype.render = function(n3) { + this.u = null, this.o = /* @__PURE__ */ new Map(); + var t3 = x(n3.children); + n3.revealOrder && "b" === n3.revealOrder[0] && t3.reverse(); + for (var e3 = t3.length; e3--; ) + this.o.set(t3[e3], this.u = [1, 0, this.u]); + return n3.children; + }, V2.prototype.componentDidUpdate = V2.prototype.componentDidMount = function() { + var n3 = this; + this.o.forEach(function(t3, e3) { + W(n3, e3, t3); + }); + }; + var z3 = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103; + var B3 = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/; + var H2 = "undefined" != typeof document; + var Z = function(n3) { + return ("undefined" != typeof Symbol && "symbol" == typeof Symbol() ? /fil|che|rad/i : /fil|che|ra/i).test(n3); + }; + function Y(n3, t3, e3) { + return null == t3.__k && (t3.textContent = ""), P(n3, t3), "function" == typeof e3 && e3(), n3 ? n3.__c : null; + } + function q3(n3, t3, e3) { + return S(n3, t3), "function" == typeof e3 && e3(), n3 ? n3.__c : null; + } + d.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach(function(t3) { + Object.defineProperty(d.prototype, t3, { configurable: true, get: function() { + return this["UNSAFE_" + t3]; + }, set: function(n3) { + Object.defineProperty(this, t3, { configurable: true, writable: true, value: n3 }); + } }); + }); + var G = l.event; + function J() { + } + function K() { + return this.cancelBubble; + } + function Q() { + return this.defaultPrevented; + } + l.event = function(n3) { + return G && (n3 = G(n3)), n3.persist = J, n3.isPropagationStopped = K, n3.isDefaultPrevented = Q, n3.nativeEvent = n3; + }; + var X; + var nn = { configurable: true, get: function() { + return this.class; + } }; + var tn = l.vnode; + l.vnode = function(n3) { + var t3 = n3.type, e3 = n3.props, u4 = e3; + if ("string" == typeof t3) { + var o4 = -1 === t3.indexOf("-"); + for (var i4 in u4 = {}, e3) { + var l4 = e3[i4]; + H2 && "children" === i4 && "noscript" === t3 || "value" === i4 && "defaultValue" in e3 && null == l4 || ("defaultValue" === i4 && "value" in e3 && null == e3.value ? i4 = "value" : "download" === i4 && true === l4 ? l4 = "" : /ondoubleclick/i.test(i4) ? i4 = "ondblclick" : /^onchange(textarea|input)/i.test(i4 + t3) && !Z(e3.type) ? i4 = "oninput" : /^onfocus$/i.test(i4) ? i4 = "onfocusin" : /^onblur$/i.test(i4) ? i4 = "onfocusout" : /^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(i4) ? i4 = i4.toLowerCase() : o4 && B3.test(i4) ? i4 = i4.replace(/[A-Z0-9]/g, "-$&").toLowerCase() : null === l4 && (l4 = void 0), /^oninput$/i.test(i4) && (i4 = i4.toLowerCase(), u4[i4] && (i4 = "oninputCapture")), u4[i4] = l4); + } + "select" == t3 && u4.multiple && Array.isArray(u4.value) && (u4.value = x(e3.children).forEach(function(n4) { + n4.props.selected = -1 != u4.value.indexOf(n4.props.value); + })), "select" == t3 && null != u4.defaultValue && (u4.value = x(e3.children).forEach(function(n4) { + n4.props.selected = u4.multiple ? -1 != u4.defaultValue.indexOf(n4.props.value) : u4.defaultValue == n4.props.value; + })), n3.props = u4, e3.class != e3.className && (nn.enumerable = "className" in e3, null != e3.className && (u4.class = e3.className), Object.defineProperty(u4, "className", nn)); + } + n3.$$typeof = z3, tn && tn(n3); + }; + var en = l.__r; + l.__r = function(n3) { + en && en(n3), X = n3.__c; + }; + var rn = { ReactCurrentDispatcher: { current: { readContext: function(n3) { + return X.__n[n3.__c].props.value; + } } } }; + function on(n3) { + return h.bind(null, n3); + } + function ln(n3) { + return !!n3 && n3.$$typeof === z3; + } + function cn(n3) { + return ln(n3) ? q.apply(null, arguments) : n3; + } + function fn(n3) { + return !!n3.__k && (P(null, n3), true); + } + function an(n3) { + return n3 && (n3.base || 1 === n3.nodeType && n3) || null; + } + var sn = function(n3, t3) { + return n3(t3); + }; + var hn = function(n3, t3) { + return n3(t3); + }; + var vn = p; + function dn(n3) { + n3(); + } + function pn(n3) { + return n3; + } + function mn() { + return [false, dn]; + } + var yn = s3; + function _n(n3, t3) { + var e3 = t3(), r3 = p3({ h: { __: e3, v: t3 } }), u4 = r3[0].h, o4 = r3[1]; + return s3(function() { + u4.__ = e3, u4.v = t3, E(u4.__, t3()) || o4({ h: u4 }); + }, [n3, e3, t3]), h3(function() { + return E(u4.__, u4.v()) || o4({ h: u4 }), n3(function() { + E(u4.__, u4.v()) || o4({ h: u4 }); + }); + }, [n3]), e3; + } + var bn = { useState: p3, useId: V, useReducer: y3, useEffect: h3, useLayoutEffect: s3, useInsertionEffect: yn, useTransition: mn, useDeferredValue: pn, useSyncExternalStore: _n, startTransition: dn, useRef: _3, useImperativeHandle: A3, useMemo: F2, useCallback: T2, useContext: q2, useDebugValue: x3, version: "17.0.2", Children: O3, render: Y, hydrate: q3, unmountComponentAtNode: fn, createPortal: j4, createElement: h, createContext: B, createFactory: on, cloneElement: cn, createRef: y, Fragment: p, isValidElement: ln, findDOMNode: an, Component: d, PureComponent: w4, memo: R, forwardRef: k4, flushSync: hn, unstable_batchedUpdates: sn, StrictMode: vn, Suspense: D, SuspenseList: V2, lazy: M2, __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: rn }; + + // ../../node_modules/.pnpm/@linaria+core@3.0.0-beta.22/node_modules/@linaria/core/esm/cx.js + var cx = function cx2() { + const presentClassNames = Array.prototype.slice.call(arguments).filter(Boolean); + const atomicClasses = {}; + const nonAtomicClasses = []; + presentClassNames.forEach((arg) => { + const individualClassNames = arg ? arg.split(" ") : []; + individualClassNames.forEach((className) => { + if (className.startsWith("atm_")) { + const [, keyHash] = className.split("_"); + atomicClasses[keyHash] = className; + } else { + nonAtomicClasses.push(className); + } + }); + }); + const result = []; + for (const keyHash in atomicClasses) { + if (Object.prototype.hasOwnProperty.call(atomicClasses, keyHash)) { + result.push(atomicClasses[keyHash]); + } + } + result.push(...nonAtomicClasses); + return result.join(" "); + }; + var cx_default = cx; + + // ../../node_modules/.pnpm/@linaria+react@3.0.0-beta.22_react@18.3.1/node_modules/@linaria/react/esm/styled.js + var isCapital = (ch) => ch.toUpperCase() === ch; + var filterKey = (keys) => (key) => keys.indexOf(key) === -1; + var omit = (obj, keys) => { + const res = {}; + Object.keys(obj).filter(filterKey(keys)).forEach((key) => { + res[key] = obj[key]; + }); + return res; + }; + function filterProps(component, props, omitKeys) { + const filteredProps = omit(props, omitKeys); + if (typeof component === "string" && component.indexOf("-") === -1 && !isCapital(component[0])) { + Object.keys(filteredProps).forEach((key) => { + if (!is_prop_valid_browser_esm_default(key)) { + delete filteredProps[key]; + } + }); + } + return filteredProps; + } + var warnIfInvalid = (value, componentName) => { + if (true) { + if (typeof value === "string" || // eslint-disable-next-line no-self-compare,no-restricted-globals + typeof value === "number" && isFinite(value)) { + return; + } + const stringified = typeof value === "object" ? JSON.stringify(value) : String(value); + console.warn(`An interpolation evaluated to '${stringified}' in the component '${componentName}', which is probably a mistake. You should explicitly cast or transform the value to a string.`); + } + }; + function styled(tag) { + return (options) => { + if (true) { + if (Array.isArray(options)) { + throw new Error('Using the "styled" tag in runtime is not supported. Make sure you have set up the Babel plugin correctly. See https://github.com/callstack/linaria#setup'); + } + } + const render = (props, ref) => { + const { + as: component = tag, + class: className + } = props; + const filteredProps = filterProps(component, props, ["as", "class"]); + filteredProps.ref = ref; + filteredProps.className = options.atomic ? cx_default(options.class, filteredProps.className || className) : cx_default(filteredProps.className || className, options.class); + const { + vars + } = options; + if (vars) { + const style = {}; + for (const name in vars) { + const variable = vars[name]; + const result = variable[0]; + const unit = variable[1] || ""; + const value = typeof result === "function" ? result(props) : result; + warnIfInvalid(value, options.name); + style[`--${name}`] = `${value}${unit}`; + } + const ownStyle = filteredProps.style || {}; + const keys = Object.keys(ownStyle); + if (keys.length > 0) { + keys.forEach((key) => { + style[key] = ownStyle[key]; + }); + } + filteredProps.style = style; + } + if (tag.__linaria && tag !== component) { + filteredProps.as = component; + return /* @__PURE__ */ bn.createElement(tag, filteredProps); + } + return /* @__PURE__ */ bn.createElement(component, filteredProps); + }; + const Result = bn.forwardRef ? /* @__PURE__ */ bn.forwardRef(render) : ( + // React.forwardRef won't available on older React versions and in Preact + // Fallback to a innerRef prop in that case + (props) => { + const rest = omit(props, ["innerRef"]); + return render(rest, props.innerRef); + } + ); + Result.displayName = options.name; + Result.__linaria = { + className: options.class, + extends: tag + }; + return Result; + }; + } + var styled_default = true ? new Proxy(styled, { + get(o4, prop) { + return o4(prop); + } + }) : styled; + + // src/styled/index.tsx + var QRPlaceholder = /* @__PURE__ */ styled_default("div")({ + name: "QRPlaceholder", + class: "q1ma0zxq" + }); + var FooterBar = /* @__PURE__ */ styled_default("footer")({ + name: "FooterBar", + class: "fef0x5t" + }); + var Page = /* @__PURE__ */ styled_default("div")({ + name: "Page", + class: "p1b3vqup" + }); + var WalletLink = /* @__PURE__ */ styled_default("a")({ + name: "WalletLink", + class: "wpwjmk", + vars: { + "wpwjmk-0": [({ + upperCased + }) => upperCased ? "uppercase" : "none"] + } + }); + + // src/components/Footer.tsx + function Footer() { + return /* @__PURE__ */ h(FooterBar, null, /* @__PURE__ */ h("p", null, /* @__PURE__ */ h("a", { + href: "https://taler.net/" + }, "Learn more about GNU Taler on our website."), /* @__PURE__ */ h("p", null, "Copyright \xA9 2014\u20142021 Taler Systems SA"))); + } + + // src/components/QR.tsx + var import_qrcode_generator = __toESM(require_qrcode()); + function createSVG(text) { + const qr = (0, import_qrcode_generator.default)(0, "L"); + qr.addData(text); + qr.make(); + return qr.createSvgTag({ + scalable: true, + margin: 0 + }); + } + function QR({ text }) { + const divRef = _3(null); + h3(() => { + if (divRef.current) { + divRef.current.innerHTML = createSVG(text); + } + }); + return /* @__PURE__ */ h("div", { + style: { + width: "100%", + display: "flex", + flexDirection: "column", + alignItems: "center" + } + }, /* @__PURE__ */ h("div", { + style: { width: "50%", minWidth: 200, maxWidth: 300 }, + ref: divRef + })); + } + + // src/pages/RequestPayment.tsx + function Head({ order_summary }) { + return /* @__PURE__ */ h(p, null, /* @__PURE__ */ h("meta", { + charSet: "UTF-8" + }), /* @__PURE__ */ h("meta", { + name: "viewport", + content: "width=device-width, initial-scale=1.0" + }), /* @__PURE__ */ h("meta", { + name: "taler-support", + content: "uri" + }), /* @__PURE__ */ h("meta", { + name: "taler-uri", + content: "taler+http://pay/localhost:8083/2024.295-03N2YD9YYPBHM/" + }), /* @__PURE__ */ h("noscript", null, /* @__PURE__ */ h("meta", { + "http-equiv": "refresh", + content: "1" + })), /* @__PURE__ */ h("title", null, "Payment requested for", " ", order_summary ? order_summary : `Buy me!`)); + } + function RequestPayment({ + payURI, + qr_code, + order_status_url + }) { + h3(() => { + const longpollDelayMs = 60 * 1e3; + let checkUrl; + try { + checkUrl = new URL(order_status_url ? order_status_url : "http://localhost:8083/orders/2024.295-03N2YD9YYPBHM"); + } catch (e3) { + return; + } + checkUrl.searchParams.set("timeout_ms", longpollDelayMs.toString()); + const delayMs = 500; + function check() { + let retried = false; + function retryOnce() { + if (!retried) { + retried = true; + check(); + } + } + const req = new XMLHttpRequest(); + req.onreadystatechange = function() { + if (req.readyState === XMLHttpRequest.DONE) { + if (req.status === 200) { + try { + const resp = JSON.parse(req.responseText); + if (resp.fulfillment_url) { + window.location.replace(resp.fulfillment_url); + } else { + window.location.reload(); + } + } catch (e3) { + console.error("could not parse response:", e3); + } + } + if (req.status === 202) { + try { + const resp = JSON.parse(req.responseText); + if (resp.fulfillment_url) { + window.location.replace(resp.fulfillment_url); + } else { + window.location.reload(); + } + } catch (e3) { + console.error("could not parse response:", e3); + } + } + if (req.status === 402) { + try { + const resp = JSON.parse(req.responseText); + if (resp.already_paid_order_id && resp.fulfillment_url) { + window.location.replace(resp.fulfillment_url); + } + } catch (e3) { + console.error("could not parse response:", e3); + } + } + setTimeout(retryOnce, delayMs); + } + }; + req.onerror = function() { + setTimeout(retryOnce, delayMs); + }; + req.ontimeout = function() { + setTimeout(retryOnce, delayMs); + }; + req.timeout = longpollDelayMs; + req.open("GET", checkUrl.href); + req.send(); + } + setTimeout(check, delayMs); + }); + return /* @__PURE__ */ h(Page, null, /* @__PURE__ */ h("section", null, /* @__PURE__ */ h("h1", null, "Pay with Taler"), /* @__PURE__ */ h("p", null, "Scan this QR code with your mobile wallet:"), /* @__PURE__ */ h(QRPlaceholder, { + dangerouslySetInnerHTML: { + __html: qr_code ? qr_code : `<svg width='100mm' height='100mm' viewBox='0 0 33 33' version='1.1' xmlns='http://www.w3.org/2000/svg' style='shape-rendering: crispedges;'> + <rect x=0 y=0 width=1 height=1 /> + <rect x=1 y=0 width=1 height=1 /> + <rect x=2 y=0 width=1 height=1 /> + <rect x=3 y=0 width=1 height=1 /> + <rect x=4 y=0 width=1 height=1 /> + <rect x=5 y=0 width=1 height=1 /> + <rect x=6 y=0 width=1 height=1 /> + <rect x=9 y=0 width=1 height=1 /> + <rect x=12 y=0 width=1 height=1 /> + <rect x=14 y=0 width=1 height=1 /> + <rect x=17 y=0 width=1 height=1 /> + <rect x=18 y=0 width=1 height=1 /> + <rect x=19 y=0 width=1 height=1 /> + <rect x=20 y=0 width=1 height=1 /> + <rect x=21 y=0 width=1 height=1 /> + <rect x=22 y=0 width=1 height=1 /> + <rect x=23 y=0 width=1 height=1 /> + <rect x=26 y=0 width=1 height=1 /> + <rect x=27 y=0 width=1 height=1 /> + <rect x=28 y=0 width=1 height=1 /> + <rect x=29 y=0 width=1 height=1 /> + <rect x=30 y=0 width=1 height=1 /> + <rect x=31 y=0 width=1 height=1 /> + <rect x=32 y=0 width=1 height=1 /> + <rect x=0 y=1 width=1 height=1 /> + <rect x=6 y=1 width=1 height=1 /> + <rect x=9 y=1 width=1 height=1 /> + <rect x=11 y=1 width=1 height=1 /> + <rect x=12 y=1 width=1 height=1 /> + <rect x=15 y=1 width=1 height=1 /> + <rect x=18 y=1 width=1 height=1 /> + <rect x=20 y=1 width=1 height=1 /> + <rect x=26 y=1 width=1 height=1 /> + <rect x=32 y=1 width=1 height=1 /> + <rect x=0 y=2 width=1 height=1 /> + <rect x=2 y=2 width=1 height=1 /> + <rect x=3 y=2 width=1 height=1 /> + <rect x=4 y=2 width=1 height=1 /> + <rect x=6 y=2 width=1 height=1 /> + <rect x=8 y=2 width=1 height=1 /> + <rect x=11 y=2 width=1 height=1 /> + <rect x=14 y=2 width=1 height=1 /> + <rect x=15 y=2 width=1 height=1 /> + <rect x=18 y=2 width=1 height=1 /> + <rect x=21 y=2 width=1 height=1 /> + <rect x=23 y=2 width=1 height=1 /> + <rect x=26 y=2 width=1 height=1 /> + <rect x=28 y=2 width=1 height=1 /> + <rect x=29 y=2 width=1 height=1 /> + <rect x=30 y=2 width=1 height=1 /> + <rect x=32 y=2 width=1 height=1 /> + <rect x=0 y=3 width=1 height=1 /> + <rect x=2 y=3 width=1 height=1 /> + <rect x=3 y=3 width=1 height=1 /> + <rect x=4 y=3 width=1 height=1 /> + <rect x=6 y=3 width=1 height=1 /> + <rect x=8 y=3 width=1 height=1 /> + <rect x=9 y=3 width=1 height=1 /> + <rect x=10 y=3 width=1 height=1 /> + <rect x=11 y=3 width=1 height=1 /> + <rect x=15 y=3 width=1 height=1 /> + <rect x=21 y=3 width=1 height=1 /> + <rect x=22 y=3 width=1 height=1 /> + <rect x=23 y=3 width=1 height=1 /> + <rect x=26 y=3 width=1 height=1 /> + <rect x=28 y=3 width=1 height=1 /> + <rect x=29 y=3 width=1 height=1 /> + <rect x=30 y=3 width=1 height=1 /> + <rect x=32 y=3 width=1 height=1 /> + <rect x=0 y=4 width=1 height=1 /> + <rect x=2 y=4 width=1 height=1 /> + <rect x=3 y=4 width=1 height=1 /> + <rect x=4 y=4 width=1 height=1 /> + <rect x=6 y=4 width=1 height=1 /> + <rect x=8 y=4 width=1 height=1 /> + <rect x=13 y=4 width=1 height=1 /> + <rect x=14 y=4 width=1 height=1 /> + <rect x=15 y=4 width=1 height=1 /> + <rect x=16 y=4 width=1 height=1 /> + <rect x=17 y=4 width=1 height=1 /> + <rect x=18 y=4 width=1 height=1 /> + <rect x=20 y=4 width=1 height=1 /> + <rect x=21 y=4 width=1 height=1 /> + <rect x=22 y=4 width=1 height=1 /> + <rect x=23 y=4 width=1 height=1 /> + <rect x=24 y=4 width=1 height=1 /> + <rect x=26 y=4 width=1 height=1 /> + <rect x=28 y=4 width=1 height=1 /> + <rect x=29 y=4 width=1 height=1 /> + <rect x=30 y=4 width=1 height=1 /> + <rect x=32 y=4 width=1 height=1 /> + <rect x=0 y=5 width=1 height=1 /> + <rect x=6 y=5 width=1 height=1 /> + <rect x=8 y=5 width=1 height=1 /> + <rect x=9 y=5 width=1 height=1 /> + <rect x=10 y=5 width=1 height=1 /> + <rect x=21 y=5 width=1 height=1 /> + <rect x=24 y=5 width=1 height=1 /> + <rect x=26 y=5 width=1 height=1 /> + <rect x=32 y=5 width=1 height=1 /> + <rect x=0 y=6 width=1 height=1 /> + <rect x=1 y=6 width=1 height=1 /> + <rect x=2 y=6 width=1 height=1 /> + <rect x=3 y=6 width=1 height=1 /> + <rect x=4 y=6 width=1 height=1 /> + <rect x=5 y=6 width=1 height=1 /> + <rect x=6 y=6 width=1 height=1 /> + <rect x=8 y=6 width=1 height=1 /> + <rect x=10 y=6 width=1 height=1 /> + <rect x=12 y=6 width=1 height=1 /> + <rect x=14 y=6 width=1 height=1 /> + <rect x=16 y=6 width=1 height=1 /> + <rect x=18 y=6 width=1 height=1 /> + <rect x=20 y=6 width=1 height=1 /> + <rect x=22 y=6 width=1 height=1 /> + <rect x=24 y=6 width=1 height=1 /> + <rect x=26 y=6 width=1 height=1 /> + <rect x=27 y=6 width=1 height=1 /> + <rect x=28 y=6 width=1 height=1 /> + <rect x=29 y=6 width=1 height=1 /> + <rect x=30 y=6 width=1 height=1 /> + <rect x=31 y=6 width=1 height=1 /> + <rect x=32 y=6 width=1 height=1 /> + <rect x=8 y=7 width=1 height=1 /> + <rect x=12 y=7 width=1 height=1 /> + <rect x=16 y=7 width=1 height=1 /> + <rect x=18 y=7 width=1 height=1 /> + <rect x=19 y=7 width=1 height=1 /> + <rect x=21 y=7 width=1 height=1 /> + <rect x=23 y=7 width=1 height=1 /> + <rect x=0 y=8 width=1 height=1 /> + <rect x=2 y=8 width=1 height=1 /> + <rect x=3 y=8 width=1 height=1 /> + <rect x=4 y=8 width=1 height=1 /> + <rect x=5 y=8 width=1 height=1 /> + <rect x=6 y=8 width=1 height=1 /> + <rect x=9 y=8 width=1 height=1 /> + <rect x=10 y=8 width=1 height=1 /> + <rect x=12 y=8 width=1 height=1 /> + <rect x=13 y=8 width=1 height=1 /> + <rect x=16 y=8 width=1 height=1 /> + <rect x=17 y=8 width=1 height=1 /> + <rect x=22 y=8 width=1 height=1 /> + <rect x=23 y=8 width=1 height=1 /> + <rect x=24 y=8 width=1 height=1 /> + <rect x=26 y=8 width=1 height=1 /> + <rect x=27 y=8 width=1 height=1 /> + <rect x=28 y=8 width=1 height=1 /> + <rect x=29 y=8 width=1 height=1 /> + <rect x=30 y=8 width=1 height=1 /> + <rect x=2 y=9 width=1 height=1 /> + <rect x=3 y=9 width=1 height=1 /> + <rect x=4 y=9 width=1 height=1 /> + <rect x=5 y=9 width=1 height=1 /> + <rect x=7 y=9 width=1 height=1 /> + <rect x=8 y=9 width=1 height=1 /> + <rect x=9 y=9 width=1 height=1 /> + <rect x=11 y=9 width=1 height=1 /> + <rect x=12 y=9 width=1 height=1 /> + <rect x=13 y=9 width=1 height=1 /> + <rect x=14 y=9 width=1 height=1 /> + <rect x=17 y=9 width=1 height=1 /> + <rect x=18 y=9 width=1 height=1 /> + <rect x=19 y=9 width=1 height=1 /> + <rect x=20 y=9 width=1 height=1 /> + <rect x=23 y=9 width=1 height=1 /> + <rect x=24 y=9 width=1 height=1 /> + <rect x=25 y=9 width=1 height=1 /> + <rect x=26 y=9 width=1 height=1 /> + <rect x=30 y=9 width=1 height=1 /> + <rect x=31 y=9 width=1 height=1 /> + <rect x=32 y=9 width=1 height=1 /> + <rect x=0 y=10 width=1 height=1 /> + <rect x=1 y=10 width=1 height=1 /> + <rect x=2 y=10 width=1 height=1 /> + <rect x=5 y=10 width=1 height=1 /> + <rect x=6 y=10 width=1 height=1 /> + <rect x=7 y=10 width=1 height=1 /> + <rect x=8 y=10 width=1 height=1 /> + <rect x=13 y=10 width=1 height=1 /> + <rect x=14 y=10 width=1 height=1 /> + <rect x=15 y=10 width=1 height=1 /> + <rect x=20 y=10 width=1 height=1 /> + <rect x=21 y=10 width=1 height=1 /> + <rect x=26 y=10 width=1 height=1 /> + <rect x=27 y=10 width=1 height=1 /> + <rect x=29 y=10 width=1 height=1 /> + <rect x=30 y=10 width=1 height=1 /> + <rect x=0 y=11 width=1 height=1 /> + <rect x=3 y=11 width=1 height=1 /> + <rect x=4 y=11 width=1 height=1 /> + <rect x=7 y=11 width=1 height=1 /> + <rect x=9 y=11 width=1 height=1 /> + <rect x=10 y=11 width=1 height=1 /> + <rect x=12 y=11 width=1 height=1 /> + <rect x=13 y=11 width=1 height=1 /> + <rect x=15 y=11 width=1 height=1 /> + <rect x=19 y=11 width=1 height=1 /> + <rect x=21 y=11 width=1 height=1 /> + <rect x=22 y=11 width=1 height=1 /> + <rect x=23 y=11 width=1 height=1 /> + <rect x=25 y=11 width=1 height=1 /> + <rect x=27 y=11 width=1 height=1 /> + <rect x=28 y=11 width=1 height=1 /> + <rect x=29 y=11 width=1 height=1 /> + <rect x=30 y=11 width=1 height=1 /> + <rect x=32 y=11 width=1 height=1 /> + <rect x=0 y=12 width=1 height=1 /> + <rect x=2 y=12 width=1 height=1 /> + <rect x=3 y=12 width=1 height=1 /> + <rect x=4 y=12 width=1 height=1 /> + <rect x=5 y=12 width=1 height=1 /> + <rect x=6 y=12 width=1 height=1 /> + <rect x=9 y=12 width=1 height=1 /> + <rect x=10 y=12 width=1 height=1 /> + <rect x=14 y=12 width=1 height=1 /> + <rect x=16 y=12 width=1 height=1 /> + <rect x=17 y=12 width=1 height=1 /> + <rect x=18 y=12 width=1 height=1 /> + <rect x=21 y=12 width=1 height=1 /> + <rect x=22 y=12 width=1 height=1 /> + <rect x=23 y=12 width=1 height=1 /> + <rect x=24 y=12 width=1 height=1 /> + <rect x=28 y=12 width=1 height=1 /> + <rect x=4 y=13 width=1 height=1 /> + <rect x=8 y=13 width=1 height=1 /> + <rect x=11 y=13 width=1 height=1 /> + <rect x=12 y=13 width=1 height=1 /> + <rect x=13 y=13 width=1 height=1 /> + <rect x=15 y=13 width=1 height=1 /> + <rect x=17 y=13 width=1 height=1 /> + <rect x=18 y=13 width=1 height=1 /> + <rect x=20 y=13 width=1 height=1 /> + <rect x=21 y=13 width=1 height=1 /> + <rect x=25 y=13 width=1 height=1 /> + <rect x=26 y=13 width=1 height=1 /> + <rect x=27 y=13 width=1 height=1 /> + <rect x=30 y=13 width=1 height=1 /> + <rect x=32 y=13 width=1 height=1 /> + <rect x=2 y=14 width=1 height=1 /> + <rect x=3 y=14 width=1 height=1 /> + <rect x=4 y=14 width=1 height=1 /> + <rect x=5 y=14 width=1 height=1 /> + <rect x=6 y=14 width=1 height=1 /> + <rect x=7 y=14 width=1 height=1 /> + <rect x=8 y=14 width=1 height=1 /> + <rect x=9 y=14 width=1 height=1 /> + <rect x=13 y=14 width=1 height=1 /> + <rect x=15 y=14 width=1 height=1 /> + <rect x=16 y=14 width=1 height=1 /> + <rect x=18 y=14 width=1 height=1 /> + <rect x=21 y=14 width=1 height=1 /> + <rect x=25 y=14 width=1 height=1 /> + <rect x=27 y=14 width=1 height=1 /> + <rect x=28 y=14 width=1 height=1 /> + <rect x=30 y=14 width=1 height=1 /> + <rect x=31 y=14 width=1 height=1 /> + <rect x=1 y=15 width=1 height=1 /> + <rect x=2 y=15 width=1 height=1 /> + <rect x=5 y=15 width=1 height=1 /> + <rect x=9 y=15 width=1 height=1 /> + <rect x=10 y=15 width=1 height=1 /> + <rect x=11 y=15 width=1 height=1 /> + <rect x=14 y=15 width=1 height=1 /> + <rect x=15 y=15 width=1 height=1 /> + <rect x=18 y=15 width=1 height=1 /> + <rect x=21 y=15 width=1 height=1 /> + <rect x=22 y=15 width=1 height=1 /> + <rect x=23 y=15 width=1 height=1 /> + <rect x=24 y=15 width=1 height=1 /> + <rect x=27 y=15 width=1 height=1 /> + <rect x=30 y=15 width=1 height=1 /> + <rect x=3 y=16 width=1 height=1 /> + <rect x=4 y=16 width=1 height=1 /> + <rect x=6 y=16 width=1 height=1 /> + <rect x=9 y=16 width=1 height=1 /> + <rect x=12 y=16 width=1 height=1 /> + <rect x=13 y=16 width=1 height=1 /> + <rect x=15 y=16 width=1 height=1 /> + <rect x=16 y=16 width=1 height=1 /> + <rect x=17 y=16 width=1 height=1 /> + <rect x=22 y=16 width=1 height=1 /> + <rect x=24 y=16 width=1 height=1 /> + <rect x=25 y=16 width=1 height=1 /> + <rect x=27 y=16 width=1 height=1 /> + <rect x=28 y=16 width=1 height=1 /> + <rect x=29 y=16 width=1 height=1 /> + <rect x=31 y=16 width=1 height=1 /> + <rect x=0 y=17 width=1 height=1 /> + <rect x=8 y=17 width=1 height=1 /> + <rect x=9 y=17 width=1 height=1 /> + <rect x=13 y=17 width=1 height=1 /> + <rect x=17 y=17 width=1 height=1 /> + <rect x=18 y=17 width=1 height=1 /> + <rect x=19 y=17 width=1 height=1 /> + <rect x=20 y=17 width=1 height=1 /> + <rect x=21 y=17 width=1 height=1 /> + <rect x=22 y=17 width=1 height=1 /> + <rect x=23 y=17 width=1 height=1 /> + <rect x=24 y=17 width=1 height=1 /> + <rect x=25 y=17 width=1 height=1 /> + <rect x=26 y=17 width=1 height=1 /> + <rect x=29 y=17 width=1 height=1 /> + <rect x=31 y=17 width=1 height=1 /> + <rect x=32 y=17 width=1 height=1 /> + <rect x=3 y=18 width=1 height=1 /> + <rect x=6 y=18 width=1 height=1 /> + <rect x=8 y=18 width=1 height=1 /> + <rect x=9 y=18 width=1 height=1 /> + <rect x=12 y=18 width=1 height=1 /> + <rect x=13 y=18 width=1 height=1 /> + <rect x=14 y=18 width=1 height=1 /> + <rect x=15 y=18 width=1 height=1 /> + <rect x=17 y=18 width=1 height=1 /> + <rect x=20 y=18 width=1 height=1 /> + <rect x=21 y=18 width=1 height=1 /> + <rect x=22 y=18 width=1 height=1 /> + <rect x=24 y=18 width=1 height=1 /> + <rect x=25 y=18 width=1 height=1 /> + <rect x=28 y=18 width=1 height=1 /> + <rect x=30 y=18 width=1 height=1 /> + <rect x=2 y=19 width=1 height=1 /> + <rect x=4 y=19 width=1 height=1 /> + <rect x=5 y=19 width=1 height=1 /> + <rect x=7 y=19 width=1 height=1 /> + <rect x=9 y=19 width=1 height=1 /> + <rect x=13 y=19 width=1 height=1 /> + <rect x=14 y=19 width=1 height=1 /> + <rect x=19 y=19 width=1 height=1 /> + <rect x=20 y=19 width=1 height=1 /> + <rect x=21 y=19 width=1 height=1 /> + <rect x=23 y=19 width=1 height=1 /> + <rect x=24 y=19 width=1 height=1 /> + <rect x=25 y=19 width=1 height=1 /> + <rect x=27 y=19 width=1 height=1 /> + <rect x=28 y=19 width=1 height=1 /> + <rect x=29 y=19 width=1 height=1 /> + <rect x=30 y=19 width=1 height=1 /> + <rect x=31 y=19 width=1 height=1 /> + <rect x=32 y=19 width=1 height=1 /> + <rect x=0 y=20 width=1 height=1 /> + <rect x=2 y=20 width=1 height=1 /> + <rect x=5 y=20 width=1 height=1 /> + <rect x=6 y=20 width=1 height=1 /> + <rect x=9 y=20 width=1 height=1 /> + <rect x=10 y=20 width=1 height=1 /> + <rect x=11 y=20 width=1 height=1 /> + <rect x=12 y=20 width=1 height=1 /> + <rect x=13 y=20 width=1 height=1 /> + <rect x=18 y=20 width=1 height=1 /> + <rect x=19 y=20 width=1 height=1 /> + <rect x=20 y=20 width=1 height=1 /> + <rect x=23 y=20 width=1 height=1 /> + <rect x=28 y=20 width=1 height=1 /> + <rect x=31 y=20 width=1 height=1 /> + <rect x=32 y=20 width=1 height=1 /> + <rect x=0 y=21 width=1 height=1 /> + <rect x=1 y=21 width=1 height=1 /> + <rect x=2 y=21 width=1 height=1 /> + <rect x=4 y=21 width=1 height=1 /> + <rect x=11 y=21 width=1 height=1 /> + <rect x=13 y=21 width=1 height=1 /> + <rect x=14 y=21 width=1 height=1 /> + <rect x=15 y=21 width=1 height=1 /> + <rect x=16 y=21 width=1 height=1 /> + <rect x=17 y=21 width=1 height=1 /> + <rect x=18 y=21 width=1 height=1 /> + <rect x=20 y=21 width=1 height=1 /> + <rect x=22 y=21 width=1 height=1 /> + <rect x=23 y=21 width=1 height=1 /> + <rect x=24 y=21 width=1 height=1 /> + <rect x=26 y=21 width=1 height=1 /> + <rect x=27 y=21 width=1 height=1 /> + <rect x=30 y=21 width=1 height=1 /> + <rect x=31 y=21 width=1 height=1 /> + <rect x=32 y=21 width=1 height=1 /> + <rect x=0 y=22 width=1 height=1 /> + <rect x=5 y=22 width=1 height=1 /> + <rect x=6 y=22 width=1 height=1 /> + <rect x=7 y=22 width=1 height=1 /> + <rect x=13 y=22 width=1 height=1 /> + <rect x=17 y=22 width=1 height=1 /> + <rect x=20 y=22 width=1 height=1 /> + <rect x=21 y=22 width=1 height=1 /> + <rect x=24 y=22 width=1 height=1 /> + <rect x=25 y=22 width=1 height=1 /> + <rect x=27 y=22 width=1 height=1 /> + <rect x=28 y=22 width=1 height=1 /> + <rect x=31 y=22 width=1 height=1 /> + <rect x=0 y=23 width=1 height=1 /> + <rect x=2 y=23 width=1 height=1 /> + <rect x=3 y=23 width=1 height=1 /> + <rect x=5 y=23 width=1 height=1 /> + <rect x=8 y=23 width=1 height=1 /> + <rect x=9 y=23 width=1 height=1 /> + <rect x=10 y=23 width=1 height=1 /> + <rect x=11 y=23 width=1 height=1 /> + <rect x=13 y=23 width=1 height=1 /> + <rect x=14 y=23 width=1 height=1 /> + <rect x=16 y=23 width=1 height=1 /> + <rect x=21 y=23 width=1 height=1 /> + <rect x=22 y=23 width=1 height=1 /> + <rect x=24 y=23 width=1 height=1 /> + <rect x=28 y=23 width=1 height=1 /> + <rect x=30 y=23 width=1 height=1 /> + <rect x=31 y=23 width=1 height=1 /> + <rect x=32 y=23 width=1 height=1 /> + <rect x=0 y=24 width=1 height=1 /> + <rect x=3 y=24 width=1 height=1 /> + <rect x=6 y=24 width=1 height=1 /> + <rect x=7 y=24 width=1 height=1 /> + <rect x=10 y=24 width=1 height=1 /> + <rect x=11 y=24 width=1 height=1 /> + <rect x=12 y=24 width=1 height=1 /> + <rect x=14 y=24 width=1 height=1 /> + <rect x=16 y=24 width=1 height=1 /> + <rect x=17 y=24 width=1 height=1 /> + <rect x=19 y=24 width=1 height=1 /> + <rect x=24 y=24 width=1 height=1 /> + <rect x=25 y=24 width=1 height=1 /> + <rect x=26 y=24 width=1 height=1 /> + <rect x=27 y=24 width=1 height=1 /> + <rect x=28 y=24 width=1 height=1 /> + <rect x=29 y=24 width=1 height=1 /> + <rect x=31 y=24 width=1 height=1 /> + <rect x=8 y=25 width=1 height=1 /> + <rect x=10 y=25 width=1 height=1 /> + <rect x=12 y=25 width=1 height=1 /> + <rect x=13 y=25 width=1 height=1 /> + <rect x=17 y=25 width=1 height=1 /> + <rect x=19 y=25 width=1 height=1 /> + <rect x=20 y=25 width=1 height=1 /> + <rect x=23 y=25 width=1 height=1 /> + <rect x=24 y=25 width=1 height=1 /> + <rect x=28 y=25 width=1 height=1 /> + <rect x=29 y=25 width=1 height=1 /> + <rect x=30 y=25 width=1 height=1 /> + <rect x=32 y=25 width=1 height=1 /> + <rect x=0 y=26 width=1 height=1 /> + <rect x=1 y=26 width=1 height=1 /> + <rect x=2 y=26 width=1 height=1 /> + <rect x=3 y=26 width=1 height=1 /> + <rect x=4 y=26 width=1 height=1 /> + <rect x=5 y=26 width=1 height=1 /> + <rect x=6 y=26 width=1 height=1 /> + <rect x=9 y=26 width=1 height=1 /> + <rect x=11 y=26 width=1 height=1 /> + <rect x=15 y=26 width=1 height=1 /> + <rect x=17 y=26 width=1 height=1 /> + <rect x=21 y=26 width=1 height=1 /> + <rect x=23 y=26 width=1 height=1 /> + <rect x=24 y=26 width=1 height=1 /> + <rect x=26 y=26 width=1 height=1 /> + <rect x=28 y=26 width=1 height=1 /> + <rect x=29 y=26 width=1 height=1 /> + <rect x=30 y=26 width=1 height=1 /> + <rect x=0 y=27 width=1 height=1 /> + <rect x=6 y=27 width=1 height=1 /> + <rect x=8 y=27 width=1 height=1 /> + <rect x=9 y=27 width=1 height=1 /> + <rect x=10 y=27 width=1 height=1 /> + <rect x=12 y=27 width=1 height=1 /> + <rect x=13 y=27 width=1 height=1 /> + <rect x=14 y=27 width=1 height=1 /> + <rect x=15 y=27 width=1 height=1 /> + <rect x=16 y=27 width=1 height=1 /> + <rect x=17 y=27 width=1 height=1 /> + <rect x=18 y=27 width=1 height=1 /> + <rect x=20 y=27 width=1 height=1 /> + <rect x=21 y=27 width=1 height=1 /> + <rect x=22 y=27 width=1 height=1 /> + <rect x=24 y=27 width=1 height=1 /> + <rect x=28 y=27 width=1 height=1 /> + <rect x=29 y=27 width=1 height=1 /> + <rect x=30 y=27 width=1 height=1 /> + <rect x=31 y=27 width=1 height=1 /> + <rect x=32 y=27 width=1 height=1 /> + <rect x=0 y=28 width=1 height=1 /> + <rect x=2 y=28 width=1 height=1 /> + <rect x=3 y=28 width=1 height=1 /> + <rect x=4 y=28 width=1 height=1 /> + <rect x=6 y=28 width=1 height=1 /> + <rect x=8 y=28 width=1 height=1 /> + <rect x=10 y=28 width=1 height=1 /> + <rect x=11 y=28 width=1 height=1 /> + <rect x=12 y=28 width=1 height=1 /> + <rect x=14 y=28 width=1 height=1 /> + <rect x=15 y=28 width=1 height=1 /> + <rect x=16 y=28 width=1 height=1 /> + <rect x=19 y=28 width=1 height=1 /> + <rect x=20 y=28 width=1 height=1 /> + <rect x=21 y=28 width=1 height=1 /> + <rect x=22 y=28 width=1 height=1 /> + <rect x=24 y=28 width=1 height=1 /> + <rect x=25 y=28 width=1 height=1 /> + <rect x=26 y=28 width=1 height=1 /> + <rect x=27 y=28 width=1 height=1 /> + <rect x=28 y=28 width=1 height=1 /> + <rect x=29 y=28 width=1 height=1 /> + <rect x=0 y=29 width=1 height=1 /> + <rect x=2 y=29 width=1 height=1 /> + <rect x=3 y=29 width=1 height=1 /> + <rect x=4 y=29 width=1 height=1 /> + <rect x=6 y=29 width=1 height=1 /> + <rect x=8 y=29 width=1 height=1 /> + <rect x=9 y=29 width=1 height=1 /> + <rect x=11 y=29 width=1 height=1 /> + <rect x=13 y=29 width=1 height=1 /> + <rect x=14 y=29 width=1 height=1 /> + <rect x=15 y=29 width=1 height=1 /> + <rect x=18 y=29 width=1 height=1 /> + <rect x=20 y=29 width=1 height=1 /> + <rect x=22 y=29 width=1 height=1 /> + <rect x=24 y=29 width=1 height=1 /> + <rect x=25 y=29 width=1 height=1 /> + <rect x=27 y=29 width=1 height=1 /> + <rect x=28 y=29 width=1 height=1 /> + <rect x=29 y=29 width=1 height=1 /> + <rect x=30 y=29 width=1 height=1 /> + <rect x=31 y=29 width=1 height=1 /> + <rect x=32 y=29 width=1 height=1 /> + <rect x=0 y=30 width=1 height=1 /> + <rect x=2 y=30 width=1 height=1 /> + <rect x=3 y=30 width=1 height=1 /> + <rect x=4 y=30 width=1 height=1 /> + <rect x=6 y=30 width=1 height=1 /> + <rect x=8 y=30 width=1 height=1 /> + <rect x=10 y=30 width=1 height=1 /> + <rect x=11 y=30 width=1 height=1 /> + <rect x=15 y=30 width=1 height=1 /> + <rect x=16 y=30 width=1 height=1 /> + <rect x=17 y=30 width=1 height=1 /> + <rect x=18 y=30 width=1 height=1 /> + <rect x=20 y=30 width=1 height=1 /> + <rect x=22 y=30 width=1 height=1 /> + <rect x=24 y=30 width=1 height=1 /> + <rect x=25 y=30 width=1 height=1 /> + <rect x=26 y=30 width=1 height=1 /> + <rect x=27 y=30 width=1 height=1 /> + <rect x=30 y=30 width=1 height=1 /> + <rect x=0 y=31 width=1 height=1 /> + <rect x=6 y=31 width=1 height=1 /> + <rect x=10 y=31 width=1 height=1 /> + <rect x=12 y=31 width=1 height=1 /> + <rect x=14 y=31 width=1 height=1 /> + <rect x=15 y=31 width=1 height=1 /> + <rect x=21 y=31 width=1 height=1 /> + <rect x=22 y=31 width=1 height=1 /> + <rect x=23 y=31 width=1 height=1 /> + <rect x=25 y=31 width=1 height=1 /> + <rect x=26 y=31 width=1 height=1 /> + <rect x=27 y=31 width=1 height=1 /> + <rect x=28 y=31 width=1 height=1 /> + <rect x=30 y=31 width=1 height=1 /> + <rect x=0 y=32 width=1 height=1 /> + <rect x=1 y=32 width=1 height=1 /> + <rect x=2 y=32 width=1 height=1 /> + <rect x=3 y=32 width=1 height=1 /> + <rect x=4 y=32 width=1 height=1 /> + <rect x=5 y=32 width=1 height=1 /> + <rect x=6 y=32 width=1 height=1 /> + <rect x=8 y=32 width=1 height=1 /> + <rect x=9 y=32 width=1 height=1 /> + <rect x=11 y=32 width=1 height=1 /> + <rect x=12 y=32 width=1 height=1 /> + <rect x=13 y=32 width=1 height=1 /> + <rect x=15 y=32 width=1 height=1 /> + <rect x=16 y=32 width=1 height=1 /> + <rect x=17 y=32 width=1 height=1 /> + <rect x=19 y=32 width=1 height=1 /> + <rect x=22 y=32 width=1 height=1 /> + <rect x=24 y=32 width=1 height=1 /> + <rect x=25 y=32 width=1 height=1 /> + <rect x=27 y=32 width=1 height=1 /> + <rect x=31 y=32 width=1 height=1 /> +</svg>` + } + }), /* @__PURE__ */ h("p", null, /* @__PURE__ */ h(WalletLink, { + href: payURI ? payURI : `taler+http://pay/localhost:8083/2024.295-03N2YD9YYPBHM/` + }, "Or open your Taler wallet")), /* @__PURE__ */ h("p", null, /* @__PURE__ */ h("a", { + href: "https://wallet.taler.net/" + }, "Don't have a Taler wallet yet? Install it!"))), /* @__PURE__ */ h(Footer, null)); + } + function mount() { + try { + const fromLocation = new URL(window.location.href).searchParams; + const os = fromLocation.get("order_summary") || void 0; + if (os) { + P(/* @__PURE__ */ h(Head, { + order_summary: os + }), document.head); + } + const uri = fromLocation.get("pay_uri") || void 0; + const osu = fromLocation.get("order_status_url") || void 0; + const qr_code = uri ? S2(/* @__PURE__ */ h(QR, { + text: uri + })) : void 0; + P(/* @__PURE__ */ h(RequestPayment, { + payURI: uri, + order_status_url: osu, + qr_code + }), document.body); + } catch (e3) { + console.error("got error", e3); + if (e3 instanceof Error) { + document.body.innerText = `Fatal error: "${e3.message}". Please report this bug at https://bugs.gnunet.org/.`; + } + } + } + function buildTimeRendering() { + return { + head: S2(/* @__PURE__ */ h(Head, null)), + body: S2(/* @__PURE__ */ h(RequestPayment, null)) + }; + } + return __toCommonJS(RequestPayment_exports); +})(); +</script> + <script>page.mount()</script> + </body> + </html> +{ + status: 'payment-possible', + contractTerms: { + version: 0, + summary: 'Buy me!', + public_reorder_url: 'https://example.com/article42-share', + fulfillment_url: 'https://example.com/article42', + minimum_age: 0, + products: [], + h_wire: 'QBX16RM0NWB42PYKM1VWY6DJHRQ5SV7P9P62R4T9PDWKNC8D8DR7R9TG2S4MC0C4R89M08F279CRY4AVAMZYVHH0F56ASRSFYBGE238', + wire_method: 'x-taler-bank', + order_id: '2024.295-03N2YD9YYPBHM', + timestamp: { t_s: 1729533710 }, + pay_deadline: { t_s: 18446744073709 }, + wire_transfer_deadline: { t_s: 18446744073709 }, + merchant_base_url: 'http://localhost:8083/', + merchant: { name: 'Default Instance', address: {}, jurisdiction: {} }, + merchant_pub: 'MQ10NYV4G4TA9566QYVF0QZD31PKSKBSH24VEYMT2WDEWSXTVT90', + exchanges: [ [Object] ], + max_fee: 'TESTKUDOS:5', + amount: 'TESTKUDOS:5', + choices: [], + token_families: {}, + refund_deadline: { t_s: 18446744073709 }, + nonce: '4MPWDED6NHFCFWN39D6P6AJBSQVRETME0NNV6EQM5J2HQZNBQ7C0' + }, + transactionId: 'txn:payment:CKSWXY06CFR4682GJQ439Y3F23WEBCYMV4P8PYJEKTM1EEN65A90', + proposalId: 'CKSWXY06CFR4682GJQ439Y3F23WEBCYMV4P8PYJEKTM1EEN65A90', + amountEffective: 'TESTKUDOS:5.3', + amountRaw: 'TESTKUDOS:5', + contractTermsHash: 'HXJNY474D1952KXS1MWX20NAXMW4R0AAA4BWERKPDE6VRHDADYXR34QM5B0RJZRW0PBCRQBSQF9RDA757480M4ZY5JZV8FSBYGV68W8', + talerUri: 'taler+http://pay/localhost:8083/2024.295-03N2YD9YYPBHM/' +} +{ + code: 2009, + hint: 'The order we found does not match the provided contract hash.' +} +{ + code: 2105, + hint: 'The claim token used to authenticate the client is invalid for this order.', + detail: 'authentication with claim token provided but wrong' +} +{ + taler_pay_uri: 'taler+http://pay/localhost:8083/2024.295-03N2YD9YYPBHM/', + fulfillment_url: 'https://example.com/article42' +} +{ + taler_pay_uri: 'taler+http://pay/localhost:8083/2024.295-03N2YD9YYPBHM/', + fulfillment_url: 'https://example.com/article42' +} +{ + taler_pay_uri: 'taler+http://pay/localhost:8083/2024.295-03N2YD9YYPBHM/', + fulfillment_url: 'https://example.com/article42' +} +{ + fulfillment_url: 'https://example.com/article42', + refunded: false, + refund_pending: false, + refund_taken: 'TESTKUDOS:0', + refund_amount: 'TESTKUDOS:0' +} +{ + code: 2009, + hint: 'The order we found does not match the provided contract hash.' +} +{ + code: 2105, + hint: 'The claim token used to authenticate the client is invalid for this order.', + detail: 'authentication with claim token provided but wrong' +} +{ + fulfillment_url: 'https://example.com/article42', + refunded: false, + refund_pending: false, + refund_taken: 'TESTKUDOS:0', + refund_amount: 'TESTKUDOS:0' +} +{ + fulfillment_url: 'https://example.com/article42', + refunded: false, + refund_pending: false, + refund_taken: 'TESTKUDOS:0', + refund_amount: 'TESTKUDOS:0' +} +{ + taler_pay_uri: 'taler+http://pay/localhost:8083/2024.295-03Y70EY2FPW1T/?c=8VKSEJHAF5M4N949MCV56DCGWW', + fulfillment_url: 'https://example.com/article42' +} +{ + taler_pay_uri: 'taler+http://pay/localhost:8083/2024.295-03Y70EY2FPW1T/mysession2?c=8VKSEJHAF5M4N949MCV56DCGWW', + fulfillment_url: 'https://example.com/article42', + already_paid_order_id: '2024.295-03N2YD9YYPBHM' +} +location header: https://example.com/article42 +2024-10-21T18:01:50.534Z harness.ts INFO completed test in directory [ + "/tmp/taler-integrationtests-jtWkXo/merchant-spec-public-orders" +] +2024-10-21T18:01:50.552Z remote.ts INFO wallet: remote wallet disconnected +2024-10-21T18:01:50.553Z harness.ts WARN process wallet-wallet exited { + "code": 143, + "signal": null +} +2024-10-21T18:01:50.579Z remote.ts INFO wct: remote wallet disconnected +2024-10-21T18:01:50.580Z harness.ts WARN process wallet-wct exited { + "code": 143, + "signal": null +} +2024-10-21T18:01:50.611Z remote.ts INFO wnoct: remote wallet disconnected +2024-10-21T18:01:50.611Z harness.ts WARN process wallet-wnoct exited { + "code": 143, + "signal": null +} +2024-10-21T18:01:50.611Z testrunner.ts INFO done test merchant-spec-public-orders: pass +2024-10-21T18:01:50.617Z testrunner.ts INFO process exited code=0 signal=null +parent: got result {"name":"merchant-spec-public-orders","timeSec":3.882,"status":"pass"} +running payment-forgettable with timeout 60000ms +2024-10-21T18:01:50.759Z testrunner.ts INFO running test payment-forgettable +2024-10-21T18:01:50.760Z harness.ts INFO running test in directory [ + "/tmp/taler-integrationtests-jtWkXo/payment-forgettable" +] +2024-10-21T18:01:50.760Z harness.ts INFO running command dropdb taler-integrationtest +2024-10-21T18:01:50.801Z harness.ts INFO running command createdb taler-integrationtest +2024-10-21T18:01:50.867Z harness.ts INFO starting fakebank +2024-10-21T18:01:50.867Z harness.ts INFO spawning process (bank): taler-fakebank-run -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/bank.conf' --signup-bonus TESTKUDOS:100 +2024-10-21T18:01:51.347Z harness.ts INFO child process exchange-dbinit exited (0 / null) +2024-10-21T18:01:51.348Z harness.ts INFO spawning process (exchange-crypto-eddsa-testexchange-1): taler-exchange-secmod-eddsa -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:51.349Z harness.ts INFO spawning process (exchange-crypto-cs-testexchange-1): taler-exchange-secmod-cs -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:51.350Z harness.ts INFO spawning process (exchange-crypto-rsa-testexchange-1): taler-exchange-secmod-rsa -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:51.352Z harness.ts INFO spawning process (exchange-wirewatch-testexchange-1): taler-exchange-wirewatch -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/exchange-testexchange-1.conf' --longpoll-timeout=5s +2024-10-21T18:01:51.354Z harness.ts INFO spawning process (exchange-transfer-testexchange-1): taler-exchange-transfer -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/exchange-testexchange-1.conf' +2024-10-21T18:01:51.355Z harness.ts INFO spawning process (exchange-aggregator-testexchange-1): taler-exchange-aggregator -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/exchange-testexchange-1.conf' +2024-10-21T18:01:51.356Z harness.ts INFO spawning process (exchange-httpd-testexchange-1): taler-exchange-httpd -LINFO -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/exchange-testexchange-1.conf' +2024-10-21T18:01:51.391Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533711391},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:51.391Z harness.ts INFO waiting 10ms on exchange (testexchange-1) +2024-10-21T18:01:51.403Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533711403},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:51.403Z harness.ts INFO waiting 15ms on exchange (testexchange-1) +2024-10-21T18:01:51.420Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533711420},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:51.420Z harness.ts INFO waiting 22ms on exchange (testexchange-1) +2024-10-21T18:01:51.444Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533711444},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:51.444Z harness.ts INFO waiting 33ms on exchange (testexchange-1) +2024-10-21T18:01:51.479Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533711479},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:51.479Z harness.ts INFO waiting 49ms on exchange (testexchange-1) +2024-10-21T18:01:51.531Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533711531},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:51.531Z harness.ts INFO waiting 73ms on exchange (testexchange-1) +2024-10-21T18:01:51.628Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/exchange-testexchange-1.conf' download sign upload +2024-10-21T18:01:51.644Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/exchange-testexchange-1.conf' enable-account 'payto://x-taler-bank/localhost/exchange?receiver-name=exchange' upload +2024-10-21T18:01:51.654Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/exchange-testexchange-1.conf' wire-fee 2024 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:51.663Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/exchange-testexchange-1.conf' wire-fee 2025 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:51.672Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/exchange-testexchange-1.conf' wire-fee 2026 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:51.681Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/exchange-testexchange-1.conf' wire-fee 2027 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:51.691Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/exchange-testexchange-1.conf' wire-fee 2028 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:51.701Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/exchange-testexchange-1.conf' global-fee now 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.00' 1h 1year 5 upload +2024-10-21T18:01:51.712Z harness.ts INFO running command taler-merchant-dbinit -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/merchant-testmerchant-1.conf' +2024-10-21T18:01:52.185Z harness.ts INFO spawning process (merchant-httpd-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/merchant-testmerchant-1.conf' +2024-10-21T18:01:52.187Z harness.ts INFO spawning process (merchant-exchangekeyupdate-testmerchant-1): taler-merchant-exchangekeyupdate taler-merchant-exchangekeyupdate -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/merchant-testmerchant-1.conf' +2024-10-21T18:01:52.188Z harness.ts INFO spawning process (merchant-kyccheck-testmerchant-1): taler-merchant-kyccheck taler-merchant-kyccheck -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/merchant-testmerchant-1.conf' +2024-10-21T18:01:52.191Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533712191},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:52.191Z harness.ts INFO waiting 10ms on merchant (testmerchant-1) +2024-10-21T18:01:52.202Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533712202},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:52.202Z harness.ts INFO waiting 15ms on merchant (testmerchant-1) +2024-10-21T18:01:52.218Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533712218},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:52.219Z harness.ts INFO waiting 22ms on merchant (testmerchant-1) +2024-10-21T18:01:52.243Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533712242},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:52.243Z harness.ts INFO waiting 33ms on merchant (testmerchant-1) +2024-10-21T18:01:52.278Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533712278},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:52.278Z harness.ts INFO waiting 49ms on merchant (testmerchant-1) +2024-10-21T18:01:52.331Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533712331},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:52.331Z harness.ts INFO waiting 73ms on merchant (testmerchant-1) +2024-10-21T18:01:52.410Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533712410},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:52.410Z harness.ts INFO waiting 109ms on merchant (testmerchant-1) +2024-10-21T18:01:52.523Z harness.ts INFO adding instance 'default' +2024-10-21T18:01:52.534Z harness.ts INFO adding instance 'minst1' +2024-10-21T18:01:52.538Z harness.ts INFO spawning process (wallet-wallet): taler-wallet-cli --wallet-db '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/walletdb-wallet.sqlite3' -LTRACE --no-throttle advanced serve --unix-path '/tmp/taler-integrationtests-jtWkXo/payment-forgettable/wallet.sock' --no-init +2024-10-21T18:01:52.539Z harness.ts INFO hint: connect to wallet using taler-wallet-cli --wallet-connection=/tmp/taler-integrationtests-jtWkXo/payment-forgettable/wallet.sock +2024-10-21T18:01:52.540Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/payment-forgettable/wallet.sock +2024-10-21T18:01:52.540Z harness.ts INFO waiting on wallet for 10ms +2024-10-21T18:01:52.551Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/payment-forgettable/wallet.sock +2024-10-21T18:01:52.551Z harness.ts INFO waiting on wallet for 15ms +2024-10-21T18:01:52.567Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/payment-forgettable/wallet.sock +2024-10-21T18:01:52.567Z harness.ts INFO waiting on wallet for 22ms +2024-10-21T18:01:52.590Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/payment-forgettable/wallet.sock +2024-10-21T18:01:52.590Z harness.ts INFO waiting on wallet for 33ms +2024-10-21T18:01:52.624Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/payment-forgettable/wallet.sock +2024-10-21T18:01:52.624Z harness.ts INFO waiting on wallet for 49ms +2024-10-21T18:01:52.674Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/payment-forgettable/wallet.sock +2024-10-21T18:01:52.674Z harness.ts INFO waiting on wallet for 73ms +2024-10-21T18:01:52.750Z harness.ts INFO connection to wallet-core succeeded +2024-10-21T18:01:52.751Z twrpc-impl.node.ts INFO connected! +setup done! +user-bz2qf6j5vkh0n99z pw-wgdbp5cnwhmth45x +2024-10-21T18:01:53.034Z bank-api-client.ts INFO confirming withdrawal operation via http://localhost:8082/accounts/user-bz2qf6j5vkh0n99z/withdrawals/47RCBTPRS5KCGKX8FDY8JZ4JYN3986PF93XQJXDGQ3VTK0826YR0/confirm +testing with forgettable field without hash +2024-10-21T18:01:53.885Z harness.ts INFO completed test in directory [ + "/tmp/taler-integrationtests-jtWkXo/payment-forgettable" +] +2024-10-21T18:01:53.925Z remote.ts INFO wallet: remote wallet disconnected +2024-10-21T18:01:53.925Z harness.ts WARN process wallet-wallet exited { + "code": 143, + "signal": null +} +2024-10-21T18:01:53.925Z testrunner.ts INFO done test payment-forgettable: pass +2024-10-21T18:01:53.930Z testrunner.ts INFO process exited code=0 signal=null +parent: got result {"name":"payment-forgettable","timeSec":3.165,"status":"pass"} +running paywall-flow with timeout 60000ms +2024-10-21T18:01:54.073Z testrunner.ts INFO running test paywall-flow +2024-10-21T18:01:54.073Z harness.ts INFO running test in directory [ + "/tmp/taler-integrationtests-jtWkXo/paywall-flow" +] +2024-10-21T18:01:54.074Z harness.ts INFO running command dropdb taler-integrationtest +2024-10-21T18:01:54.113Z harness.ts INFO running command createdb taler-integrationtest +2024-10-21T18:01:54.175Z harness.ts INFO starting fakebank +2024-10-21T18:01:54.176Z harness.ts INFO spawning process (bank): taler-fakebank-run -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/bank.conf' --signup-bonus TESTKUDOS:100 +2024-10-21T18:01:54.675Z harness.ts INFO child process exchange-dbinit exited (0 / null) +2024-10-21T18:01:54.675Z harness.ts INFO spawning process (exchange-crypto-eddsa-testexchange-1): taler-exchange-secmod-eddsa -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:54.677Z harness.ts INFO spawning process (exchange-crypto-cs-testexchange-1): taler-exchange-secmod-cs -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:54.678Z harness.ts INFO spawning process (exchange-crypto-rsa-testexchange-1): taler-exchange-secmod-rsa -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:54.679Z harness.ts INFO spawning process (exchange-wirewatch-testexchange-1): taler-exchange-wirewatch -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/exchange-testexchange-1.conf' --longpoll-timeout=5s +2024-10-21T18:01:54.681Z harness.ts INFO spawning process (exchange-transfer-testexchange-1): taler-exchange-transfer -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/exchange-testexchange-1.conf' +2024-10-21T18:01:54.683Z harness.ts INFO spawning process (exchange-aggregator-testexchange-1): taler-exchange-aggregator -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/exchange-testexchange-1.conf' +2024-10-21T18:01:54.684Z harness.ts INFO spawning process (exchange-httpd-testexchange-1): taler-exchange-httpd -LINFO -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/exchange-testexchange-1.conf' +2024-10-21T18:01:54.691Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533714690},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:54.691Z harness.ts INFO waiting 10ms on exchange (testexchange-1) +2024-10-21T18:01:54.726Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533714726},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:54.726Z harness.ts INFO waiting 15ms on exchange (testexchange-1) +2024-10-21T18:01:54.743Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533714743},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:54.743Z harness.ts INFO waiting 22ms on exchange (testexchange-1) +2024-10-21T18:01:54.767Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533714767},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:54.767Z harness.ts INFO waiting 33ms on exchange (testexchange-1) +2024-10-21T18:01:54.802Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533714802},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:54.802Z harness.ts INFO waiting 49ms on exchange (testexchange-1) +2024-10-21T18:01:54.853Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533714853},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:54.853Z harness.ts INFO waiting 73ms on exchange (testexchange-1) +2024-10-21T18:01:54.946Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/exchange-testexchange-1.conf' download sign upload +2024-10-21T18:01:54.963Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/exchange-testexchange-1.conf' enable-account 'payto://x-taler-bank/localhost/exchange?receiver-name=exchange' upload +2024-10-21T18:01:54.975Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/exchange-testexchange-1.conf' wire-fee 2024 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:54.986Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/exchange-testexchange-1.conf' wire-fee 2025 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:54.996Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/exchange-testexchange-1.conf' wire-fee 2026 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:55.007Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/exchange-testexchange-1.conf' wire-fee 2027 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:55.016Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/exchange-testexchange-1.conf' wire-fee 2028 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:55.058Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/exchange-testexchange-1.conf' global-fee now 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.00' 1h 1year 5 upload +2024-10-21T18:01:55.104Z harness.ts INFO running command taler-merchant-dbinit -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/merchant-testmerchant-1.conf' +2024-10-21T18:01:55.538Z harness.ts INFO spawning process (merchant-httpd-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/merchant-testmerchant-1.conf' +2024-10-21T18:01:55.539Z harness.ts INFO spawning process (merchant-exchangekeyupdate-testmerchant-1): taler-merchant-exchangekeyupdate taler-merchant-exchangekeyupdate -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/merchant-testmerchant-1.conf' +2024-10-21T18:01:55.540Z harness.ts INFO spawning process (merchant-kyccheck-testmerchant-1): taler-merchant-kyccheck taler-merchant-kyccheck -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/paywall-flow/merchant-testmerchant-1.conf' +2024-10-21T18:01:55.542Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533715542},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:55.542Z harness.ts INFO waiting 10ms on merchant (testmerchant-1) +2024-10-21T18:01:55.553Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533715553},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:55.553Z harness.ts INFO waiting 15ms on merchant (testmerchant-1) +2024-10-21T18:01:55.570Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533715570},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:55.570Z harness.ts INFO waiting 22ms on merchant (testmerchant-1) +2024-10-21T18:01:55.594Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533715593},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:55.594Z harness.ts INFO waiting 33ms on merchant (testmerchant-1) +2024-10-21T18:01:55.629Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533715629},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:55.629Z harness.ts INFO waiting 49ms on merchant (testmerchant-1) +2024-10-21T18:01:55.681Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533715681},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:55.681Z harness.ts INFO waiting 73ms on merchant (testmerchant-1) +2024-10-21T18:01:55.761Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533715761},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:55.761Z harness.ts INFO waiting 109ms on merchant (testmerchant-1) +2024-10-21T18:01:55.873Z harness.ts INFO adding instance 'default' +2024-10-21T18:01:55.882Z harness.ts INFO adding instance 'minst1' +2024-10-21T18:01:55.885Z harness.ts INFO spawning process (wallet-wallet): taler-wallet-cli --wallet-db '/tmp/taler-integrationtests-jtWkXo/paywall-flow/walletdb-wallet.sqlite3' -LTRACE --no-throttle advanced serve --unix-path '/tmp/taler-integrationtests-jtWkXo/paywall-flow/wallet.sock' --no-init +2024-10-21T18:01:55.887Z harness.ts INFO hint: connect to wallet using taler-wallet-cli --wallet-connection=/tmp/taler-integrationtests-jtWkXo/paywall-flow/wallet.sock +2024-10-21T18:01:55.887Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/paywall-flow/wallet.sock +2024-10-21T18:01:55.887Z harness.ts INFO waiting on wallet for 10ms +2024-10-21T18:01:55.900Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/paywall-flow/wallet.sock +2024-10-21T18:01:55.900Z harness.ts INFO waiting on wallet for 15ms +2024-10-21T18:01:55.918Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/paywall-flow/wallet.sock +2024-10-21T18:01:55.918Z harness.ts INFO waiting on wallet for 22ms +2024-10-21T18:01:55.941Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/paywall-flow/wallet.sock +2024-10-21T18:01:55.941Z harness.ts INFO waiting on wallet for 33ms +2024-10-21T18:01:55.975Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/paywall-flow/wallet.sock +2024-10-21T18:01:55.975Z harness.ts INFO waiting on wallet for 49ms +2024-10-21T18:01:56.029Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/paywall-flow/wallet.sock +2024-10-21T18:01:56.029Z harness.ts INFO waiting on wallet for 73ms +2024-10-21T18:01:56.105Z harness.ts INFO connection to wallet-core succeeded +2024-10-21T18:01:56.106Z twrpc-impl.node.ts INFO connected! +setup done! +user-3b05bcq7j7nb15d1 pw-ks99rmw86r83mqm4 +2024-10-21T18:01:56.390Z bank-api-client.ts INFO confirming withdrawal operation via http://localhost:8082/accounts/user-3b05bcq7j7nb15d1/withdrawals/ZW6E8XQWCGE2XY9M05383A4EJRZPQ04TK7V7R7A38XFNBV07BF10/confirm +{ + taler_pay_uri: 'taler+http://pay/localhost:8083/2024.295-0150RS0P4M334/mysession-one?c=WK2XM4MHVE2E52PVVN4X4RT844', + already_paid_order_id: undefined +} +requesting http://localhost:8083/orders/2024.295-0150RS0P4M334?token=WK2XM4MHVE2E52PVVN4X4RT844&session_id=mysession-one +response body { + taler_pay_uri: 'taler+http://pay/localhost:8083/2024.295-0150RS0P4M334/mysession-one?c=WK2XM4MHVE2E52PVVN4X4RT844', + fulfillment_url: 'https://example.com/article42' +} +{ + fulfillment_url: 'https://example.com/article42', + refunded: false, + refund_pending: false, + refund_taken: 'TESTKUDOS:0', + refund_amount: 'TESTKUDOS:0' +} +requesting public status <ref *1> URLImpl { + _url: { + scheme: 'http', + username: '', + password: '', + host: 'localhost', + port: 8083, + path: [ 'orders', '2024.295-01YFAX3PQSX3M' ], + query: 'token=B0BTQ6DQ990E77DVTYDQJ75Z5M&session_id=mysession-three', + fragment: null + }, + _query: URLSearchParamsImpl { + _list: [ [Array], [Array] ], + _url: [Circular *1] + } +} +{ + taler_pay_uri: 'taler+http://pay/localhost:8083/2024.295-01YFAX3PQSX3M/mysession-three?c=B0BTQ6DQ990E77DVTYDQJ75Z5M', + fulfillment_url: 'https://example.com/article42', + already_paid_order_id: '2024.295-0150RS0P4M334' +} +2024-10-21T18:01:56.819Z harness.ts INFO completed test in directory [ + "/tmp/taler-integrationtests-jtWkXo/paywall-flow" +] +2024-10-21T18:01:56.857Z remote.ts INFO wallet: remote wallet disconnected +2024-10-21T18:01:56.857Z harness.ts WARN process wallet-wallet exited { + "code": 143, + "signal": null +} +2024-10-21T18:01:56.857Z testrunner.ts INFO done test paywall-flow: pass +2024-10-21T18:01:56.862Z testrunner.ts INFO process exited code=0 signal=null +parent: got result {"name":"paywall-flow","timeSec":2.784,"status":"pass"} +running merchant-categories with timeout 60000ms +2024-10-21T18:01:56.993Z testrunner.ts INFO running test merchant-categories +2024-10-21T18:01:56.994Z harness.ts INFO running test in directory [ + "/tmp/taler-integrationtests-jtWkXo/merchant-categories" +] +2024-10-21T18:01:56.995Z harness.ts INFO running command dropdb taler-integrationtest +2024-10-21T18:01:57.036Z harness.ts INFO running command createdb taler-integrationtest +2024-10-21T18:01:57.096Z harness.ts INFO running command taler-merchant-dbinit -c '/tmp/taler-integrationtests-jtWkXo/merchant-categories/merchant-testmerchant-1.conf' +2024-10-21T18:01:57.536Z harness.ts INFO spawning process (merchant-httpd-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-categories/merchant-testmerchant-1.conf' +2024-10-21T18:01:57.537Z harness.ts INFO spawning process (merchant-exchangekeyupdate-testmerchant-1): taler-merchant-exchangekeyupdate taler-merchant-exchangekeyupdate -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-categories/merchant-testmerchant-1.conf' +2024-10-21T18:01:57.538Z harness.ts INFO spawning process (merchant-kyccheck-testmerchant-1): taler-merchant-kyccheck taler-merchant-kyccheck -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/merchant-categories/merchant-testmerchant-1.conf' +2024-10-21T18:01:57.553Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533717553},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:57.553Z harness.ts INFO waiting 10ms on merchant (testmerchant-1) +2024-10-21T18:01:57.565Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533717565},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:57.565Z harness.ts INFO waiting 15ms on merchant (testmerchant-1) +2024-10-21T18:01:57.581Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533717581},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:57.581Z harness.ts INFO waiting 22ms on merchant (testmerchant-1) +2024-10-21T18:01:57.605Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533717605},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:57.605Z harness.ts INFO waiting 33ms on merchant (testmerchant-1) +2024-10-21T18:01:57.640Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533717640},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:57.640Z harness.ts INFO waiting 49ms on merchant (testmerchant-1) +2024-10-21T18:01:57.691Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533717691},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:57.691Z harness.ts INFO waiting 73ms on merchant (testmerchant-1) +{ + currency: 'TESTKUDOS', + currencies: { + TESTKUDOS: { + name: 'Test-kudos (Taler Demonstrator)', + currency: 'TESTKUDOS', + num_fractional_input_digits: 2, + num_fractional_normal_digits: 2, + num_fractional_trailing_zero_digits: 2, + alt_unit_names: [Object] + } + }, + exchanges: [ + { + master_pub: 'EMBQCGGD8ZRWMF49K3W8R8PDVQ0DBQQ44EBHR03JCZP9ZKHTBJR0', + currency: 'TESTKUDOS', + base_url: 'http://localhost:8081/' + } + ], + implementation: 'urn:net:taler:specs:taler-merchant:c-reference', + name: 'taler-merchant', + version: '17:0:13' +} +2024-10-21T18:01:57.775Z harness.ts INFO adding instance 'default' +http://localhost:8083/private/categories +status 200 +{ category_id: 1 } +{ + "categories": [ + { + "id": 0, + "name": "default" + }, + { + "id": 1, + "name_i18n": {}, + "name": "Snacks" + } + ], + "products": [ + { + "description": "Bla Bla", + "description_i18n": {}, + "unit": "item", + "price": "TESTKUDOS:2", + "image": "", + "categories": [ + 1 + ], + "taxes": [], + "total_stock": 9223372036854776000, + "minimum_age": 0, + "product_serial": 2, + "product_id": "bar" + }, + { + "description": "Eggs", + "description_i18n": {}, + "unit": "item", + "price": "TESTKUDOS:42", + "image": "", + "categories": [ + 0 + ], + "taxes": [], + "total_stock": 9223372036854776000, + "minimum_age": 0, + "product_serial": 3, + "product_id": "baz" + }, + { + "description": "Bla Bla", + "description_i18n": {}, + "unit": "item", + "price": "TESTKUDOS:6", + "image": "", + "categories": [ + 0 + ], + "taxes": [], + "total_stock": 9223372036854776000, + "minimum_age": 0, + "product_serial": 1, + "product_id": "foo" + } + ] +} +prod foo { + description: 'Bla Bla', + description_i18n: {}, + unit: 'item', + price: 'TESTKUDOS:6', + image: '', + categories: [ 0 ], + taxes: [], + total_stock: 9223372036854776000, + minimum_age: 0, + product_serial: 1, + product_id: 'foo' +} +prod bar { + description: 'Bla Bla', + description_i18n: {}, + unit: 'item', + price: 'TESTKUDOS:2', + image: '', + categories: [ 1 ], + taxes: [], + total_stock: 9223372036854776000, + minimum_age: 0, + product_serial: 2, + product_id: 'bar' +} +2024-10-21T18:01:57.793Z harness.ts INFO completed test in directory [ + "/tmp/taler-integrationtests-jtWkXo/merchant-categories" +] +2024-10-21T18:01:57.797Z testrunner.ts INFO done test merchant-categories: pass +2024-10-21T18:01:57.802Z testrunner.ts INFO process exited code=0 signal=null +parent: got result {"name":"merchant-categories","timeSec":0.803,"status":"pass"} +running kyc-merchant-deposit with timeout 60000ms +2024-10-21T18:01:57.929Z testrunner.ts INFO running test kyc-merchant-deposit +2024-10-21T18:01:57.930Z harness.ts INFO running test in directory [ + "/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit" +] +2024-10-21T18:01:57.930Z harness.ts INFO running command dropdb taler-integrationtest +2024-10-21T18:01:57.965Z harness.ts INFO running command createdb taler-integrationtest +2024-10-21T18:01:58.025Z harness.ts INFO starting fakebank +2024-10-21T18:01:58.026Z harness.ts INFO spawning process (bank): taler-fakebank-run -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/bank.conf' --signup-bonus TESTKUDOS:100 +2024-10-21T18:01:58.467Z harness.ts INFO child process exchange-dbinit exited (0 / null) +2024-10-21T18:01:58.468Z harness.ts INFO spawning process (exchange-crypto-eddsa-testexchange-1): taler-exchange-secmod-eddsa -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:58.470Z harness.ts INFO spawning process (exchange-crypto-cs-testexchange-1): taler-exchange-secmod-cs -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:58.472Z harness.ts INFO spawning process (exchange-crypto-rsa-testexchange-1): taler-exchange-secmod-rsa -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:01:58.473Z harness.ts INFO spawning process (exchange-wirewatch-testexchange-1): taler-exchange-wirewatch -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/exchange-testexchange-1.conf' --longpoll-timeout=5s +2024-10-21T18:01:58.474Z harness.ts INFO spawning process (exchange-transfer-testexchange-1): taler-exchange-transfer -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/exchange-testexchange-1.conf' +2024-10-21T18:01:58.476Z harness.ts INFO spawning process (exchange-aggregator-testexchange-1): taler-exchange-aggregator -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/exchange-testexchange-1.conf' +2024-10-21T18:01:58.478Z harness.ts INFO spawning process (exchange-httpd-testexchange-1): taler-exchange-httpd -LINFO -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/exchange-testexchange-1.conf' +2024-10-21T18:01:58.522Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533718522},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:58.522Z harness.ts INFO waiting 10ms on exchange (testexchange-1) +2024-10-21T18:01:58.535Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533718535},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:58.535Z harness.ts INFO waiting 15ms on exchange (testexchange-1) +2024-10-21T18:01:58.552Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533718552},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:58.552Z harness.ts INFO waiting 22ms on exchange (testexchange-1) +2024-10-21T18:01:58.576Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533718575},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:58.576Z harness.ts INFO waiting 33ms on exchange (testexchange-1) +2024-10-21T18:01:58.610Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533718610},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:58.610Z harness.ts INFO waiting 49ms on exchange (testexchange-1) +2024-10-21T18:01:58.678Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/exchange-testexchange-1.conf' download sign upload +2024-10-21T18:01:58.695Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/exchange-testexchange-1.conf' enable-account 'payto://x-taler-bank/localhost/exchange?receiver-name=exchange' upload +2024-10-21T18:01:58.705Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/exchange-testexchange-1.conf' wire-fee 2024 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:58.714Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/exchange-testexchange-1.conf' wire-fee 2025 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:58.723Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/exchange-testexchange-1.conf' wire-fee 2026 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:58.733Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/exchange-testexchange-1.conf' wire-fee 2027 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:58.742Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/exchange-testexchange-1.conf' wire-fee 2028 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:01:58.751Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/exchange-testexchange-1.conf' global-fee now 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.00' 1h 1year 5 upload +2024-10-21T18:01:58.766Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/exchange-testexchange-1.conf' aml-enable WWC8VRXCGRQYYTQPDDEE38YN9RQ2ARE2S8BSQCW4J1QVM4GN67D0 Alice rw upload +2024-10-21T18:01:58.777Z harness.ts INFO spawning process (wallet-wallet): taler-wallet-cli --wallet-db :memory: -LTRACE --no-throttle advanced serve --unix-path '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/wallet.sock' --no-init +2024-10-21T18:01:58.778Z harness.ts INFO hint: connect to wallet using taler-wallet-cli --wallet-connection=/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/wallet.sock +2024-10-21T18:01:58.778Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/wallet.sock +2024-10-21T18:01:58.778Z harness.ts INFO waiting on wallet for 10ms +2024-10-21T18:01:58.789Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/wallet.sock +2024-10-21T18:01:58.789Z harness.ts INFO waiting on wallet for 15ms +2024-10-21T18:01:58.806Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/wallet.sock +2024-10-21T18:01:58.806Z harness.ts INFO waiting on wallet for 22ms +2024-10-21T18:01:58.828Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/wallet.sock +2024-10-21T18:01:58.828Z harness.ts INFO waiting on wallet for 33ms +2024-10-21T18:01:58.864Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/wallet.sock +2024-10-21T18:01:58.864Z harness.ts INFO waiting on wallet for 49ms +2024-10-21T18:01:58.917Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/wallet.sock +2024-10-21T18:01:58.917Z harness.ts INFO waiting on wallet for 73ms +2024-10-21T18:01:58.992Z harness.ts INFO connection to wallet-core succeeded +2024-10-21T18:01:58.992Z twrpc-impl.node.ts INFO connected! +2024-10-21T18:01:59.012Z harness.ts INFO running command taler-merchant-dbinit -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/merchant-testmerchant-1.conf' +wallet-core notification { type: 'idle' } +2024-10-21T18:01:59.416Z harness.ts INFO spawning process (merchant-httpd-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/merchant-testmerchant-1.conf' +2024-10-21T18:01:59.417Z harness.ts INFO spawning process (merchant-exchangekeyupdate-testmerchant-1): taler-merchant-exchangekeyupdate taler-merchant-exchangekeyupdate -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/merchant-testmerchant-1.conf' +2024-10-21T18:01:59.418Z harness.ts INFO spawning process (merchant-kyccheck-testmerchant-1): taler-merchant-kyccheck taler-merchant-kyccheck -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit/merchant-testmerchant-1.conf' +2024-10-21T18:01:59.420Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533719420},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:59.420Z harness.ts INFO waiting 10ms on merchant (testmerchant-1) +2024-10-21T18:01:59.431Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533719431},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:59.431Z harness.ts INFO waiting 15ms on merchant (testmerchant-1) +2024-10-21T18:01:59.448Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533719448},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:59.448Z harness.ts INFO waiting 22ms on merchant (testmerchant-1) +2024-10-21T18:01:59.471Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533719471},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:59.471Z harness.ts INFO waiting 33ms on merchant (testmerchant-1) +2024-10-21T18:01:59.506Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533719506},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:59.506Z harness.ts INFO waiting 49ms on merchant (testmerchant-1) +2024-10-21T18:01:59.557Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533719557},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:59.557Z harness.ts INFO waiting 73ms on merchant (testmerchant-1) +2024-10-21T18:01:59.635Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533719635},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:01:59.635Z harness.ts INFO waiting 109ms on merchant (testmerchant-1) +2024-10-21T18:01:59.748Z harness.ts INFO adding instance 'default' +2024-10-21T18:01:59.757Z harness.ts INFO adding instance 'minst1' +STEP: env-setup-done +user-7crhaptg0prbzrjx pw-jsggkvr64w5fx43a +wallet-core notification { + type: 'exchange-state-transition', + exchangeBaseUrl: 'http://localhost:8081/', + newExchangeState: { + exchangeEntryStatus: 'ephemeral', + exchangeUpdateStatus: 'initial-update', + tosStatus: 'missing-tos' + } +} +wallet-core notification { + type: 'exchange-state-transition', + exchangeBaseUrl: 'http://localhost:8081/', + newExchangeState: { + exchangeEntryStatus: 'ephemeral', + exchangeUpdateStatus: 'initial-update', + tosStatus: 'missing-tos' + }, + oldExchangeState: { + exchangeEntryStatus: 'ephemeral', + exchangeUpdateStatus: 'initial-update', + tosStatus: 'missing-tos' + } +} +wallet-core notification { + type: 'exchange-state-transition', + exchangeBaseUrl: 'http://localhost:8081/', + oldExchangeState: { + exchangeEntryStatus: 'ephemeral', + exchangeUpdateStatus: 'initial-update', + tosStatus: 'missing-tos' + }, + newExchangeState: { + exchangeEntryStatus: 'ephemeral', + exchangeUpdateStatus: 'initial-update', + tosStatus: 'missing-tos' + } +} +wallet-core notification { + type: 'exchange-state-transition', + exchangeBaseUrl: 'http://localhost:8081/', + newExchangeState: { + exchangeEntryStatus: 'ephemeral', + exchangeUpdateStatus: 'ready', + tosStatus: 'missing-tos' + }, + oldExchangeState: { + exchangeEntryStatus: 'ephemeral', + exchangeUpdateStatus: 'initial-update', + tosStatus: 'missing-tos' + } +} +wallet-core notification { + type: 'transaction-state-transition', + oldTxState: { major: 'dialog', minor: 'proposed' }, + newTxState: { major: 'pending', minor: 'bank-register-reserve' }, + transactionId: 'txn:withdrawal:WGAFQ3MH35RKER18D6Z9D6KS60GZQFMTPG3EC0JXN5CED2MGRFC0' +} +wallet-core notification { + type: 'balance-change', + hintTransactionId: 'txn:withdrawal:WGAFQ3MH35RKER18D6Z9D6KS60GZQFMTPG3EC0JXN5CED2MGRFC0' +} +wallet-core notification { + type: 'transaction-state-transition', + transactionId: 'txn:withdrawal:WGAFQ3MH35RKER18D6Z9D6KS60GZQFMTPG3EC0JXN5CED2MGRFC0', + oldTxState: { major: 'pending', minor: 'bank-register-reserve' }, + newTxState: { major: 'pending', minor: 'bank-register-reserve' } +} +wallet-core notification { + type: 'exchange-state-transition', + exchangeBaseUrl: 'http://localhost:8081/', + newExchangeState: { + exchangeEntryStatus: 'used', + exchangeUpdateStatus: 'ready', + tosStatus: 'missing-tos' + }, + oldExchangeState: { + exchangeEntryStatus: 'ephemeral', + exchangeUpdateStatus: 'ready', + tosStatus: 'missing-tos' + } +} +wallet-core notification { + type: 'transaction-state-transition', + oldTxState: { major: 'pending', minor: 'bank-register-reserve' }, + newTxState: { major: 'pending', minor: 'bank-confirm-transfer' }, + transactionId: 'txn:withdrawal:WGAFQ3MH35RKER18D6Z9D6KS60GZQFMTPG3EC0JXN5CED2MGRFC0' +} +2024-10-21T18:02:00.030Z bank-api-client.ts INFO confirming withdrawal operation via http://localhost:8082/accounts/user-7crhaptg0prbzrjx/withdrawals/5J9EMK37YMQX6S9PNN16CXPTXN2AAAK6EYPC5MZ3T8QGYMS3H230/confirm +wallet-core notification { + type: 'transaction-state-transition', + oldTxState: { major: 'pending', minor: 'bank-confirm-transfer' }, + newTxState: { major: 'pending', minor: 'exchange-wait-reserve' }, + transactionId: 'txn:withdrawal:WGAFQ3MH35RKER18D6Z9D6KS60GZQFMTPG3EC0JXN5CED2MGRFC0' +} +wallet-core notification { + type: 'transaction-state-transition', + oldTxState: { major: 'pending', minor: 'exchange-wait-reserve' }, + newTxState: { major: 'pending', minor: 'withdraw-coins' }, + transactionId: 'txn:withdrawal:WGAFQ3MH35RKER18D6Z9D6KS60GZQFMTPG3EC0JXN5CED2MGRFC0' +} +wallet-core notification { + type: 'exchange-state-transition', + exchangeBaseUrl: 'http://localhost:8081/', + newExchangeState: { + exchangeEntryStatus: 'used', + exchangeUpdateStatus: 'ready', + tosStatus: 'missing-tos' + }, + oldExchangeState: { + exchangeEntryStatus: 'used', + exchangeUpdateStatus: 'ready', + tosStatus: 'missing-tos' + } +} +wallet-core notification { + type: 'exchange-state-transition', + exchangeBaseUrl: 'http://localhost:8081/', + oldExchangeState: { + exchangeEntryStatus: 'used', + exchangeUpdateStatus: 'ready', + tosStatus: 'missing-tos' + }, + newExchangeState: { + exchangeEntryStatus: 'used', + exchangeUpdateStatus: 'ready', + tosStatus: 'missing-tos' + } +} +wallet-core notification { + type: 'transaction-state-transition', + oldTxState: { major: 'pending', minor: 'withdraw-coins' }, + newTxState: { major: 'done' }, + transactionId: 'txn:withdrawal:WGAFQ3MH35RKER18D6Z9D6KS60GZQFMTPG3EC0JXN5CED2MGRFC0' +} +wallet-core notification { + type: 'balance-change', + hintTransactionId: 'txn:withdrawal:WGAFQ3MH35RKER18D6Z9D6KS60GZQFMTPG3EC0JXN5CED2MGRFC0' +} +2024-10-21T18:02:00.342Z test-kyc-merchant-deposit.ts INFO requesting GET http://localhost:8083/private/kyc +2024-10-21T18:02:00.344Z test-kyc-merchant-deposit.ts INFO mechant kyc status: { + "kyc_data": [ + { + "payto_uri": "payto://x-taler-bank/localhost/merchant-default?receiver-name=merchant-default", + "exchange_url": "http://localhost:8081/", + "exchange_http_status": 404, + "no_keys": false, + "auth_conflict": false, + "exchange_code": 1939, + "limits": [ + { + "operation_type": "DEPOSIT", + "timeframe": { + "d_us": 0 + }, + "threshold": "TESTKUDOS:0", + "soft_limit": true + } + ], + "payto_kycauths": [ + "payto://x-taler-bank/localhost/exchange?receiver-name=exchange&amount=TESTKUDOS:0.01&message=KYC:ACWT10Z8A9MBXNEYH5A91W1AVSCNRQAB8KFEHJXQTVWV468NP310" + ] + } + ] +} +2024-10-21T18:02:00.348Z test-kyc-merchant-deposit.ts INFO order creation status: 451 +2024-10-21T18:02:00.349Z bank-api-client.ts INFO add-kycauth response status: 200 +2024-10-21T18:02:00.351Z test-kyc-merchant-deposit.ts INFO kyc resp 2: { + "kyc_data": [ + { + "payto_uri": "payto://x-taler-bank/localhost/merchant-default?receiver-name=merchant-default", + "exchange_url": "http://localhost:8081/", + "exchange_http_status": 404, + "no_keys": false, + "auth_conflict": false, + "exchange_code": 1939, + "limits": [ + { + "operation_type": "DEPOSIT", + "timeframe": { + "d_us": 0 + }, + "threshold": "TESTKUDOS:0", + "soft_limit": true + } + ], + "payto_kycauths": [ + "payto://x-taler-bank/localhost/exchange?receiver-name=exchange&amount=TESTKUDOS:0.01&message=KYC:ACWT10Z8A9MBXNEYH5A91W1AVSCNRQAB8KFEHJXQTVWV468NP310" + ] + } + ] +} +2024-10-21T18:02:00.856Z test-kyc-merchant-deposit.ts INFO kyc resp 2: { + "kyc_data": [ + { + "payto_uri": "payto://x-taler-bank/localhost/merchant-default?receiver-name=merchant-default", + "exchange_url": "http://localhost:8081/", + "exchange_http_status": 200, + "no_keys": false, + "auth_conflict": false, + "access_token": "N3GGEXPC7CS66708Y64R1C2XC6ZJVNZ807Q379QZ4MVMKMNX15AG", + "limits": [ + { + "operation_type": "DEPOSIT", + "timeframe": { + "d_us": 86400000000 + }, + "threshold": "TESTKUDOS:0", + "soft_limit": true + } + ] + } + ] +} +aml decision status: 204 +2024-10-21T18:02:00.874Z test-kyc-merchant-deposit.ts INFO POST /private/orders status: 451 +2024-10-21T18:02:00.876Z test-kyc-merchant-deposit.ts INFO kyc resp 3: { + "kyc_data": [ + { + "payto_uri": "payto://x-taler-bank/localhost/merchant-default?receiver-name=merchant-default", + "exchange_url": "http://localhost:8081/", + "exchange_http_status": 200, + "no_keys": false, + "auth_conflict": false, + "access_token": "N3GGEXPC7CS66708Y64R1C2XC6ZJVNZ807Q379QZ4MVMKMNX15AG", + "limits": [ + { + "operation_type": "DEPOSIT", + "timeframe": { + "d_us": 86400000000 + }, + "threshold": "TESTKUDOS:0", + "soft_limit": true + } + ] + } + ] +} +2024-10-21T18:02:00.949Z test-kyc-merchant-deposit.ts INFO kyc-info: { + "requirements": [], + "is_and_combinator": false +} +wallet-core notification { type: 'idle' } +2024-10-21T18:02:01.458Z test-kyc-merchant-deposit.ts INFO POST /private/orders status: 451 +2024-10-21T18:02:01.459Z test-kyc-merchant-deposit.ts INFO kyc resp 3: { + "kyc_data": [ + { + "payto_uri": "payto://x-taler-bank/localhost/merchant-default?receiver-name=merchant-default", + "exchange_url": "http://localhost:8081/", + "exchange_http_status": 200, + "no_keys": false, + "auth_conflict": false, + "access_token": "N3GGEXPC7CS66708Y64R1C2XC6ZJVNZ807Q379QZ4MVMKMNX15AG", + "limits": [] + } + ] +} +2024-10-21T18:02:01.459Z harness.ts INFO completed test in directory [ + "/tmp/taler-integrationtests-jtWkXo/kyc-merchant-deposit" +] +2024-10-21T18:02:01.513Z remote.ts INFO wallet: remote wallet disconnected +2024-10-21T18:02:01.513Z harness.ts WARN process wallet-wallet exited { + "code": 143, + "signal": null +} +2024-10-21T18:02:01.516Z testrunner.ts INFO done test kyc-merchant-deposit: pass +2024-10-21T18:02:01.523Z testrunner.ts INFO process exited code=0 signal=null +-- test steps -- +STEP env-setup-done +START order creation should be rejected +END order creation should be rejected +-- end -- +parent: got result {"name":"kyc-merchant-deposit","timeSec":3.586,"status":"pass"} +running kyc-merchant-activate-bank-account with timeout 60000ms +2024-10-21T18:02:01.655Z testrunner.ts INFO running test kyc-merchant-activate-bank-account +2024-10-21T18:02:01.656Z harness.ts INFO running test in directory [ + "/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account" +] +2024-10-21T18:02:01.657Z harness.ts INFO running command dropdb taler-integrationtest +2024-10-21T18:02:01.694Z harness.ts INFO running command createdb taler-integrationtest +2024-10-21T18:02:01.758Z harness.ts INFO starting fakebank +2024-10-21T18:02:01.758Z harness.ts INFO spawning process (bank): taler-fakebank-run -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/bank.conf' --signup-bonus TESTKUDOS:100 +2024-10-21T18:02:02.203Z harness.ts INFO child process exchange-dbinit exited (0 / null) +2024-10-21T18:02:02.203Z harness.ts INFO spawning process (exchange-crypto-eddsa-testexchange-1): taler-exchange-secmod-eddsa -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:02:02.205Z harness.ts INFO spawning process (exchange-crypto-cs-testexchange-1): taler-exchange-secmod-cs -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:02:02.206Z harness.ts INFO spawning process (exchange-crypto-rsa-testexchange-1): taler-exchange-secmod-rsa -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/exchange-testexchange-1.conf' -LDEBUG +2024-10-21T18:02:02.207Z harness.ts INFO spawning process (exchange-wirewatch-testexchange-1): taler-exchange-wirewatch -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/exchange-testexchange-1.conf' --longpoll-timeout=5s +2024-10-21T18:02:02.208Z harness.ts INFO spawning process (exchange-transfer-testexchange-1): taler-exchange-transfer -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/exchange-testexchange-1.conf' +2024-10-21T18:02:02.210Z harness.ts INFO spawning process (exchange-aggregator-testexchange-1): taler-exchange-aggregator -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/exchange-testexchange-1.conf' +2024-10-21T18:02:02.211Z harness.ts INFO spawning process (exchange-httpd-testexchange-1): taler-exchange-httpd -LINFO -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/exchange-testexchange-1.conf' +2024-10-21T18:02:02.246Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533722246},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:02:02.246Z harness.ts INFO waiting 10ms on exchange (testexchange-1) +2024-10-21T18:02:02.257Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533722257},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:02:02.257Z harness.ts INFO waiting 15ms on exchange (testexchange-1) +2024-10-21T18:02:02.274Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533722274},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:02:02.274Z harness.ts INFO waiting 22ms on exchange (testexchange-1) +2024-10-21T18:02:02.298Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533722298},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:02:02.298Z harness.ts INFO waiting 33ms on exchange (testexchange-1) +2024-10-21T18:02:02.340Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533722337},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:02:02.340Z harness.ts INFO waiting 49ms on exchange (testexchange-1) +2024-10-21T18:02:02.391Z harness.ts WARN service exchange (testexchange-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533722391},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8081/management/keys\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:02:02.391Z harness.ts INFO waiting 73ms on exchange (testexchange-1) +2024-10-21T18:02:02.487Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/exchange-testexchange-1.conf' download sign upload +2024-10-21T18:02:02.503Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/exchange-testexchange-1.conf' enable-account 'payto://x-taler-bank/localhost/exchange?receiver-name=exchange' upload +2024-10-21T18:02:02.513Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/exchange-testexchange-1.conf' wire-fee 2024 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:02:02.523Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/exchange-testexchange-1.conf' wire-fee 2025 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:02:02.533Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/exchange-testexchange-1.conf' wire-fee 2026 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:02:02.541Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/exchange-testexchange-1.conf' wire-fee 2027 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:02:02.550Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/exchange-testexchange-1.conf' wire-fee 2028 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload +2024-10-21T18:02:02.559Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/exchange-testexchange-1.conf' global-fee now 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.00' 1h 1year 5 upload +2024-10-21T18:02:02.574Z harness.ts INFO running command taler-exchange-offline -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/exchange-testexchange-1.conf' aml-enable KH0S1FTEQY9R6RW3R6T9XCZEJKTQXQFNEDPAJ1AVAYB0W6RRJNB0 Alice rw upload +2024-10-21T18:02:02.585Z harness.ts INFO spawning process (wallet-wallet): taler-wallet-cli --wallet-db :memory: -LTRACE --no-throttle advanced serve --unix-path '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/wallet.sock' --no-init +2024-10-21T18:02:02.586Z harness.ts INFO hint: connect to wallet using taler-wallet-cli --wallet-connection=/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/wallet.sock +2024-10-21T18:02:02.586Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/wallet.sock +2024-10-21T18:02:02.586Z harness.ts INFO waiting on wallet for 10ms +2024-10-21T18:02:02.597Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/wallet.sock +2024-10-21T18:02:02.597Z harness.ts INFO waiting on wallet for 15ms +2024-10-21T18:02:02.613Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/wallet.sock +2024-10-21T18:02:02.613Z harness.ts INFO waiting on wallet for 22ms +2024-10-21T18:02:02.636Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/wallet.sock +2024-10-21T18:02:02.636Z harness.ts INFO waiting on wallet for 33ms +2024-10-21T18:02:02.669Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/wallet.sock +2024-10-21T18:02:02.669Z harness.ts INFO waiting on wallet for 49ms +2024-10-21T18:02:02.720Z harness.ts INFO wallet connection attempt failed: Error: connect ENOENT /tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/wallet.sock +2024-10-21T18:02:02.720Z harness.ts INFO waiting on wallet for 73ms +2024-10-21T18:02:02.795Z harness.ts INFO connection to wallet-core succeeded +2024-10-21T18:02:02.796Z twrpc-impl.node.ts INFO connected! +2024-10-21T18:02:02.816Z harness.ts INFO running command taler-merchant-dbinit -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/merchant-testmerchant-1.conf' +wallet-core notification { type: 'idle' } +2024-10-21T18:02:03.197Z harness.ts INFO spawning process (merchant-httpd-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/merchant-testmerchant-1.conf' +2024-10-21T18:02:03.199Z harness.ts INFO spawning process (merchant-exchangekeyupdate-testmerchant-1): taler-merchant-exchangekeyupdate taler-merchant-exchangekeyupdate -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/merchant-testmerchant-1.conf' +2024-10-21T18:02:03.199Z harness.ts INFO spawning process (merchant-kyccheck-testmerchant-1): taler-merchant-kyccheck taler-merchant-kyccheck -LDEBUG -c '/tmp/taler-integrationtests-jtWkXo/kyc-merchant-activate-bank-account/merchant-testmerchant-1.conf' +2024-10-21T18:02:03.201Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533723201},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:02:03.201Z harness.ts INFO waiting 10ms on merchant (testmerchant-1) +2024-10-21T18:02:03.212Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533723212},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:02:03.212Z harness.ts INFO waiting 15ms on merchant (testmerchant-1) +2024-10-21T18:02:03.228Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533723228},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:02:03.228Z harness.ts INFO waiting 22ms on merchant (testmerchant-1) +2024-10-21T18:02:03.252Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533723252},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:02:03.252Z harness.ts INFO waiting 33ms on merchant (testmerchant-1) +2024-10-21T18:02:03.286Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533723286},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:02:03.286Z harness.ts INFO waiting 49ms on merchant (testmerchant-1) +2024-10-21T18:02:03.337Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533723337},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:02:03.337Z harness.ts INFO waiting 73ms on merchant (testmerchant-1) +2024-10-21T18:02:03.411Z harness.ts WARN service merchant (testmerchant-1) not ready: [ + "TalerError: {\"code\":7005,\"when\":{\"t_ms\":1729533723411},\"hint\":\"Error in HTTP request: ECONNREFUSED\",\"requestUrl\":\"http://localhost:8083/config\",\"requestMethod\":\"GET\",\"httpStatusCode\":0}" +] +2024-10-21T18:02:03.411Z harness.ts INFO waiting 109ms on merchant (testmerchant-1) +2024-10-21T18:02:03.528Z harness.ts INFO adding instance 'default' +2024-10-21T18:02:03.538Z harness.ts INFO adding instance 'minst1' +STEP: env-setup-done +2024-10-21T18:02:03.544Z test-kyc-merchant-deposit.ts INFO requesting GET http://localhost:8083/private/kyc +2024-10-21T18:02:03.546Z test-kyc-merchant-deposit.ts INFO mechant kyc status: { + "kyc_data": [ + { + "payto_uri": "payto://x-taler-bank/localhost/merchant-default?receiver-name=merchant-default", + "exchange_url": "http://localhost:8081/", + "exchange_http_status": 404, + "no_keys": false, + "auth_conflict": false, + "exchange_code": 1939, + "limits": [], + "payto_kycauths": [ + "payto://x-taler-bank/localhost/exchange?receiver-name=exchange&amount=TESTKUDOS:0.01&message=KYC:N2333XRFEYDQNNPK9VSHRFZNXHY05F9XCT52MWWYMZJ5HZET7CDG" + ] + } + ] +} +FATAL: test failed Unexpected HTTP status 404 in response error detail: { + "code": 7005, + "when": { + "t_ms": 1729533723548 + }, + "hint": "Unexpected HTTP status 404 in response", + "requestUrl": "http://localhost:8082/accounts/merchant-default/transactions", + "requestMethod": "POST", + "httpStatusCode": 404, + "errorResponse": { + "code": 21, + "hint": "There is no endpoint defined for the URL provided by the client. Check if you used the correct URL and/or file a report with the developers of the client software.", + "detail": "/accounts/merchant-default/transactions" + } +} +Error: Unexpected HTTP status 404 in response + at _TalerError.fromDetail (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:10375:12) + at throwUnexpectedRequestError (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:11130:20) + at readSuccessResponseJsonOrThrow (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:11137:3) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) + at async TalerCorebankApiClient.makeTransaction (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:11576:17) + at async runKycMerchantActivateBankAccountTest (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:89453:3) + at async runTestWithState (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:57203:5) + at async runTest (/home/antoine.linux/.local/lib/taler-harness/node_modules/taler-harness/dist/taler-harness-bundled.cjs:90027:24) +2024-10-21T18:02:03.564Z remote.ts INFO wallet: remote wallet disconnected +2024-10-21T18:02:03.564Z harness.ts WARN process wallet-wallet exited { + "code": 143, + "signal": null +} +2024-10-21T18:02:03.568Z testrunner.ts INFO done test kyc-merchant-activate-bank-account: fail +2024-10-21T18:02:03.572Z testrunner.ts INFO process exited code=0 signal=null +-- test steps -- +STEP env-setup-done +FAIL Unexpected HTTP status 404 in response +-- end -- +parent: got result {"name":"kyc-merchant-activate-bank-account","timeSec":1.912,"status":"fail"} +See /tmp/taler-integrationtests-jtWkXo/results.json for details +Skipped: 0/13 +Failed: 1/13 +Passed: 12/13 +FAIL test-merchant-walletharness.sh (exit status: 1) + |